RLM 编程模型
理解这一章,你就理解了 Prime Agent 的全部:执行皆程序、子代理皆函数、状态跨轮存活。
1不变量一:执行皆程序
默认 RLM 运行时只暴露一个内置模型工具:ipython。其余一切能力都从它出发。
读文件、改文件、跑项目命令、转换结果、调技能、派子代理——全都从持久 Python 内核里写代码完成,而不是各自一个独立工具调用。Python 状态(变量、导入、函数、解析结果、任务句柄)跨工具调用、跨压缩(compaction)存活:
from pathlib import Path
config_files = list(Path(".").rglob("*.toml"))
large_files = [path for path in config_files if path.stat().st_size > 10_000]
跑项目自身的命令用 bash()——它走项目自己的环境:
result = await bash("npm run check")
print(result.output)
长命令不要阻塞等待,保留句柄、结束本轮即可:
checks = bash("npm test")
checks.pid # 先去干别的,进程组结束后会收到「Background command finished」通知
每条 bash() 是独立进程,但 Python 状态、os.chdir(...)、os.environ[...] 的改动会留在内核里、作用于后续 bash()。用 poll() / output() / tail() 查看句柄结果。
2不变量二:子代理皆函数
rlm 对象预装在内核里。rlm.spawn 派生真正的子代理——返回的是「准入句柄」,永远不是答案。
handle = await rlm.spawn(
"Review the authentication flow for security issues",
name="auth-reviewer",
)
print(handle.rlm_child_id, handle.name, handle.session_dir, handle.model)
要并行就分开调用、然后结束本轮,不要原地等待:
api_review = await rlm.spawn("Review the public API", name="api-reviewer")
test_review = await rlm.spawn("Review the test coverage", name="test-reviewer")
integration_audit = await rlm.spawn("Run the slow integration audit", name="integration-audit")
结果只通过两条路回来:子代理显式回复的 agent_message,或写到文件里。子代理在自己的会话里这样回话:
await agent_message.send(message, receiver_role="parent")
父代理也可以对保留的子代理追问:
await agent_message.send(
"Check the newly added regression test.",
receiver_role="child",
receiver_name=api_review.name,
)
子代理注册表跨压缩、跨内核重启、跨父会话恢复存活:
children = await rlm.list_subagents()
for child in children:
print(child.session_name, child.status, child.active_session_id)
# 上下文不再需要时才删除
await rlm.delete_subagent(children[0])
3不变量三:状态为「跨轮」而设计
RLM 编程模型默认假设:有用的活可能要跑很多轮,甚至跑过终端关闭。
- 自动压缩:老上下文被摘要,最近消息与内核状态保留;
- daemon 支撑的 worker:客户端脱离,活动会话照常运行;
- 子代理注册表与会话工件:子代理可恢复、可寻址;
- 心跳与定时:会话稍后被重新唤起;
- 持久目标 / 自主模式:目标跨轮活跃,延续受预算约束。
Python 技能需要「内核之外」的权威状态时(目标、消息、心跳、压缩),通过 rlm.host_request(...) 发起类型化宿主请求,由 TypeScript 宿主校验并执行状态迁移——凭据、提供商调用、transcript 写入、调度都不进 Python。
Python 内核以 worker 的操作系统权限运行模型生成的代码,它是「持久控制环境」而非安全沙箱。审查第三方技能;不可信仓库与指令请放进外部沙箱或受限环境。