Qwen Code 接钉钉:配置模板和安全清单

S1哥 今日赠品 · 2026-10-31

配套教程:https://x.com/swordBluesy/status/2116458416143233156

来源:Qwen Code 官方文档 Channels 下的 DingTalk 页面和 Channels 总览页。示例里的 privatePolicy 我改成了 allowlist(官方总览页的写法),这一处是 S1哥 的建议,不是官方 DingTalk 示例原样。

一、前提
1. 有钉钉组织账号
2. 在钉钉开发者平台建应用,启用机器人能力,机器人协议选 Stream 模式
3. 在应用凭证页记下 AppKey(Client ID)和 AppSecret(Client Secret)

二、环境变量
export DINGTALK_CLIENT_ID=<你的 AppKey>
export DINGTALK_CLIENT_SECRET=<你的 AppSecret>

三、~/.qwen/settings.json(官方结构,privatePolicy 改为 allowlist)
{
  "channels": {
    "my-dingtalk": {
      "type": "dingtalk",
      "clientId": "$DINGTALK_CLIENT_ID",
      "clientSecret": "$DINGTALK_CLIENT_SECRET",
      "useConnectionManager": true,
      "privatePolicy": "allowlist",
      "allowedUsers": ["<你自己的用户 ID>"],
      "sessionScope": "user",
      "cwd": "/path/to/your/project",
      "instructions": "You are a concise coding assistant responding via DingTalk.",
      "groupPolicy": "disabled",
      "outputMode": "per_task"
    }
  }
}

四、四种私聊策略(官方)
disabled:忽略私聊
allowlist:只有 allowedUsers 里的人能发
pairing:名单内直接放行,其他人要在本机批准配对(新建托管渠道默认)
open:任何人都能发(官方 DingTalk 示例写的是这个)

五、三种输出模式(官方)
per_turn(默认):主任务一结束就发主结果卡,后台通知各发一张
per_task:等主任务和关联的后台任务都完成,发一张最终结果卡
per_response:每条完整回复一张卡
只接受这三个值;final_only、process_and_result 是未发布的值,不是别名。

六、启动和验证
qwen channel start my-dingtalk
在钉钉里给机器人发消息,出现眼睛表情就是它在处理。

七、上线前安全清单
1. privatePolicy 不用 open,用 allowlist 或 pairing
2. 群聊先 disabled;要开就用 requireMention 为 true,让它被 @ 才回
3. cwd 只指向这个项目的目录,别指向家目录
4. 凭证放环境变量;写进 settings.json 的 env 是明文,自己权衡
5. instructions 里写清它能做什么、不能做什么
6. 先用 per_task,确认后台任务做完再看结果
7. 掉线先保持 useConnectionManager 为 true,别急着关
S1哥(X @swordBluesy)每天一篇 AI 官方文档编译教程,每篇送一份赠品。粉丝群:t.me/haohanlab|关注 @swordBluesy