ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

02. DeepSeek Harness 是什么:定义、边界与生态位置

02. DeepSeek Harness 是什么:定义、边界与生态位置 上一篇建立了痛点模型交付 tokenAgent 需要行为这层壳每家都在写但每家都把它焊死在自己产品里于是没人能换、没人能审、没人能公平评测。这一篇给出定义、划清边界、并把它放进生态里比较。读完你应该能判断这东西跟我有没有关系。缩写对照表缩写英文全称中文DSHDeepSeek Harness本文主角命令名dshMITMIT License一种宽松开源许可证CLICommand Line Interface命令行界面TUITerminal User Interface终端用户界面UIUser Interface用户界面SDKSoftware Development Kit软件开发工具包MCPModel Context Protocol模型上下文协议ACPAgent Client Protocol智能体客户端协议PTCProgrammatic Tool Calling程序化工具调用YAMLYAML Ain’t Markup Language一种配置文件格式HMRHot Module Replacement模块热替换一、一句话定义DeepSeek Harnessdsh是一个开源的 Agent 运行外壳它把让模型在真实环境里持续工作所需要的每一个部件——模型适配器、工具注册表、会话日志、审批与沙箱、乃至驱动循环本身——都实现成一个可以从配置里换掉的插件运行在一个只负责挂载与依赖解析的微内核Cordis之上。逐段拆片段意思对应上一篇的哪堵墙“Agent 运行外壳”它的品类。不是模型、不是编排 SDK、不是 IDE—“让模型在真实环境里持续工作”它的职责边界环境、工具、持续性第一堵墙边界情况“每一个部件……都是插件”核心机制。包括循环本身第二堵墙焊死“从配置里换掉”替换的方式是配置不是 fork 源码第二堵墙“只负责挂载与依赖解析的微内核”没有特权核心可以打补丁第二堵墙官方仓库首页只有一句话概括“It uses an architecture whereeverything is a plugin, and is powered by Cordis.”而docs/architecture.md把这句话说得更狠“Every part of the product is a plugin, includingthe model adapter, the tool registry, the session log, and the agent loop itself, so every part is replaceable from configuration.There is no privileged core to patch.”二、两句设计信条各换来什么DSH 官网把设计原则压成两句“Everything is a plugin. Every run is traceable.”这不是两句并列的口号而是两条各有代价、各有回报的工程决策。信条一Everything is a plugin一切皆插件换来的任何部件都能替换、并存、卸载。想让命令跑在远程沙箱换一个 provider 行。想试一个新的循环策略写一个新的 driver 挂上去。想给某类会话一套完全不同的工具写一个 preset。代价配置成为一等公民。你必须理解插件树是怎么叠出来的才能理解我这个环境里到底跑着什么。这也是为什么第 5 篇会说dsh --dump-config是这个项目最该先跑的命令。信条二Every run is traceable每次运行都可追溯官方的说法是“Everything the model sees is recorded in anappend-only session log: system prompts, reasoning, tool calls and results, subagent scheduling, and every context injection.”模型看见的一切都记录在一条只追加的会话日志里系统提示、推理过程、工具调用与结果、子代理调度以及每一次上下文注入。换来的重放、复盘、评测、fork从历史某点分叉出一条新会话、崩溃恢复——全部是同一个机制的自然结果。代价一条硬约束——模型可见即已记录model-visible means logged。任何东西想进入模型请求必须先成为一条日志事件仓库里甚至有一条运行时不变量在断言这件事。这条约束会反过来塑造每一个想给模型加信息的插件的写法见第 6 篇。三、它不是什么边界比定义更能防止误用。DSH不是下面这些东西它不是为什么容易混实际关系一个模型名字里有 DeepSeek模型是外部的通过适配器接入DSH 自己不含任何权重一个 IDE 或编辑器它带 Web UI能改代码UI 也只是一个插件dsh-web-appbundle换成终端界面、换成接入别的编辑器都是换插件又一个 Agent 编排 SDK都在讲多步“工具”“状态”编排 SDK 抽象的是你的业务流程图、节点、状态机DSH 抽象的是agent 与环境的关系工具、文件、进程、审批、日志MCP 的替代品都在讲工具互补。MCP 标准化工具这一个接缝DSH 把这种可替换性推广到所有接缝并且它自己就带packages/mcp可以消费 MCP 工具一个云服务—纯本地 Node.js 进程npx deepseek-ai/dsh web起在127.0.0.1:3080一个稳定产品星标很多官方原话developer preview会有破坏性变更还有一条特别容易误解的它不是DeepSeek 模型专用。适配器是接缝仓库里同时存在直连 DeepSeek 的适配器和一个库支撑的通用适配器llm-pi-ai并且 Web UI 的 Settings → Models 里可以配置自定义 OpenAI 兼容端点。四、生态位置模型层DeepSeek / 兼容端点/ 本地推理服务能力供给层MCP 工具本机文件 / 进程子代理Claude Code · CodexAgent 外壳层 · DSH循环 · 会话日志工具注册表 · 提示装配审批 · 沙箱人机入口层Web UI终端界面编辑器 / ACPheadless一次性任务同层邻居怎么比邻居关系Claude Code / Codex同层竞品但 DSH 把它们也变成了可调用的子代理——仓库里就有tool-subagent-codex、tool-subagent-claude-code两行配置。一个 DSH 会话可以把一段活派给 Claude Code 去干LangGraph 等编排框架不同层。你完全可以在一个 LangGraph 节点里调一次 DSH反之亦然MCP下层协议。DSH 消费 MCP 工具同时自己有一套内部工具注册表比 MCP 多了并发调度、审批、UI 呈现等宿主侧信息ACPAgent Client Protocol编辑器接入协议DSH 带packages/acp实现让编辑器可以驱动一个 DSH agent五、四个 preset同一个壳的四种脸DSH 出厂带四套agent preset会话级的插件组合第 5 篇细讲。它们最能说明一切皆插件意味着什么——四个 preset 就是四份 YAML跑在同一个循环上preset官方中文名是什么典型用途standard标准模式全功能编码 agent文件编辑、Shell、文件与网页检索、Skills、计划、目标、子代理、工作流日常干活codePTC 模式具备标准模式全部能力但工具以 SDK 形式呈现模型写一段 TypeScript 程序来组合多步操作把五次往返压成一次minimal极简模式只有两个工具持久 bash 与str_replace_editor评测基线、对照实验cordis创造模式标准模式 运行时检查 插件实验 preset 创作指导用来创作新 presetminimal这个 preset 是第 01 篇第三堵墙的直接答案它的人格段落只有一句You are a helpful software engineer assistant.并且标了complete: true独占整个系统提示、includeRuntimeContext: false连运行时上下文都不注入。变量被按死了剩下的差异就是模型本身。code模式则值得单独说一句PTC Programmatic Tool Calling程序化工具调用。常规模式下模型每调一个工具就要一次往返PTC 模式下模型写一段程序把读三个文件、筛一遍、改其中两个写成一段 TypeScript由run_code一次执行完。官方注释里写得很直白“a sequence that would be five round trips becomes one”本来五次往返变成一次。六、怎么判断跟我有没有关系你的处境相关度理由想有个能改代码的本地 agent中能用但成熟度不如一体化产品胜在能改在给公司做内部 agent 平台高你要的正是能加策略、能换沙箱、能接内部系统这是它的设计目标在做模型评测 / RL 环境高可控工具集 完整可重放日志正是评测的刚需在做 agent 相关研究循环、记忆、多代理高循环本身可替换这在别处很难得到想学生产级 agent 到底长什么样高它的docs/把每个决策连同理由写下来了是极好的教材只想用 AI 补全代码低用编辑器插件更省事⚓ 回到示例有了定义可以给运行示例定位了“读一下 package.json给 README 补一个 Quick Start 小节然后跑一次pnpm lint确认没问题。”这句话跑在webprofile启动层组合standardpreset会话层组合上。它至少会碰到四个可替换的接缝模型DeepSeek 适配器、文件ctx.fs、命令ctx.shellctx.sandbox、审批ctx.approval。四个都换掉示例仍然能跑——这就是一切皆插件在这个例子上的具体含义。第 11 篇会把这四个接缝逐个拆开。上一篇← 01 · 为什么需要 harness下一篇→ 03 · 概念地图八个概念、八个角色、一个运行示例回到→ 系列索引
返回列表