同一个任务在 Web 里能看见计划,换成脚本后却难以判断失败位置;接入 ACP 后,又多了会话和权限映射问题。

最快的选择方法是:日常交互和人工审批选 Web,脚本化、一次性和 CI 任务选 Headless,需要由编辑器或上层 Agent 创建会话时再评估 ACP。 团队可以并行保留多种入口,但模型配置、权限策略和验收标准必须统一。

本文适合三类读者:独立开发者想找最省维护的日常入口,自动化工程师想把任务变成可重复命令,平台或工具开发者则需要评估 ACP 集成和多入口治理成本。

最后更新于 2026 年 8 月 18 日,模式、命令和兼容性信息核实自官方仓库、用户指南、开发指南与架构文档;该项目当前仍处于开发者预览阶段,后续可能出现兼容性破坏性变更。DeepSeek Harness 官方仓库

先按责任边界确定主入口

DeepSeek Harness 的 Web、Headless 与 ACP,不是“模型能力从弱到强”的三个等级,而是三种不同的任务承载方式。模式差异主要体现在谁负责观察过程、谁负责处理失败、谁负责保存会话,以及谁承担权限隔离责任。

使用者或任务 优先模式 适合原因 不宜直接承担的责任
独立开发者的日常编码 Web 可观察计划、工具调用、差异和审批 不适合无人值守批处理
自动化工程师的固定任务 Headless 参数明确、可保存日志、可用退出状态验收 不应默认放开高风险写入
编辑器或上层 Agent 集成 ACP 可创建会话、传递任务、接收结构化结果 不应忽略客户端兼容和生命周期
小型团队多入口协作 Web + Headless 交互与自动化可以并行 不允许配置、权限和审计各自分叉

官方仓库将 Web 作为直接启动入口,Web UI 默认监听本机地址;命令行文档则明确区分 web profile 与 headless profile,Headless 可以执行一次新会话并输出最终答案后退出。(DeepSeek Harness 官方 README

需要特别注意的是,官方 README 已明确标注开发者预览状态,意味着当前有效的命令、参数、profile 行为和集成接口不能被视为长期稳定协议。将配置写进脚本或团队文档前,应该先固定版本并保留回滚方式,而不是只复制一段当前可运行的命令。

独立开发者先保留 Web 的可见性

如果任务仍然需要判断“应该改哪些文件”“工具调用是否越界”或“这个差异是否值得接受”,Web 应该作为主入口。官方 Web 指南说明,新的 Web 会话需要先配置模型、选择工作区,之后才能提交任务;在活动权限策略下,涉及审批的操作会要求人工确认。(DeepSeek Harness 用户指南

Web 的真实优势有三点。

过程可见:计划、文件读取、命令执行和差异结果集中在一个会话中,出现偏差时可以及时停止。

人工介入成本低:需求不完整或模型准备执行写入时,可以在界面中修改任务、拒绝操作或缩小工作区范围。

问题定位更直接:当结果不符合预期时,可以回看哪一次工具调用导致了错误,而不是只面对一个失败退出码。

但 Web 也有隐性成本。它依赖持续运行的本地或远程进程,远程访问还要额外处理监听地址、身份认证、反向代理和浏览器会话安全;如果多人共用同一个工作区,人工审批记录和实际文件状态也可能难以对应。

因此,偶发执行任务时不应过早建设复杂的自动化入口。若任务每周只运行几次,且每次都需要阅读结果和确认修改,Web 的人工可见性通常比维护一套脚本、重试逻辑和日志采集系统更省事。需要远程打开 Web UI 时,可以先参考 RUVCLOUD 的远程 Mac 使用入口,重点确认工作区隔离和访问权限,而不是先追求无人值守。

自动化工程师再把边界清楚的任务交给 Headless

Headless 适合的不是“所有不想打开页面的工作”,而是满足以下条件的任务:输入边界清楚,输出可以验证,成功与失败能够由退出状态或机器可读产物判断。

官方命令行文档给出的典型形式是:

dsh --profile headless "run the tests"

开发指南也提供了:

pnpm dsh --profile headless "summarize this workspace"

这类入口的重点并不在命令本身,而在任务契约是否完整。脚本维护者至少要明确以下内容:

  1. 参数传递:任务文本、工作区路径、模型选择和 profile 参数必须分开管理,避免把用户输入直接拼接进具有写权限的命令。
  2. 环境变量:API 密钥、基础地址、模型路由和会话目录应通过受控环境注入,不能把密钥写入仓库或 CI 日志。
  3. 日志保存:保存标准输出、标准错误、退出状态、任务标识和版本信息;只保存最终答案,无法支持可靠复盘。
  4. 产物验收:用测试结果、差异检查、JSON Schema、文件清单或人工审批标记确认任务成功,而不是只检查进程是否结束。
  5. 失败重试:网络失败可以重试,权限拒绝、测试失败和产物不完整不能无条件重试,否则可能重复写入。
  6. 高风险门禁:数据库迁移、生产配置、批量删除和对外发布仍需外部审批或测试环境,不应因为进入 Headless 就自动获得完整写权限。

官方 Python SDK 示例还展示了工作区、会话根目录和会话 ID 的独立配置,并说明会话目录会保存 JSONL 形式的请求与工具调用记录;这意味着 Headless 的可审计性取决于脚本是否保留这些目录和上下文,而不是取决于“有无界面”。(DeepSeek Harness Python SDK 指南

从维护责任看,Headless 会把原本由 Web UI 承担的工作转移给脚本维护者:超时由谁设定,失败由谁分类,日志保存多久,重试是否幂等,写入前是否需要审批,都必须在外部系统中补齐。若这些问题尚未有答案,Headless 只能作为试验入口,不能直接成为生产主入口。

平台或工具开发者按会话协议评估 ACP

ACP 适合的场景,是上层工具需要把 DeepSeek Harness 当作一个可管理的 Agent 会话服务:由客户端创建会话,发送任务,接收事件或结构化结果,再决定是否继续、暂停、恢复或关闭会话。

开发指南将 ACP 自动化服务器描述为通过 JSON-RPC stdio 暴露新的 Agent 会话,并提供对应演示命令。这个定位与 Headless 不同:Headless 更像“执行一个任务并返回结果”,ACP 则需要处理会话生命周期和协议事件。(DeepSeek Harness 开发指南

在决定接入前,平台团队应逐项验证:

  • 客户端兼容:客户端是否支持当前 ACP 版本、初始化流程、事件类型和错误格式。
  • 会话生命周期:创建、继续、取消、超时、崩溃恢复和关闭分别由谁负责。
  • 错误传播:工具错误、模型错误、权限拒绝和客户端断连是否能被上层准确区分。
  • 权限映射:客户端的项目权限、用户身份和 Harness 工作区权限能否一一对应。
  • 日志归属:是客户端保存完整事件,还是 ACP 服务保存会话记录;两边的会话 ID 是否一致。
  • 升级回滚:协议变化后能否保留旧客户端,或者在短时间内切回 Web 与 Headless。

ACP 接口更灵活,并不等于它更适合所有工作流。对于个人开发者,ACP 往往会增加一个协议适配层;对于小团队,如果只有一个稳定的命令行任务,直接调用 Headless 反而更容易测试和排错。只有当上层工具确实需要统一创建会话、转发事件或组合多个 Agent 时,ACP 的额外复杂度才有合理回报。

团队先统一配置,再允许入口并行

小型团队没有必要强制所有人使用同一种入口。开发者可以在 Web 中观察计划,自动化工程师可以在 Headless 中运行固定任务,平台负责人则可以用 ACP 做编辑器或内部工具集成;关键是入口不同不能导致结果不可审计。

建议集中管理以下配置:

  • 模型名称、基础地址和推理相关参数;
  • 工作区根目录、文件访问范围和危险操作策略;
  • 插件版本、profile 配置和允许使用的工具;
  • 日志格式、保存期限、会话 ID 规则和脱敏策略;
  • 任务验收标准、测试门禁和回滚要求;
  • Web、Headless、ACP 三种入口的版本锁定与升级记录。

可以由个人保留的内容则包括 Web 的界面布局、常用提示词草稿、Headless 的本地别名,以及非安全敏感的交互习惯。这样既不会牺牲个人效率,也不会让同一个任务因为入口不同而失去权限边界或回滚证据。

目前公开文档仍将该项目标为开发者预览,并提醒可能出现兼容性破坏性变化。团队应把 profile、插件和 ACP 客户端纳入同一套变更评审;不要让某一位开发者直接升级本机环境后,再把无法复现的行为当成团队默认行为。(DeepSeek Harness 官方仓库

用同一基准任务完成最终选型

功能打勾表很容易掩盖真正的运维差异。更可靠的方法,是让三种模式完成同一个低风险任务,例如“读取一个测试仓库,找出失败测试,生成修改建议,但不直接合并代码”。

执行时按以下顺序操作:

  1. 固定同一版本、同一模型、同一工作区和同一任务文本。
  2. 在 Web 中记录启动步骤、首次人工介入点、工具调用、差异展示和最终产物。
  3. 在 Headless 中记录环境变量、命令行参数、退出状态、标准输出和失败重试过程。
  4. 在 ACP 中记录会话创建、任务发送、事件接收、错误传播和会话关闭。
  5. 刻意制造一个低风险失败,例如测试不通过或权限不足,观察三种模式如何恢复。
  6. 比较产物完整性:是否有修改前后差异、测试结果、会话记录和可追踪 ID。
  7. 最终写成“主入口、备用入口、禁止场景”,不要只写“支持”或“不支持”。

可直接使用下面的检查清单:

  • [ ] 同一任务在三种模式下使用了相同的工作区和模型配置。
  • [ ] Web 模式记录了计划、工具调用、差异和审批位置。
  • [ ] Headless 模式能通过退出状态或产物校验判断成功与失败。
  • [ ] Headless 失败后不会无条件重复执行写入操作。
  • [ ] ACP 客户端能正确处理创建、继续、取消和关闭会话。
  • [ ] 三种模式的权限边界与工作区范围一致。
  • [ ] 日志中包含版本、任务 ID、会话 ID 和错误信息。
  • [ ] 至少有一个可回滚的升级方案。
  • [ ] 团队已经写明主入口、备用入口和禁止场景。
  • [ ] 高风险写入仍经过测试环境或外部审批。

如果任务启动步骤很多、人工介入点频繁,说明它还不适合 Headless;如果任务必须由另一个工具创建会话并消费中间事件,说明 ACP 的价值正在出现;如果任务需要持续阅读计划和确认差异,Web 仍然是更稳妥的入口。

FAQ:把长尾选择问题落到实际工作流

Web 界面和 Headless 执行各自适合哪些任务?

Web 适合人在环中的开发任务,计划、工具调用、文件差异和审批过程都能被直接观察。Headless 则面向一次性命令、脚本和 CI,重点是稳定输入、退出状态、日志和可重复恢复;它并不代表模型能力天然更强。

代码开发时,怎样判断是否该从 Web 切换到自动化模式?

日常写代码通常先选 Web,尤其是需求仍在变化、需要确认修改范围或经常批准工具操作时。只有当任务已经变成固定检查、批量改写或可自动验收的流水线步骤,才适合把 Headless 设为主入口。

怎样把 DeepSeek Harness 接入脚本或 CI 流程?

可以通过官方命令行入口以 Headless profile 执行一次持久化会话并输出最终结果,开发指南也提供了脚本示例。脚本调用前应固定工作区、会话目录、环境变量、超时和失败后的人工处理路径。

编辑器什么时候值得接入 ACP?

当编辑器、桌面工具或上层 Agent 系统负责创建会话、发送任务并消费结构化结果时,ACP 才有明显价值。选择前需要验证客户端兼容性、会话生命周期、错误传播和权限映射;如果现有 Web 或命令行流程已经稳定,不必为了接口灵活而迁移。

多人协作时能否保留 Web 与自动化两类入口?

可以并行使用,但不能让不同入口各自维护一套模型、权限和日志规则。团队应集中管理模型路由、工作区边界、插件版本、审批策略和验收标准,同时允许个人保留 Web 交互偏好或脚本参数习惯。

最终落地:把选择写成三条规则

个人开发者可以先把 Web 设为主入口,只有在任务输入、输出和验收都稳定后,才把其中一部分迁移到 Headless。自动化工程师应优先选择 Headless,但必须把环境变量、日志、超时、重试和写入门禁一起交付,而不是只交付一条命令。

平台团队则应把 ACP 当作集成项目管理,而不是简单的启动参数。只要客户端兼容、会话生命周期、权限映射和错误传播还没有完成验证,ACP 就应该停留在隔离测试环境中,采用可回滚的双轨试点,不宜一次性替换现有 Web 或命令行工具链。

如果当前方案依赖个人电脑长期在线,常见缺点是远程访问不稳定、环境版本难以复现、权限边界容易随个人配置漂移;如果直接购买并长期维护一台 Mac,又要承担硬件闲置、系统升级、账号隔离和故障恢复责任。对于只需要临时验证 Web、Headless 或 ACP 行为的开发者,RUVCLOUD 的远程 Mac 方案可以把环境准备、远程访问和临时算力拆开处理;先根据 RUVCLOUD 的方案入口 选择测试环境,再按基准任务确认主入口,通常比一开始就为预览项目固定一套长期硬件更稳妥。