<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ai-Coding on Hao · AI Agent 学习记录</title><link>https://haokw.github.io/tags/ai-coding/</link><description>Recent content in Ai-Coding on Hao · AI Agent 学习记录</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 04 Aug 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://haokw.github.io/tags/ai-coding/index.xml" rel="self" type="application/rss+xml"/><item><title>AI Coding Harness 讲义（后端开发工程师版）</title><link>https://haokw.github.io/posts/2026-08-04-ai-coding-harness/</link><pubDate>Tue, 04 Aug 2026 00:00:00 +0800</pubDate><guid>https://haokw.github.io/posts/2026-08-04-ai-coding-harness/</guid><description>&lt;blockquote&gt;
&lt;p&gt;一句话：&lt;strong&gt;Harness 是把「希望 AI 做对」变成「系统保证 AI 做对」的整套工程约束。&lt;/strong&gt;
内容脉络：心智模型 → SDD → TDD → AGENTS.md → Lint → CI/CD → Ralph → 完整拼图&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="0-心智模型先搞懂-harness-是什么"&gt;0. 心智模型：先搞懂 harness 是什么&lt;a href="#0-%e5%bf%83%e6%99%ba%e6%a8%a1%e5%9e%8b%e5%85%88%e6%90%9e%e6%87%82-harness-%e6%98%af%e4%bb%80%e4%b9%88" class="post-heading__anchor" aria-hidden="true"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id="为什么-ai-编码需要-harness"&gt;为什么 AI 编码需要 harness&lt;a href="#%e4%b8%ba%e4%bb%80%e4%b9%88-ai-%e7%bc%96%e7%a0%81%e9%9c%80%e8%a6%81-harness" class="post-heading__anchor" aria-hidden="true"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;AI 编码 Agent（Codex / Claude Code / Cursor）很强：能读整个仓库、改代码、跑命令。但它有三个固有毛病：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;会偏离&lt;/strong&gt;：做着做着就按自己的想象发挥，不按你的需求&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;会自信地错&lt;/strong&gt;：给出看起来很对的代码，实际有 bug&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;会自证&lt;/strong&gt;：自己改完自己跑测试，然后说&amp;quot;通过了&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;单靠 prompt 约束 → 看运气；靠系统约束 → 可预期。Harness 就是后者：&lt;strong&gt;让 Agent 在跑道内跑，越界就被护栏拦下&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="harness-的三层结构"&gt;Harness 的三层结构&lt;a href="#harness-%e7%9a%84%e4%b8%89%e5%b1%82%e7%bb%93%e6%9e%84" class="post-heading__anchor" aria-hidden="true"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;层次&lt;/th&gt;
					&lt;th&gt;干什么&lt;/th&gt;
					&lt;th&gt;组件&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;指令层（Input）&lt;/td&gt;
					&lt;td&gt;告诉 Agent 做什么、怎么做&lt;/td&gt;
					&lt;td&gt;SDD 规格、AGENTS.md、instructions.md&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;验证层（Output）&lt;/td&gt;
					&lt;td&gt;客观检查做对没有&lt;/td&gt;
					&lt;td&gt;TDD、Lint、CI/CD&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;编排层（Loop）&lt;/td&gt;
					&lt;td&gt;拆任务、循环执行、记进度&lt;/td&gt;
					&lt;td&gt;Ralph&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="两条核心原则"&gt;两条核心原则&lt;a href="#%e4%b8%a4%e6%9d%a1%e6%a0%b8%e5%bf%83%e5%8e%9f%e5%88%99" class="post-heading__anchor" aria-hidden="true"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;确定性机制 &amp;gt; 依赖 Agent 自觉&lt;/strong&gt;：能机器验证的（lint、test、CI）不要靠 prompt 要求&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;每层只管一件事&lt;/strong&gt;：指令层管&amp;quot;怎么做&amp;quot;，验证层管&amp;quot;对不对&amp;quot;，编排层管&amp;quot;推进到哪了&amp;quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="1-sdd规格驱动开发先写规格再写代码"&gt;1. SDD：规格驱动开发（先写规格，再写代码）&lt;a href="#1-sdd%e8%a7%84%e6%a0%bc%e9%a9%b1%e5%8a%a8%e5%bc%80%e5%8f%91%e5%85%88%e5%86%99%e8%a7%84%e6%a0%bc%e5%86%8d%e5%86%99%e4%bb%a3%e7%a0%81" class="post-heading__anchor" aria-hidden="true"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id="是什么"&gt;是什么&lt;a href="#%e6%98%af%e4%bb%80%e4%b9%88" class="post-heading__anchor" aria-hidden="true"&gt;#&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Spec-Driven Development：先产出规格（spec / PRD），再让 AI 基于规格生成实现。&lt;strong&gt;规格是单一事实来源&lt;/strong&gt;，代码只是规格的一种实现。&lt;/p&gt;</description></item></channel></rss>