GitHub Copilot(VS Code) + Server酱:Agent 长任务完成微信提醒

效果:VS Code 中 Copilot Agent 跑完长任务后,微信收到结果通知。

前置条件

  • 获取 SendKey:登录 sct.ftqq.com,在「SendKey」页面复制(30 秒获取教程)。
  • VS Code 已安装 GitHub Copilot 扩展。

配置步骤

方法一:安装官方 Server酱 Skill(推荐)

在项目终端中执行以下命令安装 Skill:

npx skills add easychen/serverchan-skill

将 SendKey 配置到系统环境变量 SERVERCHAN_SENDKEY 中(Skill 会自检该变量,且绝不回显密钥)。该 Skill 会自动识别 SCT/sctp 端点,并将批量任务合并为一条推送。

安装完成后,在 Copilot Agent 对话中直接说"任务完成后微信通知我"即可。

方法二:使用 Agent Hooks(Preview 特性)

Agent Hooks 可在 Agent 会话结束时自动触发推送。此特性目前为 Preview 状态,JSON 格式未来可能变化。

通过 VS Code 命令面板执行 Chat: Configure Hooks,或在项目 .github/hooks/ 目录下创建 JSON 文件,配置 Stop 事件钩子(类型为 command,命令为 curl 推送)。具体 JSON 结构请参考 Agent Hooks 官方文档。示例命令如下:

curl -sS -X POST "https://sctapi.ftqq.com/${SERVERCHAN_SENDKEY}.send" -d "title=Copilot任务完成" --data-urlencode "desp=Agent会话已结束"

确保系统环境变量中已设置 SERVERCHAN_SENDKEY

方法三:自定义指令

在仓库根目录创建 .github/copilot-instructions.md(官方推荐起点),写入通知约定:

任务完成后,执行 curl 调用 Server酱 API 通知我:
curl -sS -X POST "https://sctapi.ftqq.com/${SERVERCHAN_SENDKEY}.send" -d "title=任务完成" --data-urlencode "desp=结果摘要"

由于终端工具默认需用户批准,如需无人值守运行,请在 VS Code 设置中将 curl 加入 chat.tools.terminal.autoApprove 列表。SendKey 务必放在系统环境变量 SERVERCHAN_SENDKEY 中,不要写进仓库文件。

完整示例

以下是一个结合环境变量与 Agent Stop 事件的 Hooks 配置思路:在 .github/hooks/ 下创建 JSON 文件(如 notify.json),配置 Stop 事件钩子,类型为 command,命令为 curl 推送。具体 JSON 结构请参考 Agent Hooks 官方文档。示例命令:

curl -sS -X POST "https://sctapi.ftqq.com/${SERVERCHAN_SENDKEY}.send" -d "title=代码重构完成" --data-urlencode "desp=批量修改任务已结束,请返回VS Code查看结果"

常见问题

免费版有推送条数限制吗? 免费用户每天可发送 5 条消息,订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。

配置后没收到微信通知? 请检查系统环境变量 SERVERCHAN_SENDKEY 是否正确设置,并参考常见问题与排查进行网络与配置核对。

推送频率有什么限制? API 每分钟上限为 50 条,订阅会员每日 API 请求上限为 1000。

Agent 执行 curl 时总提示需要批准? 终端工具默认需用户确认。可在 VS Code 设置中找到 chat.tools.terminal.autoApprove,将 curl 加入免确认列表以实现自动推送。

相关集成

懒人方案:把这段话复制给你的 AI 助手

把下面这段文字原样粘贴给 Claude Code、Cursor 或任何 AI 编程助手,它就会替你完成 Server酱 的接入:

请帮我把 Server酱 微信通知接入到我当前的项目/工具中:
1. API:POST https://sctapi.ftqq.com/{SendKey}.send,参数 title(必填,不能含换行)、desp(正文,支持 Markdown,可选);成功时返回 JSON 的 code 为 0。
2. 如果我的 SendKey 以 sctp 开头,则改用 https://{uid}.push.ft07.com/send/{SendKey}.send,uid 是 SendKey 中 sctp 与 t 之间的数字。
3. SendKey 从环境变量 SERVERCHAN_SENDKEY 读取;如果没有,提醒我到 https://sct.ftqq.com 免费获取(每天 5 条额度)。
4. 安全要求:不要把 SendKey 硬编码进代码、不要打印到日志、不要提交到 git。
5. 频率约定:任务结束发 1 条结果摘要即可,批量任务合并成一条,不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。