腾讯 CodeBuddy + Server酱:Agent 长任务完成微信通知

效果:CodeBuddy Craft 或 CLI 任务执行完毕时,自动向微信推送结果通知。

前置条件

  • 获取 Server酱 SendKey:登录 sct.ftqq.com,在「SendKey」页面复制(30 秒获取教程
  • 已安装腾讯 CodeBuddy(CLI 或 IDE/插件版)

配置步骤

推荐通过 CLI 的 hooks 机制实现自动通知,也可通过规则文件或对话指令接入。

方式一:CLI hooks(推荐,自动触发)

CLI 的 Stop 事件会在主 agent 完成响应时触发,配置 type 为 command 的 hook 即可执行 curl 推送。

  1. 将 SendKey 设置为系统环境变量 SERVERCHAN_SENDKEY,不要写进项目文件。

  2. 编辑配置文件 ~/.codebuddy/settings.json(全局生效)或项目目录下的 .codebuddy/settings.json,填入以下内容:

{
  "hooks": {
    "Stop": [
      {
        "type": "command",
        "command": "curl -sS -X POST \"https://sctapi.ftqq.com/${SERVERCHAN_SENDKEY}.send\" -d \"title=CodeBuddy任务完成\" --data-urlencode \"desp=Agent已完成响应\""
      }
    ]
  }
}

配置完成后,每次 CLI 的 Agent 完成任务即自动推送微信通知。

方式二:规则/记忆文件约定

在规则或记忆文件中写入通知指令,让 Agent 在完成任务时主动调用 API。

在项目根目录的 CODEBUDDY.md(无此文件则兼容加载 AGENTS.md)、.codebuddy/rules 目录下的文件,或 CLI 全局记忆 ~/.codebuddy/CODEBUDDY.md 中添加:

完成任务后,执行以下命令发送通知:
curl -sS -X POST "https://sctapi.ftqq.com/${SERVERCHAN_SENDKEY}.send" -d "title=任务完成" --data-urlencode "desp=任务结果摘要"

方式三:对话中直接吩咐

在 IDE 的 Craft 模式或 CLI 对话中,直接发送指令:

完成后用 curl 调 Server酱 通知我

Agent 会自行组装并执行 curl 命令。

完整示例

全局开启 CLI hooks 并配置权限规则的完整 ~/.codebuddy/settings.json 示例:

{
  "permissions": {
    "allow": [
      "curl"
    ]
  },
  "hooks": {
    "Stop": [
      {
        "type": "command",
        "command": "curl -sS -X POST \"https://sctapi.ftqq.com/${SERVERCHAN_SENDKEY}.send\" -d \"title=CodeBuddy任务完成\" --data-urlencode \"desp=Agent已完成响应\""
      }
    ]
  }
}

常见问题

消息没收到怎么办?

确认系统环境变量 SERVERCHAN_SENDKEY 已正确设置,且 CLI 具备网络访问权限。也可前往常见问题与排查逐步检查。

免费额度是多少?

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

触发频率超限怎么处理?

Server酱每分钟上限为 50 条。若短时间多次触发可能超限,建议在 hook 或规则指令中合并通知内容,减少请求次数。

IDE 中的 Craft 能用 hooks 吗?

hooks 为 CLI 机制。IDE 中的 Craft 建议通过方式二的规则文件或方式三的对话指令接入。

相关集成

懒人方案:把这段话复制给你的 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 条结果摘要即可,批量任务合并成一条,不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。