乐于分享
好东西不私藏

把 Agent 框架做成"全是插件",DeepSeek 想清楚了一件事

把 Agent 框架做成"全是插件",DeepSeek 想清楚了一件事
你用过的多数 Agent 框架,扒开看其实是同一副骨架:一个写死的循环,外面糊一层胶水。想加功能?再糊一层。糊到后面,最值钱的已经不是模型,是你对那堆胶水的肌肉记忆。
DeepSeek Harness(命令叫 dsh)想换个活法。
怎么跑?装个 Node.js,敲一行:
npx @deepseek-ai/dsh web
浏览器打开 127.0.0.1:3080,填上 API Key、选个工作区,它就能读文件、跑命令、改代码、把活儿拆给子代理去干。开箱自带的东西不算少:文件系统、Bash、持久终端、LSP、联网搜索、子代理、工作流、todo、plan 模式,该有的都在。
但我翻完它的文档和源码,真正坐直身子的是骨架,不是功能清单。
它管自己叫"一切皆插件"。翻译成人话:框架里没有一块特权内核。模型适配器是插件,工具注册表是插件,会话日志是插件,连驱动 agent 的循环本身,也是插件。
这意味着两件很实际的事。
一件是,你想改任何一处,不用打补丁、不用 fork 源码,写个插件挂旁边就行。而且每一次"注册"都是可逆的——插件一卸载,它带来的所有副作用跟着一起消失,不留痕迹。
另一件,是它有个叫 seam(接缝)的设计,值得单说。一个 seam 分三块:声明接口的、实现接口的、调用接口的。妙就妙在,你只换中间那个"实现",整条链跟着换。
举个例子:文件系统和进程共享同一个执行世界。你只要把这一处指向远程沙箱,Bash、终端、LSP 会一起搬过去,不用挨个改。它是把"能力"当一个整体来设计,而不是一堆孤零零的工具。
更狠的是这句,写在架构文档里:模型可见,即已记录。
凡是送到模型眼前的东西,都必须能从会话日志里原样重建。这不是洁癖,是硬约束——fork、恢复、回放、遥测,全从这一条日志流里长出来。你要给模型塞一个新输入,就得先给它配一个对应的日志事件。没有例外。
连配置都是这个脾气。跑一句 dsh --profile web --dump-config,它把你机器上实际启动的配置树原样打印出来;打出来的每一个条目,你都能用自己的 patch 替换掉。整个框架,没有哪一块是你碰不得的。
先把丑话说在前头:它现在挂着"开发者预览"的牌子,官方原话是"未来会有破坏兼容性的改动"。翻译过来就是——别急着上生产,先玩,再提意见。
那它适合谁?受够了在别人框架上糊胶水、又懒得从零写循环的人;想看看一个 Agent 框架能被拆得多干净的人。
想折腾就去 GitHub 搜 deepseek-harness,MIT 协议,随便抄随便改。写了插件,仓库打个 dsh-plugin 的标签,官方好找得到你。
最后一句:别的框架给你一个内核,让你绕着转;dsh 把内核也拆成了插件,让你把它换成自己的。
看完顺手点个"在看",转给那个还在手动跑脚本的朋友。