开发者演示了如何通过MCP协议将OpenAI Codex接入本地Astron工作流,设置严格边界后成功在58秒内修复了一个状态统计bug。
通过 MCP 将开源编程 Agent 接入工作流——并附实战案例
通过 MCP 将 openai/codex 接入本地工作流,设定严格边界(不修改测试、不提交)。用独立的测试运行器和 git diff 验证其补丁,再交由人工审核。实战效果:0/2 → 2/2,耗时 58 秒。
通过 MCP 将 openai/codex 接入本地工作流,设定严格边界(不修改测试、不提交)。
用独立的测试运行器和 git diff 验证其补丁,再交由人工审核。
实战效果:0/2 → 2/2,耗时 58 秒。
所有人都在讨论开源编程 Agent。但它真的能跑在真实工作流里、服从硬边界、修改正确的文件、并留下可供另一个进程验证的证据吗?一位开发者用 58 秒证明了答案:可以。
本次实验配置:openai/codex 0.149.0 通过 MCP 连接到本地 Astron 工作流。不是桌面应用,不是 UI 模拟,而是一个真实的本地集成,带有可复现的证据。
Bug 场景:一个虚拟的 Node.js 仓库,用于汇总工作流节点状态。其实现把所有非 success 状态都当作失败处理:
const failed = nodes.filter((node) => node.status !== "succeeded").length;
这导致被跳过的节点被错误地计为失败。修复方案是一行代码的改动:
const failed = nodes.filter((node) => node.status === "failed").length;
补丁前:0/2 测试通过。补丁后:2/2。仅修改了一个源文件。测试文件未动。没有提交,没有推送。
提示词经过刻意收紧——这才是关键所在。指令如下:
仅编辑 /workspace/src/run-summary.js
不执行 shell 命令
使用 apply_patch 做最小改动
不提交、不推送、不发布
返回修改后的文件及 diff 摘要
由外部验证器运行测试
一个模糊的"修测试"提示词可能奖励错误行为,包括修改测试来迁就坏代码。这套工作流明确指定了允许的写入范围和验证责任方。
MCP 的配置是实操性的,不是装饰性的:sandbox: workspace-write、approval-policy: never,以及禁止提交、推送、发布和访问密钥的开发者指令。
安装开源 Codex 并启动其 MCP server。
用 mcp-proxy 将 stdio 桥接到本地 SSE。
导入一个工作流(如下方链接的 Astron 工作流),将 cwd 替换为低风险的测试仓库。
从一个确定会失败的测试开始,禁止修改测试和发布仓库。
用独立的测试命令和 git diff 验证返回的补丁。
由人工决定是否将经过验证的改动提交。

这不是一个即插即用的方案。第一次尝试失败了,原因是 bubblewrap 无法创建用户命名空间。期间需要三个兼容性修复:
原生 Windows codex mcp-server 可以创建会话,但其 shell 辅助工具失败——因此 Codex 在一个专用的 Linux 容器中运行。
本地 Astron 部署需要一个显式的 MCP_BASE_URL。
容器 seccomp 配置需要 bubblewrap 所需的命名空间相关系统调用。
修复后,三个工作流节点全部成功完成。
编程 Agent 的下一个有意义的里程碑,不是给出更惊艳的对话回答,而是可重复、可检查、可独立验证的受控执行。这套模式——严格提示词、受限沙箱、外部验证器、人工审核——正是 Claude Code 用户在任何自主或半自主任务中应该采纳的。
[2025 年 8 月 22 日更新 via devto_mcp]
MCP 生态本身也在受到审视:一位开发者为 MCP server 构建红队工具时,在官方 TypeScript SDK 中发现了一个已确认的 bug(issue #1994)。该回归问题引入于 1.25.0 版本,导致无状态的 StreamableHTTPServerTransport 在第一次请求后的任何请求上都以纯 500 失败,绕过了 SDK 的错误处理。修复方案是每次请求构造一个新的 transport。该工具 mcp-redteam 运行六个基于真实事件建模的对抗场景,包括 RufRoot(CVE-2026-59726,CVSS 10.0)和未授权工具暴露。[per dev.to]
Originally published on gentic.news