Skip to content

Latest commit

 

History

History
211 lines (160 loc) · 5.24 KB

File metadata and controls

211 lines (160 loc) · 5.24 KB

Deep Code 任务完成通知

当 AI 助手完成一轮任务后,Deep Code 可以自动执行一个通知脚本,将任务结果发送到你指定的渠道(如 Slack、系统通知等)。

工作原理

settings.json 中配置 notify 字段,指向一个可执行脚本的完整路径。每次 AI 助手完成任务应答后,Deep Code 会执行该脚本,并通过环境变量注入上下文信息。

注入的环境变量

环境变量 说明
DURATION 会话耗时,单位秒(整数)
STATUS 会话状态:"completed""failed"
FAIL_REASON 失败原因(仅失败时设置)
BODY 最后一条 AI 助手回复的文本内容
TITLE 会话标题(对应 resume 列表中的标题)

配置方法

编辑 ~/.deepcode/settings.json,添加 notify 字段:

{
  "env": {
    "MODEL": "deepseek-v4-pro",
    "BASE_URL": "https://api.deepseek.com",
    "API_KEY": "sk-..."
  },
  "thinkingEnabled": true,
  "reasoningEffort": "max",
  "notify": "/path/to/your-notify-script.sh"
}

你也可以在 env 中配置通知脚本所需的自定义环境变量,例如 Slack Webhook URL:

{
  "env": {
    "MODEL": "deepseek-v4-pro",
    "BASE_URL": "https://api.deepseek.com",
    "API_KEY": "sk-...",
    "SLACK_WEBHOOK_URL": "https://hooks.slack.com/services/*****/****/**********"
  },
  "notify": "/Users/you/.deepcode/notify-slack.sh"
}

这些 env 中的变量会被注入到脚本的执行环境中。

Slack 通知

1. 获取 Slack Webhook URL

  1. 创建 Slack App
  2. 在 App 页面点击 Incoming WebhooksAdd New Webhook to Workspace,生成 Webhook URL

2. 创建通知脚本

创建 ~/.deepcode/notify-slack.sh

#!/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 任务已完成\n · cwd: $CURRENT_DIR\n · Branch: $BRANCH\n · Duration: $DURATION\"
  }"

给脚本添加可执行权限:

chmod +x ~/.deepcode/notify-slack.sh

3. 配置 settings.json

{
  "env": {
    "SLACK_WEBHOOK_URL": "https://hooks.slack.com/services/*****/****/**********"
  },
  "notify": "/Users/you/.deepcode/notify-slack.sh"
}

Python 版本的脚本同样支持,你可以在 env 中传入并引用任意自定义环境变量。

飞书 / 企业微信等 Webhook 通知

以下示例使用 node 构建 JSON(自动转义特殊字符),curl 发送。通过 env 传入 WEBHOOK_URL

#!/bin/bash
WEBHOOK_URL="${WEBHOOK_URL:-}"

STATUS="${STATUS:-completed}"
TITLE="${TITLE:-Untitled}"
DURATION="${DURATION:-0}"
BODY="${BODY:-(no output)}"

PAYLOAD=$(node -e "
process.stdout.write(JSON.stringify({
  msg_type: 'interactive',
  card: {
    header: { title: { tag: 'plain_text', content: 'DeepCode: ' + process.env.TITLE + ' ' + process.env.STATUS + ' [' + process.env.DURATION + 's]' } },
    elements: [{ tag: 'markdown', content: (process.env.BODY || '').slice(0, 2000) || '(no output)' }]
  }
}))
")

curl -s -X POST "$WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d "$PAYLOAD"
{
  "env": {
    "WEBHOOK_URL": "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxx"
  },
  "notify": "/Users/you/.deepcode/notify-feishu.sh"
}

WEBHOOK_URL 替换为你的飞书机器人 Webhook 地址。此模式同样适用于 Slack、企业微信等 webhook 类通知,只需修改 JSON payload 格式。

终端通知(iTerm2 / Windows Terminal)

如果你的终端是 iTerm2 或 Windows Terminal,可以直接通过 OSC 9 转义序列弹出终端原生通知,无需额外依赖。

创建 ~/.deepcode/notify.sh

#!/bin/bash
# iTerm2 / Windows Terminal OSC 9 通知
printf '\x1b]9;DeepCode: task %s (%ss)\x07' "${STATUS:-completed}" "${DURATION}"
{
  "notify": "/Users/you/.deepcode/notify.sh"
}

Windows 用户如使用 Git Bash,上述脚本同样可用;也可创建 .bat 脚本:

@echo off
REM Windows Terminal OSC 9 通知
echo \x1b]9;DeepCode: task %STATUS% (%DURATION%s)\x07

macOS 系统通知

#!/bin/bash
# macOS 系统通知
osascript -e "display notification \"任务已${STATUS:-完成},耗时 ${DURATION}s\" with title \"DeepCode\""
{
  "notify": "/Users/you/.deepcode/notify.sh"
}

Linux 系统通知

需要安装 libnotify-bin

sudo apt install libnotify-bin   # Debian/Ubuntu

创建 ~/.deepcode/notify.sh

#!/bin/bash
# Linux notify-send 通知
notify-send "DeepCode" "任务已${STATUS:-完成},耗时 ${DURATION}s"
{
  "notify": "/home/you/.deepcode/notify.sh"
}

Windows msg 弹窗通知

@echo off
REM Windows msg 弹窗通知
msg %USERNAME% "DeepCode: task %STATUS% (%DURATION%s)"
{
  "notify": "C:\\Users\\you\\.deepcode\\notify.bat"
}

自定义通知脚本

你可以根据通知脚本注入的环境变量自行编写任意逻辑的通知脚本(Python、Node.js、Ruby 等均可),只要脚本可执行即可。脚本中可通过 env 字段传入额外需要的配置变量。