跳出框:网站不该千篇一律
Mirage(@trymirageapp)的核心信念:软件正在进入新时代,应该适应人,而不是让人适应软件。几十年来,网站都是千人一面——同样的界面、同样的工作流、同样的体验。唯一的选择是你去适应软件。
Coding agent 改变了这件事。第一次,软件可以变得自适应——界面可以变,工作流可以变,网站可以围绕使用者重塑自己。这是 Mirage 团队在建造的未来。
但在让 agent 改造网站之前,他们必须先解决一个不同的问题:
怎么稳定地让 agent 创建出你真正想要的体验?
三大教训
1. Coding 不是最难的,convergence 才是
一开始就发现:结果的品质与目标定义的清晰度成正比。模糊的目标产生模糊的结果。Agent 需要一个具体的东西去收敛。
所以 Mirage 不再描述最终状态,而是为理想中的网站创建明确的概念图。不是参考、不是灵感——是真实的目标态。
**概念成为 source of truth。**每一次迭代都对照那个目标做评估。目标不再是「让它看起来更好」,而是「让现实匹配概念」。一旦目标清晰,整个循环的剩余部分就开始围绕它搭建。
2. Agent 不能改进它观察不到的东西
Mirage 接入了 Browser MCP,让系统能跟它正在改造的网站交互。它能观察当前的体验、评估自己修改的结果、把现实对照目标、识别下一处要填的差距。
Agent 不再盲目操作,而是从它正在修改的环境中直接学习。
3. 每一轮迭代都在教一些东西——然后 agent 把它忘了
一个模式浮现 → 一个转换策略特别有效 → 一个网站特有的边缘情况出现 → 一个验证技术反复抓住问题 → 一个特定实现路径反复失败。
这些教训是有价值的,但它们困在单个会话里。
所以 Mirage 开始写下来。他们构建了技能、指令、实现模式、验证流程、经验教训、常见错误和平台特定知识的集合。久而久之,这演化成了一份不断增长的基于 markdown 的知识库,agent 能持续引用并基于它构建。
系统不再每次会话重新发现解决方案——它开始积累知识。循环不再只是改善产品,而开始改善自身改善产品的能力。这是事情开始变得有趣的地方。
那个循环长什么样
工作流出奇地简单:
1. Define a goal
2. Implement changes
3. Apply the transformation
4. Inspect the result
5. Compare against the target
6. Identify the gaps
7. Iterate
一遍又一遍。目标不是写代码。目标是缩短现实与目标之间的距离。
跟上 Loop Engineering 的共识
@addyosmani 提出 Loop Engineering 的描述后,Mirage 团队立刻共鸣:这不是他们想试的技术,是他们每天已经在用的过程。
@bcherny 和 @steipete 最近也表达了同一个观察:「价值不在于 prompt agent,价值在于围绕它们创建循环。」
Mirage 团队不是每天手动去 prompt coding agent。他们建了一个系统——一个循环——围绕 agent:
Observe → 观察网站的当前状态
Evaluate → 把它对照想要创建的目标做评估
Prompt → 两个状态之间的差距变成下一个 prompt
Verify → coding agent 实现修改,系统验证修改是否真的把网站拉向期望的结果
Remember → 成功的模式被记住
下一轮开始。Observe → Evaluate → Prompt → Verify → Remember。反复。
**值得注意的转变:从手动写 prompt 到从差距本身生成 prompt。**网站变成反馈。期望的体验变成目标。循环持续尝试缩短两者之间的距离。
这个过程最终变成了 Mirage 产品本身
Mirage 在建的产品基于一个简单的信念:人不该去适应软件,软件该适应人。
要建自适应网站,他们首先得建自适应系统——能观察目标、评估现实、生成下一个动作、从结果学习、继续迭代的系统。
你在 Mirage 上看到的很多网站不是单个 prompt 的产物。它们来自数百次穿过那个循环的迭代。
这就是为什么 Addy 的 Loop Engineering 框架引起共鸣——它不是在描述一个他们想试的技术,是在描述他们每天已经在用的过程。
给实践者的提炼
**把概念图当 source of truth。**不是参考、不是灵感——是真实目标态。Agent 需要具体的东西去收敛,模糊就是噪音。
**让 agent 能观察自己修改的东西。**Browser MCP 这类工具不是 nice-to-have,是闭环前提。Agent 不能改进它观察不到的东西。
**知识库是 Loop Engineering 的乘数。**没有记忆的循环,每轮从零开始;带 markdown 知识库的循环,每轮在前一轮基础上加。这是 Mirage 反复强调的——积累知识库让 agent 不必每会话重新发现解决方案。
**差距即 prompt。**不要去手动想 prompt,让当前状态和目标的差距自动生成下一步。这才是 Loop 的核心抽象——agent 的输入不再是人类的语言,而是「现实与目标之间的距离」。
相关引用:
- Addy Osmani: Loop Engineering 原描述
- @bcherny(Anthropic Boris Cherny):「价值不在 prompt,价值在循环」
- @steipete(Anthropic Peter Steinberger):同样观点