自动化写代码与部署智能体:Hermes + MCP + OpenSpec + AI 编程 IDE 的可执行流程

把“写代码”变成可验收交付:用 Hermes 的 MCP 与 ACP(编辑器集成)把需求、Spec、编码、测试、部署、回滚与监控串成可复盘流水线,并给出成本、调试与长期运营方法。

AI 摘要

这篇文章适合快速了解什么

把“写代码”变成可验收交付:用 Hermes 的 MCP 与 ACP(编辑器集成)把需求、Spec、编码、测试、部署、回滚与监控串成可复盘流水线,并给出成本、调试与长期运营方法。

这是一篇偏使用指南方向的内容,适合想快速理解“自动化写代码与部署智能体:Hermes + MCP + OpenSpec + AI 编程 IDE 的可执行流程”核心脉络的读者。

文章先解释“TL;DR”,帮助你快速进入主题。

随后会展开“1. 你要的“自动化研发”到底是什么”,方便直接定位关键方法或判断标准。

核心看点

  • TL;DR
  • 1. 你要的“自动化研发”到底是什么
  • 2. Hermes 搭建(本机/容器/远端)
  • 2.1 最小可跑(官方 Quickstart)

如果你希望一个“主要由 AI 参与”的研发系统能长期跑起来,你需要的不是一个更长的 prompt,而是一套可控的工程闭环:

  • 输入(需求/Spec)可验证
  • 行动(工具调用/代码修改/部署)可审计
  • 结果(测试/监控/回归)可复盘
  • 失败(回滚/降级/修复)有流程

本文基于可验证事实写作:

  • Hermes 官方文档:MCP、工具参考、审批安全、ACP 编辑器集成、MCP serve 等。
  • 本仓库已有 Hermes Docker 部署与默认配置(ai/hermes/ 与 data/hermes/)。
  • OpenSpec 仅按“通用 Spec 流程”描述,具体实现差异以“待确认项”方式呈现,不给不可验证配置。

TL;DR

  • Hermes 原生支持 MCP:stdio 与 HTTP 两种 server 形态,支持 per-server 工具过滤与 /reload-mcp[1]。
  • Hermes 也可以“作为 MCP server 提供给其他 MCP 客户端”:hermes mcp serve,并给出 Claude Code 配置示例[1]。
  • Hermes 支持 ACP 编辑器集成:pip install -e '.[acp]' 后可 hermes acp,把工具活动、diff、审批提示在编辑器里可视化[2]。
  • 安全上,Hermes 提供危险命令审批(manual/smart/off)、allowlist、容器隔离与 MCP credential filtering 等多层防护[3]。

1. 你要的“自动化研发”到底是什么

把目标拆成 3 个层次,避免“一上来全自动”导致成本爆炸:

  1. 自动化写代码:能稳定修改代码、跑测试、生成 PR/变更说明(高价值、低风险)
  2. 自动化部署:能在受控环境部署到测试/灰度,支持回滚(中风险)
  3. 自动化线上运营:能自动做发布节奏、监控、告警、复盘与迭代(高价值、高风险)

本文给出“端到端闭环”,但会明确哪些步骤强烈建议保留人工审批点。

2. Hermes 搭建(本机/容器/远端)

2.1 最小可跑(官方 Quickstart)

Hermes Quickstart 的“最短可跑路径”是:hermes setup 或 hermes model 后跑一次正常 chat[4]。并且模型需要至少 64K context[4]。

2.2 适合长期跑的 Docker 方案(本仓库已给)

本仓库 ai/hermes/ 提供了 Hermes Agent、hermes-bridge(HTTP wrapper)与 Telegram 网关等服务编排,并把运行态落到 data/hermes/[5][6]。

你做“自动化写代码与部署”时,Docker 方案的关键价值是:

  • 工作区固定在 /workspace(宿主机 data/hermes/workspace),便于审计与回放[6]
  • hermes-bridge 可以把 POST /chat 转成 CLI 调用,便于你把 Hermes 接到外部系统(CI、Webhook、调度器)[5]

3. MCP 设计:把研发动作拆成可组合工具

Hermes MCP 文档给出了标准配置方式、两类 server、工具命名前缀、过滤与重载方式[1]。

3.1 先搭三个“研发最小 MCP”

A) Filesystem:把 repo 当作可控资源

stdio server 示例(filesystem)[1]:

mcp_servers:
  project_fs:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/my-project"]

对本仓库的 Docker 方案,你可以把路径固定为 /workspace(容器内),并把要改的 repo 放到宿主机 data/hermes/workspace 中。

B) GitHub:把 issue/PR 当任务系统

GitHub stdio server 示例(Quickstart)[4]:

mcp_servers:
  github:
    command: npx
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "***"

建议对 GitHub MCP 做白名单过滤(只暴露你要的工具)[1]:

    tools:
      include: [search_code, list_issues, create_issue, update_issue]
      prompts: false
      resources: false

C) 内部 HTTP MCP:把 CI/CD、监控、配置中心做成工具

Hermes 支持 HTTP MCP server(url/headers)[1]:

mcp_servers:
  company_api:
    url: "https://mcp.internal.example.com"
    headers:
      Authorization: "Bearer ***"

本仓库也提供了一个 internal_http 模板(默认 enabled: false)在 data/hermes/config.yaml。

3.2 研发 MCP 的“工具契约”最小要求

为了长期可维护,你的 MCP 工具最好满足:

  • 每个 tool 都是幂等/可重试(至少只读工具是)
  • 输入参数有 schema(避免“自然语言参数”)
  • 输出尽量结构化(不要大段文本)
  • 每个敏感动作(部署/回滚/删库)都要可以通过 tools.include 白名单隔离,或拆到独立 MCP server[1]

3.3 Hermes 侧的验证步骤(强制执行)

  1. 修改 ~/.hermes/config.yaml 或 Docker 方案的 data/hermes/config.yaml
  2. 启动 Hermes
  3. 在会话里执行:
/reload-mcp
  1. 用最小 prompt 验证:
列出 project_fs 的根目录,并告诉我哪几个目录可能是源码入口。

如果工具不出现,按 MCP 文档 Troubleshooting 段落检查:mcp 依赖、node/npx 版本、过滤规则是否把工具过滤没了[1]。

4. Hermes 作为“编辑器里的编码智能体”(ACP)

Hermes ACP 文档给出了:

  • 安装:pip install -e '.[acp]'
  • 启动:hermes acp / hermes-acp / python -m acp_adapter
  • VS Code/Zed/JetBrains 的配置片段
  • ACP 模式下的工具集范围(file/terminal/web/browser/skills/approvals 等)[2]

最小可跑:

pip install -e '.[acp]'
hermes acp

然后在编辑器里配置 ACP client 指向 Hermes 的 acp_registry/(路径见 ACP 文档)[2]。

5. OpenSpec:把需求变成“可验收的变更”

你可以把每次改动都当成一次交付:

  1. spec:Why / What Changes / Impact / Requirements(WHEN/THEN)
  2. tasks:按依赖拆分(每个 task 都要能验证)
  3. checklist:验收点(测试/构建/接口/监控/回滚)

待确认项(不编造):

  • 你使用的 OpenSpec 实现到底是哪一个(CLI/格式/集成方式差异可能很大)
  • 你希望 spec/tasks/checklist 落到哪(repo 内目录、issue、文档系统)

建议先用 repo 内 markdown 固化流程,再考虑升级到平台化系统。

6. 端到端流程(细粒度可执行步骤)

下面按“研发闭环”给出细粒度步骤。你可以直接把它做成 Hermes skills(例如 devops-autopilot)。

6.1 需求 → Spec(必须可验证)

  1. 收集需求输入:用户故事、约束、成功标准
  2. 写 spec:明确非目标(Non-goals)
  3. 把验收点写成 checklist(可打勾)
  4. 把工作拆成 tasks(按依赖顺序)

6.2 Spec → 工具可执行任务(Hermes + MCP)

  1. repo 读写:用 filesystem MCP 限定根目录(只允许 workspace 内 repo)[1]
  2. issue/PR:用 GitHub MCP 记录任务与验收(可追溯)[1][4]
  3. 内部系统:用 HTTP MCP 调 CI/CD、拉日志、查监控(只暴露必要动作)[1]
  4. 把“危险动作”拆成独立 MCP server,并设置 tools.include 白名单

6.3 编码(建议在 ACP 模式完成)

  1. 在编辑器里启动 Hermes ACP(能看到 diff、tool activity、审批提示)[2]
  2. 按 tasks 拆分逐个完成:每次只做一个小变更 → 跑一次最小测试
  3. 每个变更都写出“可验证结果”(测试通过、接口返回、页面正常)

6.4 测试(自动化门禁)

以本仓库为例(你可以替换成自己的项目命令):

  • 后端:mvn test
  • 前端:npm run build

原则:

  • 每次修改后至少跑最小集测试
  • 把“不可重现的线上问题”转成回归测试

6.5 部署(建议保留审批点)

部署是高风险动作,建议:

  • 用 Hermes 的危险命令审批(默认 manual)[3]
  • 或在 Docker/云沙箱后端运行(容器作为边界,危险命令检查会被跳过,但你要自己确认边界)[3]

部署 MCP 工具建议最小化:

  • deploy_preview:部署到预览环境
  • deploy_prod:部署到生产(默认不暴露给模型,或必须人工批准)
  • rollback:回滚到上一版本
  • health_check:验证服务状态

6.6 监控与回归(必须自动化)

  1. 监控指标:错误率、延迟、关键业务指标
  2. 告警:推送到你的控制面(Telegram/Slack 等网关,Hermes 支持 messaging gateway)[4][3]
  3. 回归:每次部署后跑一套 smoke test(MCP 工具调用或脚本)
  4. 复盘:把故障原因写入 issue 与 checklist(下次部署前强制检查)

7. Hermes 也可以作为 MCP server(给其他 AI IDE 用)

Hermes MCP 文档明确:Hermes 不仅能连接 MCP servers,也能“作为 MCP server”让其他 MCP 客户端使用它的消息能力[1]:

hermes mcp serve

并给出了 Claude Code 的 MCP client 配置示例(~/.claude/claude_desktop_config.json)[1]。

这条路径适合:

  • 你在 IDE 里写代码,但想复用 Hermes 的“跨平台消息网关”能力
  • 你想让 IDE 的 agent 通过 Hermes 向 Telegram/Discord/Slack 发消息与读消息(用于自运营/告警/复盘)

注意:文档也明确了当前限制(例如 stdio transport only、发送能力依赖 gateway 运行等)[1]。

8. 成本与调试(给可计算模板,不报虚构价格)

8.1 模型成本(可计算)

沿用通用公式(按日/按任务累加):

  • C_model = Σ (Tin * Pin + Tout * Pout) / 1e6

建议用你自己的“研发任务集”取样:

  • 需求分析(短)
  • 代码修改(中)
  • 多轮调试(长)
  • 部署与回滚(短但高风险)

8.2 工程成本(MCP/CI/CD/观测)

把成本拆成“可管理组件”:

  • MCP server 开发与维护(schema、鉴权、限流、日志)
  • CI/CD 资源(runner、构建缓存、镜像仓库)
  • 观测与存储(日志、trace、artifact)

8.3 调试成本(把问题分类)

Hermes 的调试入口在官方文档里很明确:

  • hermes doctor、hermes model、hermes sessions list、/reload-mcp[4][1]
  • 安全与审批的配置项(approvals.mode 等)[3]

把你的调试成本按层归因:

  1. 模型层:不稳定、跑偏、输出质量不够
  2. 工具层:MCP 连接失败、工具过滤误伤、timeout 不合理
  3. 环境层:Docker/SSH 权限、依赖缺失、路径错误
  4. 流程层:缺少门禁、缺少回归、缺少回滚

9. 模型选择“最优解”(矩阵 + 必须实测)

Hermes 只给了硬门槛:至少 64K context[4]。其余建议用矩阵评估:

  • 可靠性:多轮工具调用成功率
  • 代码理解:对大型 repo 的定位能力
  • 成本:单价 + token 消耗(由任务集决定)
  • 速度:编辑器交互/网关响应
  • 安全:是否支持更可控的 key 管理与审计(通常取决于 provider)

最小可复现实测(你自己跑一遍就能得出答案):

  1. 固定同一份 repo 与同一组 tasks
  2. 用 2~3 个候选模型跑通“编码→测试→修复→再测试”
  3. 记录:成功率、平均回合数、平均耗时、token 消耗与返工次数

待确认项清单(本文不编造)

  • 你具体使用的 OpenSpec 实现与命令(本文只给通用流程)
  • 你的部署目标环境与权限边界(容器/ssh/云沙箱哪种)
  • 你要把哪些内部系统暴露为 HTTP MCP server(CI、监控、配置、发布平台等)

参考与延伸阅读

站点信息

关于这篇内容的来源与维护方式

这篇文章由 ToolsHub 公开发布,站点持续维护 AI 工具、在线文档、技术教程和效率实践内容。

我们优先保证公开页面可直接阅读、可分享、可被搜索引擎与 AI 正确理解。