
如何读懂dsh-anchored-standard的Durable事件驱动阶段状态机Resume安全的晋升设计原理【免费下载链接】dsh-anchored-standardTwo-phase DeepSeek Harness preset: Minimal-aligned bootstrap, then full Standard tools (Project2 98/99)项目地址: https://gitcode.com/gh_mirrors/ds/dsh-anchored-standarddsh-anchored-standard 是一个两阶段 DeepSeek Harness preset先用 Minimal 条件锚定会话的首轮轨迹bootstrap 阶段再在会话持久化后晋升到 Standard 能力resident 阶段。本文带你读懂它最核心的机制——Durable 事件驱动的阶段状态机以及为什么这种晋升判定设计在会话重启、恢复resume之后依然安全。两阶段晋升一张状态转移图整个机制可以用下面这张图概括与 README.zh-CN.md 中工作原理一节一致用户第一条消息 │ ▼ ┌ 请求 #1 ── bootstrap 阶段 ─────────────────────────┐ │ 工具 : bash str_replace_editorMinimal 真实对│ │ 上下文 : 无 AGENTS.md 摘要、无技能目录提醒 │ └─────────────────────────────────────────────────────┘ │ 首个持久化 tool/call 或 assistant/message ▼ 晋升promotion——由持久事件推导resume 安全 ┌ 请求 #2 起 ── resident 阶段 ────────────────────────┐ │ 工具 : bootstrap 对 发现工具 模型已解锁工具 │ │ 上下文 : 恢复常规注入 │ └─────────────────────────────────────────────────────┘阶段可见工具自动注入上下文退出条件 bootstrap引导仅bashstr_replace_editor全部关闭出现持久晋升信号 resident驻留引导对 dev_tool_search/skill_search/skill_load 已解锁工具恢复遇到compaction/end时回退注意状态机的状态不是某个内存变量而是由三类持久会话事件推导出来的tool/call工具调用事件assistant/message助手回复事件compaction/end上下文压缩边界事件会让状态机回退为什么选择从持久事件推导而不是记在内存里这是整个设计最值得一读的地方。核心实现在 shared/compaction-epoch.mjs它导出一个只有两个方法的追踪器方法作用行为status(agent)查询当前阶段内存里没有记录时冷启动全量扫描会话事件日志一次然后 O(1) 命中observe(session, event)增量喂入事件每收到一条session/event就地更新无需再扫描这种先冷扫描、后增量的组合带来两个关键性质重启安全resume-safe进程重启后内存为空但冷扫描会重放同一份事件日志得出的阶段与重启前完全一致——状态从来没有丢失因为它根本不被存储而是被重新推导零冗余晋升判定按会话记忆化每会话每进程只完整扫描一次。 一句话总结设计哲学事件日志是唯一的真相来源source of truth阶段状态只是它的一个投影。这也是术语表里 README.zh-CN.md 中持久durable的含义——已写入会话事件日志。兼容细节扫描时优先使用session.snapshotEvents()新版 harness 的冻结副本旧版自动回退到session.events所以新旧 harness 都能加载见 shared/tool-bootstrap.mjs。晋升触发器promoteOn 的三档语义状态机什么时候晋升由promoteOn配置决定在 preset/agent.cordis.yml 的两行context-gate与tool-bootstrap中都必须保持一致取值晋升信号适用场景either默认首个tool/call或首个assistant/message先到者为准基础模式tool-call仅tool/call兼容原行为assistant-message仅assistant/message零工具锚定变体为什么要默认either如果只用tool-call模型首轮只回了文字、没调工具会话就会永远困在 bootstrap 阶段——这就是所谓陷阱。改用either后请求 #1 恒见 bootstrap 目录、请求 #2 恒见 resident 目录纯文字首答也能在第二轮解锁见 shared/tool-bootstrap.mjs 中PROMOTE_EVENTS的定义。还有一个容易被忽略的细节工具执行失败也会晋升——因为tool/call事件在调用发出时就已经持久化了与执行成败无关。Epoch 边界compaction 是第二次的第一个请求阶段状态机带有一个epoch纪元概念compaction/end事件会把阶段回退到受控阶段之前的晋升信号全部作废只有边界之后出现的新信号才能重新晋升。assistant/message(seq1) ── 晋升 ✅ compaction/end(seq3) ── 边界3promoted 复位为 false tool/call(seq2边界之前) ── 不计数旧信号失效 assistant/message(seq4) ── 边界之后重新晋升 ✅为什么需要回退因为压缩会重写模型可见面之前的对话塌缩成一条合成摘要、工作区指令基线从零重新注入——压缩后的第一个请求本质上就是第二次的第一个请求拥有同样的首 token 条件因此要重新走一遍锚定控制源码注释在 shared/compaction-epoch.mjs 中有完整说明。工程实现上回退就是把{ boundary, promoted }中的边界更新为最新compaction/end的 seqpromoted置 false多次压缩时最后一条边界获胜。这些规则被 test/compaction-epoch.test.mjs 逐条覆盖例如只有边界之后的信号才计数与跨边界立即翻转阶段两个用例。回退后会话并非裸奔tool-bootstrap行支持compactionToolspreset/agent.cordis.yml 中配置了read、write、edit等核心工作集让任务进行到一半的模型面对一个小目录继续干活而不是直接放开完整 Standard 目录。三个插件消费同一个阶段状态状态机是共享基础设施三个插件各自createEpochPromotion一份、各自订阅session/event但消费方式不同插件消费阶段做什么降级策略 context-gate.mjs未晋升时关闭两条统一注入路径清空装配期的 runtime-context 贡献、pre-step 只保留 claimed 消息批次 allowKinds白名单晋升后恰好差分注入一条全新快照消息首轮极简、二轮注入出错时保留全部消息绝不吞上下文 tool-bootstrap.mjs未晋升时把工具目录裁剪为 bootstrap 对晋升后裁剪为 resident 集引导对 发现工具 经dev_tool_search解锁、且从持久tool/call事件推导出的工具名引导工具缺失时降级为完整目录并一次性告警 instruction-hint.mjs晋升后每会话恰好一次注入存在指令文件的提示防重复靠扫描持久事件日志而非内存标记因此进程重启不会二次注入提示注入失败时跳过绝不影响会话三者共同遵守一条防御式默认status()对 undefined 的 agent/session 一律返回promoted: true——宁可全开也不要把一个偶发错误放大成卡死整个会话见 shared/compaction-epoch.mjs。子 agent 与 includeSubagents状态机的一个旁路默认情况下子 agentdelegationDepth 0被视为已晋升——它的首个请求就能用工具避免委托链路整体被锚定拖慢。如果希望子 agent 也完整走一遍 bootstrap 阶段它们的首个回复或工具调用同样会晋升需要在context-gate与tool-bootstrap两行同步设置includeSubagents: true基础模式已默认如此注释见 preset/agent.cordis.yml。⚠️ 记住两行同步这条约定任何一行漏配工具目录和注入控制就会各说各话。快速验证跑测试与看 JSONL不用启动 harness 也能读懂并验证这套状态机零依赖测试套件npm test脚本定义见 package.json其中 test/compaction-epoch.test.mjs 是最小可执行的状态机说明文档——每个用例就是一个状态转移断言实机验证时导出会话 JSONL按 README.zh-CN.md 中验证加载清单检查request/header事件首请求tools恰好为[bash, str_replace_editor]、晋升后 header 出现 resident 目录、compaction/end之后 header 再次回到受控目录即为状态机工作正常的三个信号。各模式目录内的插件副本由 scripts/sync-modes.mjs 从shared/物化生成——读状态机源码时认准shared/为唯一源模式目录里的同名文件只是副本。小结 dsh-anchored-standard 的阶段状态机值得借鉴的正是三点设计状态不落盘、不驻留内存而是从 Durable 事件日志推导——resume 与进程重启天然安全晋升与回退都只认事件promoteOn信号晋升compaction/end回退冷扫描保证任意时刻可重建消费方与状态机解耦——context-gate、tool-bootstrap、instruction-hint 各自订阅、各自降级任何一环出错都不阻断会话。如果你想继续深挖建议按此顺序阅读源码shared/compaction-epoch.mjs80 行状态机本体→ test/compaction-epoch.test.mjs行为规格→ shared/tool-bootstrap.mjs 与 shared/context-gate.mjs两个主要消费方。【免费下载链接】dsh-anchored-standardTwo-phase DeepSeek Harness preset: Minimal-aligned bootstrap, then full Standard tools (Project2 98/99)项目地址: https://gitcode.com/gh_mirrors/ds/dsh-anchored-standard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考