你说得对,让我查看代码确认 Ralph Loop 和 _agent_loop 的区别:
toolName: view_files
status: success
filePath: c:\GitHub\kimi-cli\src\kimi_cli\soul\kimisoul.py
toolName: search_by_regex
status: success
Ralph Loop vs _agent_loop 的区别
┌─────────────────────────────────────────────────────────────────┐
│ run() 入口 │
└────────────────────────────┬────────────────────────────────────┘
│
┌───────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌─────────────┐ ┌──────────┐
│ 斜杠命令 │ │ Ralph Loop │ │ 普通对话 │
└──────────┘ │ FlowRunner │ └────┬─────┘
└──────┬──────┘ │
│ │
┌────────┴────────┐ │
│ FlowRunner.run()│ │
│ (任务级循环) │ │
└────────┬────────┘ │
│ │
┌────────┴────────┐ │
│ _flow_turn() │ │
│ ───────────── │ │
│ _turn() │◄───────┘
└────────┬────────┘
│
┌────────┴────────┐
│ _agent_loop() │
│ (步骤级循环) │
└─────────────────┘
关键区别:
| 特性 |
Ralph Loop |
_agent_loop |
| 层级 |
任务级循环 |
步骤级循环 |
| 实现 |
FlowRunner.ralph_loop() |
KimiSoul._agent_loop() |
| 用途 |
自动重复执行任务,让 LLM 决定何时停止 |
执行单次对话的多步骤 |
| 停止条件 |
LLM 选择 "STOP" 或达到最大迭代 |
无工具调用或工具被拒绝 |
| 内部调用 |
调用 _flow_turn() → _turn() |
被 _turn() 调用 |
Ralph Loop 的 Flow 结构:
BEGIN ──► R1(执行任务) ──► R2(决策)
│
┌─────────┴─────────┐
▼ ▼
CONTINUE STOP
(回到 R2) (END)
修正后的流程图:
Ralph Loop 是外层的任务自动循环,而 _agent_loop 是内层的步骤执行循环,两者是嵌套关系。