DeepSeek Harness Hub
← 返回列表

sjh9714/routinekit

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

你的 agent 做过一次。把它变成一个可以再次运行的工具。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/5 · 已提供中文文档

将成功的代理工具调用转化为经过审查、可参数化、可重放的例程。DSH、MCP 和原生 WebMCP。

综合分
29.2
GitHub 分
29.2
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add sjh9714/routinekit
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-questions
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

RoutineKit

你的 agent 做过一次。把它变成一个可以再次运行的工具。

RoutineKit 将成功且被明确选中的工具调用转化为经过审查、参数化、可执行例程。更改输入,检查实时工具,批准运行,然后重放,无需让模型重建每一步。

本地工作台中实际的捕获、批准和重放

通过官方 filesystem MCP 服务器进行的脚本化捕获/重放教程:一个新的文件路径、新的内容,以及一次读回成功检查。观看录像。

从 DeepSeek Harness (DSH) 开始,或使用独立工作台和 MCP 服务器搭配原生 WebMCP 页面。导出一个例程,并附带一个 SKILL.md,供另一个 agent 发现并运行。

v0.2 预览版。 连接一个明确配置的本地 MCP 服务器,捕获其调用,另存为工具,并复用类型化输入。该工作台也可在兼容宿主中作为 MCP App 运行。这是一个用于经过审查的线性工作流的确定性运行器,而不是通用的计算机使用 agent 或操作系统沙箱。

在本地试用

需要 Node 22.19+。原生 WebMCP 还需要当前版本的 Chrome/Edge 或 Playwright Chromium。已在本地使用 Chromium 151 和 Chrome 152 测试;浏览器 API 是实验性的,可能会发生变化。本地 MCP 文件工作流不需要支持 WebMCP 的浏览器。

npx routinekit doctor
npx routinekit demo

该演示会在真实浏览器游乐场旁边打开一个本地工作台。一个已披露的脚本化教程(而非 LLM)进行了两次真实的 WebMCP 调用:查找一个示例项目并打开其返回的 id。

1. 点击 Preview capture。注意输入绑定以及对第一步返回 id 的引用。
2. 点击 Add success check,选择 step_2 /opened,然后输入 true。勾选 Save as a named tool,然后点击 Review & save 并批准该确切例程。JSON 编辑器是可选的。
3. 输入 timer(或 drawing)作为新的 category,然后点击 Review & run。
4. 批准运行以及每次 WebMCP 调用。所选项目会发生变化:第二步使用新的结果 id,而不是记录的那个。

该演示的 localhost 源仅在该进程运行期间存在。演示例程有意在重启后不会静默重新绑定到不同的源。若要持久使用,请在稳定的源上连接你自己的 WebMCP 应用。

本教程不需要账户、模型 API 密钥或 GPU。如果未安装受支持的浏览器:

npx playwright-core@1.62.1 install chromium

试用真实的 filesystem MCP 工作流

在一个新的空演示目录中,明确安装参考服务器和 RoutineKit:

npm init -y
npm install routinekit @modelcontextprotocol/server-filesystem@2026.8.31
npx routinekit demo-files ./node_modules/@modelcontextprotocol/server-filesystem/dist/index.js
这份公开的脚本化教程会启动已安装的官方文件系统 MCP 服务器,并使用一个新的临时工作区,写入 first-note.txt,然后将其读回。它不会使用你现有的文件。在工作台中:

1. 添加检查 step_2 /content,与 Input: content 进行比较。
2. 选择 Save as a named tool,查看绑定,并批准保存。
3. 使用终端中打印出的新文件路径,输入不同的内容,并在批准后运行。结果必须等于新内容。
4. 同一例程可作为 routine_saved_write_and_check 使用,在其所属的 MCP 会话中直接接受 file 和 content 输入。选择 Export skill ZIP 以保留它。

退出会删除演示的临时文件和例程。导出的例程在其他地方运行之前,需要重新批准一个匹配的 files 服务器;权限和文件访问不会被转移。该录屏是脚本化的,并非模型自主成功的证据。

在 DeepSeek Harness 中

dsh plugin --profile web add routinekit

此预览请使用 DSH 0.1.2-rc.1。该插件会注册工具,并向 Web 侧边栏添加一个 RoutineKit 按钮。它不会修改 DSH 核心,也不会替换你现有的工具权限。

打开面板并选择 Initialize RoutineKit in DSH,或者询问:

使用 routine_tools 列出你可以记录的工具。我想用[这些变化的输入]重复[我的任务]。在执行之前,仅使用所需的工具和确切的示例参数值调用 routine_record。完成任务,向我展示 routine_preview,并提出能够证明其结果的检查。只有在我批准后才保存。

在重放 DSH 原生例程时,面板的 Run in DSH 按钮会通过当前对话排队一个 routine_run 请求。该启动可以使用宿主模型。重放引擎本身不进行任何模型调用,并通过 ctx.tools.execute 分发每个步骤,保留相同的代理作用域、取消、批准策略和防护。

记录是任务本地的。保存的 DSH 例程保存在 DSH_HOME/routinekit 下(按可用的工作区/任务身份分区);独立存储使用 ROUTINEKIT_HOME 或 ~/.routinekit。显式公开的已保存工具会注册在所属的代理作用域中,绝不会对每个工作区全局注册。保存例程并不授予运行它的权限。

在此预览中,Web 面板仅限回环访问。不支持远程/局域网访问。如果 DSH 的包龄策略拒绝了一个刚刚发布的包,请等待该策略窗口结束;不要为了安装 RoutineKit 而降低该策略。

在 MCP 客户端中

使用你客户端常规的 MCP 配置添加此 stdio 服务器:

{
"mcpServers": {
"routinekit": {
"command": "npx",
"args": ["-y", "routinekit", "mcp"]
}
}
}
操作需要人工表单征求。没有该功能的客户端可以列出/检查例程,但无法自动批准执行。请改用 npx routinekit open 启动独立工作台。不要仅凭基本的 MCP 支持就推断客户端完全兼容。

Stop 会终止当前活动的服务器操作,并针对待处理的征求发送协议取消。关闭客户端的批准 UI 取决于该客户端的取消支持。

在 MCP Apps 宿主中,调用 routine_workbench 以打开内联 UI。它使用相同的工具执行路径,并且仍然需要宿主的人工表单征求提示;不会暴露任何模型可调用的批准绕过方式。打包的 HTML 不包含外部脚本、样式或网络资源。浏览器集成已针对官方 @modelcontextprotocol/ext-apps AppBridge SDK 进行测试,并未在单个桌面客户端上获得认证。宿主可能会阻止 ZIP 下载;CLI 导出仍然可用。

连接你自己的本地 MCP 工具

RoutineKit 不会检查同级 MCP 配置,也不会自动捕获它们的调用。请使用指向已安装可执行文件和服务器的绝对路径创建你自己的本地配置,然后运行 routinekit open --config /absolute/path/routinekit.config.json 或 routinekit mcp --config /absolute/path/routinekit.config.json。在 DSH 中,请在启动宿主之前通过 ROUTINEKIT_CONFIG 提供相同的路径。

{
"servers": {
"files": {
"command": "/absolute/path/to/node",
"args": ["/absolute/path/to/server-filesystem/dist/index.js", "/absolute/path/to/allowed-workspace"],
"tools": ["write_file", "read_text_file"]
}
}
}

在 Windows 上使用绝对 Windows 路径,并按 JSON 常规方式进行转义。Review & connect(或使用 server: "files" 调用 routine_mcp_connect)会在启动前显示命令和参数。选择生成的 mcp:files:write_file 和 mcp:files:read_text_file 工具进行捕获;通过工作台表单或 routine_mcp_call 调用它们。可选的 envFrom 数组用于指定要继承的环境变量;切勿将凭据值放入文件或例程中。

此预览版支持本地 stdio、显式工具允许列表,以及结构化 JSON 或单个文本结果。它不代理 HTTP/OAuth 服务器、采样、roots 请求或上游征求。启动的进程是受信任的本地代码,拥有你的操作系统用户的权限,而不是容器;其自身配置的文件/网络限制很重要。RoutineKit 不会为你安装服务器。请审查任何可能自行安装软件或启动子进程的已配置命令。

另存为工具
使用带 expose: true 的 routine_save,或勾选工作台复选框。名为 write-and-check 的例程会变成 routine_saved_write_and_check,并直接接受其命名输入,而不是 inputs_json。超过兼容性限制的名称会获得一个确定性哈希后缀。MCP 会通告工具列表变更;DSH 仅为所属代理注册该工具。重新打开同一工作区会加载其保存的工具定义。新输入、实时契约验证、宿主防护和全新审批仍然适用。

典型流程:

routine_web_open → routine_tools → routine_record
→ routine_web_call … → routine_preview → routine_save
→ routine_run with new inputs

routine_record 接受 name、inputs_json(标量示例的 JSON 对象)以及显式的 tools 数组。routine_web_call 接受精确的 webmcp: 工具名和 arguments_json。routine_run 接受 name 和 inputs_json。JSON 字符串使 DSH 与 MCP 之间的接口保持一致。

其他工具:routine_list、routine_inspect、routine_import、routine_export、routine_discard 和 routine_stop。原生 DSH 工具使用 dsh: 命名空间,并且仍需要在 DSH 中提供这些工具;RoutineKit 不会凭空创造跨宿主等价物。

保存了什么?

一个包含以下内容的小型 JSON 例程:

- 命名输入类型,不包含原始示例值。
- 选定的工具标识、适用时的精确来源,以及输入/输出契约。
- 有序参数,带有参数绑定以及对先前结果的无歧义引用。
- 结构性输出检查以及你添加的任何显式成功检查。

原始录制输出仅保存在内存中,最多 40 次调用 / 15 分钟 / 有界 JSON 大小。它们不会保存在例程中。经过审查的字面量参数会被保存,并且可能包含私有业务数据。在分享前请检查它们。

绑定仅针对精确标量匹配进行推断。RoutineKit 不会推断子字符串、循环、分支、转换或有歧义的依赖关系。小数值常量(0/1)、布尔值、短结果字符串和有歧义的值不会自动链接到先前结果。在依赖某个例程之前,请审查建议的绑定并测试具有代表性的变更输入。

契约指纹可检测模式/来源变更,对于上游 MCP,还可检测服务器别名/名称/版本,但无法检测报告相同身份和模式却改变了实现的变更。形状检查不能证明业务成功:请添加诸如 /opened == true 或结果字段与命名输入匹配之类的检查。当后续步骤失败时,先前的副作用不会被回滚。

分享可执行技能

routinekit list
routinekit inspect my-routine
routinekit export my-routine ./my-routine
新目录包含 SKILL.md 和 routine.json。Export skill ZIP 无需 CLI,即可从工作台下载同样的这两个文件。解压 ZIP,然后在导入表单中选择 routine.json。现有目标永远不会被覆盖。另一位用户审查该 JSON,导入它,提供自己的输入,重新连接兼容的工具,并批准一次全新的运行。

导出的技能不是凭据或同意的转移。不同的主机、工具、来源或 schema 都可能使某个例程有意地无法运行。绝不要用 shell 或 computer-use 回退方案静默替换缺失的工具。

值得了解的边界

- 捕获是显式的,范围限定于选定的工具以及一个 DSH 任务或 MCP 连接。重叠的调用或失败会使录制失效。
- WebMCP 使用全新的浏览器上下文:没有现有 cookie、登录配置文件、本地文件或桌面捕获。不会向第三方站点注入 polyfill。
- 跨源请求、弹窗、下载和 service worker 会被阻止。因此,跨源依赖可能导致站点无法加载。在已批准的 WebMCP 调用之外,非 GET 请求会被阻止。
- 站点的工具描述/只读提示是不可信的。每次 WebMCP 调用都需要批准。已批准的调用仍可能改变该站点的状态;这不是针对恶意站点的安全沙箱。
- 凭据检测是启发式的。不要录制机密。DSH、MCP 客户端和网站可能独立于 RoutineKit 保留各自的日志。
- 本地端点会检查 socket、Host、Origin 和 Fetch Metadata;独立 API 还需要一个临时能力令牌。这些检查无法防范以你的操作系统用户身份运行的恶意软件。
- JSON Schema 引用、正则约束和格式约束会被拒绝。不受支持的契约会停止,而不会被当作已验证处理。嵌套输入参数可能仍需要高级 JSON 编辑器。
- 停止会取消重放,并关闭 RoutineKit 拥有的浏览器和直接启动的 MCP 进程。它无法保证清理受信任服务器独立生成的孙进程。DSH 原生工具必须配合取消;RoutineKit 无法强制终止任意的进程内插件。
- 没有账户、云后端、遥测、模型采样、计划执行、市场,也不会在用户账户上自动执行 GitHub 操作。

开发

npm ci
npm run build
npm run check
npm test
npm run test:e2e

单元/集成测试覆盖绑定、结果引用、变更的契约、显式成功检查、拒绝批准、取消、机密拒绝、文件边界、真实的 DSH 工具流水线、限定范围的已保存工具、技能 ZIP 内容,以及实际的 filesystem MCP 子进程。浏览器 E2E 演练三个原生 WebMCP 工作流、工作台表单,以及官方 AppBridge SDK 内的一个 MCP App。测试批准是合成的;UI 测试点击的是用户看到的相同批准控件。这些并不代表关于自主模型任务成功的声明。
请在 issue 中包含 DSH/浏览器版本、工具名称、预期结果,以及一个经过脱敏的最小复现。不要附上原始录制、cookie、令牌或私有例程字面量。

为什么还要另一个工具?

诸如 Microsoft Skill Recorder 这样的录制转技能项目展示了复用工作的价值。RoutineKit 探索的是一种更窄的方法:在你现有的 harness 中捕获结构化调用,保留经过审查的数据流,并针对实时契约进行回放。这并非声称发明了录制、技能或工作流引擎。

WebMCP 是一个实验性 Web 标准。浏览器适配器遵循其原生发现/调用 API;工作流保留讨论是相关的先前工作,并非对 RoutineKit 的 JSON 格式的认可或已采用的标准。

如果这对你有用,给一个 GitHub star 能帮助其他构建者发现它。一个小型可复用示例或一个失败案例则能更进一步改进它。

MIT 许可。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(sjh9714)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群