2026年8月18日
上一章节 DeepSeek Harness 加载本地插件 打印一行日志就结束了,但真实插件会注册监听、工具、定时器。 本章节解决一个问题:插件卸载时,这些资源谁来清理? 注册交给 ctx,清理也交给 ctx。 自动清理机制 通过 ctx 注册的任何东西——事件监听、工具、定时器——在插件卸载时都会被自动清理。 你不需要手动 removeListener 或 clea……
阅读全文
2026年8月18日
官方文档里经常出现 Service Definition、Service Provider、Consumer 这三个词,它们合在一起构成一项能力的 seam,也就是可替换的能力接口。 本章节将讲清楚三者分别是什么,以及为什么要把一个能力拆成三个角色。 完整能力构成其 seam;任何单一角色都不是 seam。 三……
阅读全文
2026年8月18日
之前的章节我们用 --patch overlay 加载本地插件,这篇开始把它们打包成可安装的组合包。 本章节我们将讲清楚两个最基础的概念:bundle(组合包) 与 profile,以及它们各自的 manifest。 两个概念,两种 manifest 安装机制建立在两个概念之上,二者都由一份 package.json 描述。 它们在 dsh 键下携带的 manifest 种类不同,回答的问……
阅读全文
2026年8月18日
上一节我们介绍了 DeepSeek Harness 安装,一键安装命令: <span>npx </span><span>@deepseek</span><span>-</span><span>ai</span><span>/</span><span>dsh web</span> 注意,安装前先确保已经安装了 Node.js: <span>node </span><span>-</span><span>v</span> 输出版本号类似 v22.23.1,说明安装成功~ 目前在内测,打开 http://127.0.0.1:3080/ 会看到内测声明,点击继续就好了: 整个界面如下,我们可以先点击设置配置 API key(申请地址:https://platform.deepsee……
阅读全文
2026年8月18日
在 Harness 中,插件是一个导出 apply 函数的 TypeScript 模块。 框架在加载插件时调用 apply,并传入一个 ctx(上下文对象)。 我们通过 ctx 注册能力,比如事件监听、工具、LLM 适配器。 ctx(Context)是框架传给每个插件的上下文对象。 ctx 既是注册能力的入口,也记录了插件注册的一切资源。 创建本地项目 我们需……
阅读全文
2026年8月18日
上一章节讲了工具执行流水线,其中两个环节最让人关心:沙箱怎么约束命令,审批怎么决定「能不能做」。 本章节将深入 ctx.sandbox 与 ctx.approval 两个服务,讲清它们各自的分工与故障关闭原则。 一句话:沙箱管「命令跑在什么边界里」,审批管「这个具体操作是否被允许」,两者都默认失败关闭。 先看整体:沙箱决策 + 审批流程 下……
阅读全文
2026年8月18日
DeepSeek Harness 可以使用 DeepSeek 官方的配置,也可以使用第三方模型。 提供方类型 是什么 凭据要求 适用场景 DeepSeek DeepSeek 官方端点 DeepSeek API 密钥(只写) 默认、最快上手 目录提供方 已安装目录里的提供方,如 Anthropic、OpenAI 各家 API 密钥;原生认证的需各自凭据 接入已收录的主流厂商 自定义提供方 自建端点,如公司网关、自建服……
阅读全文
2026年8月18日
本章节我们将介绍同一个服务,怎么让不同插件组看到不同实例。 这背后是 Cordis 的 服务隔离(service isolation)与 agent 作用域(scope)机制。 服务隔离:isolate cordis.yml 支持服务隔离:同一个服务可以有多个实例,不同插件组看到不同实例。 关键词是 isolate 配置,配合 group 插件把插件分成组。 实例 #……
阅读全文
2026年8月18日
前几个章节我们一直在用 ctx.tools、ctx.llm、ctx.agents 这些内置服务。 这一章节我们从服务提供方的视角出发,看如何用 Service 基类自己提供一个命名服务,并让消费方获得完整的类型提示。 什么是服务 在 Harness 中,tools、llm、agents 都是服务。 服务是挂载在 ctx 上的命名能力……
阅读全文
2026年8月18日
greet 工具把问候语写死在代码里,不同部署想换就得改代码。 本章节让插件接受 cordis.yml 传入的配置,做到"配置与代码分离"。 导出 Config 类型与同名 schema 在插件中导出一个 Config 接口和同名的 Schemastery schema。 默认值直接写在 schema 字段上。 实例 // 文件路径:scratch-plugin/src/my-plu……
阅读全文