01 由来
- Agent harnessagent harness
- 包在 AI 模型外面的那层骨架:装工具、管权限和沙箱、记会话。可以理解成 AI 用的工具箱加操作系统。
- dshdeepseek-harness
- DeepSeek 2026 年 8 月开源的 agent harness,口号「一切皆插件」。
- Cordis
- 论文的开源实现,一个 TypeScript 元框架。Koishi 和 dsh 都建在它上面。
- Koishi
- 2019 年开源的跨平台聊天机器人框架。Cordis 就是从它的内核里拆出来的。
04 思想一 · 回执
- 效应effect
- 程序对外部世界留下的改动。开端口、注册命令、挂一个定时任务,都算。
- 撤销办法inverse
- 每个效应执行时当场交出的一个函数,调用它就能把这件事撤回去。由运行时保管,不靠作者记得。
- 回执串accumulator
- 运行时把一个组件的所有撤销办法按顺序串成一个总函数。卸载时调用一次,从最后一张倒着全部执行。论文叫它累加器。
05 思想二 · 插座
- 反效应coeffect
- 效应的镜像。效应说「我对世界做了什么」,反效应说「世界得先给我什么」。说白了就是依赖清单。
- 响应式reactive
- 依赖是活的。环境每变一次,运行时拿每份依赖清单对照:从缺到齐就激活,从齐到缺就停用,其余不理。
- 依赖声明inject
- Cordis 里组件声明依赖的写法,比如 inject: ['database']。依赖没就绪,组件就不启动,也不报错。
- 永不复用的编号uid
- 每个提供者上岗时领一个新编号,用过不再发。系统认编号不认内容:换了人,哪怕给的东西一样,下游也要重新接。
- 隔离isolate
- 同一个名字,在不同的子环境里各指向一份私有的值。多租户、测试、多 agent 都靠它分开。
- 拦截intercept
- 在「读依赖」这个动作外面叠一层规则,比如限流、审计。双方代码都不用改,改规则也不用重启。
06 思想三 · 一扇门
- 语境context
- 全系统共用的一本总账:当前状态、所有撤销办法、所有依赖登记都在上面。组件和环境的每一次交互都要经过它。
- 键key
- 语境里一个带名字的格子,配一组合法操作,比如 database、tools。组件只能通过这些操作碰格子里的东西。
- 观察等价observational equivalence
- 两个状态算「一样」,指用任何合法操作去试都看不出区别。不要求逐字节相同。
- 可交换commutative
- 两个操作谁先谁后,结果看不出区别。可交换的操作可以随便乱序,也能各自单独撤销。
07 思想四 · 一生
- 组件component
- 一份岗位说明书:我需要什么、我提供什么、我上岗后做什么。Koishi 和 dsh 里叫插件。
- fiber
- 组件的一次具体上岗。说明书是职位,fiber 是某天入职的那个人,随身带着自己的回执串。
- 生命周期lifecycle
- 组件从装上到拆下的固定阶段:空闲、激活中、在岗、停用中。怎么流转由规则决定,不由人手动推。
- 汇聚confluence
- 不管中间怎么装了拆、拆了装,系统停下来的状态只由最终配置决定,和过程无关。
- 热重载HMR
- 改了源码不重启,原地换掉对应的组件。Cordis 的做法是拆掉旧的、装上新的,失败就整体回滚。
- 声明式配置declarative config
- 你只写「系统应该长什么样」,加载器负责把现实改成那样,而且只动有差别的那几处。
08 思想五 · 落地
- 能力接缝capability seam
- dsh 的说法:一个能力 = 接口 + 提供者 + 消费者。接口不变,提供者随便换,消费者整体跟着走。
10 边界
- 系统边界system boundary
- 系统能独占修改、也能还原的地方在界内。写出去的文件、发出去的网络包在界外,撤不回来。