如何配置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 通知脚本实操 💬
- 在你的 Slack 工作区创建一个自定义集成,启用Incoming Webhooks,得到你的 Webhook 地址
- 脚本内容如下(自动附带当前目录与 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\"}"- 在
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 个常见原因 🔍
- 路径必须是完整绝对路径:
notify字段写/home/you/.deepcode/notify.sh,不要写相对路径 - 脚本无权限:执行
chmod +x;脚本首行记得写#!/bin/bash - 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),仅供参考