Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第三章:六条黄金法则——Ralph 的核心哲学

为什么要先学哲学

很多技术书的读者都想直接跳到"怎么用",但对于 Ralph 来说,先理解它背后的设计哲学是值得的。

Ralph 的六条核心法则(Tenets)不是装饰性的口号,而是真实指导了软件每个功能的设计决策。当你在实际使用中遇到困惑——"为什么要这样配置?""为什么 AI 每次都重新读一遍文件?"——回到这六条法则,往往能找到答案。


法则一:新鲜上下文即可靠性

原文Fresh Context Is Reliability

含义:每次循环迭代,AI Agent 都从零开始读取所有信息,而不是"记住"上一次的内容。

这听起来很反直觉——重复读不是浪费时间吗?

但 Ralph 的设计者发现了一个关键规律:AI 的上下文窗口就像一个会满的桶。当对话越来越长,早期的信息会被压缩甚至丢失,AI 开始"遗忘"重要的约束条件。

📖 名词解释 · Token & 上下文窗口

Token 是大模型"数数"的单位——不是一个汉字或一个单词,而是模型内部拆分后的片段(大致 1 个英文单词 ≈ 1.3 个 Token,1 个汉字 ≈ 1~2 个 Token)。

上下文窗口(Context Window) 是模型一次能"看"多少 Token 的容量上限。比如 Claude 4.7 的上下文窗口是 20 万 Token(付费用户可到 100 万)。超过这个容量,早期的内容就会被挤出窗口——模型"忘了"。

Ralph 的"新鲜上下文"策略,本质是主动管理这个容量:与其等窗口被对话填满导致模型遗忘约束,不如每次迭代都重新装一次最相关的信息。

进一步学习:Anthropic · Context windows · 维基百科:Large language model

新鲜上下文策略解决了这个问题:每次迭代开始,AI 重新读取:

  • 任务规格说明
  • 记忆文件里积累的经验
  • 当前代码的状态
  • 上一步的结果

这样,每次 AI 做决策时,它的"视野"都是完整和最新的,不会因为"记忆混乱"而犯累积性错误。

实际意义:不要试图让 AI 在一个超长的对话里解决所有问题。Ralph 的循环机制本质上是主动管理 AI 的上下文,让每次迭代都在最佳状态下进行。


法则二:背压优于规定

原文Backpressure Over Prescription

含义:不要告诉 AI 每一步怎么做,而是设立质量关卡,拒绝不达标的结果。

两种不同的指导方式:

规定式(不推荐)

"第一步,打开文件 X。第二步,在第 47 行添加以下代码。第三步,运行测试。第四步,如果测试失败,检查变量名是否正确……"

背压式(Ralph 的方式)

"我需要这个功能能工作。以下测试必须全部通过,否则任务未完成。"

规定式方法看起来更精确,但实际上很脆弱——一旦实际情况和预设不符(比如文件路径不同、代码结构有变化),整个流程就会崩溃。

背压式方法更灵活:AI 可以自由选择实现路径,但必须满足你设定的质量标准。这让 AI 能充分发挥创造性,同时保证结果质量。

实际意义:配置 Ralph 时,把精力放在"结果验证"上(测试、格式检查、类型检查),而不是"步骤规定"上。


法则三:计划是可抛弃的

原文The Plan Is Disposable

含义:不要把计划文档当成神圣不可改动的东西。计划随时可以重新生成。

在软件开发中,人们常常花大量时间讨论和保护一份计划文档,不愿意推翻它,因为"推翻计划等于浪费了之前的努力"。

Ralph 的观点截然相反:计划很便宜,用 AI 重新生成一份只需要几分钟。与其在一份有缺陷的计划上强行推进,不如直接扔掉,重新从当前状态出发,生成更好的计划。

这背后是一个深刻的认知:当信息变化(发现了新的约束、需求有了更新、实现遇到了预料外的障碍),旧计划的价值就大幅下降了。及时更新计划的收益,远大于"浪费了之前规划工作"的损失。

实际意义:如果 Ralph 的某次循环陷入了僵局,不要想着"怎么修复这个计划",而是直接停掉循环,用新的描述重新启动。


法则四:磁盘是状态,Git 是记忆

原文Disk Is State, Git Is Memory

含义:用文件系统管理当前进行中的工作状态,用 Git 版本控制管理项目的历史和经验。

Ralph 把所有的工作状态(任务列表、记忆文件、事件日志)都存在本地文件里,而不是存在数据库或云端。这有几个好处:

  1. 简单:没有复杂的数据库或网络依赖,一个文件就是一切
  2. 透明:你可以直接打开文件查看 AI 在做什么
  3. 可调试:出了问题,直接看文件就能诊断
  4. 可控:你可以手动修改这些文件,直接影响 AI 的行为

Git 则用于长期记忆——当一个任务完成后,提交代码,让这次成功的实现成为项目历史的一部分,未来的 AI 可以通过读取代码库来"学习"这次的经验。

实际意义:了解 Ralph 把哪些文件放在哪里(.ralph/ 目录),这些文件就是你理解 AI 当前状态的窗口。


法则五:用信号导航,不用脚本控制

原文Steer With Signals, Not Scripts

含义:当 AI 反复在某个地方犯同样的错误时,不要写详细的修复脚本,而是给代码库添加一个"信号"(说明、注释、规范文件),让 AI 下次自己看懂。

举个例子:假设 AI 总是忘记在某类操作后清理资源。你有两个选择:

脚本方式:写一段复杂的指令,告诉 AI "当你做了 X 操作之后,必须做 Y 清理"。

信号方式:在代码库的相关位置添加注释或说明文档,解释为什么需要清理,清理的具体方式是什么。这样,当 AI 读取代码时,它会自然地发现这个信号并遵循。

信号方式的好处是:它是持久的,不只对当前 AI 有效,对未来所有 AI(包括人类开发者)都有效。脚本方式只能修复当前问题,信号方式提升了整个代码库的质量。

实际意义:当你发现 AI 重复犯同一个错误时,不要写更复杂的指令,而是考虑在代码库里添加更清晰的说明。


法则六:让 Ralph 自己 Ralph

原文Let Ralph Ralph

含义:你的角色是"坐在循环外面,像调音师一样偶尔调整",而不是"像指挥一样控制每一个音符"。

这是最难接受但也最重要的一条法则。

很多人习惯于对 AI 进行微管理——看着每一步输出,随时介入调整。这种方式在简单任务里可行,但在长期复杂任务里是适得其反的:你的每次介入都打断了 AI 的上下文,需要重新解释背景。

Ralph 的设计鼓励你:

  1. 启动循环后,让它跑——不要盯着每一条输出
  2. 观察结果模式——当循环结束后,看看完成了什么,失败在哪里
  3. 从失败中调整配置——如果 AI 总在某个地方卡住,调整相关的帽子指令或背压配置
  4. 再次启动——相信循环会做得更好

这种"调音师"的心态,需要一定时间才能建立。初期你会觉得不放心,但随着你对 Ralph 工作方式的熟悉,你会发现这是一种更高效、压力更小的协作模式。

实际意义:当 Ralph 在跑的时候,去做别的事。等循环结束后,检查结果,然后决定是"接受"还是"调整后重跑"。


六条法则的综合理解

把这六条法则放在一起,你会发现它们有一个共同的主题:

把注意力放在"系统设计"上,而不是"每个步骤的执行"上。

法则具体体现
新鲜上下文Ralph 自动管理每次迭代的信息量
背压优于规定你定义"什么是完成",不定义"怎么做到"
计划可抛弃不纠结于计划,关注当前状态和最终目标
磁盘是状态通过文件透明地观察和干预
信号导航通过代码库本身传递信息
让 Ralph 自己 Ralph信任循环,聚焦在系统级调整上

本章小结

Ralph 的六条核心法则是它与其他 AI 工具最本质的区别所在。掌握这些哲学,你会更自然地理解为什么 Ralph 的配置是这样的,为什么某些操作是推荐的,为什么某些直觉做法在 Ralph 里是反模式。

在进入实操之前,我们先穿插一段主角故事——认识一位自媒体人李明轩,看看这六条抽象的法则是怎么精确对应他真实工作中的六个痛点的。这位主角将贯穿本书剩下的所有章节。然后第四章正式进入实操:把 Ralph 装到他的电脑上,也装到你的电脑上。