mcpField
R
RoutineKit

RoutineKit

本地服务
github.comAI 与智能体18 周前更新

关于 RoutineKit

RoutineKit 将明确选定的 MCP 或 WebMCP 调用保存为经过审查、带参数的流程,并在人工批准后重放。它适合希望复用线性工作流、无需模型重新构建每一步的 Agent 用户。

主要功能

  1. 01捕获选定的工具调用
  2. 02绑定类型化输入和先前结果
  3. 03验证实时工具契约
  4. 04审查并批准运行
  5. 05导出含 SKILL.md 的流程

适用场景

  1. 01用新输入重放文件写入流程
  2. 02保存前检查流程结果
  3. 03与其他 Agent 分享已批准流程

MCP 相关

RoutineKit 是 MCP 服务,提供连接已配置本地 stdio MCP 服务、捕获和运行流程及管理已保存流程的工具。兼容 MCP Apps 的宿主可打开其工作台界面。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sjh9714-routinekit": {
"command": "npx",
"args": [
"-y",
"routinekit"
],
"env": {
"ROUTINEKIT_CONFIG": "<ROUTINEKIT_CONFIG>",
"ROUTINEKIT_HOME": "<ROUTINEKIT_HOME>"
}
}
}
}
启动命令npx -y routinekit
需要配置的环境变量
ROUTINEKIT_CONFIGOptional absolute path to your reviewed local stdio server configuration.
ROUTINEKIT_HOMEOptional directory for saved routines. Defaults to ~/.routinekit.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmroutinekit0.2.0

工具

16

收录的工具列表 · 更新于 3 周前

此工具无需参数。

详细介绍

RoutineKit

你的 Agent 已经成功运行过一次。现在,把它变成可重复运行的工具。

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

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

通过官方文件系统 MCP 服务演示脚本化捕获与重放:使用新的文件路径、新内容,并检查读取结果是否成功。观看录制视频。

从 DeepSeek Harness (DSH) 开始,或使用独立工作台和支持原生 WebMCP 页面的 MCP 服务。导出例程时,可附带 SKILL.md,供其他 Agent 发现并运行。

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

在本地试用

需要 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,而非录制时的 ID。

演示的 localhost 源仅在进程运行期间存在。演示例程不会在重启后静默地重新绑定到其他源。如需持续使用,请在稳定源上连接自己的 WebMCP 应用。

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

npx [email protected] install chromium
试用真实的文件系统 MCP 工作流

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

npm init -y
npm install routinekit @modelcontextprotocol/[email protected]
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. 在其所属 MCP 会话中,同一个例程可作为 routine_saved_write_and_check 使用,并接受直接的 file 和 content 输入。选择 Export skill ZIP 以保留它。

退出时会移除演示创建的临时文件和例程。导出的例程必须先在目标环境中获得新批准的匹配 files 服务,才能运行;权限和文件访问权限不会随之转移。此次捕获由脚本完成,并不能证明模型具备自主成功的能力。

在 DeepSeek Harness 中

dsh plugin --profile web add routinekit

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

打开面板并选择 Initialize RoutineKit in DSH,或提出请求:

使用 routine_tools 列出可供录制的工具。我想用[这些会变化的输入]重复执行[我的任务]。执行前,只使用必要的工具和准确的示例参数值调用 routine_record。完成任务后,向我展示 routine_preview,并提出能够验证结果的检查方法。只有在我批准后才保存。

重放 DSH 原生例程时,面板中的 Run in DSH 按钮会通过当前对话排入一个 routine_run 请求。启动过程可能会使用宿主模型。重放引擎本身不会调用模型,而是通过 ctx.tools.execute 分派每个步骤,并保留相同的 Agent 作用域、取消机制、审批策略和防护措施。

录制仅限于当前任务。已保存的 DSH 例程保存在 DSH_HOME/routinekit 下(按可用的工作区/任务标识分区);独立模式下的存储路径为 ROUTINEKIT_HOME 或 ~/.routinekit。明确公开的已保存工具会注册到所属的 Agent 作用域中,不会全局注册到每个工作区。保存例程不会授予运行权限。

此预览中的网页面板仅限环回访问。不支持远程/局域网访问。如果 DSH 的软件包发布时长策略拒绝了刚刚发布的软件包,请等待该策略的时间窗口过去;不要调低该策略来安装 RoutineKit。

在 MCP 客户端中

按照客户端常规的 MCP 配置添加此 stdio 服务:

{
  "mcpServers": {
    "routinekit": {
      "command": "npx",
      "args": ["-y", "routinekit", "mcp"]
    }
  }
}

执行操作必须支持人工表单征询。不支持此功能的客户端可以列出/检查例程,但无法自动批准执行。请改用 npx routinekit open 启动独立工作台。不要仅凭基本 MCP 支持就推断客户端完全兼容。

停止操作会结束当前服务端操作,并针对待处理的征询发送协议取消请求。是否关闭客户端的审批界面取决于该客户端是否支持取消。

在 MCP Apps 宿主中,调用 routine_workbench 打开内嵌界面。它使用相同的工具执行路径,仍需要宿主提供人工表单征询提示;不会公开可由模型调用的审批绕过机制。打包后的 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 服务,也不支持 sampling、roots 请求或上游 elicitation。启动的进程是拥有你操作系统用户权限的可信本地代码,不是容器;其自身配置的文件/网络限制很重要。RoutineKit 不会为你安装服务。请检查任何可能自行安装软件或启动子进程的已配置命令。

保存为工具

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

典型流程:

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。导出技能 ZIP 可从工作台下载这两个文件,无需使用 CLI。解压 ZIP,然后在导入表单中选择 routine.json。现有目标位置绝不会被覆盖。其他用户会检查 JSON、导入该文件、提供自己的输入、重新连接兼容工具,并批准一次新的运行。

导出的技能不会转移凭据或同意。不同的主机、工具、来源或架构可能导致例程按预期无法运行。切勿在缺少工具时,静默地用 shell 或计算机操作回退方案替代。

值得了解的边界

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

开发

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

单元/集成测试涵盖绑定、结果引用、契约变更、显式成功检查、拒绝批准、取消、机密拒绝、文件边界、真实的 DSH 工具管线、限定范围的已保存工具、技能 ZIP 内容,以及实际的文件系统 MCP 子进程。浏览器 E2E 测试会运行三个原生 WebMCP 工作流、工作台表单,以及官方 AppBridge SDK 中的 MCP App。测试批准均为模拟操作;UI 测试会点击用户实际看到的相同批准控件。这些测试并不代表模型能够自主成功完成任务。

提交 issue 时,请提供 DSH/浏览器版本、工具名称、预期结果,以及已清理敏感信息的最小复现。请勿附上原始录制内容、Cookie、令牌或私密的例程字面值。

为什么还需要另一个工具?

Microsoft Skill Recorder 这类从录制生成技能的项目,展现了重复利用已有工作的价值。RoutineKit 探索的是一种范围更窄的做法:在你现有的测试框架中捕获结构化调用,保留经过审核的数据流,并针对实时契约重放。这并不意味着我们发明了录制、技能或工作流引擎。

WebMCP 是一项实验性 Web 标准。浏览器适配器遵循其原生发现和调用 API;工作流保留相关讨论属于相关的先前工作,并不代表对 RoutineKit 的 JSON 格式背书,也不是 RoutineKit 采用的标准。

如果你觉得这有用,点一个 GitHub 星标有助于其他开发者发现它。提供一个小型可复用示例或失败案例,更能帮助改进它。

采用 MIT 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。