① 核心公式:Model + Harness = Agent
模型只会「想」,Harness 负责「做」——会话、主循环、工具、系统提示、事件日志。裸模型调一次只返回 token,套上 Harness 才能改文件、跑测试、自己修 bug。
Model(会想) + Harness(会做) = Agent(能干活)
Model = 会思考的模型
- DeepSeek / Claude / GPT / ... 约 40 家可路由(随版本变化)
- 只输出 token,不记住对话
- 不自动调工具、不崩溃恢复
Harness = 会执行的身体
- 会话 · 主循环 · 工具 · 系统提示 · 事件日志
- 把「模型之外的能力」补齐
- Claude Code 是 Anthropic 的封闭 Harness;dsh 把它开源
立场:智能的上限由模型决定,但这个上限能兑现多少,完全由 Harness 决定。Agent 能力 = 模型智能 × Harness 兑现率——后者才是工程上能竞争的地方。
② 传统特权内核的三个致命问题
主流 Agent 框架(LangChain / AutoGen)把主循环、编排、上下文管理写死在框架里——插件只能在预设 Hook 点插入。
- 问题 1:扩展被「钩子位」限死——你想改的往往是框架没画的位置(比如主循环怎么决定下一步)。
- 问题 2:内核行为不可观测、不可撤销——内核执行工具调用是隐式的,出了错找不到账本、无法回滚。
- 问题 3:内核与插件存在隐性信任特权——内核信任自己、怀疑插件,深度定制要 fork。
┌──────────────────────────────┐
│ 特权内核(写死在框架里) │ ← 主循环、编排、上下文管理
│ - 能访问一切 - 行为不可记录 │
│ - 插件只能调它暴露的接口 │
├──────────────────────────────┤
│ Hook 点 A │ Hook 点 B │ Hook 点 C │ ← 扩展只能在这几个固定位置插
└──────────────────────────────┘
③ Harness 的反叛:没有内核,只有插件
构建在 Cordis v4 元框架上——Cordis 自身不提供任何业务功能,只给四样东西:依赖注入、生命周期、事件总线、服务注册。
Cordis 事件总线
一切通信都走事件
会话插件
主循环插件
工具插件
系统提示插件
模型路由插件
三层收益:① 扩展从「挂钩子」升级为「换器官」——想改主循环?卸掉 agent-loop 插件换自己的;② 没有业务组件高于其他插件——取消「业务内核-插件」信任分界线,但 DI/生命周期/事件总线仍是内核;③ 框架内状态可撤销——事件总线+日志支持回滚;已发出的外部动作(转账、发信)不可撤销,必须幂等或补偿。
④ append-only SessionEvent:Agent 会话的事实源
会话 = 一串只追加、不覆盖、不删除的事件。事件四要素:类型 + 时间戳 + 序号 + 载荷。执行结构:turn = 0+ step,step = 1 次 LLM 请求 + 工具调用。
[00:00.000] session/ 用户输入:"分析 payment-service 的 Pod 状态"
[00:00.120] agent/ think: 需要查 Pod 状态 → 调用 kubectl_get_pods
[00:00.300] tools/ kubectl_get_pods → {"ready":0,"total":3}
[00:00.520] agent/ think: Pod 未就绪 → 查日志定位原因
[00:00.700] tools/ kubectl_logs → "OOMKilled at 2026-09-04"
[00:00.900] agent/ message: 检测到 OOMKilled,建议增加内存限制
四层能力
- 可回放:调试从靠猜变重放
- 可分支:不可变历史让分叉像 git 免费
- 可审计:append-only 无法篡改
- 可检索:事件带类型+时间戳可查询
事件即扩展点
- 审计插件 → 订阅 fs/*
- 护栏插件 → 订阅 tools/*
- 可视化插件 → 订阅 agent/*
⑤ 四种运行模式:同一套插件的四种装配
同一个 Harness,切换插件组合就表现出四种「性格」。
| 模式 | 决策开销 | 成本 | 典型场景 |
| 标准 | 每 step 全量 LLM 决策 | 高 | 复杂规划、多工具编排、需要推理 |
| PTC(程序化调用) | 仅关键决策点问模型 | 中 | 数据流水线、已知序列、省 Token 刚需 |
| 极简 | 零决策(单请求) | 最低 | 批量、高并发、原型 |
| 创造 | 含自省/自改开销 | 最高 | 自进化研究、自我调试 |
选型规则:顺序可预判 → PTC;顺序要探索 → 标准。四种模式不是四个产品,是同一套插件组合的四种装配。PTC 用「序列程序化」换 token 成本,牺牲探索灵活性。
⑥ 进阶三件套 + 竞品坐标
进阶机制
- 能力缝:Definition 定义契约 / Provider 可互换实现 / Consumer 读能力事实自适应——换沙箱只改 Provider 一行
- 运行时断言:model-visible ⟺ logged——「模型看到的=日志记的」成为强制不变量
- 自修改运行时:cordis_inspect/mount/unmount——Agent 装卸自己的插件,opt-in + vm 隔离 + 撤销链
竞品坐标
- Claude Code:最好的产品(封闭 Harness)
- LangChain:最大的生态(组件/LCEL)
- AgentScope:多语言,2.0 以 Harness + middleware 为核心
- DeepSeek Harness:事实源与插件模型做得最彻底的开源运行时
一句话总结:dsh = 用「一切皆插件 + 事件即事实源」把 Agent 运行时做到可替换、可回放、可审计,再用 Model-agnostic 路由(约 40 家,随版本变化)消解锁定恐惧——公式一句话传得快,架构真的能打所以留得住。