Module 07

DeepSeek Harness

不是把 Prompt 写得更长,而是把 Agent 变成一个可恢复、可控制、可演进的运行时。

一个模型调用很容易写出来。难的是让它连续运行几十轮,允许用户中途改方向,能够从崩溃中恢复,在执行危险动作前停下来,并且能解释每一个副作用是怎样发生的。DeepSeek Harness 值得学习的地方,不是某个 CLI 或某组 TypeScript 类型,而是它对这些问题的系统性回答。

七个设计判断

设计问题 核心判断 运行时承载
什么是核心 不保留不可替换的特权内核 Cordis Plugin Tree
状态从哪里来 事实应该追加保存,状态从事实派生 Session Log
模型差异怎么隔离 用统一词汇表约束消息、流式输出和失败事实 LLM Seam / Adapter Registry
能力如何扩展 用服务接缝组合能力,不把所有逻辑塞进 Loop Cordis Plugin / Capability Seam
模型如何产生副作用 决策和执行分离,模型输出不等于授权 Agent Loop / Tool Pipeline
长任务如何持续 Context 是受管理的工作集,压缩要保持语义 Compaction / Token Meter / Spill
如何守住边界 审批、沙箱和凭据由运行时强制,失败默认拒绝 Approval / Sandbox / Policy

这些判断共同完成一次复杂度转移:用户只看到一个连续的任务体验,系统内部则把不确定的模型决策包在确定的日志、策略和生命周期里。代价是实现更复杂、服务契约更多、调试需要理解事件顺序;收益是系统可以恢复、审计、替换和测试。

阅读顺序

flowchart LR
  A["复杂度转移"] --> B["能力组合"]
  B --> C["事实源"]
  C --> D["控制循环"]
  D --> E["副作用边界"]
  E --> F["上下文与成本"]
  F --> G["安全与多运行面"]
  1. DeepSeek Harness:一切皆插件的 Agent 运行时:从产品定位和无特权内核建立设计目标
  2. 声明式与命令式:Cordis 的五个核心概念:理解 DSH 为何承担更重的运行时复杂度
  3. 运行中的 DSH:插件树、组合层与能力接缝:理解产品如何从有序配置层启动
  4. LLM 接缝:把模型差异关在适配器里:理解统一词汇表、流式协议与失败策略
  5. Agent Loop:控制平面如何推进任务
  6. Tool Pipeline:能力为什么不能直接等于权限
  7. Session Log:为什么日志就是事实源:理解可恢复性的基础
  8. Inbox 控制:为什么用户插话必须有自己的语义
  9. Code Mode:上下文压缩不等于安全隔离
  10. Context Compaction:把上下文当作工作集管理
  11. 安全边界:把信任放到模型之外
  12. Subagent 编排:扩展能力而不是复制 Loop
  13. Runtime Surfaces:一个运行时如何服务多个宿主

资料边界

文章以官方仓库 dsh-v0.1.0-rc.8 的架构和子系统文档为事实基线。社区教程、电子书、白皮书和 NanoCordis 用来帮助理解设计背景与教学实现;它们描述的 rc.6 或简化 API 不直接代表当前接口。安全相关引用了腾讯 AI-Infra-Guard 团队的对抗性测试论文(arxiv 2608.16393)。

本文更关心可迁移的设计问题:换成其他模型、Provider 或宿主后,为什么这些边界仍然成立。API 名称只在需要确认契约时出现。注意:社区二手资料(如”橙皮书”)已被验证存在不准确描述,本模块不采信其中未经官方文档佐证的实现细节。