重构 AI 编程流:基于 Hermes 记忆中枢与 OpenCode 执行终端的 Harness 工程化实践
- [重构 AI 编程流:基于 Hermes 记忆中枢与 OpenCode 执行终端的 Harness 工程化实践](#重构 AI 编程流:基于 Hermes 记忆中枢与 OpenCode 执行终端的 Harness 工程化实践)
重构 AI 编程流:基于 Hermes 记忆中枢与 OpenCode 执行终端的 Harness 工程化实践
安装方式请看之前的文章
介绍
在 AI 辅助编程(AI-Driven Development)日益普及的今天,我们似乎陷入了一个怪圈:AI 写代码很快,但生成的代码往往缺乏架构感,且难以维护。我们像是在"堆砌代码",而不是在"构建系统"。
为了解决这个问题,我探索出了一套全新的工作流:利用 Hermes 作为"记忆与规划中枢",指挥 OpenCode 作为"执行终端",并引入 Harness Engineering 方法论进行约束。
本文将详细拆解这套架构,展示如何让 AI 像资深架构师一样思考,像熟练工一样编码。
为什么我们需要"双 AI"架构?
目前的编程助手大多是无状态的(Stateless),它们记不住你上周的架构决策,也不懂你项目的分层规范。
- Hermes(大脑):它拥有长期记忆、技能库和规划能力。它负责理解复杂的业务需求,拆解任务,并维护项目的"宪法"(架构规范)。
- OpenCode(双手):它拥有强大的代码生成和文件操作能力,但缺乏长期规划。它负责在 Hermes 的指挥下,精准地落地每一行代码。
Harness Engineering 则是连接两者的"法律"。它规定了代码必须分层(Layer 0-4),必须经过规划才能执行。
核心架构:Harness 方法论的移植
为了让 OpenCode 能够听懂 Hermes 的指挥,我将原本为 Qwen Code 设计的 Harness 配置进行了"通用化适配"。
1. 分层架构(Layered Architecture)
这是 Harness 的核心。我们强制规定项目结构,防止 AI 写出"面条代码":
- Layer 0 (Types):纯数据对象,无依赖。
- Layer 1-2 (Utils/Config):工具类与配置。
- Layer 3 (Domain):核心业务逻辑。
- Layer 4 (Interfaces):控制器与接口。
原则:高层可以依赖低层,低层严禁感知高层。Hermes 会在生成代码前,先检查这个依赖关系。
2. 记忆与状态的"文件化"
由于 OpenCode 无法直接调用 Hermes 的内部工具,我们将"记忆"实体化为 Markdown 文件:
harness/tasks.md:任务清单(Hermes 写,OpenCode 读)。docs/ARCHITECTURE.md:架构规范(Hermes 写,OpenCode 守)。harness/trace/:执行日志(OpenCode 写,Hermes 读)。
实战演练:从零构建一个 Java 后台
当我们想要开发一个"SuperBoot 后台管理系统"时,流程不再是简单的"帮我写个登录接口",而是遵循严谨的工程化步骤:
第一阶段:规划(Hermes 主导)
我告诉 Hermes:"我要一个支持多租户的 Java 后台。"
Hermes 启动 Planner 智能体,分析需求,生成 harness/tasks.md。它会定义:
- 初始化 Maven 结构。
- 设计
sys_user表(包含tenant_id)。 - 实现 Layer 3 的登录逻辑。
第二阶段:指挥(Hermes -> OpenCode)
Hermes 读取任务列表,向 OpenCode 发送指令。注意,这里的指令带有强烈的角色属性:
"你现在是 java-developer 。请阅读
harness/tasks.md中的任务 1。请在src/main/java下创建符合 Layer 0 规范的实体类。"
第三阶段:执行与验证(OpenCode -> Hermes)
OpenCode 生成代码,并写入文件。
Hermes 随后读取文件,运行"虚拟验证管道":
- 检查:
User.java是否导入了Controller类?(违规!Layer 0 不能依赖 Layer 4)。 - 修正:Hermes 指示 OpenCode 重构代码,直到合规。
配置的关键:适配 OpenCode
为了让这套逻辑跑通,关键在于"翻译"配置。我将 Qwen Code 特有的工具调用,转化为 OpenCode 能理解的自然语言指令。
例如,将 save_memory 转化为:
"请将本次设计的数据库字段规范,追加写入到
docs/DATABASE_SCHEMA.md文件中。"
将 agent 调用转化为:
"启动 Architect 角色,审查当前目录下的
pom.xml依赖是否符合 Spring Boot 3 标准。"
总结与展望
通过引入 Harness Engineering,我们不仅仅是获得了一个代码生成器,而是获得了一位**"不知疲倦的架构师"**。
- Hermes 保证了项目的连贯性和规范性。
- OpenCode 保证了代码的落地效率。
- Harness 保证了产出的质量。
使用





