一只阿木木

从 Prompt Engineering 到 Loop Engineering:AI 工程的四级进化图谱

副标题:Karpathy 说英语是最热门的编程语言——三年后,他只说对了一半

引子:一个工程师的三年认知断层

2023年,Andrej Karpathy 说:「最热门的新编程语言是英语。」

所有人觉得他说得对。

「最热门的新编程语言是英语。」——Andrej Karpathy,2023年。三年后,他只说对了一半。从2022年到2026年,AI 开发范式经历了三次转变:Prompt Engineering → Context Engineering → Harness Engineering。

而就在我写这篇文章的2026年6月,第四次转变刚刚发生,名字叫 Loop Engineering。

这篇文章想做一件事:把这四次转变的逻辑讲清楚。不是搬运概念,而是告诉你——每一次转变背后,是什么具体的工程痛点在驱动它,以及你现在站在哪里。

一、为什么会有「进化」?每一层的失败模式

一个让人不舒服的真相是:

每一次工程范式的升级,都不是因为旧方法不好,而是因为旧方法在规模化时暴露了致命缺陷。

每个时代都没有取代上一个。每个时代揭示了上一个是必要的,但还不够充分。

理解这一点,是理解这张图谱的钥匙。

下面这张图,是我们要用整篇文章填充的骨架:

text

时间轴 ──────────────────────────────────────────────►
         2022-23          2024-25          2026上半年      2026下半年
           │                │                  │               │
           ▼                ▼                  ▼               ▼
    ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐
    │   L1        │  │   L2        │  │   L3        │  │   L4        │
    │  Prompt     │  │  Context    │  │  Harness    │  │   Loop      │
    │ Engineering │  │ Engineering │  │ Engineering │  │ Engineering │
    │             │  │             │  │             │  │             │
    │ 优化「如何  │  │ 优化「给    │  │ 优化「Agent │  │ 优化「整个  │
    │ 说话」      │  │ 什么信息」  │  │ 的工作环境」│  │ 反馈系统」  │
    └─────────────┘  └─────────────┘  └─────────────┘  └─────────────┘
    失败模式:        失败模式:        失败模式:
    同样的问题       噪音淹没信号      孤立任务间
    换种说法就坏     上下文焦虑        无法自我校正

二、L1:Prompt Engineering(2022-2023)

它解决了什么?

Phase 1(2022-2023)是 Prompt Engineering 的天下。重点在语言本身。工程师发现,你怎么措辞会显著改变输出质量。AI 工具主要作为智能自动补全,在样板代码和代码片段方面很有用,但需要持续的人工引导。

这个阶段,最聪明的工程师在研究的问题是:怎么和 AI 说话?

Chain-of-Thought、Few-shot、System Prompt——这些都是这个阶段的产物。它们有效,而且今天依然有效。

它在哪里失败了?

等模型更强大了之后,你会发现一件奇怪的事:用同样的提示,给强模型的效果,有时候不如给弱模型的效果好。

因为强模型有能力处理更复杂的任务,但如果你只给它一句提示,它不知道你的项目背景、你的代码风格、你的架构约束。

它在生成通用的正确答案,而不是在解决你的具体问题。

这个痛点催生了 L2。

三、L2:Context Engineering(2024-2025)

它解决了什么?

Phase 2(2024-2025)是 Context Engineering。随着 AI 模型变得更强大,瓶颈从措辞转向了信息。工程师开始精心策划什么进入模型的上下文窗口——包括相关文件、项目规则、架构约束——让 AI 可以针对特定代码库推理,而不是生成通用解决方案。

这个阶段,最重要的一段话来自 Shopify CEO Tobi Lütke,他在公司内部备忘录里写道:

「在你用 Claude 做任何任务之前,你要给它足够的上下文,让 Claude 能够独立完成你的工作。」

Prompt Engineering 告诉模型做什么。Context Engineering 给模型它需要知道的东西。

这也是 RAG(检索增强生成)爆发的阶段。用户发现,与其微调模型,不如在推理时把正确的文档放进上下文窗口。

它在哪里失败了?

Context Engineering 有一个经典的失败模式,我叫它「垃圾进,垃圾出的精致版」。

你精心策划了上下文,但上下文里有一份过时的架构文档。

AI 不会告诉你它过时了。它会非常自信地基于这份过时的文档生成代码。

陈旧的数据血统、未认证的表格、schema 漂移、相互冲突的业务定义进入上下文窗口,产生听起来很可靠的幻觉。Agent 没有犯推理错误——它在对错误输入进行正确推理。这是数据问题,不是模型问题。

还有另一个更致命的问题:

随着上下文窗口填满,模型会「恐慌」并急于完成,以避免空间耗尽;Agent 经常试图一次性解决整个问题,产生一团没有文档的修改。

Context Engineering 的困境在于:你给 Agent 更多信息,但它处理信息的方式依然是一次性的、单向的。 它没有办法验证自己的输出,没有办法在出错时自我纠正。

这个痛点催生了 L3。

四、L3:Harness Engineering(2026上半年)

它解决了什么?

这个概念的提出者是 Mitchell Hashimoto——Terraform 的创始人,Ghostty 的作者。

Harness Engineering 是建立存在于 AI Agent 周围的结构层——它运行的环境、它无法越过的边界、以及当它出错时捕获它的系统。这个术语由 Terraform 的创建者 Mitchell Hashimoto 在2026年初推广。他的核心想法很直接:「每次 Agent 犯错,你不只是告诉它下次做得更好。」

你知道结构化的思维,在 Harness Engineering 里也是核心精神:不是让模型更聪明,而是让失败在结构上不可重复发生。

Harness Engineering 是设计和管理 AI Agent 运行的整个环境的学科。这意味着除了模型本身之外的一切。Martin Fowler 的表述很简洁:「Agent = Model + Harness。」Harness 是运营包装器,决定模型的能力是否转化为可靠的真实世界行为。 

Harness Engineering 确保 Agent 能可靠地完成工作。Prompt = 指令;Context = 知识;Harness = 执行系统。这个进化——从语言,到知识,到系统——是自 Transformer 以来应用 AI 中最重要的架构转变。

一个真实的数据点震撼了整个工程界:

2026年3月,LangChain 工程团队在不改变底层模型的情况下,将他们的编码 Agent 从 Terminal Bench 2.0 的第30名提升到了第5名——提升完全通过优化 Harness 实现。

再强调一遍:模型没有变,只是换了 Harness,排名从30提升到5。

同期,OpenAI 的 Codex 团队用 Harness Engineering 原则在五个月内交付了超过100万行生产代码,全部由 AI Agent 编写。

它在哪里失败了?

Harness Engineering 解决了「单任务的可靠性」问题,但它依然有一个根本性的限制:

它是单向的。Agent 执行任务,Harness 捕获错误,但这个过程本身还是需要人来触发。

你写好了 Harness,定义了约束,配置了验证。但谁来决定「下一个任务是什么」?谁来发现「这个函数该被重构了」?谁来决定「现在应该停止了」?

还是你。

Harness 让 Agent 更可靠,但整个系统还没有闭环。

五、L4:Loop Engineering(2026年6月——现在)

它解决了什么?

Loop Engineering 是设计让 AI Agent 在重复循环中运行的系统——行动、观察、决策、重复——而不是每一步手动提示 Agent。你定义一个目标和一个停止条件;循环负责迭代。

用最简洁的语言:

text

Prompt Engineering  = 优化你说的话
Context Engineering = 优化 AI 能看到的信息
Harness Engineering = 优化 AI 工作的环境
Loop Engineering    = 优化整个系统的反馈机制,让它自己跑起来

这个词的推广者是 Google 工程师 Addy Osmani,他综合了 Anthropic 的 Boris Cherny 和 Peter Steinberger 的观点。杠杆点从单次提示的质量,转移到了生成和验证提示的系统的设计。

四层的关系:不是替代,是叠加

这是最容易被误解的地方。很多人看到「L4 Loop Engineering」就认为前三层过时了。

错误。

你仍然在写提示;你仍然在策划上下文;你仍然在构建 Harness。Loop Engineering 只是让这一切被放入运动状态的那一层。

用一个建筑比喻:

text

Prompt Engineering  = 砖块的质量
Context Engineering = 建筑蓝图
Harness Engineering = 建筑规范和安全标准
Loop Engineering    = 整栋楼的运营系统(电梯、空调、自动门)

没有好砖块,楼建不起来。没有运营系统,楼只能被动等人使用。

一个完整的 Loop 长什么样?

让我拿一个真实的企业场景做示范:一个监控生产服务健康状态并自动修复的 Agent。

Python

# loop_design.py
# 这不是提示词,这是一个系统设计

import subprocess
import json
from anthropic import Anthropic

client = Anthropic()

def check_production_health():
    """状态读取:当前生产环境是否健康?"""
    result = subprocess.run(
        ["pytest", "tests/integration/", "--tb=json", "-q"],
        capture_output=True, text=True
    )
    return {
        "passed": result.returncode == 0,
        "output": result.stdout,
        "errors": result.stderr
    }

def write_memory(iteration: int, issue: str, fix: str):
    """记忆持久化:记录这次失败模式,供下次参考"""
    with open("LOOP_MEMORY.md", "a") as f:
        f.write(f"\n## Iteration {iteration}\n")
        f.write(f"**Issue**: {issue}\n")
        f.write(f"**Fix Applied**: {fix}\n")

def run_fix_loop(
    goal: str,
    max_iter: int = 15,
    cost_budget_usd: float = 5.0
):
    """
    核心 Loop:目标驱动,验证终止,成本受控

    这才是 Loop Engineering 的精髓:
    不是一段聪明的提示词,而是一个有
    目标、验证、记忆、成本控制的完整系统
    """
    total_cost = 0.0

    for iteration in range(max_iter):
        # 1. 读取当前状态
        health = check_production_health()

        # 2. 验证:是否达成目标?
        if health["passed"]:
            print(f"✅ Loop 成功,共 {iteration} 次迭代")
            return True

        # 3. 成本控制:检查预算
        if total_cost >= cost_budget_usd:
            print(f"⚠️ 已达成本上限 ${cost_budget_usd},停止循环")
            return False

        # 4. 读取持久化记忆(这是 Context Engineering 的部分)
        try:
            with open("LOOP_MEMORY.md", "r") as f:
                past_memory = f.read()
        except FileNotFoundError:
            past_memory = "无历史记录"

        # 5. 让 Agent 执行修复(这是 Harness 的边界定义)
        response = client.messages.create(
            model="claude-opus-4-5",
            max_tokens=4096,
            system="""你是一个代码修复 Agent。
            规则:
            - 只修改 src/ 目录下的文件
            - 不删除已有测试
            - 每次只做最小化修改
            - 修改后必须说明你改了什么和为什么""",
            messages=[{
                "role": "user",
                "content": f"""目标:{goal}

当前测试失败信息:
{health['errors'][:2000]}

历史修复记忆:
{past_memory[-1000:]}

请分析失败原因并修复代码。"""
            }]
        )

        fix_description = response.content[0].text

        # 6. 记忆持久化
        write_memory(
            iteration=iteration,
            issue=health['errors'][:500],
            fix=fix_description[:500]
        )

        # 7. 成本追踪
        total_cost += (response.usage.input_tokens * 0.000003 + 
                      response.usage.output_tokens * 0.000015)

        print(f"迭代 {iteration+1}: ${total_cost:.4f} 已消耗")

    print(f"⚠️ 达到最大迭代次数 {max_iter},未能解决问题")
    return False

if __name__ == "__main__":
    run_fix_loop(
        goal="所有集成测试通过,服务健康检查返回200",
        max_iter=15,
        cost_budget_usd=5.0
    )

注意这段代码里有哪些层:

代码部分
对应层级
system
 prompt 中的规则
L1 Prompt Engineering
LOOP_MEMORY.md
 历史记忆 + past_memory
L2 Context Engineering
只修改 src/
、最小化修改 约束
L3 Harness Engineering
while
 循环 + check_production_health() + max_iter + cost_budget
L4 Loop Engineering

四层同时在工作。 没有任何一层是多余的。

六、工程进化的第一性原理:「严谨性的迁移」

读到这里,你可能会有一个感受:这四层的演进,有一种奇怪的规律性。

让我来命名它。这叫做:「Relocating Rigor」——严谨性的迁移。

工程严谨性从未消失。它在移动——从提示词到上下文,从上下文到 Harness。

更精确地说:

text

L1: 严谨性在「一句话里」   → 你每次都要谨慎措辞
L2: 严谨性在「信息质量里」 → 你要维护高质量的知识库
L3: 严谨性在「系统边界里」 → 你要设计可靠的执行环境
L4: 严谨性在「反馈设计里」 → 你要设计可自我校正的循环

每一次迁移,都让单次执行的成本变低,但让系统设计的复杂度上升。

这是好事吗?

是的。因为系统设计的复杂度是一次性的,而单次执行的收益是可重复的。

你花两天设计一个好的 Loop,它可以在接下来的两年里每天自动运行。你花两天写一个完美的 Prompt,只能用一次。

七、预警:L4 不适合所有场景

诚实地说,Loop Engineering 有它的边界。

不是每个任务都应该变成 Loop 的。

适合 Loop 的任务:

  • 有明确的可测量验证条件(测试通过/API 健康/代码覆盖率)
  • 重复性高(每天/每小时运行同类任务)
  • 错误成本可接受(失败了循环,而不是造成不可逆后果)

不适合 Loop 的任务:

  • 需要主观判断(「这个设计好看吗」)
  • 高风险操作(生产数据库写入、发送邮件)
  • 探索性工作(不知道终止条件是什么)

不是所有 Loop 都是平等的。设计糟糕的 Loop 会浪费 token、永远运行,或产生进展的幻觉。

对于高风险操作,你需要在 Loop 里加入「人工审批节点」——Loop 运行到某个检查点,暂停,等待人类确认,然后继续。这是一种「人在回路」的 Loop 设计,比纯自动化 Loop 安全得多,也比纯手动提示高效得多。

八、你现在站在哪里?一个自测框架

根据这四层,我给你一个快速自测:

你目前的工作方式
你在哪层
下一步
每次都要想怎么措辞才能让 AI 理解
L1
建立项目级 AGENTS.md,把上下文系统化
有 AGENTS.md / CLAUDE.md,但每次还是手动触发
L2
开始设计 Harness,为 Agent 建立验证机制
有验证机制,但 Agent 执行完一个任务还是要人来决定下一步
L3
设计第一个简单的 Loop:cron + 健康检查 + 自动修复
已经有自动运行的 Loop,但 Loop 之间互不相连
L4 早期
设计 Multi-Loop 编排,让 Loop 之间能互相通信

结语:2026年的进化还没有停止

2026年的关键指标不再是提示词质量——而是 KV 缓存命中率和 Harness 复杂度。

这句话预示着什么?

我认为,L5 已经在路上了。它的名字可能叫「Ecosystem Engineering」——不是设计一个 Loop,而是设计多个 Loop 互相发现、互相调用、互相验证的生态系统。

但那是下一篇文章的主题。

现在,我只想问你一个问题:

你今天写了多少提示词?

其中有多少,可以被替换成一个运行中的 Loop?

从那里开始。


普通人如何用 AI 搭建自己的知识操作系统?

一个程序员出身的知识工作者,公开记录自己如何用 AI 工具搭建个人知识系统、把读过的书和做过的项目变成可复用资产的全过程。

我是【一只阿木木】——公开建造我的 AI 第二大脑。

我们的方向是——AI + Obsidian 的结合。但请记住:Obsidian 的灵魂不是效率,是自由。不是自动化,是代理力。不是工具帮你想,而是你借工具想得更好。
在一个许多工具承诺代替用户思考的市场中,Obsidian 赌的是我们仍然想要一个可以自己思考的地方。

欢迎加入行动营👇获取更多Obsidian + AI数字大脑实践

Image

我相信:在 AI 时代,每个普通人都该拥有一个自动生长的知识系统

欢迎关注【一只阿木木】🌊