DeepSeek Harness 目前还是开发者预览版。Flask 创作者 Armin Ronacher 说,它让自己产生了重新审视既有设计选择的冲动。
触发点来自架构:模型、工具、会话、沙箱、循环和界面都被设计成可替换插件。
插件化
核心架构
MIT
开源许可
Preview
当前状态
一条 X 帖,指向一个架构问题。
Armin Ronacher 是 Flask 的创作者,长期参与 Python、Rust 和开发者工具建设。他在 X 上评价 DeepSeek Harness 还不完美,但这是他第一次看到某个新东西后,产生了“重新审视一些既有选择”的冲动。他还提到自己喜欢其中的开源部分。
这句话没有证明 DeepSeek Harness 已经成熟,也没有给出性能排名。它提供的线索是另一种:一个有长期工程经验的开发者,被项目的组织方式触动了。要理解这句话,得先看 DeepSeek 到底把什么拆开了。
“一切皆插件”拆开的是什么。
DeepSeek Harness 的官方定位是开源 Agent Harness,命令行名称是 dsh。它建立在 Cordis 之上,核心口号是“Everything is a Plugin”。官方架构文档把模型适配器、工具注册表、会话日志和 Agent Loop 都列为插件。
这会改变 Agent 的扩展方式。传统工具通常把模型、工具调用、上下文记录、权限控制和用户界面捆在一个产品里。要替换其中一层,开发者往往需要修改内部代码,或者围绕既有接口做一层兼容。DeepSeek Harness 的设计目标,是让这些部分处在同一个可组合的运行时里,通过配置和插件替换。
▸模型适配器:通过 ctx.llm 接入模型。
▸工具和执行环境:文件系统、Shell、终端、沙箱和工具注册各有扩展位置。
▸运行循环:Agent Loop 和后台任务可以由不同 bundle 组合。
▸界面:Web UI 和 headless runner 也有独立扩展位置。
官方文档还把会话日志放在架构中心。模型看到的内容,都应该能够从追加式事件日志中重建;恢复、分叉、转录和遥测也从这条日志派生。这样处理后,会话不只是界面里的聊天记录,它还成为运行时重建上下文的依据。
触动工程师的,是替换边界。
对 Agent 开发者来说,真正麻烦的部分经常不在模型本身。模型换了之后,工具权限、上下文压缩、会话恢复、Shell 执行、后台任务和人机审批仍然要重新接起来。一个产品如果把这些能力写死,功能越多,替换成本越高。
DeepSeek Harness 把替换边界推到了运行时内部。官方架构文档给出的例子是:更换远程沙箱提供者后,Bash、PTY 和 LSP 可以一起迁移到同一个执行世界;更换 Agent 提供者时,调用方式仍然通过统一接口表达。这里的价值不需要依赖某个模型的排行榜,它直接对应开发者每天会遇到的集成工作。
开源的吸引力,落在“我能替换哪一层”这件事上。
这也解释了 Ronacher 的反应。一个开源项目能否被真正改造,要看开发者能否接入自己的模型适配器、工具、沙箱或循环。
DeepSeek Harness 把这种替换关系写进了产品结构里。
现在适合研究,不适合把接口当承诺。
DeepSeek 官方 README 明确写着,项目目前处于 developer preview 阶段,正在快速迭代。未来会出现破坏兼容性的变更。Cordis 自己也注明 API 尚未稳定。这个边界会影响使用判断。
边界当前状态
适合:研究 Agent 运行时、尝试插件设计、验证模型与工具的替换关系。
谨慎:直接把开发者预览版接入需要长期维护、稳定升级和兼容承诺的生产系统。
本地试用入口只有一条命令:npx @deepseek-ai/dsh web。它会启动默认监听在 127.0.0.1:3080 的 Web UI。
对想研究 Agent 组合方式的人,这个入口已经足够开始。对需要稳定生产接口的人,预览状态本身就是必须计入的工程成本。
SOURCES
Armin Ronacher 原帖。
DeepSeek Harness 官方仓库与 README。
DeepSeek Harness Architecture / Cordis。
夜雨聆风