11 月 1 日,Bloomberg 一条“DeepSeek 发布更自主的 coding agent 原型,挑战 Claude Code”的推文在 X 上被大量转发(来源 [1]),随后各路账号跟进成“DeepSeek 发布 Super-Agent”(来源 [2][3])。但如果去看 GitHub 上的 deepseek-ai/dsh-superagent-prototype,README 第一句写的是:“Research prototype for reference only, not an official DeepSeek product.”(来源 [4][5])
所以这篇不讨论“它能不能打 Claude Code”,只回答三个实际问题:它到底是什么、怎么在自己的仓库上跑起来、跑之前要注意什么安全边界。
先说结论:dsh-superagent 不是模型,也不是 Claude Code 的直接替代,而是一个挂在 DeepSeek Harness(DSH)上的“仓库值班 agent”:有人在 Issue 里 @ 它,它开 Ticket、干活、回 PR。适合已经在用 DSH、想试“团队共享 agent”的人;它默认以 danger-full-access 跑在你的系统用户下,正式用之前最好给它单独一个 OS 账号。
说明:本文所有命令、配置项和退出码均来自该仓库的 README、SETUP.md、docs/000 与 docs/006(2026-11-02 查阅,版本 0.1.0,仓库创建于 10 月 31 日)。我还没有在自己的仓库上完整跑过一遍,文中没有实测数据。
一、它是什么,不是什么
按 README 的描述,dsh-superagent 是“一个面向单个 GitHub 仓库的主动式 coding agent,打包成 DeepSeek Harness 的 bundle”(来源 [4])。工作方式:
- 监听:GitHub(通过 agent 账号的 notifications 轮询,默认一分钟一次),可选飞书群。
- 准入:只有 Policy 白名单里的人 @ 它,请求才会变成 Ticket。
- 执行:每个 Ticket 在自己的 DSH Session 和独立目录(通常是一个 git worktree)里做。
- 交付:回到原来的对话里答复,比如开一个 PR。
- 面板:一个本地 Web 面板,只显示“需要人处理”的东西。

几个常见说法,对照一下:
| 说法 | 实际情况(据仓库文档) |
|---|---|
| “DeepSeek 发布了新模型” | 不是模型,是 TypeScript 写的 DSH bundle,模型用 DSH profile 里配置的 provider |
| “官方产品,对标 Claude Code” | README 明确写了研究原型、非官方产品,可能有 bug |
| “会监控群聊、主动给方案” | 默认只响应白名单成员的 @;主动工作的默认模式是 observe,只记录不执行 |
| “装上就能用” | 需要单独的 GitHub 账号、DSH 和一串前置依赖,官方建议让 coding agent 带你配置 |
它的设计哲学写在 docs/000:“Take as little human attention as possible, and give as much value as possible.”(尽量少占用人的注意力,尽量多给价值)。这句话决定了很多默认值,后面会反复看到。
二、前置条件
| 依赖 | 版本要求 |
|---|---|
| Node.js | 22.19+ 或 24+ |
| pnpm | 需要(仓库 packageManager 为 pnpm@11.7.0) |
| git | 2.32+(低于这个版本读不到它写的凭据配置) |
| tmux | 用来跑后台进程 |
| Python | 3.8+ |
GitHub CLI gh |
2.48+ |
DeepSeek Harness(dsh) |
满足 engines.dsh: ^0.2.1-alpha.2,文档里固定安装 0.2.1-rc.3 |
| 模型 provider | DSH 里要先配好一个能用的模型 |
| 飞书(可选) | lark-cli(文档写的测试版本 1.0.90)+ 一个带机器人能力的自建应用 |
另外两条限制:只支持 github.com,不支持 GitHub Enterprise Server;agent 必须是一个 GitHub 用户账号,不能是 GitHub App,因为它要读这个账号的 notifications。
三、官方推荐的装法:让你的 coding agent 带你装
README 的 Setup 只有一句话:步骤太多,让 agent 带你做。在仓库目录里对你的 coding agent 说:
Read SETUP.md in this repository and set up dsh-superagent with me.
SETUP.md 本身就是写给 agent 的:先跑一遍探测命令,然后一次只问一个问题(数据源、仓库、agent 账号、白名单、checkout 位置、commit 身份、是否 auto-merge),问完给一份完整计划,你确认后才执行。它还规定 agent 不能在聊天里要密钥,需要你亲手做的步骤(建账号、auth login)会集中列成一条消息。
这一点我觉得值得单独记一下:安装文档本身就是一份 agent 可执行的规格,比写一页给人看的 README 更适合这种多步骤配置。
下面是手动装的路径,也是 agent 实际会执行的内容,方便你知道它在干什么。
四、手动部署:5 步
1. 建 agent GitHub 账号和专用 gh
建一个单独的 GitHub 用户,给它目标仓库的 write 权限。然后给它一个只用自己凭据的 gh 包装脚本(来源 [6]):
mkdir -p ~/.local/bin
cat > ~/.local/bin/gh-agent <<'EOF'
#!/bin/sh
GH_CONFIG_DIR="$HOME/.config/gh-agent" exec gh "$@"
EOF
chmod +x ~/.local/bin/gh-agent
gh-agent auth login
gh-agent api user --jq .login
最后一条打印的应该是 agent 账号的 login,不是你自己的。SETUP.md 的推荐也很明确:用专门的账号,不要用 operator 自己的账号,因为 agent 写的所有东西都会挂在这个名字下面。
2. 安装 DSH 和 bundle
只在还没有 superagent profile 的机器上跑一次:
npm install -g @deepseek-ai/dsh@0.2.1-rc.3
git clone https://github.com/deepseek-ai/dsh-superagent-prototype.git dsh-superagent && cd dsh-superagent
pnpm install && pnpm build
dsh superagent --from-default-profile web --dump-config > /dev/null
dsh plugin --profile superagent add "link:$PWD"
第四条命令会基于 DSH 的 Web 模板创建 ~/.dsh/profiles/superagent,第五条把 bundle 装进去。注意:profile 已存在时再跑第四条,会替换整个 profile 并删掉 cordis.patch.yml,升级时千万别用它。
为什么要单独一个 profile?文档的解释是:这个插件会改进程级的 PATH 和 git 设置,而且需要独立重启和升级,和日常干活的 profile 混在一起会互相干扰。
3. 机器配置
把 examples/profile.cordis.patch.yml 复制到 ~/.dsh/profiles/superagent/cordis.patch.yml,替换占位符:
- id: webserver
config:
host: 127.0.0.1
port: 3082
- id: dsh-superagent
config:
stateDir: /home/me/.dsh/state/superagent # 必须是绝对路径
# 用飞书时取消注释:
# - id: dsh-superagent-feishu
# disabled: false
stateDir 里放数据库、锁、命令 shim、agent 的 git 配置,以及默认的 Ticket 工作目录,升级前要备份。
4. 启动
scripts/dsh-superagent start
scripts/dsh-superagent status
start 会在 tmux 会话 dsh-superagent 里跑 dsh --profile superagent,最多等一分钟。打开日志里打印的 URL,侧边栏选 Superagent 就是面板。
5. 面板里配四样东西
- Sources:仓库
owner/name和 agent CLI 路径(比如/home/me/.local/bin/gh-agent)。 - Policy:在 On each Source 下加允许发请求的 GitHub 账号。列表为空时,任何请求都不会变成 Ticket。 建议先只放你自己。
- Execution:工作目录和 prepare 命令。文档给的例子是每个 Ticket 建一个 worktree:
git -C /home/me/src/widgets fetch --no-tags "https://github.com/$DSH_SUPERAGENT_GITHUB_REPOSITORY.git" "${DSH_SUPERAGENT_GITHUB_PR_HEAD:-HEAD}:refs/dsh-superagent/$DSH_SUPERAGENT_TICKET" &&
git -C /home/me/src/widgets worktree add -b "agent/$DSH_SUPERAGENT_NAME" "$DSH_SUPERAGENT_DIR" "refs/dsh-superagent/$DSH_SUPERAGENT_TICKET"
- Prompts:团队相关的几段,比如 GitHub 披露语、review bot、commit 作者、auto-merge 条件。
这些也可以走本地 Management API(http://127.0.0.1:3082/orchestrator/api/,请求头要带 x-orchestrator-request: 1),SETUP.md 里的 agent 就是这么保存设置的。
试一下
用白名单里的账号,在仓库某个 Issue 下发一条新评论:@<agent 账号> <你的请求>。一分钟内面板 Overview 应该出现一个 Ticket。
一个容易踩的坑:编辑已有 Issue 正文加上 @ 是收不到的,必须新发评论。
五、排错:先看 status 的退出码
status / start / restart 用同一套退出码:
| 退出码 | 含义 | 重启能不能解决 |
|---|---|---|
| 0 | 正常运行 | 不需要 |
| 1 | 没在跑、跑了两份、不响应或 runtime 报错 | 可能 |
| 2 | 在跑,但某个部件(Source、Policy 同步等)报错,看 errors |
不能 |
| 3 | 在跑,等待配置,看 setup |
不能 |
文档 Troubleshooting 表里几条最可能遇到的:
| 报错 | 处理 |
|---|---|
The agent GitHub CLI cannot read its account |
用包装脚本跑 auth login |
@… cannot push to … |
给 agent 账号仓库 write 权限 |
git does not read the github.com credential configuration dsh-superagent writes |
升级 git 到 2.32+ |
| 日志说插件和当前 dsh 不兼容 | 装 engines.dsh 范围内的 DSH 版本 |
| @ 了没反应 | 确认作者在白名单、Source 已开启、处理没暂停,并且是新评论而不是编辑正文 |
六、安全边界:这一节别跳过
这是我觉得最值得写清楚的部分。文档原话(来源 [6]):
Both presets run with
danger-full-accessas the operator’s OS user … A worker can execute programs by path and read the operator’s home directory. For isolation, use a dedicated OS account containing only the agent’s credentials.
翻成大白话:
- worker 和 router 两个预设都是
danger-full-access,以你的系统用户身份运行。 - gh 包装脚本只是让它默认用 agent 的凭据,不是隔离;worker 能按路径执行程序、能读你的 home 目录。
- 它确实做了一些收敛:
worker-bin里的 shim 把gh指向 agent CLI、拦掉你列出的命令;独立的 git 配置让 github.com 只用 agent 凭据;setup 会去掉名字里带 KEY、PASSWORD、SECRET、TOKEN 的环境变量,并移除GH_TOKEN/GITHUB_TOKEN。

我的建议,按优先级:
- 单独一个 OS 用户(或一台 VM)跑它,里面只放 agent 账号的凭据。这是文档自己给的方案。
- Policy 白名单先只放自己,主动工作保持默认的
observe,auto-merge 先关。 - 把你自己账号的 CLI 加进 Execution 的 blocked commands。
- 它会读 Issue 和评论内容来干活,这和 AGENTS.md 投毒是同一类风险:被它读到的文字都可能被当成指令。之前写的 AGENTS.md 投毒自查 和 Claude Code deny 规则 里的思路同样适用。
七、怎么选:dsh-superagent 和其他几种方式
| 场景 | 更合适的选择 |
|---|---|
| 自己一个人在终端里写代码 | Claude Code / Codex / DSH 本身,不需要 superagent |
| 想让团队成员在 Issue 里 @ 一个共享 agent 干活 | dsh-superagent 正是为这个设计的 |
| 已经在用 DSH + DeepSeek 模型 | 接入成本最低,模型配置直接复用 |
| 团队主要在飞书沟通 | dsh-superagent 原生支持飞书 Source |
| 需要生产级稳定、权限隔离开箱即用 | 现在不建议,它自己写了是研究原型 |
| 用 GitHub Enterprise Server | 不支持 |
八、最后的判断
dsh-superagent 被传成“DeepSeek 发布 Claude Code 对手”,其实有点错位。Claude Code 解决的是“一个人怎么和 agent 一起写代码”,dsh-superagent 想解决的是“一个 agent 怎么长期待在团队里,又不变成噪音“。它最有价值的部分不一定是代码,而是那套默认值:白名单为空就什么都不做、主动工作默认只记录、只在有人需要行动时说话、一次只问一个问题。
我会保持两个保留意见:一是它的权限隔离目前依赖“用单独的 OS 账号”这种部署层面的做法,默认装法下 worker 能看到你的 home 目录;二是它版本 0.1.0、依赖 DSH 的 alpha/rc 版本,接口和配置后面大概率还会变。
以上是基于公开文档的判断,等我在测试仓库上跑通一遍再补实测。如果你之前用过 DSH,可以看 DeepSeek V4.1 Flash 接进 OMP 和 DSH 的体验;想把 DeepSeek 模型接进 Claude Code,可以看 DeepSeek V4.1 Flash 1017 接入 Claude Code。
一句话:dsh-superagent 是一个“@ 它才干活”的仓库值班 agent,不是新模型;想试就用单独的 GitHub 账号加单独的 OS 用户,白名单只放自己,先 observe 再放开。
参考来源
- Bloomberg(@business)在 X 上的报道推文(2026-11-01):https://x.com/business/status/2116754642222616835
- Cointelegraph 在 X 上的推文(2026-11-01):https://x.com/Cointelegraph/status/2116885723601068339
- @iuyup_ 在 X 上对 Super-agent 架构的中文解读(2026-11-01):https://x.com/iuyup_/status/2116687593375158358
- dsh-superagent-prototype GitHub 仓库与 README:https://github.com/deepseek-ai/dsh-superagent-prototype
- @NeuN0mad 在 X 上指出 README 的“非官方产品”声明(2026-11-01):https://x.com/NeuN0mad/status/2116905324560924843
- 仓库部署文档 docs/006-deployment.md:https://github.com/deepseek-ai/dsh-superagent-prototype/blob/main/docs/006-deployment.md
- 仓库 SETUP.md:https://github.com/deepseek-ai/dsh-superagent-prototype/blob/main/SETUP.md
- 仓库设计哲学 docs/000-philosophy.md:https://github.com/deepseek-ai/dsh-superagent-prototype/blob/main/docs/000-philosophy.md
- DeepSeek Harness 官网:https://www.deepseek.com/en/harness/
相关阅读:
Comments