DeepSeek Harness 是面向编码 Agent 工作流的开发者预览版。它以 preset 和插件为主要扩展单元,把模型、工具、运行时和交互方式组合起来。根据 DeepSeek 官方页面和开源仓库的说明,Harness 提供标准模式、PTC 模式、极简模式和创造模式。四种模式并不是同一套工具的不同外观,而是对模型可见工具、调用编排方式和运行时实验能力的不同取舍。

“本地运行”主要表示 Harness 的 Web UI、Agent 运行时以及部分工具在本机启动或执行,并不等于所有输入、输出和插件数据都只停留在本机。只要配置了外部模型、远程 MCP 服务、联网插件或其他第三方 API,就需要单独评估数据是否会离开本机。官方资料没有给出一个可以覆盖所有 preset、插件和运行时配置的统一永久保存目录,因此不应把 Harness 简单概括为“所有数据都保存在某个固定本地目录”。
一、Harness、preset 与插件
Harness 可以理解为承载 Agent 会话的运行时和工具界面。preset 则用于描述一组可复用的运行配置,例如模型连接方式、工具集合、系统提示和模式相关设置。插件负责把能力接入运行时,包括工具、命令、MCP 连接或其他 Cordis 生态组件。具体可用项取决于当前版本、preset 内容和本机环境。
这套架构带来两个重要边界:
- 模型能够看到什么,取决于当前 preset 向它暴露了哪些工具和上下文。
- 插件能够访问什么,取决于插件实现、运行权限、环境变量、工作目录、网络能力和外部服务配置。
- 切换到更简洁的模式通常会减少可用工具,但不会自动清除已经存在的工作区文件、缓存、日志或外部服务侧数据。
- 修改模型端点或 MCP 配置后,数据处理边界也会随之改变,不能只根据 UI 是否在本机运行来判断风险。
二、四种运行模式的能力边界
- 标准模式:用于完整的编码 Agent 工作流,适合需要模型理解代码、读取项目、编辑文件、执行命令并逐步验证结果的开发任务。工具面较完整,因而需要重点审查工作目录、命令执行权限、环境变量和网络访问。
- PTC 模式:通过 Code Mode SDK,让模型使用 TypeScript 编排多步工具调用。它适合把多个工具调用组合成一个更高层的流程,减少人工逐次操作。风险重点从单个工具扩展到 TypeScript 编排逻辑、循环、条件分支、参数传递和批量读取范围。
- 极简模式:只保留持久 Bash 和
str_replace_editor。它适合最小工具集基准测试、受控实验和比较模型在有限工具条件下的表现。工具数量较少不代表风险为零:持久 Bash 仍可能读取、修改或传输工作区可访问的数据。 - 创造模式:用于检查运行时、实验 Cordis 插件以及制作自定义 preset。它适合开发者理解扩展机制和构建自定义 Agent,不适合作为默认的生产执行模式。由于会接触运行时和插件边界,应当使用隔离项目、测试凭据和非敏感数据。
三、按需求选型
- 编码开发:优先从标准模式开始。它覆盖完整编码闭环,适合项目检索、修改、执行测试和结果核验。开始前应限制工作目录,并移除不必要的密钥、客户数据和生产配置。
- 工具编排:选择 PTC 模式。需要先把每个工具的输入、输出、失败处理和可访问范围定义清楚,再评估 TypeScript 编排是否会扩大数据读取或调用次数。
- 模型评测:选择极简模式。固定工具集合、工作目录和测试数据,有助于减少环境变量对结果的影响。评测脚本应记录模型是否尝试访问工具之外的路径或执行未预期命令。
- 自定义 Agent:选择创造模式。开发阶段应隔离运行目录和网络权限,完成 preset 与插件验证后,再将经过审查的配置迁移到标准或 PTC 模式。
四、本地数据保存范围如何判断
在没有针对某个具体版本和 preset 做代码审计前,只能把本地数据范围分为“通常需要检查的类别”,不能声称存在一个统一且完整的保存清单:
- 工作区数据:模型读取的源代码、编辑后的文件、生成的补丁、构建产物和测试输出可能直接写入项目目录或命令指定的目录。
- 运行时状态:会话上下文、工具调用状态、临时文件和失败重试信息可能由运行时或 Web UI 使用。具体位置和生命周期应以当前仓库实现及启动参数为准。
- 配置与凭据:模型端点、API 密钥、MCP 地址、环境变量和 preset 配置可能存在于项目文件、用户配置、进程环境或外部密钥管理系统中。不要把密钥写入提交到仓库的 preset。
- 日志与调试信息:请求参数、工具参数、命令输出和错误堆栈可能出现在终端或日志中。即使正文文件未被保存,日志也可能包含敏感片段。
- 外部服务数据:外部模型、MCP 服务、插件依赖的 API 或远程数据库可能按各自策略保存请求、响应、账号标识、调用时间和错误信息。该部分不属于本地 Harness 的可控范围。
检查时建议从当前使用的 preset 反向追踪:模型端点指向哪里,系统提示是否把文件内容拼入请求,工具是否把命令输出返回模型,插件是否读取环境变量,MCP 是否连接远程服务,以及运行日志是否记录完整请求。对开发者预览版而言,版本升级后应重新执行这项检查。
五、外部模型、MCP 与插件的风险评估
- 先画数据流:列出用户输入、代码文件、命令输出、工具返回值和环境变量分别经过哪些组件。标记每一步是否跨出本机、组织网络或供应商边界。
- 确认模型端点:核对模型 URL、认证方式、传输协议和供应商的数据保留政策。不要仅凭“兼容某个 API”判断隐私策略相同。
- 缩小上下文:只把完成任务所需的文件和命令输出暴露给模型。将密钥文件、证书、生产配置、数据库导出和个人信息从工作区移出或设置访问隔离。
- 审查 MCP:分别记录 MCP 服务提供的工具、参数、读写范围、网络目的地和服务端日志策略。一个只读名称看起来安全的工具,也可能返回包含敏感内容的资源。
- 审查插件:检查依赖包来源、启动命令、文件系统访问、子进程调用、网络请求和环境变量使用。插件的权限应按最小权限配置,避免直接继承包含生产密钥的完整 Shell 环境。
- 验证删除与留存:明确本地缓存、日志、模型供应商记录和 MCP 服务端记录分别由谁删除、何时删除以及是否支持关闭留存。无法确认时,应按“可能留存”处理。
- 建立测试记录:使用无敏感信息的样例数据,记录每个模式实际启用的工具和外连目标,再把结果固定到版本和配置中。
风险判断的核心不是“用了哪个模式”,而是“哪些数据被哪些组件读取、传输、执行和保存”。模式只能改变默认能力边界,不能替代权限控制和数据分类。
六、本地启动复现步骤
- 安装 Node.js,并确认当前 Node.js 版本满足该开发者预览版及其依赖的要求。仓库或后续版本若给出更具体的版本要求,应以对应版本文档为准。
- 在终端执行:
npx @deepseek-ai/dsh web- 等待本地 Web UI 启动后,用浏览器访问终端输出的本地地址。
- 先使用不含敏感信息的测试项目,确认当前 preset、运行模式、模型端点和工具清单。
- 逐项测试文件读取、编辑、持久 Bash、PTC 编排或插件调用,并记录工具实际访问的路径和网络目标。
- 停止服务后检查测试项目、运行日志、临时目录和缓存位置。不要依据一次启动结果推断所有 preset 都有相同的保存行为。
七、升级与兼容性注意事项
DeepSeek Harness 当前属于开发者预览版,官方页面明确提示可能存在破坏性兼容变更。升级前应固定当前可用版本,备份自定义 preset 和插件配置,记录模型端点与 MCP 清单,并在隔离目录中重新验证启动、工具权限和数据流。
- 不要把开发者预览版直接作为生产环境中唯一的编码执行入口。
- 升级后重新确认四种模式的工具集合,尤其是 Bash、编辑器、PTC 和自定义插件的行为。
- 重新检查配置字段、插件接口、依赖版本和 Node.js 运行环境,不要假定旧配置可以无修改沿用。
- 如果升级导致插件或 preset 无法工作,应先对照当前 GitHub 仓库的说明和代码变更,再决定是否回退或修改配置。
- 将版本号、preset、插件版本、模型端点和测试数据集一起记录,保证风险评估结果可以复现。
八、结论
标准模式适合完整编码 Agent,PTC 模式适合通过 TypeScript 编排工具,极简模式适合最小工具集评测,创造模式适合运行时和插件实验。数据保存范围则需要按具体版本、preset、插件和外部服务逐项核对;本地 Web UI 并不自动保证数据不外传。对敏感项目,最稳妥的做法是使用隔离工作区、最小权限凭据、受控网络出口和脱敏测试数据,并在每次版本或配置变更后重新绘制数据流。