刚刚,DeepSeek Harness震撼开源:一切皆插件
- 来源:微信公众号「机器之心」(编辑:Panda)
- 处理方式:即时处理(家庭代理可用)
- 主题:DeepSeek Harness(开发者预览版)开源深度报道
一、背景与实测
- 今天凌晨 DeepSeek V4 Pro 正式版发布,半天后 DeepSeek Harness(开发者预览版)开源。机器之心 8 月初获得内测资格。
- 开源地址:https://github.com/deepseek-ai/deepseek-harness
- 实测案例 1:配置官方 DeepSeek-V4-Flash 的 Harness,one-shot(无中途干预)30 多分钟构建出可玩的第一人称丧尸射击游戏——执行了 3 turn、127 step,创建了 5 个并行子智能体。
- 实测案例 2:「华强买瓜」基准——基于文本描述复现成 3D 动画,one-shot 提示,剧情和人物关系大体还原;用同样提示词、配置 GPT-5.6 sol-xhigh 的 Codex 做出来的效果差很多。注意 V4-Flash 参数规模远低于 GPT-5.6 sol,作者认为 Harness 立了大功。
- 接入 V4 Pro 正式版后再跑,效果更好。
二、项目结构:一块"洞洞板"
- 仓库已有 230+ workspace 成员,代码分布在
packages/、apps/、examples/、python/、native/、vendor/、website/。 - 文件系统、终端、子进程、PTY、语言服务器、网页访问、技能、子智能体、工作流、计划模式、会话持久化、设置、凭据、遥测——几乎每项能力都有自己的包。
- 比喻:普通 Agent 项目像一台装好的电脑;DeepSeek Harness 像一块尺寸惊人的洞洞板——模型、工具、界面、存储、安全策略、上下文管理都可以插上去,也可以拔下来。
- DeepSeek 真正想创造的不是固定形态的"DeepSeek 编程助手",而是一种组装智能体的方式。
三、Harness 是什么
- 不是新模型,也不是单纯的 API 客户端,而是构建、运行、扩展智能体的 SDK 与应用框架。
- 默认连接 DeepSeek 模型(可自定义其它模型),让模型读取项目、修改文件、运行命令、管理任务、分配子任务,通过 Web UI、全屏终端、Headless 命令或自动化协议交互。
- 词源:Harness 本义是马具/线束/约束装置——把力量连接到可以工作的机构上,同时不让这股力量脱缰。对应到 AI:把模型接到文件系统、Shell、代码编辑器、网页和其他 Agent 上,记录它做了什么、限制它能做什么,出错时决定重试、取消、压缩上下文或交还用户。
四、一切皆插件
- 最醒目的设计主张,连 Agent Loop 本身也被视为插件。
- 建立在 Cordis 微内核之上,运行中的 Harness 本质是一个 Cordis Context,不同包向 Context 注册服务、事件和能力,由配置文件组合成可运行的智能体。
packages/core/是核心:Session、System Prompt、Tools、Agent、Agent Loop,解决会话是什么、提示词如何组装、工具如何注册调用、Agent 如何创建、一轮对话如何从输入走到输出。- 核心之外的能力包:
llm/(模型适配器+流式)、shell/+subprocess/+terminal/(命令/进程树/持续终端)、fs/(文件读写编辑搜索+策略限制)、lsp/(语言服务器语义级导航)、web/(搜索+抓取)、skill/(可复用技能)、subagent/+workflow/(多智能体委派编排);计划、目标、待办、后台任务、上下文压缩、会话查询、凭据、审批、遥测也各自独立。 - 三层结构:接口、实现、消费者(以 Bash 为例:接口定义"执行命令";本地实现创建进程;面向模型的工具包把能力变成模型可理解的 schema)。将来本地 Shell 换成远程容器/云端沙箱/企业执行平台,只替换实现层即可。
五、cordis.yml:一份配置组装出不同 Agent
- 配置文件列出插件名称、稳定 ID 和参数,决定 Agent 拥有哪组能力。
- 同一套代码可组装成完全不同的产品形态:加 DeepSeek 适配器+文件系统+Bash+TUI → 终端编程智能体;换 Web 插件 → 浏览器应用;Headless 入口 → 接受任务跑完即退;ACP 或 JSON-RPC 前门 → 可被其它程序驱动的自动化服务。
- 覆盖层机制:TUI 和 Web UI 共享基础配置再叠加各自插件;个人配置在最后一层。
- ⚠️ 坑:配置补丁替换的是目标插件的整个 config,不是深度合并——只写一个新字段可能让原有 API Key、基础地址等一起消失。
- 支持 YAML
!!js读取环境变量(如DEEPSEEK_API_KEY);密钥写入$DSH_HOME/.credentials.yaml,不应直接写进 cordis.yml 或会话日志。
六、Agent Loop:不是循环,是交通规则
- 一次用户输入 = 一个 Turn,Turn 内含多个 Step(一次模型请求+后续工具执行)。
- 请求前:组装稳定系统提示词、运行环境、工具 schema、会话消息;请求后:流式 chunk、完整消息、工具调用、工具结果、结束原因进入事件流。
- 工具调用流水线:前置策略 → 不可逆安全守卫 → 实际执行 → 后置处理 → 内容整理 → 结果通知;允许/拒绝、超时、重试、指标统计、附加上下文都可在流水线不同位置接入。
- 并发控制:工具可声明某参数下并发安全 → 只读任务并行;修改状态或无法确定安全的调用视为屏障,等前面任务结束独占执行。
- 运行中消息处理:区分排队消息、注入上下文、Steering(转向指令),并通过回执确认转向指令真正进入了某次模型请求——不只关心"消息收到了",还关心"模型在哪一步看到了它"。
七、Session Log:整个系统真正的权威来源
- 为调试、评估、审计和自动化提供统一基础(会话恢复、权限变更、审批请求、工具参数、执行结果、取消原因全部落日志)。
八、从一个 Agent 到一群 Agent
- 主 Agent 可委派子 Agent:全新实例、从已有会话完成边界 Fork、或 ACP 连接外部子进程。
- 作用域设计:每个 Agent 拥有自己的上下文层(工具/提示词/命令),子 Agent 可被限制为只做搜索分析、另一个才允许改文件;注册在作用域的能力随 Agent 生命周期自动清理。
- 工作流:用脚本驱动多智能体编排(子任务、结构化输出、继续执行)。
- 目标、计划、待办、后台任务不是四个相近 UI 小组件,而是不同生命周期的协作状态:计划模式记录当前协作阶段、目标跨会话持续存在、待办是轻量任务清单、后台任务管理仍在运行的实际工作。
九、Web、TUI、Headless 与 SDK
- Web UI(推荐普通用户):默认监听
http://127.0.0.1:3080,提供对话、会话侧栏、权限选择、计划模式、工具卡片、工作区交互。 - 四种预设模式(同一宿主装配不同工具,非四套独立 Agent):
- 标准:功能最全的通用编码 Agent(文件编辑/Shell/检索/Skills/计划/目标/子 Agent/工作流)
- PTC:标准 + Code Mode SDK,模型可写 TypeScript 程序在一次 run_code 中组合多步操作,减少往返开销,适合调用链长的复杂任务
- 极简:只提供持久 Bash + str_replace_editor 两项工具,适合路径明确的编码任务
- 创造:标准 + Cordis 运行时检查、临时插件实验、preset 创作指导;可运行模型编写的插件代码,面向高级用户的高信任模式
- TUI:面向终端用户;Headless:适合脚本/CI,接受任务、等 Agent 完全停稳、输出最后一条回复后退出;ACP / JSON-RPC / Python SDK:结构化事件和持续控制;Python SDK 驱动 JSON-RPC 运行时,不必直接嵌入 Node 内核。
- 各入口共享核心能力模型、会话事件语义和大部分基础插件,通过不同 bundle 组装出产品形态。
十、Agent 可以检查甚至改装自己
- 自指 Cordis 工具:仅通过"创造模式"提供(不进入标准/PTC/极简)。Agent 可检查当前运行时插件树,动态挂载/卸载临时插件——像汽车在高速公路上给自己换发动机,项目没有默认打开。
- 动态插件仍运行在 Cordis 的 Context/Effect 机制下,注册项有明确清理路径。远谈不上安全无忧,但展示了架构目标:智能体不只使用能力,也能在受控边界内重新组合自己的运行时。
- 相关论文:《A Programming Paradigm for Spatiotemporal Composability》(github.com/cordiverse/paper)。
十一、安全策略
- 默认 workspace-write 模式:命令执行和文件修改限制在当前工作区+允许的临时目录,配合 ask 审批策略处理扩权操作。
- 更宽松的 danger-full-access 模式存在,但必须由部署方明确选择,不会包装成看似无害的兼容选项。
- 工具调用经过前置策略、单调安全守卫、执行包装、后置处理;被守卫拒绝的操作不能被后续插件重新放行;扩权命令必须说明原因并经审批重试。
- 文件系统、Bash、子进程共享同一套沙箱策略,避免"命令受限制但文件工具能绕过去"的割裂。
- "失败关闭"原则:系统无法确认隔离机制生效时拒绝执行,不悄悄退化为无保护运行。全部记录进 Session Log 供审计复现。
- 核心态度:模型可以提出行动,真正决定行动能否发生的是 Harness。
十二、结论:不止是"又一个 Codex"
- 默认应用(Web/TUI)只是 SDK 的第一位客户;项目中心是可替换能力接口、事件驱动生命周期、权威会话日志、声明式组合。
- 模型决定智能上限,Harness 决定这些智能如何进入真实环境、使用工具、保留状态、在权限边界内工作——对企业开发者而言,这决定了系统能否被审计、扩展、替换、长期维护。
- 一句话概括其技术判断:Agent 不应该是越来越臃肿的循环,而是一组可组合、可观察、可替换的能力;会话不只是聊天记录,而是运行事实;工具不只是函数,而应同时拥有策略、日志和呈现协议。
💡 Friday 看法
这是今天继 V4 Pro 发布后的第二颗炸弹——把 Codex/Claude Code 拉进同框对比,靠的是"一切皆插件"的架构纵深,不是模型本身。对我这种天天用 Agent 干活的人来说,最值钱的部分其实是安全与可审计设计:workspace-write 默认边界、"失败关闭"原则、Session Log 全量留痕、守卫拒绝后不可重新放行——企业要接 Agent 进生产,怕的就是"命令被限制了但文件工具能绕过去"这种割裂,它把这层当基础架构问题做了。自指 Cordis(让 Agent 给自己装插件)概念惊艳但明显是把双刃剑,官方也只在"创造模式"里给高级用户开,这个克制是对的。另外"配置补丁是整包替换不是深度合并"这个坑值得所有要魔改它的人先记住。实用判断:如果只是想找个比 Codex 顺手的编程助手,它现在还是早期预览版,未必比成熟产品稳;但如果你想搭一套可审计、可替换、能接企业执行平台的 Agent 基础设施,这个项目值得现在就盯着。
一句话: DeepSeek 把"组装智能体的方式"整个开源了——架构与安全设计是最大看点,比"又一个 Codex"的定位高一个层级。