DSH LongRun Suite
September 3, 2026 · View on GitHub
本项目意在探索 AI 在长期性科研、项目中的运行。如有交付则尽量保证可靠。尚在活跃开发中,如遇问题欢迎提交 issue,作者会及时查看;觉得好用的话给个星星,谢谢!
一个仓库装齐:长期自主任务管理器(mission-control)+ 长跑主持人预设(Long-Run Captain)+ 严格审查修正的 LLM 验证器 + 自主定时唤醒(timer scheduler)。克隆即用。
这个仓库解决什么问题
DSH 原生的 goal / todo / subagent 适合短任务,但做长期困难任务时会有这些问题:
- 任务列表规划一次就死:方向失败后不会自动换思路、重规划、追加新任务;
- 失败即停:验证不通过经常直接停掉,而不是修 gap、换方向继续;
- 中间需要人唤醒/引导:长实验期间 agent 不会自己定时回来检查结果;
- 完成标准太松:任务列表空了就算完成,没人逐条核验最终目标;
- 大量子 agent 拖慢 DSH:continuable 子会话被频繁扫描,内存/CPU 占用高;
- 单点汇总丢失:总 Agent 重新转述子代理结果会丢条件、数字和细节;
- worker 协作原始:只有等待/聊天,容易重复劳动、双写、不知道谁在干;
- 模型偷懒/降级:自研简化方案、不参考已有实现、悄悄把标准方法换成低一级方法;
- 经验流失:跨任务反复踩坑,记忆不可检索;
- 自评虚高:自己审自己,缺少独立/无记忆评审;
- 长任务与提醒不可恢复:提醒丢失、fork 冷启动失败、陈旧提醒反复触发。
本套件用 Mission 状态文件 + Claim Pool/Lease + Blackboard 工件通信 + WorkReceipt + 无记忆盲审 + LLM Wiki 记忆 + 失败强制 replan + 定时唤醒 解决以上问题,并且不硬编码任何领域流程:
- 模型优化、数学研究、项目开发都是同一套框架;
- 每个任务开工前由主持人生成自己的
verificationPlan; - 只有证据 + 独立评审通过才算 accepted;
- 可复用 worker 按能力抢单,长任务租约化,崩溃自动回收;
- worker 之间通过类型化 artifact 通信,不靠聊天转述;
- 实现前写
method-card,复用优先、禁止无依据猜想、禁止悄悄降级; - 最终完成前必须有无记忆盲审 + calibration gap;
- 跨任务经验写入
.memory/,可检索、可 lint; - 最终完成必须逐条映射 success criteria,并经过 final audit。
组件
| 组件 | 路径 | 作用 |
|---|---|---|
| dsh-mission-control | packages/dsh-mission-control/ | mission 状态机 + mission_* 工具 + Claim Pool/Lease + Blackboard artifacts + Blind Review + LLM Wiki 工具 + 元校验器 |
| Long-Run Captain 预设 | preset/long-run-captain/ | 通用完整系统提示版:主持人 persona + 协议技能(联网调研、自适应验证、苏格拉底自查、LLM verifier 用法) |
| Long-Run Captain Router 预设 | preset/long-run-router/ | 同上能力 + router-standard 极简首轮系统,针对 DeepSeek V4 Flash 系列调优 |
| dsh-plugin-llm-verifier | packages/dsh-plugin-llm-verifier/ | 参考 LLM-as-a-Verifier 论文与上游 DSH 插件、经过更严格审查修正的 LLM 验证器:verify_rollout / verify_select / verify_compare / verify_track |
| dsh-timer-scheduler-ui | packages/dsh-timer-scheduler-ui/ | schedule_reminder 自主定时唤醒 + 顶部会话头定时提醒入口 |
两个预设的区别
本仓库提供两个 Long-Run Captain 预设,能力相同,只有首轮系统提示形态不同:
| 预设 | 路径 | 系统提示 | 适用模型 |
|---|---|---|---|
| Long-Run Captain | preset/long-run-captain/ | 完整注入 Long-Run Captain persona / 规则 / 技能 | 任意模型,首轮上下文较重 |
| Long-Run Captain Router | preset/long-run-router/ | 仅保留 router-standard 极简首轮(You are a helpful software engineer assistant.),角色信息通过派发 prompt 中的 Role Card 携带 | 针对 DeepSeek V4 Flash 系列调优(deepseek-v4-flash / deepseek-v4-flash-vision-exp),用来保持 We / Let's 集体规划风格 |
简要规则:
- 如果你用的是 DeepSeek V4 Flash 系列,推荐 Long-Run Captain Router:首轮更轻,使命门工具 / 子代理 / 定时唤醒能力完全保留,子代理角色约束通过 Role Card 写在派发提示词里。
- 如果你用 其他模型,或者想要重一点的完整系统提示,选 Long-Run Captain。
- 两个预设都依赖
dsh-mission-control,且任务流程、mission 状态机、评审/重规划规则完全一致。
DSH Store 提交说明
本仓库是三个独立插件的 monorepo,DSS STORE 上架时必须分别提交明确的子路径:
| 插件 | 子路径 | Entry ID | 版本 |
|---|---|---|---|
| dsh-mission-control | packages/dsh-mission-control | dsh-mission-control | 0.2.0 |
| llm-as-a-verifier | packages/dsh-plugin-llm-verifier | llm-verifier | 0.9.0 |
| timer-scheduler-ui | packages/dsh-timer-scheduler-ui | timer-scheduler-ui | 0.2.0 |
每个子包 package.json 都声明了精确的 DSH 兼容矩阵:
"dsh": {
"compatibility": {
"dshReleases": {
"0.1.0-rc.8": "compatible",
"0.1.1-rc.1": "compatible",
"0.1.1-rc.2": "compatible"
}
}
}
详细说明见 STORE_SUBMISSION.md。
快速开始
在 Long-Run Captain 或 Long-Run Captain Router 会话里直接说:
启动一个 mission:开发一个命令行工具,递归扫描指定目录下的 Markdown 文件,
按标题生成带层级、文件路径和更新时间的索引 index.md。
termination_policy: success
budget: { maxRounds: 6, maxHours: 4 }
成功标准:
- CLI 能递归扫描目录并生成 index.md
- 索引按标题层级组织,包含文件相对路径和更新时间
- 提供 3 个测试用例并全部通过
- 输出 README 说明安装和使用方式
- 由 reviewer 独立验证索引内容正确
预期流程:
mission_start
→ 早期大量联网调研 + wiki_search 查历史经验
→ mission_add_tasks(每个任务带 acceptance + verificationPlan + capabilities)
→ worker 按能力 mission_claim;长任务 mission_heartbeat 续租;干不完 mission_release
→ 研究方法/工具先写 method-card,已有实现优先复用,防降级/防猜想
→ 长实验用后台任务 + schedule_reminder 定时唤醒
→ worker 之间用 mission_publish_artifact / mission_consume_artifacts 交换
→ 完成先 mission_submit + WorkReceipt,再由独立 reviewer 评审
→ 失败任务 mission_replan + replaces 换方向继续
→ verify_track 监控方向是否跑偏
→ 经验写入 wiki_write,最终前 mission_blind_review + wiki_lint
→ mission_final_audit 逐条核验成功标准
→ mission_complete
核心机制
- 任务状态只保留 5 个:
open → active → needs_review → accepted / rejected - 拒绝必须有 follow-up:rejected 任务必须有
replaces=...后续任务,否则mission_complete拒绝完成 - 完成必须有真实 outcome:默认
terminationPolicy=success,映射到成功标准的任务必须outcome=success - 元校验器:
mission_check只检查证据诚实性(缺证据/缺评审/缺 final audit 一律 FAIL) - 苏格拉底自查:提交前用
socratic-self-audit技能攻击自己的结论 - 严格 verify_track:使用 LLM-as-a-Verifier 参考实现的校准 prompt,不信任 agent 的自我宣称;pivot 选择与 rollout 评分标准也已对齐论文/参考实现
- WorkReceipt:提交任务时记录证据文件 SHA-256,评审通过后生成不可变工作收据
- 蜂群式 Worker 池:任务可带
capabilities,worker 凭能力匹配抢单;长任务用mission_heartbeat续租、mission_release释放,过期自动回收,多次回收自动 blocked - Blackboard 工件通信:
mission_publish_artifact/mission_consume_artifacts,worker 之间通过类型化 artifact 交换,不靠聊天 - 无记忆盲审:
mission_blind_review生成blind_review.md+calibration_gap,实质交付型 mission 完成前作为硬门 - LLM Wiki 记忆:
wiki_write/wiki_search/wiki_lint,维护.memory/下可检索、可 lint 的跨任务经验
Worker 池 / Claim Pool & Lease
任务不再只是“由 Captain 指派”,worker 可以凭能力抢单:
mission_claim
task_id: t-impl
worker: worker-1
capabilities: [python, pytorch, remote-gpu]
lease_seconds: 7200
- 任务可以声明
capabilities,worker 能力不覆盖则拒绝; - 抢到后持有租约;
- 长任务用
mission_heartbeat续租; - 干不完用
mission_release放回队列; - 租约过期自动回收;
- 同一个任务被回收 3 次自动
leaseBlocked,需要人工看原因; - 过期 worker 迟到回写会被拒绝(claim lost)。
Blackboard / artifact 通信
worker 之间不直接聊天,使用类型化工件:
mission_publish_artifact
task_id: t-run
artifact_type: run-metrics.json
path: results/run-metrics.json
summary: 11 个数据集指标
mission_consume_artifacts
artifact_type: run-metrics.json
所有 artifacts 存在 mission 状态中,下游按类型/生产者读取。
LLM Wiki 记忆
跨任务经验维护在 .memory/:
.memory/
├── _schema.md
├── _capabilities.md
├── methods/
├── pitfalls/
├── decisions/
├── missions/
└── workers/
wiki_write:新增/更新页面,带[[slug]]链接;wiki_search:按文本/domain 搜索;wiki_lint:检查缺摘要、断链、孤儿页、过期声明、worker 简历缺能力;_capabilities.md:每个 workspace 自定义能力词表/别名,系统不做硬编码;workers/*.md:worker 简历(role / capabilities / skills / history)。
方法出处卡与防偷懒
method-card技能用于非平凡实现前记录:- 标准/经典方法;
- 每个组件是 existing / verified-no-existing / uncertain;
- 复用 vs 自研;
- 是否有方法降级(如用网格搜索代替适用优化器);
- 未证实的假设列表。
mission-protocol强制“复用优先 + 反猜想”;- reviewer 会检查是否悄悄降级、是否把猜想当事实。
独立盲审
mission_blind_review 生成:
blind_review.md
avg_rating
n_reviews
decision
top_weaknesses
self_claimed_rating
calibration_gap
- 只给脱水后的交付物,不给历史/自评/内部结论;
- 实质交付型 mission(有 accepted 的 research / engineering / deliverable-style 任务或 reportPath)完成前必须有盲审记录;
- bookkeeping / synthesis / coordination-only 任务豁免。
UI 可视化
Web 界面的 conversation.view 视图环新增一个「任务」标签页,放在「对话」与「轨迹」之间:
- mission 状态 / 轮次 / 成功标准;
- open / active / needs_review / accepted / rejected 统计;
- 可认领队列(等价
mission_ready); - 任务 DAG 节点图:按依赖自动分层,节点用状态色区分,悬停节点显示任务详情(验收标准、依赖、评审结果、租期、必交证据);
- 评审层级:任务级评审(单个交付物)与最终评审(mission 交付前独立终审)分开显示;
- 顶部状态胶囊:任务计数、黑板产物数、记忆库页数;
- 外部盲审 / 校准状态(存在时)。
浏览器通过 GET /api/mission-state?sessionId=...&cwd=... 读取 Host 投影(每 2 秒刷新)。
动态版插件也可用 Package-private host.call('mission-state', ...) 获取同一投影。
工具使用地图(防止模型忽略)
| 阶段 | 必须/建议使用 |
|---|---|
| 规划前 | wiki_search |
| 非平凡实现前 | method-card |
| 学到的经验 | wiki_write |
| 长任务 | mission_heartbeat |
| 不能完成 | mission_release |
| worker 交换数据 | mission_publish_artifact / mission_consume_artifacts |
| 最终审计前 | mission_blind_review + wiki_lint |
整体结构
Host / 插件层
├── dsh-mission-control
│ ├── lib/core.js # 纯任务状态机(无 DSH 依赖)
│ ├── lib/index.js # mission_* / wiki_* / artifact 工具注册
│ ├── lib/client.js # Web 任务可视化视图标签页(conversation.view「任务」)
│ ├── bin/mission_check.mjs
│ └── preset/ # Captain 预设与协议技能
├── dsh-timer-scheduler-ui # 定时唤醒 + 提醒自动取消 + 父会话回退
└── dsh-plugin-llm-verifier # LLM-as-a-Verifier
Agent / 预设层
├── long-run-captain/ # 完整系统提示版
└── long-run-router/ # router-standard 极简版(DeepSeek V4 Flash 优化)
技能层
├── mission-protocol # 任务拆解、派发、复用优先、反猜想、工具地图
├── task-profile # Input/Decision/Output/Core Challenge/No-Lazy
├── plan-critique # 计划批判 + A/B/C + 模块契约 + 反降级
├── adaptive-verification # 最低验证包
├── method-card # 方法出处卡 / 标准方法对照 / 降级检测
├── wiki-memory # LLM Wiki:ingest/query/lint
├── lessons # 任务内经验 + mission-legacy + mission-cases
└── report-protocol / socratic-self-audit / etc.
运行时数据层
├── .mission/<id>/mission.json # mission/task/attempt/receipt/blindReview/artifacts
├── .memory/ # 跨任务 LLM Wiki + 能力词表 + worker 简历
├── .mission-cases/ # 轻量案例卡
└── timer-reminders.json # 提醒持久化
参考与借鉴
本项目不是从零发明,而是吸收了多个公开 Agent 系统的“机制层”设计:
| 项目 | 借鉴了什么 | 我们怎么做 |
|---|---|---|
| AutoResearch (EvoMap) | workflow queue、claim pool、lease、receipt、blind review | mission 队列 + mission_claim/heartbeat/release + WorkReceipt + 盲审硬门 |
| ZZBoard | 去中心化工作板、artifact、signed receipt | Blackboard tools + mission_publish/consume_artifacts |
| Clawix | LLM Wiki 记忆、性能词表、角色化 worker | .memory/ + wiki_write/search/lint + _capabilities.md + worker 简历 |
| Flock | Blackboard 原则:不用聊天,用类型化工件通信 | artifact type 发布/消费 |
| unsorry | repo 即队列、claim substrate、expiry/reclaim | 租约过期回收 + 多次回收 blocked |
| CUMCM math-modeling Skill | 结构诊断、A/B/C 候选、最低验证、创新证据 | 通用化为 Input/Decision/Output + A/B/C + 验证包 |
| Karpathy LLM Wiki | ingest/query/lint 的 wiki 记忆范式 | 落地为 wiki-memory |
“参考”不是照搬:我们保留 DSH 通用性,领域内容全部交给 mission/task 数据,不硬编码任何数学/软件/研究流程。
仓库结构
dsh-longrun-suite/
├── README.md # 中文入口
├── README.en.md # English version
├── install.sh # 一键安装
├── packages/
│ ├── dsh-mission-control/
│ ├── dsh-plugin-llm-verifier/
│ └── dsh-timer-scheduler-ui/
└── preset/
├── long-run-captain/
└── long-run-router/
安装
要求:Node 20+、DSH 0.1.0-rc.8+、已配置好 LLM provider。
方式 A:一行命令(只装插件)
dsh plugin --profile web add github:GMH13552/dsh-longrun-suite
这会一次安装全部三个插件。之后还需要装预设(两个都装,按需选用):
# A1: 从仓库目录复制
git clone https://github.com/GMH13552/dsh-longrun-suite.git
cp -R dsh-longrun-suite/preset/long-run-captain ~/.dsh/.agent-presets/long-run-captain
cp -R dsh-longrun-suite/preset/long-run-router ~/.dsh/.agent-presets/long-run-router
# A2: 或从 profile 的 node_modules 里复制(版本可能与插件包不同)
cp -R ~/.dsh/profiles/web/node_modules/dsh-longrun-suite/preset/long-run-captain ~/.dsh/.agent-presets/long-run-captain
cp -R ~/.dsh/profiles/web/node_modules/dsh-longrun-suite/preset/long-run-router ~/.dsh/.agent-presets/long-run-router
方式 B:克隆 + 一键脚本(推荐,插件和预设一起装)
git clone https://github.com/GMH13552/dsh-longrun-suite.git
cd dsh-longrun-suite
./install.sh # 默认安装到 web profile
# ./install.sh tui # 安装到其他 profile
安装脚本会:
- 把三个插件加入你的 profile;
- 把
long-run-captain和long-run-router两个预设复制到$DSH_HOME/.agent-presets/; - 打印重启提示。
重启 DSH:
dsh web
新建会话时选择 Long-Run Captain(通用完整系统提示)或 Long-Run Captain Router(DeepSeek V4 Flash 优化极简版)预设。
手动安装
等价命令:
dsh plugin --profile web add ./packages/dsh-mission-control
dsh plugin --profile web add ./packages/dsh-plugin-llm-verifier
dsh plugin --profile web add ./packages/dsh-timer-scheduler-ui
mkdir -p "$HOME/.dsh/.agent-presets"
cp -R preset/long-run-captain "$HOME/.dsh/.agent-presets/long-run-captain"
cp -R preset/long-run-router "$HOME/.dsh/.agent-presets/long-run-router"
dsh-plugin-llm-verifier默认使用provider: deepseek-official+model: deepseek-v4-flash-vision-exp。如果你的模型路由不同,改 profile 的cordis.patch.yml中llm-verifier行的provider/model,或者改本仓库packages/dsh-plugin-llm-verifier/cordis.patch.yml后重新安装。
已知边界
- DSH 流式接口不暴露 logprobs,所以 LLM verifier 用温度采样平均近似论文的 logits 期望;
schedule_reminder目前只在 session live 时唤醒;跨重启冷恢复是后续方向;- 独立评审是流程约束,不是沙箱隔离。
- Claim Pool / Lease 是文件级实现(mission.json + 时间戳),不是独立服务;租约过期自动回收,连续 3 次回收自动 blocked。
- Capability Matching 是 tag 集合匹配,不内置领域词表;每个 workspace 需自行维护
.memory/_capabilities.md,否则标签可能不一致。 - Blackboard artifact 记录的是 artifact 元数据(类型/路径/生产者),真实文件仍在磁盘上,不做托管复制。
mission_blind_review记录外部评审结果并生成blind_review.md;实际评分需要由独立 reviewer/模型调用产生,工具不会自动打分。- LLM Wiki 工具是 Markdown + grep 的轻量实现,不是向量库/数据库;
wiki_lint只做文本级检查。 method-card/wiki_*多数是软协议,不强制所有任务;只有实质交付型 mission 的 blind review 是硬门。
致谢
- 验证器部分参考 LLM-as-a-Verifier 论文与 dsh-plugin-llm-verifier,并做了更严格的审查与修正
- 定时唤醒基于 dsh-timer-scheduler
License
MIT