菜单

Administrator
发布于 2026-05-24 / 10 阅读
0
0

Agent Harness 是什么?—— 从概念到 OpenCode 实践

Agent Harness 是什么?

在 AI 编程工具飞速发展的今天,一个概念正在成为 Agent 工程领域最核心的共识——Agent = Model + Harness

模型提供智能,Harness 让智能变得有用。如果你不是模型本身,那你就是 Harness 的一部分。

从一副"挽具"讲起

Harness 这个词的英文原意是"马具、挽具",就是套在马身上、让马的力量转化为拉车动力的那套装备。类比非常精准:模型是马,Harness 是挽具,Agent 是马+挽具+车的整体系统。

马本身有力量,但如果没有缰绳、鞍具、车厢来转化这股力量,它什么也拉不动。大模型也是一样——一个裸模型(无论 GPT-4 还是 Claude Opus)放在服务器上,它不能读写文件,不能执行命令,不能联网搜索,也不能记住昨天和你说过什么。

更技术化地说,Harness 是模型之外的一切工程基础设施。它决定了一个 Agent 能不能真正地"干活"。

为什么需要 Harness?

一个裸大模型有四大硬伤:

第一,没有文件系统 — 看不见项目代码,读不了文档。Agent File I/O(读写文件、编辑代码)是 Harness 最基本的能力。

第二,不能执行代码 — 只能"说"不能"做"。Bash 沙箱赋予了 Agent 编写代码并自主运行的能力,这是从聊天机器人到编程助手的关键一跃。

第三,知识过时 — 训练数据截止于某个时间点。Web Search + MCP 突破了知识的"时间牢笼",让 Agent 能实时获取最新信息。

第四,没有记忆 — 每次对话从零开始。AGENTS.md / MEMORY.md 提供了持久记忆机制,让 Agent 能在会话间持续学习。

简单来说:裸模型只能告诉你它"想怎么做",配有 Harness 的 Agent 直接动手做给你看。

Harness 的六大核心组件

1. 文件系统(Agent 的感官)

Agent 有了文件系统,就能读取项目代码、写入修改、查看日志。文件系统也是天然的协作面——人和 Agent 可以通过共享文件来协调工作。Agent 可以增量地读取和写入文件,而不是将所有内容都塞在上下文里。

2. Bash + 沙箱(Agent 的四肢)

这是让 Agent 从"想"到"做"的关键一步。Agent 可以自主编写和执行代码、安装依赖、运行测试,而不是被限制在一组固定的预配置工具中。沙箱提供了安全隔离的执行环境,可以允许命令列表、强制执行网络隔离。

3. 记忆系统(Agent 的大脑皮层)

通过 AGENTS.mdMEMORY.md 等标准文件,Agent 在启动时自动注入项目知识。Agent 可以持续更新这些文件,实现跨会话的持续学习——这是一套"不改权重也能给模型加知识"的优雅方案。

4. 联网搜索 + MCP(Agent 的五感延伸)

突破知识的"时间牢笼"。Agent 可以实时搜索互联网、调用第三方 API、接入数据库、通过 MCP 协议使用外部工具,获取训练数据截止日期之后的信息。

5. 上下文工程(Agent 的注意力管理)

对抗 AI 系统的"熵增"。包括自动压缩历史记录、智能摘要、只注入必要知识等策略。优秀的 Harness 会让 AGENTS.md 保持在 50 行以内作为"地图",指向项目中更深层的事实来源。

6. 编排 + Hooks(Agent 的指挥系统)

让 Agent 从单兵作战变成集团军协同。子 Agent 生成、任务交接、模型路由、质量检查——这些都是编排层的职责。Hooks 则提供了安全底线:路径白名单、命令黑名单、交互式审批。这是 Harness 中最容易被低估但最关键的组件。System Prompt 不是第七个组件,但它是贯穿所有六个组件的神经系统。

Harness 在 OpenCode 生态中的实践:harness-opencode

在 OpenCode 生态中,有一个成熟的开源 Harness 实现——由 @iceglober 开发的 harness-opencode 项目(MIT 协议)。它提供了 14 个 Agent、7 个斜杠命令、5 个自定义工具、5 个 MCP 集成、5 个技能包和 4 个子插件,一个包搞定所有

核心理念:五阶段 PRIME 工作流

Harness-opencode 的默认 Agent prime 运行一个完整的五阶段端到端工作流:

  1. Phase 1:研究 — 理解需求、探索代码库
  2. Phase 2:规划 — 生成经过对抗性审查的计划(含缺口分析)
  3. Phase 3:构建 — 执行计划(由 mid-tier 模型处理以节省成本)
  4. Phase 4:QA — 全面审查和测试
  5. Phase 5:验证 — 检查完成标准,生成最终输出

14 个专业 Agent 分工

层级 Agent 能力等级 职责
核心 prime deep 五阶段端到端工作流,默认 Agent
规划 plan deep 交互式规划 + 缺口分析 + 对抗性审查
plan-reviewer deep 专攻计划审查
gap-analyzer deep 识别计划中的缺口
构建 build mid 计划执行者
审查 qa-reviewer mid 快速对抗性代码审查
qa-thorough deep 全量对抗性审查
搜索 code-searcher fast 代码库快速搜索
lib-reader mid 库和依赖分析
文档 docs-maintainer mid 文档更新维护
agents-md-writer mid AGENTS.md 生成
架构 architecture-advisor deep 架构设计指导
无人值守 pilot-planner deep 将工作分解为 DAG 任务
pilot-builder mid 无人值守任务执行器

7 个斜杠命令

命令 功能
/fresh <ticket> 清空工作树 → 创建分支 → 启动五阶段工作流
/autopilot <ticket> 全自动 PRIME,直到验收标准通过才停止
/ship <plan> Squash 提交、推送、自动开 PR
/review <ref> 只读对抗性审查(PR 号、SHA、分支或文件)
/research <query> 并行代码库搜索,返回精确的文件:行号引用
/init-deep 生成层级化的 AGENTS.md 文件
/costs 查看当前会话的 LLM 累计花费

如何在 OpenCode 中安装 Harness

方式一:全局 CLI 安装(推荐)

# 一步安装
bun add -g @glrs-dev/harness-opencode
glrs-oc install-plugin
opencode

# 进入 OpenCode 后,/fresh /autopilot /ship 等命令自动可用

方式二:仅插件安装(适合临时使用)

bunx @glrs-dev/harness-opencode install
opencode

无需全局安装,所有插件功能自动加载。

配置模型覆盖

可以在 opencode.json 中配置不同层级使用的模型:

{
  "harness": {
    "models": {
      "deep": ["anthropic/claude-opus-4"],
      "mid": ["anthropic/claude-sonnet-4"],
      "fast": ["anthropic/claude-haiku-4"]
    }
  }
}

配置优先级:per-agent 覆盖 > tier 默认 > 插件内置默认。

无人值守 Pilot 模式

对于大型任务,Harness 支持将工作分解为 DAG(有向无环图)任务计划,完全无人值守运行。每个任务运行在隔离的 Git Worktree 中,自带验证命令。

# 规划阶段
glrs-oc pilot plan "实现用户认证模块"

# 验证计划(schema + DAG + glob 完整性)
glrs-oc pilot validate

# 无人值守执行
glrs-oc pilot build

# 检查任务状态
glrs-oc pilot status

# 恢复中断的运行
glrs-oc pilot resume

# 查看任务开销
glrs-oc pilot cost --json

Pilot 模式的背后是每个任务的严格沙盒化和失败隔离——一个任务失败不会影响其他任务的执行状态,故障恢复非常清晰。

使用 Harness 前后的对比

维度 裸 OpenCode 配有 Harness
工作流 直接聊天改代码 研究→规划→构建→QA→验证 五阶段
知识连贯性 每次对话从零开始 AGENTS.md 注入 + 跨会话持久记忆
代码质量 改完就看,缺乏把关 对抗性审查 + QA 门禁 + 自动化验证
复杂任务 需要手动分段、人工跟踪 DAG 自动编排 + 无人值守执行
模型成本 无感使用,难以控制 分层分级:deep/mid/fast 按需分配
团队协作 个人工具 标准化的 AGENTS.md + 共享计划文件
可观测性 不太清楚 LLM 花了多少钱 /costs + pilot cost --json 全程追踪

更直观的场景对比

场景:在一个已有的 Spring Boot 项目中添加用户认证模块

没有 Harness:

  1. 你在 OpenCode 中说"帮我加个 JWT 认证"
  2. Agent 直接开始修改代码(可能改错层、破坏现有架构)
  3. 你可能需要在过程中多次纠正
  4. 改完后手动 review、手动测试
  5. 完全依赖你自己的架构判断力

有 Harness 之后:

  1. 你输入 /fresh "为项目添加 JWT 用户认证"
  2. Agent 先研究整个项目的目录结构和现有认证逻辑
  3. 然后生成详细计划,经过 gap-analyzer 和 plan-reviewer 的对抗性审查
  4. 通过后才交给 build Agent 执行(使用便宜的中端模型)
  5. 执行完后 qa-reviewer 做全量审查
  6. 最后验证是否满足验收标准
  7. 你也可以直接说 /autopilot "...",然后去泡杯咖啡

关于 Agent Harness 的常见误区

误区一:Harness = Prompt 工程

不对。Prompt 只是 Harness 的神经系统的一部分,完整的 Harness 包括文件系统、工具执行、记忆、沙箱、编排等整套工程基础设施。

误区二:有了好模型就不需要 Harness

恰恰相反——模型越好,Harness 越重要。强大的模型在优秀 Harness 的引导下能释放数倍的价值,但在糟糕的 Harness 中同样会产生灾难性的后果。

误区三:Harness 是锦上添花

对于生产级 Agent 来说,Harness 是必需品。一个没有记忆、不能执行代码、没有安全边界的 Agent,本质上就是个高级聊天机器人。

误区四:小项目不需要 Harness

即使是个人项目,Harness 的收益也是立竿见影的——自动的代码审查、成本追踪、跨会话记忆,这些功能在第一天就能节省时间。

总结

Agent Harness 不是一个锦上添花的概念,它是 Agent 从原型走向生产的必经之路。

回顾这个领域的发展,能清晰地看到一个趋势:

  • 2023年:大家比的是哪个模型的参数更大
  • 2024年:大家比的是哪个模型的推理能力更强
  • 2025年:模型能力的差距在缩小,竞争转向了工程层
  • 2026年:Agent = Model + Harness 成为行业共识,Harness Engineering 正式成为一门工程学科

模型不再是差异化因素,围绕模型构建的 Harness 系统才是。

从 OpenAI 的 Codex、Anthropic 的 Claude Code,到开源的 OpenCode,所有主流的 AI 编程工具都在朝这个方向演进。

如果你正在使用 OpenCode,安装 harness-opencode 可能是今天能做的最有价值的一件事——它让一个会聊天的 AI 变成了真正能帮你干活的编程搭档。


评论