10 月 31 日晚,DeepSeek Harness 团队发了一篇《Super-agent 设计探索:迈向更自主的 Agent 系统》,同一时间在 GitHub 放出配套原型 dsh-superagent。到 11 月 1 日早上 6 点半,仓库已经 2,078 star、176 fork——离建仓不到 14 个小时。

它被讲成了两个故事。一个很燃:群里没人 @,AI 自己发现 Bug、复现、提 PR,任务中位 12.4 分钟完成。另一个很冷:仓库 README 第一段写着"研究原型,仅供参考,不是 DeepSeek 官方产品",后面还补了一句,文章里有些设计属于后续方向,这个原型并没有实现。

两个故事都是真的。这篇不复述发布稿,只回答四件事:它到底改了 Agent 的哪一层、那组测试数字该怎么读、今天想跑起来要付出什么、谁该上。

一、先分清:文章讲架构,仓库给的是一个很窄的原型

  • 发布物有两件,别混着看。文章讲的是系统设计,五模块、四特征;GitHub 上的 deepseek-ai/dsh-superagent-prototype 是一个"面向单个 GitHub 仓库的主动型编码 Agent",以 DeepSeek Harness 插件包的形式存在,MIT 协议,TypeScript 写的,版本号才 0.1.0。
  • 官方自己先打了预防针。文章开头写明这是一篇面向工程实践的架构思路探讨,不是对 DSH 现有产品功能的介绍;README 更直接:这是团队日常开发里长出来的研究代码,可能有 bug,风格和工程实践不一致,公开发布前做过改写,和内部版本、文章描述的实现并不完全相同。
  • 原型的能力边界很具体。它只听 GitHub,可选再接飞书;一个实例只服务一个 github.com 仓库,不支持 GitHub Enterprise;干的事是接住被允许的人提的要求,开一张工单,在独立目录里干活,最后回到原对话里给结果,通常是一个 PR。
  • 它没有想替你写代码。文章反复讲的是一个更底层的问题:模型单任务能力已经够强,多任务的上限却卡在人的注意力上——团队观察到的数字是,一个人通常只能同时跟进 3 到 5 个活跃会话。Super-agent 要接管的是会话管理,不是模型智力。

一句话定位:它把 Agent 从"一个聊天窗口"改成"一个带调度器的常驻系统",先解决人的注意力,再谈能力。

二、五个模块,拆到能和仓库里的东西对上

1. 双层架构:Router 对外,Worker 干活。 Router 是常驻的全局协调节点,接住群聊、GitHub、邮件这些入口的消息,维护跨任务上下文,决定谁来做。Worker 每张工单一个会话,名字是 worker-<ticket id>,再配一个独立工作目录,彼此隔离、可以并行。Worker 手里没有"向人提问"和"向人汇报"的工具,只能把进展和结果写成报告交回去,统一对外说话的是 Router。这样设计的好处很实在:一个 Worker 跑偏,不会把整个对话带偏。

2. 事件驱动:程序先筛,模型后判。 群消息、PR 评论、CI 结果都叫 Trigger。系统先用程序规则过滤一遍——谁的、在哪个范围、有没有 @——只有需要语义判断的才交给模型。已经派出工单的事件流,Worker 可以直接订阅,后续评论直达 Worker,不再每次经过 Router。文章给的账很直白:去掉这条"订阅直通",Router 的决定数多约 30%,缓存读取从 2,323 万 token 涨到 3,177 万。

3. 异步多信道:人不用等一条处理完。 同一个人在 IM 里定的方案,可以到 GitHub 评论里改成方案 B,系统知道这是同一件事。工程上也做了让步:前台 shell 命令超过 5 秒自动转后台,一轮结束后后台任务还能继续跑,上限 30 分钟;人类发来的消息可以额外占一个 Worker 槽,新任务再多也挤不掉"人要继续跟的那一件"。

4. 存算分离:状态落盘,会话可换。 文章叫 Inline & Spill 和链式召回,原型里的落法是:状态目录 stateDir 存 SQLite、每张工单一个工作目录、Source 记住自己的读取位置,重启不重放事件;执行器挂了可以换一个 Assignment 接着跑,工单状态不跟着会话走。

5. Watchdog:不指望模型自觉。 看门狗是外部脚本,不是模型的一环。做法是在你日常用的 DSH profile 里挂一条每小时执行 scripts/dsh-superagent status 的检查:退出码 0 就安静,2 和 3 只报告不重启,1 才执行带 --respect-stop 的重启。人工主动停掉的服务,它不会给你偷偷拉起来。这条设计比任何"自我纠错"的提示词都可靠。

三、权限:门是程序,授权是合同

  • 准入先看人。每条 Trigger 带着来源和发送者;允许名单、准入表、机器人名单三层决定它算"明确请求"“推断候选"还是"不接”。机器人永远只能产生推断候选,不能提明确请求,也不能停工单。
  • 三档接单模式。off 什么都不推断;observe 是默认值,只把"本来会接的"记成忽略,不动手;auto 才真的接。官方建议就是先在 observe 看两周记录,再决定要不要开 auto。
  • 每张工单带一份 Mandate。里面记着策略版本、范围、强度、命中的规则。只有人能 stop 吊销它,策略版本变了也不会立刻取消在跑的工单。
  • 两个容易忽略的口子。第一,收紧允许名单不会马上停掉已经开工的工单,只在它恢复前重新校验;第二,工单结束后订阅还留着,同一条 Thread 上再来一条人类评论,不用重新评估,按原授权就能续跑。公开仓库、外部人多的群,这两条要特别当心。

四、那组数字怎么读:12.4 分钟是拿 token 换的

指标结果对照怎么读
任务完成中位12.4 分钟文章只给了对照的 95 分位中位对比缺失,不能说"快一倍"
任务完成 95 分位15.7 分钟单 Session + Subagent:29.5 分钟长尾缩短约 47%
Router 决定数基线去掉订阅直通:+30%直通省的是调度次数
缓存读取 token2,323 万去掉直通:3,177 万(+37%)省路由不等于省总 token
单个决定分摊推理时间1.6 秒(批处理)6.4 秒(不批处理)批处理摊薄 75%
  • 三个限定条件必须一起说。实验跑在合成负载和简化环境里,文章自己定性为"初步参考,不是正式产品结论";对照组是"单 Session 加 Subagent 工具",不是拿 Cursor、Claude Code 这些产品做横评;这组成绩属于文章里的实验系统,不等于仓库里这个原型的成绩。
  • 它买的不是便宜,是时间和稳定。并行 Worker、订阅直通、批处理,每一项都在减少等待,代价是更多 token 和更复杂的系统。把它当成"更省钱"的方案会失望,当成"把人从多任务切换里捞出来"的方案才对。

五、想自己跑:8 个前置、5 条命令、4 个坑

前置清单:Node.js 22.19+ 或 24+、pnpm、git 2.32+、Python 3.8+、tmux、GitHub CLI 2.48+、一个配好模型 provider 的 DeepSeek Harness,以及一个专用 GitHub 账号。这个账号不能是 GitHub App——因为它要读账号自己的通知;也不建议用你本人的账号,Agent 发的每条评论都挂在这个身份下。

最短路径是这样:

  1. npm install -g @deepseek-ai/dsh@0.2.1-rc.3,装 DSH;
  2. clone 仓库,pnpm install && pnpm build;
  3. dsh superagent --from-default-profile web --dump-config 建一个独立的 superagent profile;
  4. dsh plugin --profile superagent add "link:$PWD" 把插件挂进去;
  5. 配好 cordis.patch.yml 里的 stateDir 绝对路径,scripts/dsh-superagent start,面板默认在 127.0.0.1:3082。

之后的配置尽量交给 Agent 做:仓库里 SETUP.md 写的就是"让你的编码 Agent 读这个文件,带着你一步步装"。它会一次问一个问题,最后给一份完整计划,涉及密钥的步骤会让你自己在终端里执行,不在聊天里要密码。装完在面板的 Sources 填仓库和 gh-agent 路径,Policy 里加允许名单,Execution 里配一条 git worktree 的 prepare 命令,先保持 observe,再让名单里的账号在 issue 里 @agent 提一个要求,一分钟左右能看到工单。

四个坑,提前说:

  • 建 profile 的命令会覆盖旧配置。--from-default-profile 只适合首次安装,已有 profile 再跑一次会删掉 cordis.patch.yml。升级时别用。
  • 它不是安全沙箱。Worker 以你的操作系统用户身份、danger-full-access 运行,包装脚本只是默认值,不是边界——Worker 仍然可以用绝对路径执行程序,也能读你的 home 目录。官方建议用独立的系统账号隔离,只放 Agent 自己的凭证。
  • 长任务会被掐。一轮结束后台任务最多 30 分钟,到点 shell 任务被杀,工单转"等待";子 Agent 可以继续。别拿它跑几小时的训练或构建。
  • 升级会动你的提示词。内置提示词更新后,面板会标"默认内容已更新",要你选保留自己的版本还是用新默认;选错会把团队规则冲掉。

六、账单:按官方价目表算一遍

DSH 本身开源,钱花在模型上。DeepSeek 官方定价页现在的两档主力是这样(单位:美元 / 百万 token):

模型缓存命中输入(闲时/峰时)未命中输入(闲时/峰时)输出(闲时/峰时)上下文
deepseek-flash0.003 / 0.0060.15 / 0.300.60 / 1.20100 万
deepseek-v4-pro0.022 / 0.0440.66 / 1.321.98 / 3.96100 万

峰时是 UTC 周一至周五 01:00–04:00 和 06:00–10:00,换成北京时间就是工作日的 09:00–12:00、14:00–18:00,其余时段半价。DSH 界面默认挂的是 DeepSeek-V4.1-Flash,也就是表里第一行。

按一张工单 20 万缓存命中输入、20 万未命中输入、5 万输出、闲时 flash 算:缓存 0.0006 美元 + 输入 0.03 美元 + 输出 0.03 美元 = 0.0606 美元,约 0.43 元。一个月 300 张工单,模型费约 18.2 美元、129 元。同一笔账换成 v4-pro,单张 0.235 美元,约 3.9 倍。

  • 输出是大头。5 万输出占了这张工单一半成本;缓存命中只占 1%。想省钱该压的是输出和轮次,不是那点缓存读取。
  • 路由和评估也要钱。上面只算了 Worker,Router 的每次评估、每轮上下文读取都另算,工单越多、Thread 越长,这部分越明显。
  • 搜索从今天起单独计费。DeepSeek 定价页写着,Search 和 Fetch 按每 1,000 次成功请求 0.75 美元计费,此前通过 DSH 调用免费,从 2026 年 11 月 1 日 0 点(北京时间)起开始收费。Worker 自带 web 工具,一张工单查 20 次网页就是 0.015 美元,300 张工单约 4.5 美元。

七、我的判断:谁该上、谁再等等、谁别碰

  • 该上。三五个人以内、协作面基本只有 GitHub、已经用 DSH 和 DeepSeek API、并且愿意给 Agent 单独开一个系统账号的团队。先 observe 两周,把允许名单收到最小,看它"本来会接什么"的记录,再开 auto。个人开发者维护一个活跃开源仓库,也能用它把 issue 跟进和 PR 回复接过去。
  • 再等等。多仓库的团队(一个实例只服务一个仓库)、用 GitLab 或 Gitee 的、需要开箱即用 SaaS 的、不能给进程系统权限的。它现在没有多租户,也没有托管版。
  • 别碰。公开仓库且无法控制谁能 @ 的、合规要求进程隔离的、指望它"无人值守自动发版"的。默认自动合并只在 PR 就绪、审批覆盖最新提交、增删合计少于 200 行时成立,而且它不会用 Agent 账号自己开自动合并——这条底线是给人留的,不是给流程省事的。

这套东西最值钱的地方,不是哪个模块新,而是它把"人的注意力"当成预算来设计:一条消息、一个通知、一个面板元素,都要证明自己值这个注意力,否则删掉。这个原则值得抄。代码本身还在 0.1.0,README 自己都说要"审查并改造后再用"——先把它当一份可运行的架构参考,别当明天就能接管团队的产品。

本文由拾光札记编辑部整理,勘误请联系我们