Skip to content

5.2 设计哲学与决策记录

本章概览:把散落在各章的设计原则收拢成一个"设计哲学"清单,并介绍 DSH 的决策记录体系——Agent Notes 如何让"为什么"可追溯。

六条贯穿性的设计原则

1. 一切皆插件,无特权内核

产品每一部分都是插件(含 agent loop 本身),都可以从配置替换。推论:扩展 = 挂载插件,永不修改内核;注册是可逆副作用。

出处:docs/architecture.mddeepseek-harness-src/docs/architecture.md

2. 事件就是扩展点,选对事件域是第一个决定

持久会话事件记录"必须存活的事实";agent/* 实时事件协调"进行中的工作";能力事件为 seam 附加"策略与适配器"。新行为归属见架构文档的映射表。

3. 模型可见 ⟺ 已记录(Model-visible ⟺ logged)

抵达模型请求的一切必须能从会话日志重建,由运行时不变量断言。这是事件溯源模型 + 持久化 + 压缩 + 恢复的基石。

4. 能力缝三角色一体设计

Definition / Provider / Consumer 三分离,让"换后端 = 改配置"。seam 是完整能力,绝不只是单个角色。

5. 契约双端遵守,结果正交报告

防御模式的精髓:公共 API 只暴露规范化的单一结果形态;正交事实独立报告;异步状态绝不当同步状态读。

6. Fail loud,绝不静默

配置/加载/组合错误在最早的解析点响亮失败:无后端可用的沙箱拒绝裸跑;组合缺失的 preset 以 broken 列出;不满足的注入在启动时报出每个未解析插件。

核心权衡(trade-offs)速览

设计放弃什么得到什么
只追加事件日志就地编辑的便利完整可回放历史、恢复/fork/投影统一
patch 整体替换 config深层合并的便利组合可预测、无隐式合并歧义
沙箱只表达文件效应网络/进程/设备限制表达简单、可移植、可 fail-closed
协作式取消强杀保证无悬挂、可预测的清理
激活(goal activation)不持久化自动续跑的便利恢复/续跑需要显式人类授权
subagent 绑定父组合子代理自由配置子代理能力与父一致、同步组合
压缩的 surface 替换保留全部历史细节长会话可持续、日志仍可回放

决策记录体系:Agent Notes

.agents/notes/ 是 DSH 的"为什么"档案,约 1300+ 篇:

目录含义
implemented/architecture已实现的架构决策(现在时描述现状)
implemented/feature已实现的功能设计
implemented/process / testing / bug-fix / simplification流程、测试、缺陷修复、简化决策
proposed/提议中的设计
rejected/被拒绝的方案(记录为何不做)
archived/已归档(冻结:不可编辑,不作为当前权威)

阅读示例(贯穿本站引用的决策)

主题笔记
能力缝拆分implemented/architecture/2026-06-13-capability-seams.md
会话持久化写协调器implemented/architecture/2026-06-18-shared-persistence-write-coordinator.md
沙箱设计implemented/feature/2026-07-06-sandbox.md
作用域上下文与安全非目标implemented/architecture/2026-07-08-agent-scope-contexts.md
工具输出 spillimplemented/architecture/2026-07-08-tool-output-spill-files.md
协作式工具取消implemented/architecture/2026-07-19-cooperative-tool-cancellation.md
同会话目标领域implemented/feature/2026-07-19-persisted-same-session-goal-domain.md
后台任务运行时implemented/architecture/2026-06-20-generic-long-running-tool-runtime.md
工具渲染意图联合implemented/architecture/2026-07-02-tool-render-intent-union.md

出处:.agents/notes/README.mddeepseek-harness-src/.agents/notes/README.md

Agent Notes 的写作纪律

  • implemented/ 笔记用现在时描述已交付的现实;禁止迁移计划、验收清单、spec 用语("should");
  • 非平凡变更必须带至少一篇 Agent Note;
  • 归档笔记冻结:绝不编辑,不作为当前权威;
  • 笔记是"为什么、放弃了什么、需要什么验证",不是测试走查或实现叙述。

出处:.agents/notes/implemented/AGENTS.md.agents/notes/README.md

从哲学到代码的三条验证链

  1. 生成器防漂移:tool-catalog、config-catalog、capability-seams、module-graph 都由源码生成并有新鲜度门;
  2. 运行时不变式ctx.invariants 断言日志关系(序列单调、配对、生命周期合法);
  3. 测试梯队:真实入口 + 世界验证 + 快照回放,覆盖产品级 transcript。

小结

DSH 的设计哲学可以压缩为一句:"把产品做成可组合、可回放、可替换的插件树,并用纪律(事件溯源、契约规范化、生成器、不变式)守住组合的边界。" 决策记录体系(Agent Notes)让每个"为什么"都能在源码旁找到答案——这是它与其他框架最不同、也最值得学习的一点。

参考资料

本文档为学习用途的原创讲解,基于 MIT 许可的开源项目 deepseek-ai/deepseek-harness 编写;所有引用均注明出处。