TL;DR: Harness Engineering 的核心是为 AI 打造一个“数字隔离区”。通过 MCP 协议 提供工具、利用 LangGraph 编排逻辑、并结合 Docker 沙盒 隔离风险,你可以构建一个敢于直接修改代码并运行测试的自主 Agent。本文将分享一套完整的 Harness 架构实现方案。

引言

Harness Engineering 的理论篇中,我们明确了“Agent = Model + Harness”的公式。现在,让我们进入工程实战:如何从零开始搭建这套约束系统?


2026 年 Harness 实战技术栈

要构建一个工业级的 Harness,你需要以下三项核心技术:

  1. MCP (Model Context Protocol):作为 Agent 的“外设接口”,用于连接文件、数据库和 API。
  2. LangGraph / PydanticAI:用于编排 Agent 的“思维链路”,支持循环、状态持久化和条件分支。
  3. Docker / WASM 沙盒:作为 Agent 的“物理隔离”,确保代码运行不会污染宿主机。

实战步骤:构建一个“自愈式代码 Agent”

我们将搭建一个能够自动修复代码 Lint 错误的 Agent。

第一步:定义节点与状态 (LangGraph)

首先,我们需要在 Harness 层定义 Agent 的工作流逻辑:

python
# 使用 LangGraph 定义状态机
from langgraph.graph import StateGraph, END

def generate_code(state):
    # 调用大模型生成代码
    return {"code": ai_output}

def run_linter(state):
    # Harness 在沙盒中运行 npm run lint
    result = sandbox.run("npm run lint")
    return {"errors": result.stderr if result.returncode != 0 else None}

def fix_errors(state):
    # 将错误信息反馈给模型进行修复
    return {"code": ai_fixed_output}

# 构建图:generate -> lint -> (if error) fix -> lint
workflow = StateGraph(AgentState)
workflow.add_node("generate", generate_code)
workflow.add_node("lint", run_linter)
workflow.add_node("fix", fix_errors)

workflow.add_conditional_edges("lint", lambda s: "fix" if s["errors"] else END)

第二步:配置 MCP 工具集

通过 MCP,我们为 Agent 提供了“读写文件”的能力,但 Harness 会对其进行严格审计:

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/safe/dir"]
    }
  }
}

第三步:设计人机协作 (Human-in-the-Loop)

在 Harness 中加入一个审批节点。当 Agent 想要执行 git push 时,必须触发:

python
def human_approval(state):
    print("Agent 申请提交代码,请确认 (y/n):")
    if input() == "y":
        return {"approved": True}
    return {"approved": False}

Harness 优化的三大秘诀

1. 差异化模型策略 (Model Tiering)

不要用最贵的模型做所有的事。

  • 任务执行:用 Claude 3.7 (最强大)。
  • 输出校验:用 GPT-4o-mini (最快、最省钱)。
  • 简单的 Lint 检查:直接用正则表达式或原生工具,不调模型。

2. 上下文清理 (Context Pruning)

在“生成-报错-修复”的循环中,上下文会迅速堆积。Harness 应该只保留最新的报错信息和当前的尝试路径,剔除过时的错误日志,防止模型产生混乱。

3. 环境快照 (Environment Snapshot)

在 Agent 开始大规模修改前,Harness 必须自动创建一个 Git 分支或目录快照。一旦 Agent 跑偏,可以一键回滚。


典型架构图

graph TD User["用户需求"] --> Harness["Harness 控制器"] Harness --> LLM["LLM 推理 (Brain)"] LLM --> Tools["MCP 工具集 (Hands)"] Tools --> Sandbox["Docker 沙盒 (Safety)"] Sandbox --> Feedback["结果反馈 (Logs/Errors)"] Feedback --> Harness Harness -- "结果合格" --> User

总结

Harness Engineering 的实战核心在于不信任模型,但利用模型。通过 LangGraph 的流程控制、MCP 的能力扩展和沙盒的安全隔离,你不仅是在写 Prompt,而是在构建一个真正的“数字大脑外骨骼”。

下一步,你可以了解如何将多个这种受约束的 Agent 组合成一个 多 Agent 系统 (Multi-Agent System)


相关阅读: