mcpField
O
omp-worker-mcp

omp-worker-mcp

本地服务
github.comAI 与智能体35 天前更新

关于 omp-worker-mcp

omp-worker-mcp 是一款 MCP 服务,让监督型 Agent 将编码工作交给本机 Oh My Pi worker。它支持单项任务和依赖批次,并持久保存任务记录,提供结构化结果供审查。

主要功能

  1. 01委派单项编码任务
  2. 02运行依赖式任务批次
  3. 03校验声明的写入范围
  4. 04在同一会话中继续任务
  5. 05持久保存任务记录和日志

适用场景

  1. 01移交功能实现或错误修复
  2. 02并行处理互不冲突的仓库任务
  3. 03审查 worker 的改动和验证证据

MCP 相关

它向 MCP 客户端提供委派、等待、检查、继续和取消 Oh My Pi worker 任务的工具。MCP 客户端充当监督者,Oh My Pi 在本机执行任务。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"divenire990-omp-worker": {
"command": "npx",
"args": [
"-y",
"omp-worker-mcp"
],
"env": {
"OMP_WORKER_OMP_COMMAND": "<OMP_WORKER_OMP_COMMAND>",
"OMP_WORKER_ALLOWED_ROOTS": "<OMP_WORKER_ALLOWED_ROOTS>"
}
}
}
}
启动命令npx -y omp-worker-mcp
需要配置的环境变量
OMP_WORKER_OMP_COMMANDPath or executable name for the local OMP CLI binary.
OMP_WORKER_ALLOWED_ROOTSOptional JSON array of absolute directory paths that delegated job cwd values must resolve inside.

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

安装包
npmomp-worker-mcp0.2.1

工具

9

收录的工具列表 · 更新于 5 天前

参数类型必填说明
cwdstring是OMP 可检查和修改的绝对工作目录
tasksarray是根据依赖 DAG 和所有权安全规则并发执行的拆分任务数组
max_parallelinteger否最大并发活动 OMP 运行器数量(1-10,默认 4)
wait_secondsinteger否此调用中等待批次完成的最长秒数(0-240,默认 60)
supervisor_briefstring否供任务组共享的、只读且便于决策的发现、假设和约束
default_max_attemptsinteger否如果任务中未指定,则使用每个任务的默认尝试次数上限(1-5,默认 3)
group_timeout_minutesinteger否组的整体硬性截止时间(分钟)(1-120,默认 60)
default_timeout_minutesinteger否如果任务中未指定,则使用每个任务的默认超时时间(分钟)(1-120,默认 30)

详细介绍

omp-worker-mcp

让你的主 AI Agent 负责规划和审查,并将实际编码工作交给本地 Oh My Pi 工作器。

一个 MCP 服务,可将 ChatGPT、Codex、Claude Code、Cursor 和其他 MCP 客户端变成 监督者,
并将你自己机器上的 Oh My Pi(OMP)变成后台 工作团队。

npm version CI Node.js MCP Registry MIT License

English · 简体中文 · 文档


监督者 Agent 将任务委派给 omp-worker-mcp,后者在后台运行 OMP 工作器,并返回结构化结果供审查

快速开始 · 用法 · 工具 · 配置 · 安全模型 · 常见问题


功能介绍

大多数编码 Agent 都在同一处完成所有工作:读取代码、规划、编辑、运行测试、修复——全部发生在同一段对话中,并消耗同一个模型的预算。omp-worker-mcp 将这些工作拆分为两个角色:

角色参与者职责
监督者你交谈的 Agent:ChatGPT、Codex、Claude Code、Cursor……理解请求、拆分工作、编写验收标准、审查结果
工作器你机器上的 OMP CLI,使用你在 omp setup 中选择的模型读取文件、编辑代码、运行 shell 命令和测试,并汇报结果

omp-worker-mcp 是两者之间的桥梁。它为监督者提供一小组 MCP 工具,在后台启动 OMP,将每项任务保存在磁盘上,并返回简短的结构化报告,而不是一大堆日志。

亮点

  • 单项任务或完整计划——omp_run_compact 可委派单项任务;omp_run_batch_compact 可将最多 50 项任务作为依赖关系图(DAG)运行,每次最多运行 10 项。
  • 声明式写入范围校验——批处理中的并行写入任务必须声明其负责的路径;在任何工作器启动前,系统会拒绝声明范围重叠和依赖循环(这是调度检查和提示词约束,并非操作系统文件系统锁)。
  • 结果便于审查——每个工作器完成后都会生成一个 OMP_WORKER_RESULT 信封,其中包含状态、摘要、已更改文件、验证证据和待处理事项。
  • 修正而非重启——omp_continue 会向同一个 OMP 会话发送反馈,因此工作器会保留上下文。
  • 持久化任务——任务记录、日志和结果都保存在磁盘上,即使 MCP 服务重启后仍可读取。
  • 支持从网页版 ChatGPT 使用——通过 OpenAI 的 Secure MCP Tunnel 实现:无需开放入站端口,并提供允许列表(OMP_WORKER_ALLOWED_ROOTS,从 0.2.0 开始提供;npm 0.1.1 不包含此功能),用于限制任务可运行的目录。

适用场景

适合以下情况

  • 你希望由能力更强的模型做决策,同时由更快或更便宜的模型负责输入;
  • 任务规模足以交接:一个功能、带测试的错误修复、多模块重构,或耗时较长的只读调查;
  • 你希望并行处理仓库中的多个部分,同时避免 Agent 互相覆盖;
  • 你习惯用 ChatGPT 思考,并希望它能操作你自己机器上的文件。

以下情况可能不值得使用

  • 变更只有一行,或问题很简单——主管自身的工具更快;
  • 你需要真正的操作系统级沙箱。此项目控制任务从哪里开始,以及告知任务可以触及什么内容,而不是 OMP 在技术上能够做什么(参见安全模型)。

快速开始

你需要: Node.js ≥ 22 · 已安装 Oh My Pi · 一个 MCP 客户端(Codex、Claude Code、Cursor、ChatGPT 等)。

1. 安装并设置 OMP

按照官方说明安装 OMP,然后:

omp --version   # confirm the CLI is on your PATH
omp setup       # sign in and choose the default model

你在此处选择的默认模型将用于所有工作者。(高级设置:在 ~/.omp/agent/config.yml 中设置 modelRoles.default: <provider>/<model>。)

如果 omp 不在你的 PATH 中,请在下方的 MCP 配置中将 OMP_WORKER_OMP_COMMAND 设置为可执行文件的完整路径。

2. 在客户端中注册 MCP 服务

无需全局安装——客户端会通过 npx -y omp-worker-mcp 运行已发布的软件包。选择你的客户端:

Codex — 作者日常使用的配置

编辑 ~/.codex/config.toml(Windows:C:\Users\<you>\.codex\config.toml):

[mcp_servers.omp-worker]
command = "npx"
args = ["-y", "omp-worker-mcp"]

[mcp_servers.omp-worker.env]
OMP_WORKER_OMP_COMMAND = "omp"

# Optional (Codex Code Mode only): let Codex call omp-worker tools directly
# without code-mode wrapping. Per the current Codex config reference, merge into
# your existing [features.code_mode] table (do not create a duplicate table header)
# and append "mcp__omp_worker" while preserving any other list entries:
[features.code_mode]
direct_only_tool_namespaces = ["mcp__omp_worker"]

(如果 [features.code_mode] 已存在于你的 config.toml 中,请合并到该表,并将 "mcp__omp_worker" 追加到 direct_only_tool_namespaces,不要重复创建表或覆盖已有条目。旧版 Codex 在任何 [table] 标头之前使用顶层键 direct_only_tool_namespaces = ["mcp__omp_worker"]。这两项设置都不是注册 MCP 服务所必需的;请参阅 Codex 直接命名空间设置和官方 Codex 配置参考。)

ChatGPT(网页) — 通过 Secure MCP Tunnel

版本要求(>= 0.2.0): OMP_WORKER_ALLOWED_ROOTS 自 omp-worker-mcp 0.2.0 起可用(历史版本 npm 0.1.1 不具备此功能,也不会执行 OMP_WORKER_ALLOWED_ROOTS 限制)。在远程开放本地执行能力之前,请确认 npx -y omp-worker-mcp@latest --version 显示 0.2.0 或更高版本。

在本地运行服务,并通过 OpenAI 的 tunnel-client 接入;你的机器只会发起出站连接。

export OMP_WORKER_OMP_COMMAND=omp
export OMP_WORKER_ALLOWED_ROOTS='["/Users/you/Projects"]'   # strongly recommended for remote access (available since 0.2.0; 0.1.1 lacks this feature)
export CONTROL_PLANE_API_KEY='<runtime-api-key>'

tunnel-client init \
  --sample sample_mcp_stdio_local \
  --profile omp-worker \
  --tunnel-id <your-tunnel-id> \
  --mcp-command "npx -y omp-worker-mcp"

tunnel-client doctor --profile omp-worker --explain
tunnel-client run --profile omp-worker

Windows PowerShell 命令、0.1.1 升级/本地构建说明、托管运行时替代方案(tunnel-client runtimes connect)、权限要求和完整信任边界:请参阅 ChatGPT Secure MCP Tunnel 指南。

Claude Code
claude mcp add omp-worker --scope user --env OMP_WORKER_OMP_COMMAND=omp -- npx -y omp-worker-mcp

使用 --scope project 仅为当前项目注册。如果在 Windows cmd.exe 中 npx 无法解析,请使用 cmd /c npx。

Cursor · VS Code / Copilot · Windsurf · Continue · 任意 JSON 配置客户端
{
  "mcpServers": {
    "omp-worker": {
      "command": "npx",
      "args": ["-y", "omp-worker-mcp"],
      "env": {
        "OMP_WORKER_OMP_COMMAND": "omp"
      }
    }
  }
}

文件位置和客户端专属说明:请参阅客户端配置。

更改配置后,请重启客户端。

3. 告诉你的 Agent 何时委派

注册服务会让工具变为可用,但不会让 Agent 主动选择使用它们。请在项目的指令文件 AGENTS.md(Codex)、CLAUDE.md(Claude Code)、.cursorrules / .github/copilot-instructions.md(其他客户端)中添加一条简短策略,或添加到 ChatGPT 的项目指令中:

## Delegation policy (omp-worker-mcp)
- Quick questions, single-file edits, design discussion: do it yourself.
- Substantive single tasks (feature, bug fix, refactor, long investigation): inspect briefly,
  then delegate with `omp_run_compact`, giving a clear `goal` and `acceptance` criteria.
- Multi-part work: use `omp_run_batch_compact`. Parallel write tasks need disjoint `ownership`;
  tasks touching the same files must be ordered with `depends_on`.
- Review every result. If acceptance is not met, use `omp_continue` with specific feedback.
- Never delegate `git push`, publishing, deployments or secret changes — confirm those with the user.

更完整的模板:请参阅作者工作流 → 策略模板。

4. 运行你的第一个任务

先从只读任务开始:

Use omp-worker-mcp to do a read-only inspection of this workspace: summarize the
project structure and dependencies. Do not modify any files.

你应该看到: Agent 调用 omp_run_compact,OMP 在后台运行,并返回一段简短摘要,且没有文件发生更改。如果任务运行时间超过等待窗口(默认 60 s),调用会返回状态为 running 的 job_id,Agent 会继续调用 omp_wait——这是正常情况。


用法

设置好策略后,只需描述你想要的结果。以下示例展示了监督器在底层发送的内容。

单个任务

“在 src/net/ 中为 HTTP 客户端添加指数退避机制,编写单元测试,并确保 npm test 通过。”

// omp_run_compact
{
  "cwd": "/path/to/repo",
  "goal": "Add exponential backoff (max 5 retries) to src/net/client.ts for 5xx and network errors.",
  "acceptance": [
    "Unit tests cover the retry and give-up paths",
    "npm test passes"
  ],
  "timeout_minutes": 30
}

返回的内容很简洁(删节示例):

{
  "job_id": "job-…",
  "status": "completed",
  "attempt": 1,
  "max_attempts": 3,
  "session_id": "sess-…",
  "summary": "Added retry with exponential backoff to the HTTP client.",
  "artifacts": [
    { "path": "src/net/client.ts", "description": "retry loop + backoff helper" },
    { "path": "test/net/client.test.ts", "description": "retry / give-up tests" }
  ],
  "verification": ["npm test: all tests passed"],
  "remaining": [],
  "details_path": "…/jobs/job-…/job.json"
}
将多个任务作为 DAG 执行

“并行地为 API 添加 /health 端点,并为 UI 添加状态徽章,然后添加一个涵盖两者的集成测试。”

graph LR
  api["api · write src/api/"] --> tests["tests · write tests/"]
  ui["ui · write src/ui/"] --> tests
// omp_run_batch_compact
{
  "cwd": "/path/to/repo",
  "max_parallel": 2,
  "tasks": [
    { "id": "api",   "goal": "Add GET /health returning build info.", "access": "write", "ownership": ["src/api/"] },
    { "id": "ui",    "goal": "Show a status badge fed by /health.",   "access": "write", "ownership": ["src/ui/"] },
    { "id": "tests", "goal": "Add an integration test for /health and the badge.",
      "depends_on": ["api", "ui"], "access": "write", "ownership": ["tests/"],
      "acceptance": ["npm test passes"] }
  ]
}

值得了解的规则:

  • write 任务必须在 ownership 中列出其负责的路径(相对于 cwd);read_only 任务不列出路径。
  • 两个可能同时运行的任务不能负责重叠路径——应使用 depends_on 为它们排序。
  • max_parallel 的取值范围为 1–10(默认值为 4);整个任务组都有截止时间(group_timeout_minutes,默认值为 60)。
  • 如果等待窗口结束时任务组仍在运行,你会获得一个 group_id;请使用 omp_wait_group 继续等待。
监督任务
情况工具
仍在运行omp_wait / omp_wait_group
需要日志、尝试记录或完整的最终回答omp_result
结果未达到验收要求使用具体反馈调用 omp_continue(计入 max_attempts,默认值为 3)
方向有误,需要停止omp_cancel / omp_cancel_group

工具

工具类型功能
omp_run_compact推荐启动一个任务,并等待最多 wait_seconds(≤ 60)以获取简洁结果
omp_run_batch_compact推荐验证并运行最多包含 50 个任务的 DAG;等待最多 wait_seconds(≤ 240)
omp_delegate低级启动一个任务并立即返回 job_id
omp_wait低级等待任务完成
omp_wait_group低级等待批次任务组完成
omp_result检查完整状态、尝试记录、attempt-NN.stdout.jsonl / attempt-NN.stderr.log 路径及最终响应
omp_continue监督向同一 OMP 会话发送反馈,以继续尝试
omp_cancel控制停止任务及其进程树
omp_cancel_group控制停止任务组中所有待处理和正在运行的任务

完整参数和限制:工具参考。


配置

所有配置均通过环境变量完成,可在客户端的 MCP 配置(env)中设置,也可在启动服务的 Shell 中设置。

变量默认值用途
OMP_WORKER_OMP_COMMANDompOMP 可执行文件名称或完整路径
OMP_WORKER_ALLOWED_ROOTS(未设置 = 不限制)绝对目录的 JSON 数组;任务必须在这些目录内运行。任何远程使用场景都应设置此项。 (自 0.2.0 起可用;npm 0.1.1 不具备此功能。)
OMP_WORKER_STATE_DIR~/.codex/state/omp-worker存储任务状态、提示词和日志的位置(即使不使用 Codex,也会使用默认路径)
OMP_WORKER_RETENTION_TTL_SECONDS(未设置 = 永久保留)删除超过 N 秒的已完成记录
OMP_WORKER_RETENTION_MAX_BYTES(未设置 = 不限大小)存储空间超过 N 字节时,删除最早的已完成记录

所有变量、磁盘布局和重启行为:运维 · .env.example。


安全模型

omp-worker-mcp 强制执行的约束

  • 设置 OMP_WORKER_ALLOWED_ROOTS 后 (自 0.2.0 起可用;npm 0.1.1 不具备此功能),作业的 cwd 必须通过 realpath 解析到获准根目录内。相邻目录前缀技巧和符号链接/junction 越界都会在 OMP 启动前被拒绝;如果设置了该值但值无效,则会默认拒绝。
  • 在批处理中,并行 write 任务的 ownership 必须互不重叠,且依赖图必须无环;这些检查会在启动任何工作进程前完成。
  • ownership 和只读意图会作为明确约束传递给每个工作进程。

它不会做什么

  • 它不是沙箱。OMP 及其运行的任何程序都拥有启动服务的用户账户的相同权限。ownership 是一项调度检查和对工作进程的指令,并非文件系统锁。
  • 它不会判断运行什么才安全。请自行处理 git push、发布、部署和机密变更,并由主管 Agent 负责监督。

对于远程访问(例如,通过 Secure MCP Tunnel 使用 ChatGPT),请务必设置 OMP_WORKER_ALLOWED_ROOTS,并考虑使用专用的低权限账户、容器或 VM。如需报告漏洞,请参阅 SECURITY.md。


平台支持

平台状态
Windows✅ 已使用真实 OMP CLI 在端到端测试中验证,并在 CI 中测试(windows-latest)
macOS🟡 完整测试套件已在 CI 中运行(macos-latest,使用虚拟 OMP);尚未使用真实 OMP CLI 完成端到端验证
Linux🟡 完整测试套件已在 CI 中运行(ubuntu-latest,使用虚拟 OMP);尚未使用真实 OMP CLI 完成端到端验证
客户端状态
Codex✅ 作者每天都在使用
ChatGPT web(Secure MCP Tunnel)📄 已记录工作流 — 请参阅指南
Claude Code、Cursor、VS Code / Copilot、Windsurf、Continue📄 已记录配置,但未在 CI 中进行集成测试
云端/远程 Agent 主机⚠️ 仅限提供 Node.js ≥ 22、PATH 中有 OMP、可写工作区且支持启动进程的主机

非常欢迎提交 Linux 报告和你已验证的客户端配置 — 请参阅贡献指南。


常见问题

Agent 忽略工具,什么都自己做。

工具可用并不意味着它们一定会被选用。添加第 3 步中的委派策略,或在提示词中明确指定服务(“使用 omp-worker-mcp 来……”)。在启用了 Code Mode 的 Codex 上,你也可以选择配置 features.code_mode.direct_only_tool_namespaces。

任务立即失败,并显示“command not found” / ENOENT。

MCP 服务找不到 OMP。将 OMP_WORKER_OMP_COMMAND 设置为可执行文件的完整路径——图形界面客户端启动时的 PATH 通常比终端中的更短。

我得到的 job_id 状态是 running,而不是结果。

对于较长的任务,这是预期行为:调用最多只等待 wait_seconds 指定的时间。任务会在后台继续运行;调用 omp_wait(或 omp_wait_group)即可继续等待。

工作器使用什么模型?

OMP 的默认模型——也就是在 omp setup 中选择的模型(或 ~/.omp/agent/config.yml 中的 modelRoles.default)。主管所用的模型取决于你的客户端。这正是设计目的:两者可以不同。

“outside OMP_WORKER_ALLOWED_ROOTS”错误。

任务的 cwd 不在任何已批准的根目录中。这说明允许列表正在生效;如果应当允许该目录,请将其添加到 OMP_WORKER_ALLOWED_ROOTS(注意:OMP_WORKER_ALLOWED_ROOTS 从 0.2.0 开始提供;npm 0.1.1 不具备此功能)。

“Concurrent write ownership conflict”错误。

两个可能同时运行的任务拥有重叠的路径。为它们设置不同的 ownership 范围,或添加 depends_on,让其中一个在另一个之后运行。

这与客户端内置的子 Agent 有何不同?

工作器是一个独立的 Agent(OMP),拥有自己的模型和提供商,可跨对话轮次在后台运行,并将状态保存在磁盘上;任何 MCP 客户端都可以驱动它,包括网页版 ChatGPT。批处理还增加了依赖排序和写入范围检查。


文档

指南适合在何时阅读……
编写工作流设置委派策略,并了解监督 → 审查 → 修正的循环
客户端配置配置 Codex、Claude Code、Cursor、VS Code、Windsurf 或 Continue
ChatGPT 安全 MCP 隧道通过网页版 ChatGPT 驱动本地 OMP
工具参考查看所有工具、参数和结果封装
运维调整环境变量、存储、保留策略和重启设置
基准测试协议比较直接执行与主管—工作器委派
Registry 发布发布到 npm 和 Official MCP Registry(维护者)

COMPATIBILITY.md 定义了公开契约和版本策略;CHANGELOG.md 列出各个版本。

参与贡献

欢迎提交问题和拉取请求,尤其欢迎 Linux 验证和经过测试的客户端配置。请从 CONTRIBUTING.md 开始。要从源代码构建:

git clone https://github.com/divenire990/omp-worker-mcp.git
cd omp-worker-mcp
npm ci
npm test        # builds, then runs the test suite against a fake OMP

致谢

本项目基于 Model Context Protocol TypeScript SDK 构建,并围绕 Oh My Pi(MIT)设计。OMP 不包含在本项目中,必须单独安装。本项目独立开发,与 OMP、OpenAI 或 Anthropic 均无关联。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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