乐于分享
好东西不私藏

Ralph:让AI在无限循环中自主完成软件开发

Ralph:让AI在无限循环中自主完成软件开发

Ralph:让AI在无限循环中自主完成软件开发

引言:从"人在循环中"到"坐在循环之上"

想象这样一个场景:深夜,你疲惫地靠在椅背上,却仍然不得不盯着屏幕,等待AI一行行生成代码,然后逐行审核、逐行修正。GitHub Copilot像一个热情的实习生——反应迅速,但总是需要你时刻盯着。
这就是当下大多数开发者与AI协作的真实写照:"人在循环中"(Human-in-the-loop)
但如果我告诉你,有一种方法能让AI像不知疲倦的机器人一样持续工作——在你睡觉时、在你度假时、在你喝咖啡时——自主完成代码编写、测试运行、错误修复,直到任务彻底完成?
这就是Ralph
这个名字来自《辛普森一家》中那个呆萌可爱的小男孩Ralph Wiggum——他总是充满热情地尝试各种事情,虽然经常搞砸,但从不放弃。这种"不管挫折,持续迭代"的精神,正是Ralph架构的核心隐喻。
今天,让我们深入探索这个正在悄然改变软件工程范式的AI自主代理模式。

一、Ralph到底是什么?

1.1 名字的由来

Ralph由澳大利亚开发者Geoffrey Huntley提出,其灵感直接来源于《辛普森一家》中的Ralph Wiggum角色。
这个选择绝非偶然。Ralph Wiggum的经典台词包括:
  • "我在牛奶里了!"(他以为自己在食物里)
  • "我把我的作业用狗吃了"(实际上他只是忘了做)
  • 永远充满热情,永远乐观,即使刚刚犯了错
这完美地描述了当前AI代理的特质:它们充满热情、乐于尝试,但会毫不犹豫地犯同样的错误第二次

1.2 核心定义

Ralph的核心定义可以这样概括:
Ralph是一种基于无限循环(Infinite Loop)严格反馈机制(Feedback Loops)的AI自主代理执行模式,让AI工具在无人类干预的情况下,自主完成从需求理解、代码编写、测试验证到提交更改的完整闭环。
但请注意,Ralph不是单一产品,而是一种工程方法论(Pattern)
它不依赖任何特定模型或工具。你可以将其应用于Claude Code、OpenAI Codex、GitHub Copilot CLI,甚至其他任何AI编程工具。Ralph是一种思维方式,一种让AI持续迭代直到任务完成的哲学。

1.3 最简形态

Ralph的精髓可以用一行Bash代码概括:
while :; do cat PROMPT.md | claude-code; done
这就是Ralph的全部秘密——一个简单的无限循环,不断调用AI编码代理,让它在每次迭代中查看自己之前的工作成果,通过文件系统看到代码的变化,通过Git历史看到提交记录,然后继续改进。
"Ralph是一个确定性笨拙的编排器,在不确定的世界中实现最终一致性。"
—— Geoffrey Huntley

二、为什么我们需要Ralph?

2.1 传统模式的两大痛点

痛点一:上下文衰减(Context Decay)

想象你和一个记忆力有限的助手对话。第一轮对话,他完美理解了你的需求。第二轮,他还记得80%。第三轮,可能只剩60%。到了第十轮,他可能已经把你"修复登录bug"的需求和"优化数据库查询"搞混了。
这就是上下文衰减问题。
随着对话轮次增加,噪音信息不断积累,与当前任务无关的历史上下文会稀释关键信息。LLM虽然不会真的"遗忘",但上下文窗口的有限容量意味着:越早的信息被"挤压"到边缘,质量和相关性越低。
更糟糕的是,这种衰减是指数级恶化的。LangChain的实验数据显示,当对话超过20轮后,AI输出的错误率显著上升,其中一个主要原因就是上下文质量的崩溃。

痛点二:人类带宽限制

AI的生成速度远超人类审核速度。
以Claude Code为例,它可以在几分钟内生成数百行代码。但一个普通开发者审核这些代码、提出修改意见、再让AI修正,可能需要数小时甚至数天。
这意味着:人类成了系统吞吐量的瓶颈
你花了10分钟等待AI生成代码,然后花2小时审核它。这不是AI在帮你工作,而是你在帮AI工作。

2.2 从"副驾驶"到"自主代理"的跨越

2026年2月,OpenAI发布了一篇重磅博客:他们的工程团队在五个月内,借助Codex完成了1500个Pull Request中100%的代码编写
几乎同一时间,LangChain的工程师开展了一个对照实验:使用完全相同的模型(gpt-5.2-codex),仅改造其外围系统(即Harness工程)。
结果令人震惊:
  • Terminal Bench 2.0评分从52.8%飙升至66.5%
  • 排名从第30位跃升至第5位
这13.7个百分点的提升,完全来自Harness(支撑体系)的改进,而非模型本身
模型决定了能力上限,而Harness决定了你能逼近这个上限多少。
Ralph正是这样一套Harness工程方法论。它让你从"副驾驶"时代的实时监控模式,跃迁到"自主代理"时代的委托-监督模式。

三、核心设计哲学

3.1 人在循环之上,而非循环之中

Ralph提倡的核心理念是:工程师转变为"架构师"
人类定义成功标准(PRD),Ralph在后台通过不断试错逼近正确答案。你只需要在关键节点监督和决策,而非全程盯着屏幕。
这意味着你可以:
  • 设定任务目标,然后去睡觉
  • 定义验收标准,让Ralph自主迭代
  • 定期回来检查进度,而非时刻监控
用Geoffrey Huntley的话说:"Ralph让你在你睡觉时构建产品。"

3.2 清洁上下文(Clean Context)理论

Ralph的核心架构决策是:每次迭代都从全新的上下文开始
这与传统AI对话完全不同:
表格
对比项传统模式Ralph模式
上下文持续累积,噪音增多每次全新,干净清晰
记忆主体LLM内部隐式状态外部文件系统显式存储
状态继承历史对话残留只通过文件/Git传递
Ralph通过两个机制实现"清洁上下文":
无记忆主体:每次任务启动都销毁旧实例,重新启动新进程。这避免了被之前的错误逻辑"污染"。
状态外化:"记忆"存储在显式文件系统中,而非LLM的隐式状态里。LLM每次都从文件系统"读取"之前的工作成果。

3.3 最终一致性与"确定性的笨拙"

LLM的输出是概率性的——不确定性是其本质特性。
Ralph的解决方案是:接受不确定性,然后通过严格的外在反馈循环来约束它。
代码生成 → 编译/测试 → 失败 → 记录原因 → 重新生成 → 编译/测试 → 通过
只要验证机制(Backpressure)可靠,系统最终会收敛到正确解
这创造了一种独特的"工程效率套利":
  • 人类修复Bug成本:约$100(初级工程师2小时)
  • Ralph试错成本:即使尝试5次才成功,消耗500k tokens仅需约**$1.5**
只要单次尝试成本足够低,"暴力迭代"在经济上是完全成立的。

四、核心架构详解

4.1 状态持久化系统

Ralph通过四个文件实现状态的持久化和传递:

prd.json——任务控制中心

{
"stories": [
{
"id": "auth-001",
"title": "用户注册功能",
"passes": false,
"priority": 1
},
{
"id": "auth-002",
"title": "邮箱验证",
"passes": false,
"priority": 2
}
]
}
passes: false是驱动Ralph循环的唯一动力。每当一个story通过所有测试,Ralph就会更新这个字段,然后继续处理下一个未完成的任务。

progress.txt——长期记忆

这是一个追加写入的文件,记录:
  • 代码库的重要模式
  • 历史教训和踩坑记录
  • 特定文件的修改注意事项
示例内容:
# 2024-03-15 经验总结
## 数据库连接
- 使用连接池时,maxConnections不要超过20
- 记得在finally块中释放连接

## API响应格式
- 所有接口统一返回 {code, data, message} 结构
- 错误码定义在 codes.js 中

Git History——物理状态快照

每次成功的迭代都会生成一个Git提交。这实现了:
  • 操作的安全性和可回滚性
  • 清晰的增量变更历史
  • 跨分支的并行实验能力

AGENTS.md——操作规则和动态学习

这是一个随着项目演进不断更新的文件,记录AI代理需要遵守的规则:
# AGENTS.md - AI代理操作规范

## 项目约定
1. 所有API请求必须携带Authorization头
2. 使用async/await处理异步操作
3. 错误日志必须包含requestId用于追踪

## 代码风格
1. 组件文件使用PascalCase命名
2. 工具函数使用camelCase命名
3. 样式文件使用kebab-case命名

## 安全规范
1. 严禁在前端代码中硬编码API密钥
2. 用户密码必须加密存储
3. SQL查询必须使用参数化语句

4.2 双Prompt机制:规划与构建

Ralph在两种模式之间切换,通过不同的Prompt文件控制:

PROMPT_plan.md——规划模式

这是"昂贵"但必要的操作,只在项目开始或重大调整时运行:
你是一个软件架构师。请执行以下任务:

1. 阅读项目中的所有spec/*.md文件
2. 阅读当前的实现代码
3. 对比实现与规格的差异
4. 更新fix_plan.md,记录发现的每个问题

注意事项:
- 这是规划模式,**只分析不实现**
- 详细记录每个不符合规格的地方
- 评估实现与设计的偏差程度

PROMPT_build.md——构建模式

这是Ralph日常运行的模式,循环执行:
你是一个自主编码代理。请执行以下任务:

1. 阅读fix_plan.md,了解当前状态
2. 从列表中选择**最重要的**一个未完成任务
3. 阅读该任务对应的spec/*.md
4. 实现代码变更
5. 运行验证(typecheck + tests)
6. 如果验证通过,提交Git
7. 更新fix_plan.md,标记完成或记录新问题

**关键约束**
- 每次只做**一件事**
- 不要试图一次性解决所有问题
- 完成一件事后再处理下一件

4.3 核心循环流程

Ralph的每次迭代都遵循这个流程:
┌─────────────────────────────────────────────────────────────┐
│ 开始新迭代 │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│ 1. 读取 fix_plan.md —— 了解当前状态和待办事项 │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│ 2. 选择最高优先级任务 —— Ralph自主决策,非人工指定 │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│ 3. 读取相关spec —— 只加载当前任务相关的规格说明 │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│ 4. 实现变更 —— 编辑代码文件 │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│ 5. 运行验证 —— typecheck + tests(背压机制) │
│ 如果失败 → 记录原因 → 重试 │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│ 6. Git提交 —— 成功则提交,记录变更 │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│ 7. 更新fix_plan.md —— 标记完成或记录新发现的问题 │
└─────────────────────────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────┐
│ 8. 循环终止检查 │
│ - 所有任务完成?→ 输出 <promise>COMPLETE</promise> │
│ - 达到最大迭代次数?→ 退出并报告 │
│ - 否则 → 回到步骤1,开始新迭代 │
└─────────────────────────────────────────────────────────────┘

五、Ralph vs ReAct:两种范式的对决

ReAct(Reasoning + Acting)是另一种流行的AI Agent范式,强调"边想边做"。让我们对比两者的核心差异:
表格
对比维度ReActRalph
上下文管理隐式在对话窗口中累积外化在文件系统,每轮全新
记忆方式Agent内部隐式状态文件系统 + Git历史显式存储
验证机制可选,通常依赖Agent自我评估强制,背压机制(编译器+测试)
任务粒度多步连续执行,容易上下文膨胀每轮一个任务,保持专注
设计哲学边想边做,推理与执行交织循环中观察,持续调整
失败处理依赖Agent识别并自我修正外部验证强制触发修正
适用场景探索性任务,开放式问题明确的工程任务,规格清晰
上下文衰减严重,随对话轮次恶化无,每次迭代全新

关键差异解读

上下文衰减 vs 清洁上下文

ReAct在处理长程任务时,上下文窗口会不断膨胀,质量逐渐下降。Ralph通过"每次全新上下文"的机制从根本上避免了这个问题——无论项目运行多久,每次迭代的上下文质量都保持一致。

自我评估 vs 外部验证

ReAct依赖Agent自己判断"我是否完成了任务"。这在实践中往往是不可靠的——Agent可能会过早认为任务完成,或者陷入重复推理。
Ralph的解决方案是:让机器可验证的标准(如编译通过、测试通过)成为唯一的完成标准。Agent不能单方面宣布"我完成了",必须通过外部验证。

边做边想 vs 做中观察

ReAct追求Agent的"思考链"能够自我纠正。Ralph则承认Agent的局限性——它不依赖Agent的自我反思,而是通过重复迭代让错误被外部机制捕获和修正。

六、Ralph在Harness工程中的地位

6.1 Harness工程的五大组件

在AI Agent系统中,有四大结构性失效模式是LLM架构本身决定的,无法通过更好的提示词解决:
  1. 状态丢失:Agent无法跨会话保留信息
  2. 一次性贪心:Agent过早声明完成
  3. 过早完成:Agent未验证就认为成功
  4. 死亡循环:Agent在错误方向上反复尝试
Harness工程正是为解决这些问题而生的。Ralph提供了其中的关键组件:

组件一:可读化环境

所有状态必须外部化。Ralph通过文件系统和Git历史实现这一点:
AGENTS.md ← 轻量入口,极少改动
├── product-specs/ ← 用户故事 + 验收标准(按功能拆分)
├── design-docs/ ← 架构决策 + ADR记录
├── exec-plans/ ← 当前执行计划,频繁更新
├── db-schema/ ← 数据库结构,优先自动生成
└── security/ ← 安全规则,人工维护

组件二:任务状态机

Ralph的任务状态机定义清晰的状态转换:
  • draftplannedreadyrunningdone/failed
  • 状态转换通过SQLite数据库追踪
  • 依赖关系自动处理(完成任务解锁依赖者)

组件三:验证循环(背压机制)

这是Ralph最关键的设计:"不要浪费你的背压"
// 伪代码:验证循环的核心逻辑
async function executeWithBackpressure() {
while (hasUnfinishedTasks()) {
const task = selectNextTask();

// Agent执行
await agent.execute(task);

// 强制验证——这是"背压"的来源
const result = await runTests();

if (!result.success) {
// 验证失败 → 记录原因 → 下次迭代继续处理
recordFailure(task, result.errors);
continue;
}

// 验证通过 → 提交 → 处理下一个
await gitCommit(task);
updateTaskStatus(task, 'done');
}
}

组件四:架构强制

通过pre-commit hooks和CI/CD管道,Ralph确保代码在提交前满足架构规范。

组件五:循环检测

当Agent在某个问题上反复失败时,Ralph的循环检测机制会介入:
class LoopDetectionMiddleware {
private fileEditCounts: Map<string, number> = {};
private threshold = 5;

afterEdit(file: string) {
const count = this.fileEditCounts.get(file) || 0;
this.fileEditCounts.set(file, count + 1);

if (count > this.threshold) {
return {
type: 'intervention',
message: `你已编辑 ${file}${count} 次。请考虑完全不同的方案。`
};
}
return null;
}
}

6.2 与其他模块的协作

Ralph不是孤立的,而是整个Agent系统的执行引擎:
┌────────────────────────────────────────────────────────────────┐
│ Agent System │
├────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │
│ │ 工具管控 │ │ 记忆管理 │ │ 安全护栏 │ │
│ │ Tool Control │ │Memory Mgmt │ │ Safety Guardrails │ │
│ └──────┬───────┘ └──────┬───────┘ └──────────┬──────────┘ │
│ │ │ │ │
│ └──────────────────┼──────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Ralph: 执行循环与编排引擎 │ │
│ │ Plan → Act → Verify → (repeat until done) │ │
│ └────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ 反馈输出(Git历史、进度报告) │ │
│ └────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────┘

七、真实案例与效果

7.1 Geoffrey Huntley的CURSED项目

CURSED是一个使用Ralph模式构建的编程语言项目。在没有任何手动编码的情况下:
  • 开发周期:3个月
  • 代码来源:100% AI生成
  • 验证方式:通过Ralph的背压机制确保代码质量
这个项目证明了:在正确的Harness支撑下,AI可以完成从0到1的完整软件开发工作。

7.2 成本对比分析

让我们做一个具体的成本计算:
表格
方式单次成本尝试次数总成本时间
人工修复$50-100/小时1次$50-1001-2小时
Ralph迭代$0.3-0.5/次3-5次$1-2.510-30分钟
即使Ralph尝试5次才成功,总成本仍然比人工修复低50-100倍

7.3 效率杠杆效应

Ralph的核心理念是:用算力换人力
当AI生成代码的成本接近零时,传统的"谨慎编码"思维反而成了瓶颈。Ralph允许你:
  • 让AI快速生成,不必每行都深思熟虑
  • 通过自动化测试验证质量
  • 通过迭代发现并修复问题
  • 把节省的时间用于架构设计和关键决策
这创造了真正的工程杠杆——一份工程师的时间,可以撬动数十倍甚至数百倍的AI工作时间。

7.4 GitHub生态数据

Ralph模式已经在开源社区获得了广泛认可:
  • GitHub Stars:10,000+
  • 开源实现:多个不同语言的版本
  • 社区活跃度:持续增长中
  • 集成支持:Claude Code官方插件、Copilot CLI支持

八、Ralph的适用场景

8.1 最适合的场景

绿地项目(Greenfield Projects)
从零开始构建的项目,规格相对清晰,没有历史包袱的负担。Ralph可以快速推进项目进度。
重复性实现工作
当规格已经明确,需要大量相似模式的代码时(如CRUD操作、API端点、测试用例),Ralph的迭代模式非常高效。
自动化任务
  • 自动化测试编写
  • 类型检查和修复
  • 代码格式化和linting
  • 文档生成
从清晰规格构建
当PRD/Spec足够详细和准确时,Ralph可以严格按照规格实现功能。
Bug修复和代码重构
Ralph可以持续处理bug列表或重构任务清单,每次处理一个,直到全部完成。

8.2 不适合的场景

探索性/创造性任务
当需求本身不清晰,需要大量试错和讨论时,Ralph的循环模式不太适用。
需要深度领域知识的任务
Ralph依赖显式的知识传递(通过AGENTS.md等文件)。如果领域知识难以结构化表达,效果会打折扣。
安全性极高的代码
虽然Ralph可以配置安全护栏,但对于安全关键系统,人类的深度审核仍然不可替代。

九、如何使用Ralph

9.1 快速上手流程

步骤一:初始化项目

# 克隆Ralph仓库
git clone https://github.com/snarkertank/ralph
cd ralph

# 安装依赖
npm install

# 初始化新项目
./ralph.sh init my-project
cd my-project

步骤二:编写规格(PRD)

创建prd.json,定义所有需要完成的任务:
{
"stories": [
{
"id": "feat-auth-001",
"title": "实现JWT用户认证",
"description": "...",
"acceptance_criteria": [
"用户可以使用邮箱密码登录",
"登录成功后返回JWT token",
"token有效期为24小时",
"无效token返回401错误"
],
"passes": false
}
]
}

步骤三:运行Ralph

# 运行Ralph,设置最大迭代次数
./ralph.sh 50

# 或者使用Claude Code插件
/ralph-loop "实现JWT用户认证。验收标准:..." --max-iterations 20

9.2 项目结构

一个典型的Ralph项目结构:
my-project/
├── prd.json # 产品需求文档(任务清单)
├── fix_plan.md # 动态执行计划(Ralph维护)
├── progress.txt # 学习和经验记录
├── AGENTS.md # AI代理行为规范
├── specs/ # 详细规格文档
│ ├── auth.md
│ ├── api.md
│ └── database.md
├── src/ # 源代码
├── tests/ # 测试文件
└── ralph.sh # Ralph执行脚本

9.3 实际使用流程示例

让我们用一个具体例子演示Ralph的工作流程:
场景:为博客系统添加评论功能
第一步:人类定义PRD
{
"stories": [
{
"id": "comment-001",
"title": "评论数据模型",
"passes": false,
"criteria": ["comment表包含id, post_id, user_id, content, created_at"]
},
{
"id": "comment-002",
"title": "评论API接口",
"passes": false,
"criteria": ["POST /api/posts/:id/comments 创建评论", "GET /api/posts/:id/comments 获取评论列表"]
},
{
"id": "comment-003",
"title": "评论前端组件",
"passes": false,
"criteria": ["CommentList组件", "CommentForm组件"]
}
]
}
第二步:运行Ralph
$ ./ralph.sh 100

Ralph Loop Started - 最大迭代: 100
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[迭代 1/100]
✓ 读取 prd.json - 发现3个待完成任务
✓ 选择最高优先级: comment-001 (评论数据模型)
✓ 实现代码...
✓ 运行测试...
✓ Git提交: feat: 实现评论数据模型
✓ 更新 prd.json: comment-001 passes=true

[迭代 2/100]
✓ 读取 prd.json - 发现2个待完成任务
✓ 选择最高优先级: comment-002 (评论API接口)
...
第三步:人类定期检查
# 查看进度
$ cat progress.txt

# 查看Git历史
$ git log --oneline

# 检查当前状态
$ cat fix_plan.md

十、开源生态与工具

10.1 主要开源实现

表格
项目Stars语言特点
snarktank/ralph10K+TypeScript经典实现,功能完整
RefoundAI/ralph-PythonDAG任务管理,SQLite存储
open-ralph-wiggum-TypeScript多Agent支持,CLI工具

10.2 Ralphify工具

open-ralph-wiggum提供了一个便捷的CLI工具:
# 安装
npm install -g @th0rgal/ralph-wiggum

# 使用Claude Code
ralph "实现评论功能" --agent claude-code --max-iterations 20

# 使用Codex
ralph "添加单元测试" --agent codex --max-iterations 15

# 使用Copilot CLI
ralph "修复登录bug" --agent copilot --max-iterations 10

10.3 与RALPH.md标准的关系

RALPH.md是一种新兴的Markdown标准格式,用于结构化描述AI代理任务的规格:
# Ralph 项目规格示例

## 功能:用户认证系统

### 描述
实现完整的JWT用户认证系统,包括注册、登录、令牌刷新。

### 验收标准
- ✅ 用户可以使用邮箱注册
- ✅ 用户可以使用邮箱密码登录
- ✅ 登录返回JWT访问令牌(24小时有效期)
- ✅ 可以使用刷新令牌获取新访问令牌
- ✅ 所有认证接口有完整的单元测试

### 技术约束
- 使用bcrypt进行密码哈希
- JWT secret从环境变量读取
- 数据库使用PostgreSQL

### 任务清单
- [ ] 创建users表迁移
- [ ] 实现User模型
- [ ] 实现AuthController
- [ ] 实现JWT服务
- [ ] 编写认证相关测试

十一、总结与展望

11.1 Ralph的核心价值

Ralph带来了一场范式转变:将开发者从"循环中"解放为"循环之上"
表格
对比维度传统模式Ralph模式
开发者角色实时监控者架构设计师
工作方式同步交互异步委托
关注焦点逐行代码规格与验收标准
价值定位代码编写者系统指挥官

11.2 从"副驾驶"到"自主代理"

GitHub Copilot开启了"副驾驶"时代——AI辅助人类工作。
Ralph代表"自主代理"时代的来临——人类定义目标,AI自主实现。
这不是AI取代人类,而是人类角色的升级:从执行者转变为决策者和监督者。

11.3 未来展望

Ralph模式仍在快速演进,几个值得关注的方向:
📋 RALPH.md标准化
随着RALPH.md格式的推广,AI代理的规格描述将更加标准化。未来的AI工具可能原生支持RALPH.md格式。
🔧 多工具集成
Ralph目前主要与代码编写工具配合。未来可能扩展到:
  • 自动化部署
  • 监控告警处理
  • 数据分析管道
  • 基础设施配置
🎯 更复杂的编排逻辑
当前Ralph是相对扁平的循环。未来可能出现:
  • 多Agent协作(规划Agent + 执行Agent + 验证Agent)
  • 基于依赖关系的DAG执行
  • 智能任务优先级调度
🛡️ 安全与治理
随着Ralph在各行业的应用,安全和合规将成为重要议题:
  • 代码安全扫描集成
  • 审计日志和追溯
  • 权限控制和沙箱隔离

结语

Ralph的故事告诉我们:有时候,最简单的解决方案恰恰是最强大的
一行Bash循环,加上文件系统作为记忆系统,再配合严格的验证机制,就创造了一种让AI能够真正自主工作的模式。
这不是魔法,而是对AI局限性的深刻洞察和务实应对。
下次当你需要AI帮你完成一个明确的编程任务时,不妨试试Ralph——编写规格,设定目标,然后让AI在你睡觉时把它实现出来。
也许Ralph Wiggum真的能教给我们一些东西:不是每个问题都需要一步到位,持续迭代才是抵达终点的可靠方式。
参考资料
  1. Geoffrey Huntley - "Ralph is a Bash loop"
  2. ZeroSync - "The Ralph Loop: Long-Running AI Agents"
  3. Shipyard - "The Ralph Loop: a pattern for making Claude iterate"
  4. LangChain Blog - "AI Agent Harness Engineering"
  5. RefoundAI/ralph - GitHub Repository
如果你觉得这篇文章对你有帮助,欢迎转发给需要的朋友。关注公众号,获取最新AI资讯和知识。
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-19 19:38:11 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/535590.html
  2. 运行时间 : 0.178812s [ 吞吐率:5.59req/s ] 内存消耗:4,812.80kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=75c9e6cf39a04203ff1de0e8dba6fd8a
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.80 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000829s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001313s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000580s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000634s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001178s ]
  6. SELECT * FROM `set` [ RunTime:0.000519s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001363s ]
  8. SELECT * FROM `article` WHERE `id` = 535590 LIMIT 1 [ RunTime:0.001040s ]
  9. UPDATE `article` SET `lasttime` = 1776598691 WHERE `id` = 535590 [ RunTime:0.009088s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000505s ]
  11. SELECT * FROM `article` WHERE `id` < 535590 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000779s ]
  12. SELECT * FROM `article` WHERE `id` > 535590 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000789s ]
  13. SELECT * FROM `article` WHERE `id` < 535590 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001307s ]
  14. SELECT * FROM `article` WHERE `id` < 535590 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001842s ]
  15. SELECT * FROM `article` WHERE `id` < 535590 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002727s ]
0.181692s