铁律
插件可换,日记不可撒谎
官方设计只有两句话。其余一切——启动、循环、接头、窗户——都是这两句话的展开。
plugin
Everything is a plugin
每一块本事都是积木:脑子、手、日记、围栏、循环、窗户。换一块,不用拆整座城。
DeepSeek Harness 建在 Cordis 上。模型适配器、工具、技能、会话、沙箱、存储、循环、调度和 UI 都是插件。通过配置选择、替换或扩展,不必改 dsh 源码。没有需要打补丁的特权内核。
trace
Every run is traceable
模型看见的每一句话,都已经写进只能往后翻的日记。合上再打开,故事还在。
系统提示、推理、工具调用与结果、子代理调度、每一次上下文注入,都追加进 Session 日志。Resume、fork、检索、回放都走同一条事件流。运行时不变量断言:模型可见即已记录。
四种套装
Profile 决定整座城怎么拼。Agent preset 决定某一个机器人穿哪套衣服——在 isolate realm 里再挂一棵小树。
standard
标准模式
全套编程机器人:改文件、敲命令、上网、技能、计划、目标、帮手、编舞。
完整工具与编码人格。agent preset:standard。
code
Code Mode
标准套装再加实验室:让模型用一段 TypeScript 把好多步活编排在一起。
工具经 Code Mode SDK 暴露,模型可在一个程序里组合多轮操作。
minimal
极简模式
只留嘴巴和橡皮,用来给模型打分。
持久 bash + str_replace_editor,适合基准测试。
creator
创造模式
允许机器人给自己加积木、检查现在挂了哪些插件。
标准能力 + 运行时自检、内存里试插件、组合成新 preset。
新行为往哪挂
改循环本身之前,先在这张表里找挂钩。官方原文叫「新行为的归属位置」。
| 你想做 | 挂在哪 | 小孩版 |
|---|---|---|
| 加一个模型提供方 | ctx.llm | 再请一位老师。教室不用拆。 |
| 加一项模型会用的能力 | ctx.tools | 往工具柜里放新工具,说明书会自动订进出门手册。 |
| 让某一会话拥有另一套能力 | agent preset + isolate | 给这个机器人单独换衣服。水龙头也是它自己的。 |
| 加 shell 执行 | ctx.shell → ctx.subprocess | 嘴巴下令,跑腿的人真正去跑。 |
| 加一直开着的终端 | ctx.terminals + dsh-tool-terminal | 墙上挂一块不会关的小黑板。 |
| 加人类口令 | ctx.commands | 不用喊老师,你自己就能下口令。 |
| 加后台慢工 | ctx.jobs · job_* 工具 | 把活丢进洗衣机,过一会儿再看。 |
| 加文件系统或写前策略 | ctx.fs 或 fs/* 事件 | 换书桌,或在动笔前加一条家规。 |
| 限制所启动的进程 | ctx.sandbox.confine(argv) | 出门前先套上围栏。不是搬家。 |
| 拦截请求、工具或轮次 | agent/* 或 tools/* | 门卫盖章、洋葱传纸。turn-stopping 能叫停放学。 |
| 加模型可见的上下文 | agent.inject() | 从门缝塞纸条。不敲门,等下一回领取。 |
| 加 UI 或编辑器 | ctx.agents + session/event | 窗户只看日记广播,不自己编故事。 |
| 加聊天节点 | ConversationNodeDefinition | 在毡板上再按一张新图片。 |
| 加持久会话状态 | 扩展 SessionEventMap | 日记里多一种句子。回放也从日记来。 |
| 给会话起标题 | 唯一的 ctx.sessionTitle 提供方 | 给日记本起名字的人只能有一个。 |
| 管理同会话目标 | ctx.goals + agent/* | 冰箱上的目标贴,做完再揭。 |
| fork 一个还在写的本子 | ctx.sessions.fork(...) | 把日记复印一份,从某一页开始另写。 |
| 把注册限定到一个 agent | agent.ctx | 东西放进这个人的储物柜,不是大厅。 |