dsh-superagent 是什么?DeepSeek 放出的 20K 星 Agent 原型,把「工单制」搬进 GitHub(基础篇)

dsh-superagent 是什么?DeepSeek 放出的 20K 星 Agent 原型,把「工单制」搬进 GitHub(基础篇)

10 月 31 日,DeepSeek 在 GitHub 丢了一个仓库:deepseek-ai/dsh-superagent-prototype。没发布会,没博客,README 第一行写着「研究原型,仅供参考,不是 DeepSeek 官方产品」。一周后它挂了两万颗星(20,178,11 月 7 日数据)。

翻完 docs 我的判断是:这不是又一个帮你写代码的 Agent,而是 DeepSeek 把「怎么管一个 Agent」的内部做法开了一份源。核心不是模型多强,是谁有资格派活、活怎么记账、人什么时候必须出现。

它到底是什么

一句话:一个只盯一个 GitHub 仓库的主动型编程 Agent,打包成 DeepSeek Harness 的 bundle。

它听两个地方:GitHub(通知、订阅的 Issue/PR、CI 变化,可开关「全仓库新 Issue/PR/评论」)和飞书(群里的 @、私聊)。白名单里的人找它要活,它就开一张工单,在自己的会话、自己的目录里干,干完回到原来那段对话交付——通常是一个 PR。侧边栏的面板只回答三个问题:现在有事要我做吗、系统健康吗、这件事从头到尾发生了什么。

README 里那句设计原则写得很实在:take as little human attention as possible, and give as much value as possible。能自己干就别叫人,要叫就只叫一次。

一套工单制,不是一个对话框

大多数 Agent 产品的心智模型是聊天框:你说一句它回一段。dsh-superagent 的心智模型是工单,中间每一步都有名字:

  • Source:事件来源,记自己的读取位置,重启不重放;
  • Trigger:一条不可变事件,同一条重复进来只会生成一张工单;
  • Thread:按时间排的一串 Trigger,同一个 Thread 同时只跑一个 Eval;
  • Eval:判定层,输出四种结论 accept / stop / ignore / unavailable,自己不存状态;
  • Mandate:accept 时发的授权书,写清依据哪版 Policy、范围多大、谁在哪个平台说的,不可变;
  • Ticket / Assignment:工单,和「派给哪个 Executor 实例」,状态各自独立。

最妙的一点是只有 Eval 能开工单。Executor 干完只能报告,不能自己宣布再干一票;人要停,只有人的 stop 能撤 Mandate。这比大部分「自主 Agent」的权限设计干净。

docs/001 里还附了一张「被否决的概念」表:为什么不建 Principal 实体、为什么 Eval 不自己排延迟任务、为什么 Policy 变更时不取消跑到一半的工单。肯把否决理由写出来的框架,功能列表之外还多一层可信。

dsh-superagent 结构图:GitHub 与飞书事件经 Engine 判定,Policy 授权后派工给 Executor 会话,回执回到 Engine,监督面板只负责看
结构按仓库 docs/001 与 docs/007 画:事件从 Source 进来,Engine 判定并派工,Executor 在独立会话和目录里干,回执走回 Engine

授权是这项目的重点

三层:

  1. 每个 Source 一份白名单(同步群成员或 GitHub 登录名);
  2. 一张准入表,按「在不在名单」「有没有 @ 机器人」两个维度,决定一条消息是明确请求、推断候选、还是直接忽略;
  3. 落到工单上的 Mandate,带 Policy 版本;Policy 变了只通知工单,不会把跑到一半的活掐掉。

默认 accept mode 是 observe:只记录它认为该干的活,不真干。这个默认值很聪明——先让团队看一周它想干什么,再决定放开多少。

一张工单跑起来什么样

拿到 Assignment 后,每张工单有独立会话 worker-<ticket id>,和一个以工单短名命名的目录,默认在 <stateDir>/work 下。目录不存在就先跑 prepare 命令(十分钟超时),典型写法是 git worktree 拉一份干净检出。

几个工程细节:

  • Executor 以操作者系统用户身份、不经审批执行命令;
  • 前台 shell 超过 5 秒自动转后台,下一步就能收新消息,不用干等编译;
  • 一轮结束后后台任务最多再跑 30 分钟,超时 shell 被 kill、工单回到「等人」,子 Agent 可以继续;
  • 并发有上限,但给人留一个额外槽位——满载时人插话不排队。

面板里的阶段也很实:排队、在干、干完等 Trigger、在问你、等你 review、卡住/失败、输入没送达(2 秒后重试,退避到 1 分钟)。

装它要什么

硬门槛:Node 22.19+ 或 24、pnpm、git 2.32+、tmux、Python 3.8+、GitHub CLI 2.48+,以及已经在跑的 DeepSeek Harness。

安装方式挺有意思:它让你叫自己的编码 Agent 去读 SETUP.md,那个 Agent 一次问一个问题,问完给一份完整计划,你确认一次它才动手;全程不让你在聊天里贴密钥,需要你亲手做的(建专用 GitHub 账号、飞书建机器人)单独列一条。默认值也写死了:profile superagent、端口 3082、状态目录 ~/.dsh/state/superagent、分支前缀 agent/、每小时自检拉起挂掉的进程。

说实话:现在还不能当基础设施

  • 它是原型,不是产品。 README 自己承认很多工程是 coding agent 写的,可能有 bug、风格可能不一致;公开版和内部版、论文里的实现也不完全一样,论文有些设计只是方向、没落地。
  • 它停在 11 月 3 日。 最后 push 是 11 月 3 日,没有 release 节奏,issue 区是关的。当参考读可以,当生产依赖不行。
  • 权限是真危险。 Executor 以你的系统用户身份、免审批执行命令。官方有 blocked commands 兜底,但别拿它跑生产机,更别给 root。
  • 成本是会话级的。 一张工单一个会话,还会起子 Agent、跑后台任务,长任务烧 token 不客气。先 observe 一周,看它一天想开几张工单。
  • 对个人开发者,docs 比代码值钱。 001/002/003 三篇讲的是「Agent 替团队值班」绕不开的问题:幂等、授权边界、人机交接。要自己写多 Agent 系统,这三篇能省不少弯路。

一句话定位:它不帮你省写代码的时间,它给「一个 Agent 怎么替一个团队值班」写了一份能抄的作业。想先补 Agent 平台的整体地图,可以看十个平台第一次点「新建」;想看另一种「把 Agent 当员工管」的思路,Paperclip 那篇可以对照读。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注