我想带你动手走一遍最简单的 Harness Engineering

写在前面

想必大家最近被 Harness Engineering 刷屏了。

从 OpenAI 的原文到各路大佬的深度解读,从"马具比喻"到"四大支柱",概念已经被翻来覆去讲了无数遍。

但我猜你的状态可能是这样的:

"道理我都懂,但我手头没有适合落地的项目啊......" "我又不是做前端/后端的,这跟我有什么关系?" "看完了十篇文章,还是不知道第一步该干什么。"

如果你没有适合落地的项目,你会在焦虑中茫然。

所以今天,我不想输出焦虑,也不想在复杂的项目中教你各种复杂的理念。我只想用最简单的最佳实践带你跑一遍------一个不需要写业务代码、不需要复杂项目、任何人都能上手的场景:

让 AI Agent 自动帮你追踪前沿 AI 技术动态,生成每日技术简报。

你只需要准备两样东西:一个 AGENTS.md,一个 verify.py。然后在 CodeBuddy 里敲一段话,坐下来看 Agent 自己跑起来。

这可能是你的 Harness Engineering 初体验。


30 秒搞懂 Harness Engineering

如果你还没看过任何文章,我用一句话说清楚:

Harness Engineering = 给 AI Agent 搭一条有护栏的高速公路,让它既跑得快、又不会翻车。

"Harness"本意是马具------缰绳、鞍具那一套东西。AI Agent 就像一匹动力十足但不太守规矩的马,Harness 就是那套让它既能跑得快、又不会跑偏的装备。

它由四样东西组成:

组件 作用 类比
AGENTS.md 告诉 Agent "你是谁、该做什么、不该做什么" 马的行进路线图
工具 给 Agent 可以调用的搜索、读取等能力 马蹄铁和马鞍
验证脚本 自动检查 Agent 的输出是否合格 赛道上的裁判
闭环 不合格就自动修,修完再验,直到通过 训练场的围栏

核心理念只有一条:搭脚手架 > 调 Prompt

  • ❌ 在 Prompt 里写"请确保输出格式正确" → Agent 可能忽略
  • ✅ 写一个 verify.py 自动检查格式 → 格式不对就报错,Agent 被迫修正
  • 好了,概念到此为止。下面我们直接动手。

场景:让 AI 自动帮你追踪前沿技术

为什么选这个场景?

  1. 不需要任何业务代码------你不需要有一个 Flask 项目、React 项目或任何在跑的服务
  2. 任何人都能用------只要你关注 AI 技术动态,这个场景就对你有价值
  3. Harness 四要素全部体现------架构护栏(限定信息源)、工具反馈(搜索结果)、文档记录(AGENTS.md)、验证闭环(verify.py
  4. 有真实产出------跑完你会得到一份结构化的技术日报,可以直接发到群里,学习中的正反馈比什么都重要

你需要准备什么?

  • VSCode + CodeBuddy 插件(已安装就行)
  • 一个空文件夹
  • 10 分钟时间

Step 1:创建 AGENTS.md(3 分钟)

在你的空文件夹里创建一个 AGENTS.md 文件。这是 Agent 的"工作手册",CodeBuddy 每次启动会话时会自动读取它。

markdown 复制代码
# AGENTS.md - 前沿 AI 技术研究 Agent 工作手册

## 🎯 任务目标
自动追踪前沿 AI 技术动态,生成结构化的每日技术简报。

## 📡 信息源
通过网络搜索以下渠道的最新内容:
1. 技术博客(OpenAI、Anthropic、Google DeepMind 等官方博客)
2. 技术社区(知乎、CSDN、掘金等平台的 AI 热门文章)
3. GitHub Trending(AI 相关的热门仓库)
4. 行业媒体(机器之心、量子位等)

## 🔍 关注领域(必须匹配至少一个)
- AI Agent / Agentic AI
- Harness Engineering / Context Engineering
- MCP (Model Context Protocol)
- LLM 推理与优化
- AI Coding / Vibe Coding
- 多模态大模型

## 📋 输出格式要求
生成 JSON 文件,结构如下:
- date: 日期(YYYY-MM-DD)
- topic_focus: 本期关注主题
- items: 条目数组,每条包含:
  - title: 标题(中文)
  - source: 来源(Blog/社区/GitHub/媒体)
  - url: 原文链接(必须是真实可访问的 URL)
  - date: 发布日期(YYYY-MM-DD)
  - category: 所属领域(从上述关注领域中选择)
  - summary: 一句话摘要(不超过100字)
  - insight: 技术洞察(不超过150字)
  - relevance: 相关度评分(1-5,5最高)

## ⚠️ 已知陷阱
- 不要收录纯营销/广告内容
- 相关度评分低于 3 的不要收录
- 同一篇文章不要重复收录(用 URL 去重)
- 输出必须是合法的 JSON 格式
- 日期不能是未来日期
- 每条必须有真实的 URL,不要编造链接

💡 这个文件是活的。 每次 Agent 犯了新错(比如编造了一个不存在的 URL),你就在"已知陷阱"里加一条。正如 Terraform 创始人 Mitchell Hashimoto 所说:AGENTS.md 里的每一行,都对应一个过去的 Agent 失败。


Step 2:编写验证脚本 verify.py(5 分钟)

这是 Harness 的灵魂------自动质检员。Agent 生成的内容必须过这一关。

创建 verify.py

python 复制代码
#!/usr/bin/env python3
"""verify.py - 技术日报的 Harness 验证脚本"""

import json
import sys
from datetime import datetime, timedelta
from pathlib import Path


def verify_report(file_path: str) -> tuple:
    """验证研究日报是否符合 AGENTS.md 中定义的规范"""
    errors = []
    warnings = []

    # ===== 1. 文件存在性 =====
    path = Path(file_path)
    if not path.exists():
        return False, [f"❌ 文件不存在: {file_path}"], []

    # ===== 2. JSON 格式 =====
    try:
        with open(path, "r", encoding="utf-8") as f:
            data = json.load(f)
    except json.JSONDecodeError as e:
        return False, [f"❌ JSON 格式错误: {e}"], []

    # ===== 3. 顶层结构 =====
    for key in ["date", "topic_focus", "items"]:
        if key not in data:
            errors.append(f"❌ 缺少顶层字段: {key}")
    if errors:
        return False, errors, warnings

    # ===== 4. 日期合法性 =====
    try:
        report_date = datetime.strptime(data["date"], "%Y-%m-%d")
        if report_date > datetime.now() + timedelta(days=1):
            errors.append(f"❌ 日期不能是未来日期: {data['date']}")
    except ValueError:
        errors.append(f"❌ 日期格式错误: {data['date']}")

    # ===== 5. 条目逐一检查 =====
    items = data.get("items", [])
    if len(items) == 0:
        errors.append("❌ 条目列表为空,至少需要 1 条技术动态")

    required_fields = [
        "title", "source", "url", "date",
        "category", "summary", "insight", "relevance"
    ]
    valid_categories = [
        "AI Agent", "Harness Engineering", "Context Engineering",
        "MCP", "LLM推理与优化", "多模态大模型",
        "AI Coding", "Vibe Coding", "其他"
    ]

    seen_urls = set()
    for i, item in enumerate(items):
        tag = f"条目[{i}]"

        # 必填字段
        for field in required_fields:
            if field not in item or not item[field]:
                errors.append(f"❌ {tag} 缺少或为空: {field}")

        # 分类合法性
        cat = item.get("category", "")
        if cat and cat not in valid_categories:
            warnings.append(f"⚠️ {tag} 分类不在预定义列表: {cat}")

        # 相关度评分
        rel = item.get("relevance", 0)
        if not isinstance(rel, (int, float)) or rel < 1 or rel > 5:
            errors.append(f"❌ {tag} 相关度必须在 1-5 之间: {rel}")
        elif rel < 3:
            errors.append(
                f"❌ {tag} 相关度 < 3,不应收录: {item.get('title', '?')}"
            )

        # 摘要长度
        summary = item.get("summary", "")
        if len(summary) > 100:
            warnings.append(f"⚠️ {tag} 摘要超100字({len(summary)}字)")

        insight = item.get("insight", "")
        if len(insight) > 150:
            warnings.append(f"⚠️ {tag} 洞察超150字({len(insight)}字)")

        # URL 去重
        url = item.get("url", "")
        if url in seen_urls:
            errors.append(f"❌ {tag} URL 重复: {url}")
        seen_urls.add(url)

    has_errors = len(errors) > 0
    return not has_errors, errors, warnings


def main():
    if len(sys.argv) < 2:
        print("用法: python verify.py <report.json>")
        sys.exit(1)

    file_path = sys.argv[1]
    print(f"\n{'='*50}")
    print(f"🔍 开始验证: {file_path}")
    print(f"{'='*50}\n")

    passed, errors, warnings = verify_report(file_path)

    for msg in errors:
        print(msg)
    for msg in warnings:
        print(msg)

    print(f"\n{'='*50}")
    if passed:
        print(f"🎉 验证通过!共 {len(warnings)} 个警告。")
        print("日报格式正确,可以发布。")
        sys.exit(0)
    else:
        print(f"💥 {len(errors)} 个错误, {len(warnings)} 个警告")
        print("请根据上述错误信息修复后重新验证。")
        sys.exit(1)


if __name__ == "__main__":
    main()

这个脚本做了什么?

检查项 说明
JSON 格式 不是合法 JSON 直接报错
顶层结构 必须有 date、topic_focus、items
日期合法性 不能是未来日期
必填字段 每条 8 个字段缺一不可
分类合法性 必须在预定义列表中
相关度评分 1-5 分,低于 3 分不收录
摘要长度 超过限制给警告
URL 去重 同一篇文章不能出现两次

💡 关键理解 :这个脚本就是 Harness 的"缰绳"。Agent 不需要"理解"什么是好的日报------它只需要让 verify.py 返回 exit code 0。用技术约束替代文字约束,这就是 Harness Engineering 的精髓。


Step 3:在 CodeBuddy 中发起 Harness 循环(2 分钟)

现在,打开 VSCode,确保你的文件夹里有这两个文件:

lua 复制代码
my-ai-research/
├── AGENTS.md
├── verify.py
└── output/          ← 创建一个空的 output 目录

在 CodeBuddy 对话框中输入以下 Prompt:

markdown 复制代码
请帮我完成今日的前沿 AI 技术研究日报:

1. 先阅读 AGENTS.md,了解研究方向和输出规范
2. 搜索最近 3 天内关于 AI Agent、Harness Engineering、MCP、
   AI Coding 等领域的最新技术动态
3. 筛选出相关度 >= 3 的内容,按 AGENTS.md 定义的 JSON 格式
   生成日报文件 output/report_2026-03-26.json
4. 运行 python verify.py output/report_2026-03-26.json 验证
5. 如果验证不通过,根据错误信息修复 JSON,再次验证
6. 重复 4-5 直到验证全部通过
7. 最后将 JSON 转为可读的 Markdown 文件 output/report_2026-03-26.md

⚠️ 不要修改 verify.py,严格遵循 AGENTS.md 中的所有约束。

然后,坐下来看它跑


你会看到什么?

如果一切顺利,你会看到 CodeBuddy 经历这样一个过程:

erlang 复制代码
🤖 读取 AGENTS.md... 了解到需要关注 AI Agent、Harness Engineering 等领域
🤖 开始搜索最新技术动态...
🤖 找到 12 条相关内容,筛选后保留 8 条(相关度 >= 3)
🤖 生成 output/report_2026-03-26.json
🤖 运行 verify.py...

❌ 条目[3] 分类不在预定义列表: LLM
❌ 条目[5] 摘要超100字(127字)

🤖 修复条目[3]的分类为"LLM推理与优化"
🤖 精简条目[5]的摘要
🤖 再次运行 verify.py...

🎉 验证通过!
🤖 生成 Markdown 日报...

注意看这个过程 :Agent 第一次生成的内容大概率不完美------分类写错了、摘要太长了。但因为有verify.py这个"自动裁判",它能自己发现问题、自己修复,不需要你介入。

这就是 Harness 的魔力:你搭好了环境,Agent 在环境里自我纠正。

用一张图总结整个流程:

javascript 复制代码
┌─────────────────────────────────────────────────────┐
│                    你只做这些                         │
│                                                      │
│   📝 写 AGENTS.md    📜 写 verify.py    🗣️ 发指令   │
│   (3 分钟)          (5 分钟)         (2 分钟)    │
└──────────────────────┬──────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────┐
│                  Agent 自己跑这些                     │
│                                                      │
│   🔍 搜索 → 📊 筛选 → 📝 生成 JSON                  │
│       ↓                                              │
│   🧪 verify.py 验证                                  │
│       ↓ 失败                                         │
│   🔧 自动修复 → 🧪 再次验证 → ... → ✅ 通过          │
│       ↓                                              │
│   📄 生成 Markdown 日报                               │
└─────────────────────────────────────────────────────┘

Step 4:持续演进------Harness 的灵魂

跑完第一次后,你审阅日报,可能会发现一些新问题:

  • "这条内容其实是广告软文,Agent 没识别出来"
  • "GitHub 仓库只有 3 个 star,不值得收录"
  • "有一条是 2 个月前的旧文章"

不要去调 Prompt,去更新 AGENTS.md

markdown 复制代码
## ⚠️ 已知陷阱
- 不要收录纯营销/广告内容
- 相关度评分低于 3 的不要收录
- 同一篇文章不要重复收录(用 URL 去重)
- 输出必须是合法的 JSON 格式
- 日期不能是未来日期
- 每条必须有真实的 URL,不要编造链接
+ - 标题含"震惊""必看""速看"等营销词汇的,相关度自动降 1 分
+ - GitHub 仓库必须有超过 100 star 才值得收录
+ - 超过 30 天的旧文章不收录,除非是里程碑级别的(如 OpenAI 官方发布)
+ - 纯翻译/搬运外网内容的文章,相关度降 1 分

同时,你也可以加强verify.py------比如加一个"标题营销词检测":

ini 复制代码
# 在 verify.py 中新增检查
marketing_words = ["震惊", "必看", "速看", "赶紧收藏", "不看后悔"]
title = item.get("title", "")
if any(w in title for w in marketing_words):
    warnings.append(f"⚠️ {tag} 标题含营销词汇,请确认内容质量")

每一次更新,都让 Harness 变得更强。这就是飞轮效应。


为什么这个例子能帮你理解 Harness Engineering?

让我们对照 Harness 的四大支柱,看看这个简单例子覆盖了什么:

四大支柱 在本例中的体现 你学到了什么
📄 文档即规范 AGENTS.md 定义了信息源、领域、格式、禁忌 Agent 的行为边界不靠 Prompt 口头约定,靠文档物理约束
🔧 工具即能力 CodeBuddy 的搜索工具获取真实信息 Agent 需要"手"和"眼",工具就是它的感官
🧪 验证即反馈 verify.py 自动检查 JSON 格式和内容质量 确定性的验证信号 > 模糊的自然语言反馈
🔄 闭环即进化 验证失败 → 自动修复 → 再验证 → 通过 Agent 不需要"聪明",只需要在闭环里不断修正

而且,你还体验到了 Harness 最核心的理念:

你的工作不是写代码,而是设计环境。

你没有帮 Agent 搜索任何一篇文章,没有帮它写任何一行 JSON。你只做了三件事:定义规则(AGENTS.md)、搭建质检(verify.py)、发出指令。剩下的,Agent 自己搞定。


进阶:从"能跑"到"好用"

如果你觉得这个初体验不错,可以沿着这条路继续走:

Level 1 → Level 2:加强验证

python 复制代码
# 在 verify.py 中加入 URL 可达性检查
import urllib.request

def check_url(url, timeout=5):
    try:
        urllib.request.urlopen(url, timeout=timeout)
        return True
    except:
        return False

这样 Agent 就无法编造假链接了------用技术约束替代文字约束

Level 2 → Level 3:自动化触发

写一个简单的 shell 脚本,每天早上自动触发:

bash 复制代码
#!/bin/bash
# daily_research.sh - 每日自动研究
DATE=$(date +%Y-%m-%d)
# 通过 CodeBuddy CLI 或 API 触发 Agent
echo "开始生成 ${DATE} 的技术日报..."

Level 3 → Level 4:无人值守

  • 验证通过后自动发送到企微群
  • 与昨日日报对比,标记新增/消失的热点
  • 每周自动生成趋势分析报告
sql 复制代码
┌──────┐    ┌──────┐    ┌──────┐    ┌──────┐
│Day 1 │───▶│Week 1│───▶│Week 2│───▶│Month+│
│      │    │      │    │      │    │      │
│手动跑│    │加强  │    │自动化│    │无人  │
│一次  │    │验证  │    │触发  │    │值守  │
└──────┘    └──────┘    └──────┘    └──────┘
  你在这里

最后

Harness Engineering 不是什么高深的理论。它的本质就是一句话:

与其教 AI 怎么做对,不如搭一个环境,让它做错了能自己发现、自己改正。

你不需要一个复杂的项目才能开始。一个 AGENTS.md、一个 verify.py、一段 Prompt------10 分钟,你就能完成自己的第一次 Harness Engineering。

而当你看到 Agent 在验证失败后自动修复、再次验证、最终通过的那一刻,你会真正理解这个概念为什么火了。

别再只看文章了,打开 CodeBuddy,跑一遍吧。

相关推荐
卷无止境1 小时前
Rust写大型项目时,编译太慢怎么办?
后端
星栈1 小时前
多租户隔离,我选择"倒退"后开发速度直接翻了 3 倍
后端
敖正炀2 小时前
手写简易 MyBatis 框架(mini-mybatis)—— 完善版架构设计与核心实现
后端·mybatis
掘金者阿豪2 小时前
R3play让听歌不再费劲,想咋就咋!
后端
EthanYuan2 小时前
🦴不是MCP害了我,是这个阻塞害了我啊
后端
用户298698530142 小时前
Java 文档处理:在 Word 中插入分页符与分节符
java·后端
fliter2 小时前
分布式聚合查询的工程内幕:Cloudflare R2 SQL 如何实现 GROUP BY
后端
无限进步_2 小时前
【C++】红黑树完全解析:从概念到插入与平衡维护
java·c语言·开发语言·数据结构·c++·后端·算法