Rein¶
5 行代码,把任意大模型变成能调工具、自己循环干活的 agent。
一个极薄但生产级的单-agent harness(智能体运行时)。反 LangChain 重抽象,把「单 agent 的 loop + 工具 + 可控 + 可观测」做到极致。
就 5 行¶
from rein import Agent
agent = Agent("anthropic/claude-opus-4-8")
@agent.tool
def now() -> str:
"返回当前日期"
return "2026-06-28"
print(agent.run("今天几号?用工具查。"))
没有 API key?用内置的 MockProvider 不联网就能跑通完整的「模型 → 调工具 → 回填 → 再回答」多轮循环。
为什么用 Rein¶
-
一键多厂商
Agent("anthropic/...")改成Agent("openai/gpt-4o")就换厂商。底层 wrap LiteLLM,覆盖 100+ 模型;支持fallback=[...]主备自动切换。 -
可暂停 · 可恢复
暂停 = 把会话存盘,恢复 = 把会话喂回去。天然支持人工审批(HITL)、长任务断点续跑、错误重试 —— 跨进程也成立。
-
熔断四道闸
轮数 / token / 超时 / 重复检测,任一触顶就安全停下。生产头号事故「agent 死循环烧光预算」,这是兜底。
-
流式输出
async for chunk in agent.astream(...)实时吐字。流式是旁路观测,不改状态机主干 —— 与恢复机制正交。 -
洋葱中间件
一套机制撑起所有扩展:中间件、钩子、事件。环绕单步推进、栈每步重建,所以和「中断/恢复」天然兼容。
-
一键起项目
rein new myagent生成一个能直接跑的起点(就一个main.py,不堆空目录)。rein dev热重载开发。
设计哲学:极薄,但生产级¶
机制进核心,实例走扩展,重依赖走 extras。
- 核心依赖
pydantic+anyio+litellm(装完即接入真实大模型);docker / opentelemetry / typer 仍是按需安装的可选 extras。 - 可序列化的状态(Session)+ 无状态的推进(loop):这一条地基,让暂停、恢复、压缩、中间件全都成立。
- 不做多 agent 编排 / RAG 大生态:聚焦把「单 agent harness」这件事做到极致。
它能干什么¶
工具型 agent —— 让模型调你的 Python 函数(查数据库、读文件、调 API),自己循环到完成。
带审批的危险操作 —— permission="ask",执行 delete_db 这类工具前暂停等你点头。
长时间任务 —— 上下文超窗自动压缩;跑一半存盘,改天接着跑。
可观测的生产部署 —— 结构化 RunResult + OpenTelemetry 导出,一次运行的时间线尽收眼底。
准备好了吗?