《Kimi Code CLI 详解》第4-6章:智能体循环、工具系统与子代理机制

《Kimi Code CLI 详解》第4-6章

第四章:智能体循环与上下文管理

智能体循环的本质

Kimi Code CLI 不是简单的”请求-响应”模式,而是一个迭代的、目标导向的过程:


友情链接: 借一步  背多分   ACEJoy


 

Run (运行)
├── Turn (回合) - 对应一次用户输入
│ ├── Step (步骤) - 对应一次 LLM 调用
│ │ ├── LLM API 调用
│ │ ├── 工具调用(可能有多个,并行执行)
│ │ └── 上下文更新
│ │ └── (可能重复多个 Step)
│ └── 回合结束
└── (可能重复多个 Turn)

_agent_loop 核心机制

async def _agent_loop(self) -> TurnOutcome:
step_no = 0
while True:
step_no += 1
if step_no > self._loop_control.max_steps_per_turn:
raise MaxStepsReached(...)

# 上下文压缩检查
if self._context.token_count + reserved >= max_context_size:
await self.compact_context()

step_outcome = await self._step()

# 处理 D-Mail 回溯
if back_to_the_future:
await self._context.revert_to(checkpoint_id)

上下文管理

持久化格式:JSON Lines,支持会话恢复
Checkpoint 机制:支持时间回溯(D-Mail)
压缩策略:自动触发,保留关键信息

第五章:工具系统与 MCP 集成

KimiToolset:工具的管理中心

class KimiToolset:
def __init__(self):
self._tool_dict: dict[str, ToolType] = {}
self._mcp_servers: dict[str, MCPServerInfo] = {}

依赖注入

工具通过构造函数声明依赖,系统自动装配:

class Shell:
def __init__(self, config: Config, approval: Approval):
# 自动注入 Config 和 Approval 实例
...

内置工具

| 工具 | 功能 |
|——|——|
| ReadFile/WriteFile | 文件读写 |
| Shell | 安全执行命令 |
| Search/FetchURL | 网络搜索和获取 |
| Task | 创建子代理任务 |
| SetTodoList | 管理待办事项 |

MCP 协议

MCP(Model Context Protocol)是开放协议,支持集成外部工具服务:

{
"mcpServers": {
"my-server": {
"url": "https://api.example.com/mcp",
"headers": {"Authorization": "Bearer token"}
}
}
}

审批机制

– 敏感操作需要用户批准
– 支持 YOLO(自动批准)模式
– 会话级别的白名单

第六章:子代理与任务分发

LaborMarket:子代理的市场

class LaborMarket:
def __init__(self):
self.fixed_subagents: dict[str, Agent] = {} # 固定子代理
self.dynamic_subagents: dict[str, Agent] = {} # 动态子代理

Task 工具

主代理分配任务给子代理:

async def __call__(
self,
description: str,
subagent_name: str | None = None,
prompt: str | None = None,
) -> ToolReturnValue:

DenwaRenji(电话微波炉)

独特的 D-Mail 机制,灵感来自《命运石之门》:

class DenwaRenji:
def send_dmail(self, checkpoint_id: int, message: str):
"""发送 D-Mail(只能调用一次)"""

def fetch_pending_dmail(self) -> DMail | None:
"""获取待处理的 D-Mail"""

子代理可以向父代理”发送消息到过去”,触发上下文回溯。

多代理协作模式

1. 主从模式:主代理分配,子代理执行
2. 流水线模式:多个子代理按顺序处理
3. 并行模式:多个子代理同时执行
4. 层次化模式:子代理有自己的子代理

思考与讨论

1. D-Mail 机制的设计有什么优缺点?你会如何改进它?
2. 依赖注入在工具系统中解决了什么问题?
3. 设计一个适合多代理协作的任务场景,描述代理分工。

本系列共10章,前3章已发布。完整内容已保存至本地 book/ 目录。

留下评论

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网 沪ICP备2024052574号-1