
如何用零行手动编写的代码发布一个软件产品?
今天有位朋友问我这个问题,我意识到自己没有一个简单的答案。于是深入探究了一番。
事实证明,答案在于你如何设计你的harness系统(harness)。
作者 @shirmeir86
等等,什么?什么是harness工程?
这正是目前围绕编码智能体最重要趋势的原因。如今最大的问题是,如何在不逐行阅读的情况下验证 AI 生成的代码?如何确保智能体不会破坏生产环境或删除你的数据?
我最近读到一个有趣的实验:一个由 3 名工程师组成的团队,用零行手动编写的代码构建并发布了软件产品的内部测试版。每一行代码——应用逻辑、测试、CI 配置、文档、可观测性和内部工具——都由 Codex 编写。
他们是怎么做到的?他们没有编写应用程序,而是设计了harness系统(harness)。
What exactly is a harness?(Harness系统到底是什么?)
把 AI 智能体想象成一匹强大的赛马。harness系统就是赛道、眼罩和骑师的缰绳,让马沿着正确方向奔跑,而不是冲进看台。
正如我的同事 Arthur Thompson 今天所解释的:对于智能体而言——harness系统由所有包裹 LLM 的确定性组件组成。
Balaji Subramaniam 在他的博客——中详细介绍了这些确定性组件:编排层、执行沙箱、状态持久化和验证工具。
如果你想构建可靠的智能体系统,你的工作重心将从编写逻辑转变为设计环境。以下是需要关注的重点:
- 设置严格边界:不要让智能体随意猜测可以触碰的内容。强制执行严格的访问规则(例如将其限制在特定沙箱中),以免意外抹掉生产数据。
- 构建 “修复循环”:智能体不可避免地会犯错。一个优秀的harness系统会自动捕获错误(如构建失败或测试失败),并将这些干净的日志反馈给智能体,让它自行修复代码。
- 给他们一张地图,而不是一本手册:正如 OpenAI 团队所发现的,不要用庞大的指令文件淹没智能体。合理组织仓库结构,让智能体在工作过程中逐步发现上下文。
Show me the code(展示代码)
在实践中这是什么样子?以下是一个使用 Google Antigravity SDK 和 Google 的 ADK 配置本地harness系统的简单示例。注意我们如何严格地将智能体限制在特定工作区(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,
)
有了这样的设计,你可以将遗留代码放入沙箱,编写一个简单的循环对其运行单元测试,然后让智能体迭代地修复自己的 bug。
Adding Tests(添加测试)
那么,我们如何实际对这个沙箱中的智能体运行测试呢?
在现代harness工程中,测试是智能体工作流图中活跃的一部分。使用引入基于图的工作流的 Google ADK 2.0,你可以将测试验证步骤定义为一个简单的路由节点。
如果测试通过,任务完成。如果失败,harness系统会自动将错误循环回给智能体重试。注意内置的 “急停开关”:我们跟踪迭代次数,如果智能体陷入无限循环的 “破坏 - 修复” 代码中,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仓库中的一个完整实现示例。
Wiring it all together using graph-based workflow(使用基于图的工作流将所有组件连接起来)
要连接智能体和测试节点,你可以使用 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})
]
)
Press enter or click to view image in full size

恭喜!你已经构建了一个自主系统。智能体编写代码并将其交给测试节点。如果测试失败并返回 loop_back 路由,智能体会带着错误日志再次尝试。
在 ADK 示例中查看更多循环模式示例。
Try it yourself(亲自尝试)
你可能会想,为什么需要一个 Python 脚本来运行智能体。在普通的聊天窗口中,你就是harness系统:你复制错误日志并盯着模型。软件harness系统让系统自我监督,让你能完全自动化测试驱动编码,或安全重构大规模遗留代码库。
要在自己的机器上运行这个自愈循环,设置时间不到五分钟:
- 安装框架:在终端中运行 pip install “google-adk [antigravity]” 以获取开源的 Agent Development Kit 和 Antigravity 集成。
- 设置 API 密钥:从 Google AI Studio 获取免费的 Gemini API 密钥并导出到你的环境(export GEMINI_API_KEY=” your-key”)。
- 运行循环:将上面的代码块保存为 Python 脚本,把一个损坏的 Python 或 Node 文件放入新的./sandbox 目录,然后运行脚本。
- 扩展你的图:单元测试只是基线。为了让你的harness系统万无一失,可以在工作流中添加第二个 AI 智能体(如 SecurityAuditor)在代码通过前审查代码,或者接入自定义 linter 以强制执行严格的架构规则。
从那里,你可以将简单的测试节点替换为子进程,实际对沙箱执行 pytest 或 npm test,这样你就拥有了一个功能完备的修复循环。
如果准备扩展,你可以在 antigravity.google 下载完整的 IDE 和 CLI,探索 Antigravity 托管智能体进行远程执行,以及使用 Google 的 ADK 2.0 实现基于图的工作流。
Further reading(延伸阅读)
我在 Google 的同事们整理了一些出色的指南,告诉你接下来可以做什么。要学习如何为智能体构建安全环境,请查看 Sara 的 codelab,其中展示了 Cloud Run 沙箱。如果想掌握自我修正,Balaji Subramaniam 最近发布了一篇关于编码智能体的循环工程的深度文章。要看到这一切应用于大规模企业场景,请阅读 James O’Reilly 关于使用智能体管道和 Antigravity 自动化大规模遗留系统现代化的解析。
