写在前面
想必大家最近被 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 自动帮你追踪前沿技术
为什么选这个场景?
- 不需要任何业务代码------你不需要有一个 Flask 项目、React 项目或任何在跑的服务
- 任何人都能用------只要你关注 AI 技术动态,这个场景就对你有价值
- Harness 四要素全部体现------架构护栏(限定信息源)、工具反馈(搜索结果)、文档记录(AGENTS.md)、验证闭环(verify.py)
- 有真实产出------跑完你会得到一份结构化的技术日报,可以直接发到群里,学习中的正反馈比什么都重要
你需要准备什么?
- 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,跑一遍吧。