跳转至

Super-agent 设计抽象

DeepSeek Harness 团队提出的 Super-agent,是把「常在线、多任务、少占人注意力」做成可运行的系统结构;下文从论文与公开 prototype 归纳设计抽象,供 mini 在显式采纳原则时对照,不构成 wire 对齐义务。

材料来源:工程文《Exploring Super-agent Design》(出处)、旁路仓库 dsh-superagent-prototype。公开 prototype 窄于论文(无 Watchdog、云算力分离等完整交付);文中标注「prototype」处为学习归纳,权威行为仍以 A 线 deepseek-harness/ 为准。


1. 单 Session 为何撑不住多任务

编码类 agent 已经能把单条任务推得很远,但常见产品仍以一个 Session 为边界:并行开三五个会话时,人要自己记「哪条上下文在哪」。单任务上限主要看模型;多任务上限主要看注意力。外挂 CLI、MCP 只能把外部消息接进来,解决不了同一条 ReAct 链上的阻塞、多任务上下文缠在一起、本机离线即停。

Super-agent 要的是:对用户像一个连续体,底层可以用多个 Session,但不应把 Session 管理甩给用户。

特征 对用户意味着什么 系统上典型代价
连续(Continuity) IM、GitHub 上是同一个 agent,改口风能跟上 需要跨入口的全局协调与记忆
高效(Efficiency) 不必等上一工做完才接新指令 并行 Worker、异步工具
主动(Proactivity) 环境有值得动的事才动 事件驱动 + 过滤,否则噪声吞没团队
持久(Persistence) 长跑、断线可恢复 状态与算力分离;外环监测(论文层)
flowchart LR
  subgraph single [单Session习惯]
    U[用户] --> S1[Session A]
    U --> S2[Session B]
    S1 -.独立上下文.-> S2
  end
  subgraph target [Super-agent目标]
    U2[多入口] --> Face[单一Agent面目]
    Face --> Hidden[多Session实现]
  end

2. 五块结构:论文 [2]–[6]

论文把实现拆成五块,对应后面各节;不是五个必做 microservice,而是职责切分,避免一个 Session 又协调又写代码又对外刷屏。

flowchart TB
  subgraph mod2 [2 双层]
    R[Router 协调]
    W[Worker 执行]
  end
  subgraph mod3 [3 事件驱动]
    Tr[Trigger]
    FP[Fast Path]
    SP[Slow Path]
  end
  subgraph mod4 [4 人机交互]
    FD[全双工]
    Ch[按信道输出]
  end
  subgraph mod5 [5 持久]
    CS[算力与状态分离]
    Env[执行环境留本地]
  end
  subgraph mod6 [6 Watchdog]
    WD[外环监测]
  end
  Tr --> FP
  FP --> SP
  SP --> R
  R --> W
  W --> R
  R --> Ch
  CS --> Env
  WD -.-> R
  WD -.-> W

上图是职责地图,不是每条 Trigger 的严格时序:Thread 已订阅 Worker 时,后续事件可走 Fast Path 直送 Worker(§4),不必再经 Router 上的 Slow Path 评估。

模块 核心问题 延伸译文(逐句核对用)
[2] 双层 连续 vs 吞吐 paper-02
[3] 事件驱动 噪声、路由、上下文窗口 paper-03
[4] 人机交互 阻塞、信道带宽 paper-04
[5]–[6] 持久与外环 云/本机、长跑可靠 paper-05
实验与开放问题 消融、长期记忆、安全 paper-06

动机与四特征原文:paper-01。表中「实验与开放问题」对应论文 §7–9,不属于架构模块 [2]–[6] 编号,见 paper-06 与下文 §9。


3. 双层:Router 与 Worker

若所有事件进同一 Session:上下文最连续,但一条 ReAct 串行,吞吐差,多任务细节互污染。若每事件一新 Session:吞吐高,全局断档,多个 Session 同时回复用户会乱。

切法:Router 持久,负责人机交互、任务间关系、对外统一出口;Worker 隔离上下文、带完整工具,专注一件活。理想情况下 Router 不扛重执行(甚至可以没有 Bash)。这和 Agent Team 不同:Team Lead 常在单任务内部拆步协调;Router 只管任务之间的分派。论文消融里,单 Session 靠 prompt 决定是否委派子 agent,极不稳定;双层在系统层固定角色,Worker 只收订阅 Thread 上的后续事件。

flowchart TB
  subgraph ext [外部信道]
    GH[GitHub]
    IM[IM]
  end
  subgraph router [Router层]
    MS[主Session / 评估]
  end
  subgraph workers [Worker层]
    W1[worker Session 1]
    W2[worker Session 2]
  end
  ext -->|新Trigger| MS
  MS -->|派工| W1
  MS -->|派工| W2
  ext -->|已订阅Thread FastPath| W1
  W1 -->|Report| MS
  W2 -->|Report| MS
  MS -->|统一回复| ext
sequenceDiagram
  participant Ch as 外部信道
  participant R as Router
  participant W as Worker
  Ch->>R: 首条工单类 Trigger
  R->>W: 创建 Ticket / Assignment
  Ch->>W: 同 Thread 后续消息
  W->>R: Report 或提问
  R->>Ch: acknowledgement / answer / result
对比 Agent Team(单任务内) Super-agent Router
协调粒度 子步骤、角色 任务与任务
推理负载 Lead 常要深读任务 多为轻量分派与对外话术
对外声音 可能多成员 单一出口(候选原则 SA-A-05)

Prototype 落点:主 Session + dsh-superagent-router preset;每 Ticket 一个 worker-<id> Session + dsh-superagent-worker preset(5 秒前台 shell 转后台,步边界可接新消息)。领域写进 Engine,执行细则见 proto-003。


4. 事件驱动:从 Trigger 到 Worker

驱动从「人一条条 prompt」变成环境里的 Trigger(群聊、CR、CI…)。真实接入后流是高噪声、低行动率;每条都上大模型会拖垮延迟与成本。做法借 Fast Path / Slow Path:代码做来源、范围、白名单等确定性过滤(Fast);剩候选再给模型 + Policy(Slow)。

路由同样分快慢:Router 负责新任务与跨任务协调;归属建立后,同 Thread(同一 PR、同一 IM 话题)的后续事件由代码直送已订阅 Worker(Fast),不必每条经 Router 再转发。Thread 与 Worker 多对多;同 Thread 上新事件到达所有订阅者,Worker 可据此自行化解冲突,要点仍经 Router 汇总对外。

flowchart TB
  Ev[环境事件] --> In[进入系统]
  In --> FP{Fast Path 代码过滤}
  FP -->|丢弃| Log[记录 disposition]
  FP -->|候选| SP{Slow Path 评估}
  SP -->|ignore| Log
  SP -->|新工单| R[Router 分派]
  SP --> Sub{已订阅 Thread?}
  Sub -->|是| W[直送 Worker]
  Sub -->|否| R
  R --> W

上下文按「窗口即 cache」组织:Inline 把近期要用的放进窗口;Spill 把超长正文留在外面,窗口里留 ID 与摘要;按引用 Chain of Recall 多跳找回旧任务——Router 不可能永远塞满全历史。

flowchart TB
  Win[模型上下文窗口]
  Win --> Inline[Inline 近期 ID 与摘要]
  Inline --> Spill[Spill 超长正文外置]
  Spill --> Tool[工具按 ID 读取]
  Inline --> CoR[Chain of Recall 多跳关联]
  CoR --> Old[更早 Ticket / Thread]

推测执行:在不确定结果是否有人用之前,后台先试(例如静默复现);有价值才对外说话,否则全程安静——与 000 哲学「少占注意力」同向。

Prototype:Trigger 走 Eval 还是订阅扇出(002 与论文 §3.2 同构):

路径 何时 权限含义
Eval 消息未作为「已有 Ticket 的 Thread 上下文」扇出 门控 + Policy → 可能产生新 Mandate / Ticket
Subscription 扇出 Thread 已被 live Ticket 订阅 只追加上下文,不经 Eval 授予新权限;仍受既有 Mandate 约束

Eval 对一批 Trigger 产出 Decision(领域常量,见 001):

Decision 含义(prototype)
accept 创建 Ticket + Mandate,进入执行
stop 撤销或结束授权(含人显式 stop)
ignore 不行动,记录 disposition
unavailable 评估超时或无法完成(重试策略见 002)
阶段 谁处理 典型机制(prototype)
准入 Source + Policy gate proto-002
是否新工单 Eval / 主 Session proto-001
扇出上下文 Subscription 001
执行 Executor Session 003
对外写 Outbox / Channel 007

Trigger 从进入到落地的领域流(prototype 术语):

flowchart LR
  Src[Source] -->|Trigger| Th[Thread]
  Th -->|batch| Ev[Eval]
  Th -->|扇出| Ti[Ticket]
  Ev -->|accept + Mandate| Ti
  Ti -->|Assignment| Ex[Executor]
  Ti -->|Channel| Src

accept 之后 Ticket 阶段(003,自上而下首条匹配)决定面板「待人」与 slot 占用,与 Executor Session 存活解耦(SA-R-01):

阶段前缀 典型含义
person/* 需人:投递失败、待答、待 review、blocked/failed
working/* 执行中:queued 或 idle(仍有后台 job 时占 slot)

5. 交互:别在群聊里刷终端

经典 ReAct 里,同步 run() 会占满循环,期间接不了新话。Super-agent 需要 start/stop 式异步:慢命令后台跑,当前步结束后仍可处理新 Trigger。DeepSeek Harness 已有类似能力(jobs、shell 提升);是否默认打开是产品/policy 问题,属 A 线能力面。

对外输出要匹配信道带宽:Worker 内长推理不直灌群聊;Router 统一出口。IM 宜短(团队实测过「约百词」级硬限);GitHub PR、邮件宜结构化长文。

flowchart LR
  subgraph worker [Worker Session]
    Reason[长推理与工具]
  end
  subgraph router [Router]
    Out[按信道裁剪]
  end
  Reason -.不直出.-> IM[IM 短回复]
  Out --> IM
  Out --> GH[GitHub 结构化]

Prompt 与面板(prototype 产品化层,非 A 线 wire):004 把 Router 不写长文、IM 约百词、Executor 交还超范围消息等写进可版本化 prompt;005 用 Ticket 阶段驱动「只展示需要人的项」,健康态不占屏。mini 的 webui/ 是通用客户端,没有 superagent 面板域;若采纳 SA-P-01 / SA-A-07,UX 参考这两份 upstream 文档而非复刻 wire。


6. 持久化:论文方向 vs 当前 prototype

论文第二层解耦:Agent Loop 与状态可上云;重状态的执行环境(未提交改动、内网、凭据)留在本机,用轻 daemon 按需执行——「脑手分离」。再加 Watchdog Session:不只 ping 进程,还要判断 Worker 是否在推进任务、是否偏离目标;维护者可用自然语言查因、改 prompt 规则。

公开 prototype 以 stateDir + 本机执行 + tmux 启停 为主(proto-006),不等同论文的云 + BYOM + Watchdog 全套。读 B 线时把本节当方向,不当 mini 必做清单。

flowchart TB
  subgraph cloud [论文倾向:云端]
    Loop[无状态 Loop]
    Store[(Session 状态)]
  end
  subgraph local [本机]
    Daemon[轻 daemon]
    Repo[仓库与工具链]
  end
  Loop --> Store
  Loop --> Daemon
  Daemon --> Repo
flowchart LR
  Main[Router与Worker主系统]
  WD[Watchdog 外环]
  WD -->|定时与诊断| Main
  Main -.->|任务进展语义| WD
能力 论文 公开 prototype
多 Session 编排 是 是(Engine)
订阅直送 是 是
5s 异步 shell 是 是
云算力 / BYOM daemon 是 未作交付重点
Watchdog 是 未实现

7. Prototype 实现骨架(与论文对照)

Runtime 锁 stateDir、开 Store;Engine 同步、事务式地写 Trigger / Thread / Ticket / Assignment;Passes 周期跑 effects 与 evaluateDue;Outbox 唯一写对外 receipt。主 Session 工具面向路由;Worker 面向仓库与 shell。

flowchart TB
  plugins[Source 插件] --> engine[Engine]
  tools[Session 工具] --> engine
  http[管理 API] --> engine
  engine --> store[Store]
  engine --> assessor[MasterAssessor]
  engine --> executor[DshExecutor]
  executor --> engine
  engine --> outbox[Outbox]
  effects[Effects 队列] --> store
  assessor --> engine

Engine 内五块(依赖单向):Intake → Evals → Tickets → Assignments → Replies。API 按角色暴露不同 Pick(Sources / MainSession / People / Executor)。细节与测试索引:proto-007。自定义 Source 扩展步骤:proto-008 Cookbook。

论文概念 Prototype 锚点
Router 主 Session + Eval + dsh-superagent-router
Worker DshExecutor + worker Session
Fast Path 过滤 Source 丢弃 + Policy gate(002)
Thread 直送 Subscription + Input 投递(003)
统一对外 Outbox + Replies(007)
注意力伦理 000、004、005

8. 与 mini(A 线)的边界

mini 复现的是 DSH 内核与 wire(architecture §2)。Super-agent 是产品编排层叙事:Ticket、Engine、GitHub Source 整包不是对齐义务;下列仅为「若讨论采纳某原则,可能碰到的域」。

flowchart TB
  subgraph SA [Super-agent 抽象]
    R2[Router]
    W2[Worker]
    Tr2[Trigger 流]
  end
  subgraph mini [mini 已有近似]
    L0[core Session 日志]
    Sub[subagent]
    Jobs[jobs]
    Web[web / webui]
  end
  R2 -.->|非等价| L0
  W2 -.-> Sub
  Tr2 -.->|无常驻 Source 域| Web
  Jobs -->|异步工具| W2
Super-agent 思想 mini 域 说明
Worker 隔离 Session subagent、独立 session 目录 无 Ticket 生命周期机
异步 / 后台工具 jobs、shell promote A 线已有
Session 持久化 persistence A 线已有
Policy / Source gate hooks、web 入口 无 superagent Policy 表
Thread 直送 — 无 Subscription 域
待人 Panel webui 非 superagent 面板
Watchdog / 云分离 — 未立项

9. 实验、开放方向与候选原则

论文 §7 消融(摘要)

论文在合成负载下对比调度方案(非 mini 基准测试)。双层 + 订阅直送在尾延迟上明显优于「单 Session + Subagent 工具 + 中性 prompt」——中性 prompt 下模型常不委派,工作挤在同一 Session 并被新消息打断。去掉 Thread 直送时完成时间几乎不变,但 Router 决策量与 cache-read token 显著上升,说明直送主要省 Router 负载而非单纯提速。完整数据与 7.2 Router 批处理见 paper-06。

方案(论文 7.1) 完成时间 p50(约) p95(约)
Super-agent 12.4 分钟 15.7 分钟
单 Session + Subagent,中性 prompt — 29.5 分钟

论文 §8 开放方向(摘要)

下列为论文自陈未闭合项,默认不构成 mini 或 B 线采纳义务;单独立项前可登记 rejected.md 或 tasks。

主题 论文关切
规模与拓扑 单 Router 何时分片、Worker 是否可对外直连、多 Worker 协作形态
记忆 Chain of Recall 偏近期;月级长期记忆成瓶颈
产品 UX Session 对用户隐藏后,任务如何呈现;Issue/PR 界面 vs 聊天中心
多实例 组织扩大后的上下文共享/隔离;实例间 A2A 与权限边界
安全 事件驱动扩大不可信输入;云 Loop + 本机 daemon 互信下的注入与凭据不进上下文

候选原则与采纳

设计抽象可提炼为一组 SA-* 陈述(默认未采纳)。完整 ID、检验口径见 principles.md;仅写入 adopted.md 并在 tasks / ROADMAP 链出后,才在对应范围内约束 mini。与 A 线冲突时以 deepseek-harness 为准。

ID 抽象表述(一句)
SA-A-01 用户侧一个连续 Agent,Session 为实现细节
SA-A-02 协调层不扛重执行
SA-A-03 事件先代码过滤再模型评估
SA-A-04 归属建立后同 Thread 后续事件优先直送 Worker
SA-A-05 对外单一出口
SA-A-06 长耗时工具异步化,步边界可接新输入
SA-A-07 输出匹配信道带宽
SA-A-08 主动行为无把握则安静
SA-P-01 占注意力的一切须净收益为正
SA-P-02 领域概念极简
SA-R-01 工单状态不随 Executor Session 机械绑定
SA-S-01 系统级双层分派优于单 Session 内 prompt 委派

采纳流程:00-governance.md。双轨说明:index.md。延伸译文粒度:sources.md。