OpenAI 团队 3 名工程师用 Codex 实现零手写代码交付产品,核心在于 Harness(约束系统)的设计——如何引导 AI 避免盲目生成、控制风险并确保产出可验证。
如何用 0 行手动编写的代码发布一个软件产品?
有个朋友今天问了我这个问题,我发现自己一时给不出简单的答案。于是我深挖了一下。
原来,答案在于如何工程化你的 harness。
等等,什么?什么是 harness 工程?
这绝对是当前编码 Agent 领域最重要的趋势。原因很简单:如今最大的难题是如何在不逐行阅读的情况下验证 AI 生成的代码。如何确保一个 Agent 不会搞崩生产环境或删掉你的数据?
OpenAI 的一篇博客分享了一个有趣的实验:一个 3 人工程师团队,用 0 行手动编写的代码构建并发布了款内部 Beta 软件产品。每一行代码——应用逻辑、测试、CI 配置、文档、可观测性、内部工具——全部由 Codex 编写。
他们是怎么做到的?他们没有去写应用本身,而是设计了 harness。
Harness 到底是什么?
可以把 AI Agent 想象成一匹强大的赛马。Harness 就是赛道、眼罩和缰绳,让它始终朝正确的方向奔跑,而不是跳进看台。
正如我的同事 Arthur Thompson 今天解释的:对 Agent 而言,harness 是所有围绕 LLM 的确定性组件的总称。
Balaji Subramaniam 在他的博客中详细阐述了这些确定性组件——编排层、执行沙箱、状态持久化、以及验证工具。
如果你想构建可靠的 Agent 系统,你的工作重点要从写逻辑转变为设计环境。以下是你需要关注的重点:
设定严格的边界:不要让 Agent 猜测它能操作什么。强制执行严格的访问规则(比如限制在特定沙箱内),这样它就不会意外擦掉生产数据。
构建"修复循环":Agent 难免会犯错。一个优秀的 harness 会自动捕获错误——比如构建失败或测试失败——然后把清晰的日志直接反馈给 Agent,让它自己修复代码。
给它们一张地图,而不是一本手册:正如 OpenAI 团队发现的,不要用大量的指令文件把 Agent 淹没。把代码库结构化,让 Agent 在工作过程中逐步发现上下文。
实际上长什么样?这里有一个使用 Google Antigravity SDK 配合 Google ADK 配置本地 harness 的简单示例。注意我们是如何严格限制 Agent 在特定工作区(workspaces=["./sandbox"])内操作,并给它一个保存记忆的地方(save_dir="./trajectories"),让它能从过往经验中学习:
import os
from google.adk.labs.antigravity import AntigravityAgent
from google.antigravity import LocalAgentConfig
from google.antigravity.hooks import policy
# Ensure absolute paths for workspace containment
sandbox_dir = os.path.abspath("./sandbox")
os.makedirs(sandbox_dir, exist_ok=True)
save_dir = os.path.abspath("./trajectories")
# 1. Engineer the harness environment
sdk_config = LocalAgentConfig(
system_instructions="You are a helpful local environment assistant.",
workspaces=[sandbox_dir],
# Let the agent write safely within the restricted sandbox boundary
policies=[policy.allow_all()],
save_dir=save_dir,
)
# 2. Wrap the config to run the agent inside the harness
root_agent = AntigravityAgent(
name="antigravity_assistant",
description="Runs an Antigravity SDK agent inside ADK.",
config=sdk_config,
)

有了这个设计,你就可以把旧代码丢进沙箱,写一个简单的循环来运行单元测试,然后让 Agent 迭代修复自己的 bug。
那么,我们如何针对这个沙箱化的 Agent 实际运行测试呢?
在现代 harness 工程中,测试是 Agent 工作流图的积极参与者。使用 Google 的 ADK 2.0——它引入了基于图的 workflow——你可以把测试验证步骤定义为一个简单的路由节点。
如果测试通过,任务完成。如果失败,harness 会自动把错误循环反馈给 Agent 重试。注意这个内置的"kill switch":我们跟踪迭代次数,这样如果 Agent 陷入无限循环地破坏和修复代码,harness 会安全地切断它。
from google.adk.agents.context import Context
from google.adk import Event
from google.adk.events.event_actions import EventActions
from google.genai import types
# 3. Evaluate the code in the sandbox
def execution_test_node(ctx: Context):
# Safely track our attempts to prevent infinite loops
iteration_count = ctx.state.get("iteration_count", 0) + 1
ctx.state["iteration_count"] = iteration_count
test_passed = ctx.state.get("test_passed", False)
feedback = ctx.state.get("feedback", "")
if test_passed:
# Success! End the workflow.
return Event(actions=EventActions(route="END"))
if iteration_count > 5:
# The Kill Switch: The agent is stuck. Stop the loop.
return Event(actions=EventActions(route="END"))
# Failure! Feed the error trace back to the agent and loop it.
feedback_msg = f"The unit tests failed with the following traceback:\n\n{feedback}"
return Event(
content=types.Content(role="user", parts=[types.Part(text=feedback_msg)]),
actions=EventActions(route="loop_back")
)
如果你想看这个测试路由模式的实际运作,可以去 Balaji 的 ADK harness 代码库查看一个完整实现的示例。
用基于图的 workflow 把所有组件串联起来
要把 Agent 和测试节点连接起来,可以使用 Workflow 图来精确描绘执行流程,而不需要复杂的嵌套 Python while 循环。
把这想象成在赛道上画出实际的车道:
from google.adk import Workflow
# 4. Wire the agent and the test node together into a loop
repair_loop = Workflow(
name="repair_loop",
edges=[
# 1st Step: Define the main sequence (START -> agent -> test node)
("START", root_agent, execution_test_node),
# 2nd Step: If the test returns "loop_back", go back to the agent
(execution_test_node, {"loop_back": root_agent})
]
)

恭喜!你已经构建了一个自主系统。Agent 写完代码后交给测试节点。如果测试失败并返回 loop_back 路由,Agent 会拿着错误日志再试一次。
去 ADK samples 查看更多循环模式的示例。
你可能想知道为什么需要用 Python 脚本来运行一个 Agent。在普通的聊天窗口中,你就是 harness:你复制错误日志、守着模型。软件 harness 让系统能够自我管理,让你能够完全自动化测试驱动的编码,或安全地重构大型遗留代码库。
如果今天就想在自己的机器上运行这个自愈循环,整个安装时间不超过五分钟:
安装框架:在终端运行 pip install "google-adk[antigravity]",获取开源的 Agent Development Kit 和 Antigravity 集成。
设置 API key:从 Google AI Studio 获取一个免费的 Gemini API key,导出到你的环境变量(export GEMINI_API_KEY="your-key")。
运行循环:把上面的代码块保存为 Python 脚本,把一个损坏的 Python 或 Node 文件丢进新的 ./sandbox 目录,然后运行脚本。
扩展你的图:单元测试只是起点。为了让 harness 无懈可击,可以给你的 workflow 添加第二个 AI Agent,比如 SecurityAuditor,在代码通过前进行安全审查,或者接入自定义 linter 来强制执行严格的架构规则。
从那里开始,你可以把简单的测试节点替换成真正在沙箱上执行 pytest 或 npm test 的子进程,这样你就拥有了一个功能完整的修复循环。
如果你准备好规模化,可以去 antigravity.google 下载完整的 IDE 和 CLI,探索 Antigravity 托管 Agent 用于远程执行,以及 Google 的 ADK 2.0 用于基于图的 workflow。
我在 Google 的同事们整理了一些非常棒的指南,告诉你接下来可以往哪走。想学习如何为 Agent 构建安全环境,可以看看 Sara 的 codelab,里面展示了 Cloud Run 沙箱。想掌握自修正能力,Balaji Subramaniam 最近发布了深度文章《Coding Agent 的循环工程》。想看这一切应用在大型企业场景,可以读 James O'Reilly 的文章《使用 Agent 管道和 Antigravity 大规模自动化遗留系统现代化》。