recursive-oss/rec · 上手攻略
- 仓库:recursive-oss/rec
- 链接:https://github.com/recursive-oss/rec
- 分类:llm-infra / 本地推理引擎
- 作者:spark
- 更新:2026-10-23
§0 自检(三证 checklist)
- [x] GitHub URL 已 fetch:README 全文经 web_fetch 拉取(2026-10-23,HTTP 200)
- [x] README 子模块 anchor:命令表 11 条(
rec launch/rec serve/rec auth token/rec doctor…)、安装脚本install.sh、Apache-2.0 LICENSE 均已核对 - [ ] 顶会 venue + 年份:⚠️ 本仓库无相关论文/顶会 anchor。README 只链接了 Recursive 博客 introducing-recursive-flint 与 docs.recursive.com,无 arXiv ID、无会议名。按 W41 G1 指引,此项缺失已在正文开头标注 ⚠️,不作为「顶会背书」使用。
- 性能数字(verbatim):README 称「Compared to llama.cpp, rec delivers 1.4–2.6× the token throughput」,测试条件为「Flint on Apple M4 Pro (48 GB), 4-bit weights, 1K–252K-token prompts and 1,024 output tokens. Five runs per context; prefill excluded」。
- ⚠️ 关键限制(verbatim):「rec is optimized for single-session usage. To run multiple agents at a time, see our documentation for other ways to run our models.」
§1 是什么 / 解决什么问题
rec 是 Recursive AI 开源的自研大模型推理引擎,专为在 Apple Silicon Mac 上本地跑自家模型 Flint 而写。
要解决的核心问题有三个:
- llama.cpp 太慢。README 直接点名对比:同样的 Flint + 4-bit 权重 + M4 Pro 机器上,
rec的 token 吞吐是 llama.cpp 的 1.4–2.6 倍。llama.cpp 的设计目标是通用跨平台 + 极低门槛,在 Apple Silicon 上留给专用优化引擎的空间很大。 - 本地方案太琐碎。装 llama.cpp、找 GGUF、转换量化权重、写 server、接客户端——
rec用一条 curl 把「引擎 + 模型下载 + 服务启动 + harness 拉起」全包了:rec launch pi一条命令跑通。 - API 兼容性。它同时暴露 OpenAI 兼容(
/v1/chat/completions)和 Anthropic 兼容(/v1/messages)两套接口,你已有的任何客户端基本改个 base_url 就能接。
注意定位:这是厂家的自家引擎——它只加载 Recursive 的 Flint 模型(model id 固定为 flint),不是通用推理引擎,不能拿它跑 Llama/Qwen/Mistral。
§2 快速安装
硬性硬件门槛(README verbatim): - Apple Silicon Mac,M4 Pro / M5 Pro / M5 Max - 至少 48 GB 统一内存 - 约 30 GB 可用磁盘
安装:
curl -fsSL https://raw.githubusercontent.com/recursive-oss/rec/main/install.sh | bash
装完 rec 在 ~/.local/bin,数据在 ~/.local/share/rec。用 pi harness 还需要 Node.js 22 + npm。
装完先体检:
rec doctor # 检查硬件与安装
rec pull # 只下载模型,不启服务(推荐先做这步,约 30GB)
§3 核心用法
3.1 一键跑 harness(最常用)
rec launch pi # 推荐,作者称与自家模型搭配性能最佳
rec launch opencode
首次运行会自动下载模型和 harness。模型服务器在关掉终端后继续运行,要停就 rec stop。harness 与你系统里已有的安装完全隔离(类似 npx 的沙箱思路)。
用自己装的 pi / OpenCode:
rec launch --args pi
rec launch --args opencode
这条命令只打印 rec launch 会用的环境变量和命令行,不实际执行;把 harness 路径换成你自己的即可。注意它同时会把你指向 rec 自己的 settings 和 sessions,想保留自己的配置需要删掉那几个环境变量。
在隔离环境里装插件:
rec exec pi install npm:PACKAGE
3.2 纯起服务(接自己的客户端)
rec serve # 保持这个终端开着
看到 When flint is ready. 之后,从另一个终端打请求:
curl -fsS http://127.0.0.1:11500/v1/chat/completions \
-H "Authorization: Bearer $(rec auth token)" \
-H 'Content-Type: application/json' \
-d '{"model":"flint","messages":[{"role":"user","content":"Say hello."}],"max_tokens":128}'
响应里生成文本在 choices 字段。
- OpenAI 兼容:base URL
http://127.0.0.1:11500/v1,modelflint,key 用rec auth token - Anthropic 兼容:把
ANTHROPIC_BASE_URL指到http://127.0.0.1:11500,token 走 bearer 或x-api-key,modelflint
3.3 命令速查
| 命令 | 作用 |
|---|---|
rec launch pi\|opencode |
需要时启服务并打开 harness |
rec exec pi\|opencode ARGS |
在隔离 harness 里执行命令 |
rec serve |
在当前终端启动模型服务 |
rec status |
看服务是否在跑 |
rec stop |
停止服务 |
rec auth token |
打印本地 API key |
rec pull |
只下模型 |
rec doctor |
检查硬件与安装 |
rec update |
升级到最新 release |
rec uninstall |
卸载 rec + 模型 + 设置 |
每条命令支持 rec COMMAND --help。
§4 典型适用场景
- Apple Silicon 高端机 + 想跑本地模型做编码助手。你有 M4 Pro 48G 或 M5 Max,内存够,又不想为云 API 付费,pi / OpenCode 是现成的 coding harness——这是最贴合 README 意图的用法。
- 长上下文场景。README 的吞吐测试覆盖到 252K-token prompt,对比图也按 1K–252K 逐段画。长文档分析/大 repo 问答是它的宣称强项区。
- 隐私敏感任务。模型完全本地,代码不出机器;API 只监听
127.0.0.1:11500。 - 想试 Flint 但不想折腾环境。不接受 llama.cpp 那种手动流程的话。
不适用:多 agent 并发(见 §5)、非 Apple Silicon、非 Flint 模型、团队共享服务。
§5 坑与注意(三段式:现象 / 影响 / 修复)
坑 1|单会话限制,最容易踩 - 现象:README 明确警告「rec is optimized for single-session usage」,多 agent 同时跑要走官方文档里的另一套方案。 - 影响:拿它当共享推理服务、或同时开三个 pi 会话,会遇到争抢/不支持——而这不是配置问题,是设计边界。 - 修复:先按单会话用;要并发就去 docs.recursive.com/getting-started 找官方推荐路径,别硬改。
坑 2|硬件门槛不是「建议」是「要求」
- 现象:README 列的 M4 Pro / M5 Pro / M5 Max + 48GB 统一内存 + 30GB 磁盘,是支持列表,不是参考配置。
- 影响:M1/M2/M3 或 16GB 机器用户照着装完才发现跑不动,白下 30GB。
- 修复:装之前先 rec doctor(若已装),或直接核对自己的机器型号和统一内存。
坑 3|curl | bash 装法需自行把关
- 现象:官方只给 curl -fsSL .../install.sh | bash 这一条路,没有 pip/brew 之类的更安全选项。
- 影响:管道执行远端脚本,主流发行版已默认拦截;对供应链有顾虑的用户无法绕过。
- 修复:可以先 curl -fsSL .../install.sh -o install.sh 落到本地读一遍再执行——脚本在公开 GitHub 上可审。
坑 4|PATH 只对「新终端」生效
- 现象:README 写「installs rec in ~/.local/bin and adds it to your PATH for new terminals」。
- 影响:装完在当前终端敲 rec 报 command not found,误以为装失败。
- 修复:新开一个终端,或手动 export PATH="$HOME/.local/bin:$PATH"。
坑 5|服务端常驻,关终端不关进程
- 现象:「The model server continues to run after you close the terminal」,只能 rec stop。
- 影响:误以为终端关了服务就停了,实际模型还占着 30GB+ 内存;下次 rec launch 可能撞上旧实例。
- 修复:养成 rec status / rec stop 习惯;rec launch 前先看状态。
坑 6|基准数字的口径不能丢 - 现象:1.4–2.6× 的前提是「M4 Pro (48 GB) + 4-bit weights + prefill excluded」,每档 5 次运行。 - 影响:拿这个倍率去推 M5 Max 或长 prompt prefill 阶段的收益,会高估。 - 修复:引用时把口径一起写上;对比自己的场景要另测。
坑 7|版本/子命令可能漂移
- 现象:本次核对基于 2026-10-23 的 main 分支 README(仓库卡记录最近提交同日)。命令表齐全但未见显式 release tag 锚点。
- 影响:后续版本新增/改名子命令时,旧教程里的 rec <cmd> 可能失效。
- 修复:⚠️ 用前先 rec update + rec --help;本文未锁定 commit hash,落地前建议对 main HEAD 复核一次。
坑 8|harness 隔离有代价
- 现象:rec launch 拉起的是 rec 自带的 pi/OpenCode,与系统安装隔离(需 rec exec 才能操作)。
- 影响:你在系统里熟悉的插件、配置、快捷键在 rec 环境里全都没有,第一次用要重新配。
- 修复:接受隔离,或用 rec launch --args pi 指向自己的安装(记得按 README 删掉指向 rec settings/sessions 的环境变量)。
坑 9|只能跑 Flint 这一家模型
- 现象:所有命令与 API 示例里 model 硬编码为 flint;定位是「inference engine for running Recursive's language models」。
- 影响:想用它当通用本地推理后端(比如跑 Qwen 3)会完全落空——这是厂商模型配套引擎,不是 llama.cpp 那种通用底座。
- 修复:需要跑开源权重仍用 llama.cpp / MLX;需要 Flint 的极致速度才上 rec。
坑 10|卸载会删模型
- 现象:rec uninstall 描述为「Remove rec, its models and its settings」。
- 影响:把 30GB 已下载的模型一起删掉,重装要重下。
- 修复:只想换版本用 rec update;确需清理前确认不再需要本地模型。
§6 与同类对比
| 方案 | 定位 | 模型范围 | 硬件 | 上手成本 | 适合 |
|---|---|---|---|---|---|
| rec | 厂家专用引擎 | 仅 Flint | Apple Silicon M4 Pro+ / 48GB | 极低(一条 curl) | 单会话本地高速推理、隐私任务 |
| llama.cpp | 通用本地引擎 | 几乎所有 GGUF | 跨平台(含 Apple) | 中高(转权重、配 server) | 通用本地部署、跨平台、量化研究 |
| MLX / MLX-LM | Apple 原生框架 | HF 上大量 MLX 权重 | Apple Silicon | 中 | Apple 上的训练/微调、微型模型 |
| Ollama | 打包分发器 | 主流开源模型 | 跨平台 | 最低(ollama run) |
想要零心智的本地模型体验 |
| 云 API(Claude / GPT) | 托管服务 | 最强模型 | 无要求 | 低 | 复杂推理、要最强能力 |
一句话定位差异:Ollama 管「装得省事」,llama.cpp 管「跑得通用」,MLX 管「贴着 Apple」,rec 管「把 Flint 跑到最快」。它们的交集其实很小——如果你不是 Flint 用户,rec 基本不在你的候选集里。
§7 一句话推荐结论
有 M4 Pro 48GB 及以上、又恰好想跑 Recursive 的 Flint 追求极限本地速度的,用 rec,它把 llama.cpp 那一套繁琐流程压成了一条 rec launch pi;除此之外的人,请老实回去用 llama.cpp 或 Ollama——因为 rec 不是通用引擎,且明写着只优化单会话。
来源:GitHub README(web_fetch,2026-10-23 拉取,HTTP 200)+ repo card organized/repo_cards/4572-recursive-oss-rec.md。未 clone、未运行代码。版本相关处均已标注 ⚠️。