☰
如何配置Deep Code CLI任务完成自动发Slack/飞书:notify通知脚本编写实操教程
2026/10/7 21:11:22 网站建设 项目流程

如何配置Deep Code CLI任务完成自动发Slack/飞书:notify通知脚本编写实操教程

【免费下载链接】deepcode-cliDeep Code 是专为 deepseek-v4 模型优化的终端 AI 编码助手,支持深度思考、推理强度控制以及 Agent Skills。项目地址: https://gitcode.com/gh_mirrors/de/deepcode-cli

Deep Code CLI 是一款专为 deepseek-v4 模型优化的终端 AI 编码助手,支持深度思考与 Agent Skills。它的notify 任务完成通知机制,可以让 AI 每完成一轮任务后自动执行你指定的脚本,把结果推送到 Slack、飞书、企业微信或系统弹窗——你只需配置一个脚本路径,就能实现"任务跑完,消息自动到"。

notify 通知机制的工作原理 🔄

Deep Code 的 notify 机制非常简单:你在 settings.json 中配置notify字段,指向一个可执行脚本的完整路径。每当 AI 助手完成一轮应答(无论成功或失败),Deep Code 就会以独立子进程的方式运行这个脚本,并通过环境变量把任务上下文注入给它。

核心逻辑可以在源码中看到:session.ts 中会在会话状态变为completed或failed时触发通知,实际执行由 notify.ts 中的launchNotifyScript完成。

💡 通知脚本是"尽力而为"的:即使脚本执行失败,也不会影响 Deep Code 主流程,你可以放心折腾。

脚本可用的 5 个环境变量

Deep Code 会自动向脚本注入以下环境变量,这是编写通知脚本的关键:

环境变量说明
STATUS会话状态:completed或failed
FAIL_REASON失败原因(仅失败时注入)
DURATION会话耗时(秒)
BODY最后一条 AI 回复的文本内容
TITLE会话标题(对应/resume列表中的标题)

也就是说,你的脚本不需要解析任何输出、读取任何日志,直接读环境变量就能拿到全部任务信息。

快速配置:三步搞定 notify

第一步:编写通知脚本

把脚本放在~/.deepcode/目录下,例如~/.deepcode/notify.sh。下面是一个发飞书/Slack Webhook 的最小可用版本:

#!/bin/bash WEBHOOK_URL="${WEBHOOK_URL:-}" TITLE="${TITLE:-Untitled}" STATUS="${STATUS:-completed}" DURATION="${DURATION:-0}" curl -s -X POST "$WEBHOOK_URL" \ -H "Content-Type: application/json" \ -d "{\"text\": \"Deep Code ${STATUS} · ${TITLE} · 耗时 ${DURATION}s\"}"

第二步:赋予执行权限

chmod +x ~/.deepcode/notify.sh

小提示:即使忘了加执行权限,Deep Code 也会自动回退到/bin/sh方式执行脚本(见 notify.ts),但加上权限更稳妥。

第三步:在 settings.json 中配置

编辑~/.deepcode/settings.json(用户级)或项目根目录.deepcode/settings.json(项目级),添加notify字段:

{ "env": { "WEBHOOK_URL": "你的飞书或Slack机器人Webhook地址" }, "notify": "/home/you/.deepcode/notify.sh" }

注意env中的变量会一并注入脚本执行环境——所以Webhook 地址不用硬编码在脚本里,放在env中更安全、更好管理。

Slack 通知脚本实操 💬

  1. 在你的 Slack 工作区创建一个自定义集成,启用Incoming Webhooks,得到你的 Webhook 地址
  2. 脚本内容如下(自动附带当前目录与 Git 分支信息):
#!/usr/bin/env bash SLACK_WEBHOOK_URL="${SLACK_WEBHOOK_URL:-}" CURRENT_DIR=$(pwd) BRANCH=$(git branch --show-current 2>/dev/null) curl -X POST "$SLACK_WEBHOOK_URL" \ -H "Content-type: application/json" \ --data "{\"text\": \"✅ Deep Code 任务已完成 · ${BRANCH} · 耗时 ${DURATION}s\"}"
  1. 在settings.json的env中配置"SLACK_WEBHOOK_URL": "你的Webhook地址",再指向脚本即可。

飞书 / 企业微信通知:用 node 安全构建 JSON

如果消息内容包含中文、引号等特殊字符,直接拼 JSON 容易出错。推荐用node构建 payload(自动转义),配合飞书的卡片消息格式,效果最好:

#!/bin/bash WEBHOOK_URL="${WEBHOOK_URL:-}" PAYLOAD=$(node -e " process.stdout.write(JSON.stringify({ msg_type: 'interactive', card: { header: { title: { tag: 'plain_text', content: 'Deep Code: ' + process.env.TITLE } }, elements: [{ tag: 'markdown', content: (process.env.BODY || '').slice(0, 2000) }] } }))") curl -s -X POST "$WEBHOOK_URL" \ -H "Content-Type: application/json" \ -d "$PAYLOAD"

这套模式同样适用于企业微信等 Webhook 类通知渠道,只需按对方文档调整 JSON 格式。

排查通知不生效的 3 个常见原因 🔍

  1. 路径必须是完整绝对路径:notify字段写/home/you/.deepcode/notify.sh,不要写相对路径
  2. 脚本无权限:执行chmod +x;脚本首行记得写#!/bin/bash
  3. Webhook 地址放错了地方:确认放在settings.json的env对象内,而不是当作脚本参数

另外,配置优先级为:系统环境变量NOTIFY> 项目级 settings.json > 用户级 settings.json(见 settings.ts)。如果你想只在某个项目启用通知,把配置写到项目根目录的.deepcode/settings.json即可。

更多玩法 🚀

  • 终端原生通知:iTerm2 / Windows Terminal 用户可以用 OSC 9 转义序列弹窗,零依赖
  • macOS / Linux 系统通知:分别用osascript和notify-send两条命令搞定
  • 任意语言脚本:Python、Node.js 均可,只要脚本可执行,就能通过环境变量拿到全部任务上下文

完整示例(含 macOS、Linux、Windows 各平台脚本)收录在官方文档 docs/notify.md 中,配置字段的详细说明见 docs/configuration.md。

总结

Deep Code CLI 的 notify 通知脚本编写其实就三件事:读环境变量、发 Webhook、配 settings.json。配置一次后,每一次 AI 任务的完成状态都会自动推送到你的 Slack 或飞书,让异步的 AI 编程真正"跑起来就有人接"。

【免费下载链接】deepcode-cliDeep Code 是专为 deepseek-v4 模型优化的终端 AI 编码助手,支持深度思考、推理强度控制以及 Agent Skills。项目地址: https://gitcode.com/gh_mirrors/de/deepcode-cli

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询