Cersei — Rust 编程智能体 SDK
用可组合的库函数构建编程智能体:工具执行、LLM 流式输出、子智能体编排、图记忆与 MCP 一应俱全。
提供了多种权限策略(AllowAll/AllowReadOnly/DenyAll/RuleBased/Interactive)和权限事件流,但快速上手示例默认 AllowAll,缺乏沙箱、bash 分类器细节、密钥存储细节及外部副作用(shell、cron、web)的防护证据;'逆向工程 Claude Code' 的来源声明使归属存疑。
架构图与 Cargo workspace 成员一致,依赖统一用 workspace 版本管理并有 musl 静态构建说明,错误处理用 thiserror/anyhow;但文档存在 'cercei-tools' 拼写错误,且未提供实际失败消息样例。
目标受众明确(嵌入式 SDK 开发者与 CLI 用户),多 provider(Anthropic/OpenAI/Ollama/Azure/vLLM)、技能双格式兼容、CLI 配置分层均覆盖;但边界描述多依赖 README 声明而非接口文档。
README 信息架构出色(概念、架构、示例、基准、扩展点分层清晰),MIT 全文齐备,示例丰富;但仅 git 安装、无 CHANGELOG、版本 0.2.x 命名不稳定、维护依赖单一作者、无治理或更新承诺。
输出可用性较好(JSON 模式、NDJSON、事件广播、reporter),作为 Rust 编码 agent SDK 填补空白;但性能收益全部基于自报基准,未在本仓库内可独立复核,成本收益主张需保留。
基准数字引用了未随附的 REPORT.md 与脚本,'160 单元测试/0 失败' 无法静态核实;事实与营销(77,000x 对比)大体分离但缺乏第三方佐证,扣分在于关键主张无仓库内可追溯证据。
- 快速上手示例默认 AllowAll 权限策略,嵌入式使用时应改用 Interactive 或 RuleBased 并显式限制工具集。
- 所有性能对比数据(如 77,000x 内存召回)为自报基准,采用前应自行运行 bench 脚本复核。
- 该 SDK 暴露 shell、cron、web 等强副作用工具,嵌入产品前需审查沙箱与审计钩子实现。
- 发布方身份未经验证且自述为逆向工程产物,企业合规场景需评估知识产权风险。
- 版本为 0.2.x 且无 CHANGELOG,API 可能频繁变动,锁定具体 commit 再依赖。
这个 Agent 能做什么,适合哪些场景?
Cersei(pacifio/cersei)是一个 MIT 许可的 Rust SDK,把生产级编程智能体的全部构件封装为可组合的库函数。它由多个 crate 组成:cersei-provider(Anthropic 与 OpenAI 兼容后端,支持 Ollama、Azure、vLLM)、cersei-tools(30+ 内置工具及 #[derive(Tool)] 自定义宏)、cersei-agent(Agent 构建器与智能体循环)、cersei-memory(文件 + Grafeo 图记忆、会话 JSONL 持久化)、cersei-hooks、cersei-mcp(JSON-RPC 2.0 stdio 客户端)等。仓库还附带基于该 SDK 的完整 CLI 智能体 Abstract(abstract-cli),一个二进制、零运行时依赖。执行模型是异步的智能体循环,通过回调、广播通道或双向流三种方式暴露实时事件。README 报告 160 个单元测试与 262 项压力检查全部通过,基准测试对比了 Abstract CLI 与 Claude Code 的启动、内存和工具调度开销。
提供 Agent::builder() API:指定 provider(Anthropic::from_env() 或 OpenAi 兼容端点)、挂载工具集(cersei::tools::coding()、filesystem()、shell()、web()、planning()、scheduling()、orchestration())、设置权限策略(AllowAll、Interactive 等)后执行 run_with() 或 run_stream()。支持 #[derive(Tool)] 十行内定义自定义工具;AgentTool 与 Coordinator 模式实现子智能体并行编排;MemoryManager 提供三层记忆(md 文件扫描、CLAUDE.md 层级合并、Grafeo 图存储与 recall 查询);SkillTool 自动发现 .claude/commands 与 .claude/skills 两种格式的技能;McpManager 通过 stdio/SSE 连接外部 MCP 服务器;另有自动压缩(auto_compact)、思考预算、effort 等级与 Anthropic OAuth PKCE 登录。配套的 Abstract CLI 可通过 cargo install 安装,支持 REPL、--resume、-- 等。
- Rust 开发者想在现有应用中嵌入编程智能体,而非分发独立 CLI 产品
- 团队想构建 Claude Code 或 OpenCode 的替代品,需要多 provider 支持与可定制的工具/权限体系
- 需要在本地 LLM(Ollama、vLLM)上运行智能体以避免云端 API 成本与数据外发
- 需要子智能体并行编排与任务系统(TaskCreate/TaskUpdate 等)来分解大型重构工作
- CI 流水线中需要低开销、可 JSON 输出的编程智能体(abstract --no-permissions --)
- 需要低成本长期记忆:Abstract 的图记忆 recall 实测 98μs,无需每次召回都调用 LLM
这个 Agent 有哪些优点和局限?
- 库形态而非 CLI,可直接嵌入任意 Rust 应用,工具调度在进程内完成(Read 实测 0.09ms)
- 多 provider:Anthropic(含 OAuth)+ OpenAI 兼容端点,覆盖 Ollama、Azure、vLLM
- 三层记忆体系含可选 Grafeo 图层,记忆召回 98μs 且无需 LLM 调用,与 Claude Code 的 7.5 秒 LLM 排序形成鲜明对比
- 完整的扩展点:impl Provider / Tool / PermissionPolicy / Memory / Hook / Reporter,加上 #[derive(Tool)] 宏
- 原生 MCP 客户端(stdio/SSE/远程桥接)与 Claude Code + OpenCode 双格式技能兼容
- 需要 Rust 工具链,非 Rust 团队接入成本高;README 中 #[derive(Tool)] 需额外引入 async-trait 与 cersei-tools 依赖
- 记忆功能依赖项目自研的 Grafeo 存储,生态成熟度与长期维护风险未经第三方验证
- Abstract 与 Claude Code 的对比数字由项目自己的 run_tool_bench.sh 脚本产出,属自报基准,采信需自行复测
- cersei 包在 README 中通过 git 依赖安装,未见 crates.io 发布证据,版本锁定与供应链管理需额外处理
- 权限系统需自行配置策略(AllowAll 显然不适合生产),Interactive/RuleBased 策略的实际行为文档仅在站点文档中
如何安装或部署这个 Agent?
在 Cargo.toml 中添加:
[dependencies]
cersei = { git = "https://github.com/pacifio/cersei" }
tokio = { version = "1", features = ["full"] }
anyhow = "1"可选图记忆:
cersei-memory = { git = "https://github.com/pacifio/cersei", features = ["graph"] }安装 Abstract CLI:
cargo install --path crates/abstract-cli如何使用这个 Agent?
需要设置相应 provider 的环境变量(如 Anthropic API key,或 OpenAi::builder().base_url("http://localhost:11434/v1") 指向 Ollama)。最小示例:
let output = Agent::builder()
.provider(Anthropic::from_env()?)
.tools(cersei::tools::coding())
.permission_policy(AllowAll)
.run_with("Fix the failing tests in src/").await?;
println!("{}", output.text());
CLI 用法:abstract 启动 REPL;abstract "fix the failing tests" 单次执行;abstract --resume 恢复上次会话;abstract --no-permissions -- 用于 CI。运行测试:cargo test --workspace(160 个单元测试)。
这个 Agent 与同类方案有什么区别?
README 将 Cersei 与 Claude Code、OpenCode 直接对比:Claude Code 与 OpenCode 是 TypeScript CLI 应用,不可嵌入、启动约 269–300ms、二进制 174MB;Cersei 是 Rust 库,可嵌入、多 provider、自定义工具通过 impl Tool / #[derive(Tool)];Abstract CLI(基于 Cersei)启动 32ms、二进制约 6MB、RSS 4.9MB,技能同时兼容两种格式。适合已在 Rust 生态或需要嵌入能力的团队;若只需开箱即用的 CLI 且接受 Node.js 运行时,Claude Code 本身仍更省事。