RSI Boot
简体中文 | English
Agent 记忆很多人都在做。RSI Boot 要解决的是另外两件事:harness 会跟着用、跟着改,以及记忆跟着仓库走、换宿主不重学。
主链路零 API Key,不调用模型。约定、禁止项、修复经验和 harness 槽位都只落在当前仓库的 .rsi/,下次任务前按需召回。
和「又一个记忆插件」差在哪
rsi-harness(Harness-RSI) 负反馈进失败桶,只改可写槽位(提示词 / 技能 / 召回策略 / 意图规则 / 知识)。提案过静态门禁和人工确认才晋升,观察 7 天,采纳率掉就回滚。越用越会干活,不是越记越多。
跟随项目迁移
记忆按仓库隔离,不跟账号、不跟 IDE。仓库拷走、换机器、换目录,.rsi/ 一起走;打开另一个仓库就是另一份,不会串。Harness 基因组可导出 bundle,跨项目备份或迁槽位。
多平台兼容
同一套 MCP(rsi serve)接 Cursor、Qoder、Codex;状态栏同时吃 Claude Code 与 Cursor CLI。规则注入走 .cursor/rules 和各宿主都认的 AGENTS.md 托管块,换工具不用把项目史再讲一遍。
| 宿主自带记忆 | 云端记忆(Mem0 一类) | 通用本地记忆 MCP | RSI Boot | |
|---|---|---|---|---|
| 数据跟谁走 | 跟账号 / 跟宿主 | 跟云端用户 | 看实现 | 跟当前仓库 |
| 换 Cursor / Claude Code / Codex | 重学 | 对方接得上才有 | 多数只做存取 | 同一份 .rsi/ |
| Harness 自改进 | 无 | 无 | 无或弱 | 提案 → 门禁 → 观察 → 回滚 |
| 主链路 API Key | 绑宿主 | 要 | 常要 | 不要 |
| 写入闸门 | 模型自觉 | 服务端策略 | 少 | 审批 + 禁止项 + 冲突裁决 |
安装
需要 Python 3.10+:
pip install rsi-boot
rsi init
要改源码则克隆本仓库,按开发一节用可编辑安装。
rsi init 只写用户配置 ~/.rsi/config.yaml。项目记忆在各仓库的 .rsi/,第一次启动 MCP 或 bootstrap 时创建。
接到 Cursor
在要用记忆的那个项目的 .cursor/mcp.json 加:
{
"mcpServers": {
"rsi-boot": {
"command": "rsi",
"args": ["serve"],
"env": {
"RSI_PROJECT_ROOT": "${workspaceFolder}"
}
}
}
}
然后 Settings → MCP 确认 rsi-boot 已启用。改过本仓库代码后要重载该 MCP。
不要配用户级 mcp.json:那里 args 里的 ${workspaceFolder} 经常不展开,会把记忆串到别的仓库。工作区绑定顺序:RSI_PROJECT_ROOT(项目级 mcp.json,推荐,显式契约)→ MCP roots/list(插件形态下由 Cursor 自动应答)→ Cursor 注入的 WORKSPACE_FOLDER_PATHS → 进程 cwd。
接到其他宿主
Claude Code
插件市场方式(推荐,可随仓库更新):
/plugin marketplace add Apollo-lwx/rsi-boot
/plugin install rsi-boot@rsi-boot
或一条命令直接装 MCP:
claude mcp add rsi-boot -- uvx --from rsi-boot rsi serve
工作区按 roots/cwd 自动认领。状态栏集成见下文「状态栏(可选)」。
Qoder
本仓库同时是 Qoder 插件:.qoder-plugin/plugin.json 清单 + 根目录 mcp.json(与 Cursor 插件共用同一份 MCP 配置),打 zip 即可分发。手动接的话二选一:
qoder mcp add rsi-boot -- rsi serve
或在项目根 .mcp.json 加与 Cursor 相同的 mcpServers 片段。工作区绑定顺序与 Cursor 一致(RSI_PROJECT_ROOT → roots/list → 注入变量 → cwd)。
Codex
一行命令接入(推荐):
codex mcp add rsi-boot -- uvx --from rsi-boot rsi serve
或手写 TOML 配置:用户级 ~/.codex/config.toml,或项目级 .codex/config.toml(需目录已被信任):
[mcp_servers.rsi-boot]
command = "rsi"
args = ["serve"]
从项目根目录启动 codex 即可——MCP 子进程继承 cwd,rsi-boot 按 cwd 向上认领工作区。要显式钉死就在表里加一行:env = { RSI_PROJECT_ROOT = "/绝对/路径" }。
状态栏(可选)
rsi statusline 给宿主 CLI 渲染底部状态栏:模型、上下文余量、token 统计(in/out/cache)、花费、RSI 今日召回与采纳率,外加一条定期轮换的随机文案。Claude Code 与 Cursor CLI 通用(两家的 statusLine 都会把会话 JSON 从 stdin 喂进来,本命令解析后单行输出,带 ANSI 颜色与 emoji)。
Claude Code(~/.claude/settings.json):
{
"statusLine": { "type": "command", "command": "rsi statusline" }
}
Cursor CLI(~/.cursor/cli-config.json):
{
"statusLine": { "type": "command", "command": "rsi statusline" }
}
效果示例:
🧠 Kimi K3 │ 📊 上下文余 71% │ ⛽ in 12.3k · out 1.8k · cache 96k │ 💰 $0.42 │ 🐾 RSI 召回 3 · 采纳 92% │ 给你比个心❤
选文案风格
三种配法并列,按场景任选(优先级:--style > 环境变量 > 项目级 > 用户级):
// ① 跟着宿主走:直接写进 statusLine 的 command(最直观,不动任何 config.yaml)
{ "statusLine": { "type": "command", "command": "rsi statusline --style buddy" } }
# ② 项目级(按仓库定风格,跨宿主共享):<工作区>/.rsi/config.yaml
# ③ 用户级(全局默认):~/.rsi/config.yaml
statusline_style: buddy
六档预设:mixed 混搭(默认)、buddy 陪伴搭子(WorkBuddy 风:陪伴/安抚/治愈/祝福)、serious 严肃专业(只出通用陪伴与金句,不见猫咪玄学)、healing 治愈可爱、geek 极客梗、lucky 玄学好运。改完即生效,无需重启——状态栏每次刷新都会重读。语言键 lang 在 config.yaml 里走同一条优先级链。
注意:状态栏不是 MCP server,不由 mcp.json 管理(那是 rsi serve 记忆服务的配置),所以风格只能配在 statusLine 的 command 或 config.yaml 里。
说明:
- token 明细来自 transcript(Claude Code)或
context_window字段(Cursor CLI);上下文窗口默认 200k,exceeds_200k_tokens时按 1M,可用RSI_STATUSLINE_CTX_WINDOW覆盖。 - 文案三层供给:用户文案文件(
~/.rsi/quips.json,板块非空即整体替换内置池)> 手写池(130+ 条,质量下限)+ 模板造句器(约 200 种组合,按组合空间加权)。用户文案由宿主模型在对话中生成(对它说「生成状态栏文案」即可,风格规范内嵌在文件头),写完跑rsi statusline --validate-quips校验口径与去重。 - 风格按主题(core/motto/kudos/fortune/geek/dry/healing/food/cat/game/hype/slack/offwork/weather)打标过滤;场景池(早安/深夜/告急/久坐/夸夸)功能性文案不受风格限制。
- 轮换与防重:默认 45 秒一换(
RSI_STATUSLINE_QUIP_SECONDS可调,如 5),同桶内不闪烁;~/.rsi/state/statusline_quips.json记录每会话最近 300 条已播,自动避开重复。 - 场景专属池:早安(06–11 点)、深夜(23–06 点)、上下文告急(≤15%)、久坐提醒(会话 ≥45 分钟,
RSI_STATUSLINE_REST_MINUTES可调,0 关闭)、RSI 高采纳夸夸。 - RSI 段从 cwd 向上找
.rsi/logs/events.jsonl统计今日数据,找不到就静默省略。 - 语言只显示一种,解析链:
--lang→RSI_LANG→ 项目.rsi/config.yaml→ 用户~/.rsi/config.yaml→ 系统语言。想固定就写一行lang: zh(项目级优先)。 - 选项:
--lang zh|en、--no-rsi、--no-quip、--plain(去颜色与 emoji);NO_COLOR只关颜色。 - 冷启动约 250ms,满足宿主 ≥300ms 刷新间隔;命令永不非零退出,异常时兜底输出一行。
在对话里学习
接好 MCP 后不要自己去终端跑 rsi。对当前项目窗口里的代理说即可。
| 你说 | 代理做的 |
|---|---|
| 第一次学这个项目 | rsi bootstrap --consent --host-judge → rsi_learn 蒸完全部 pending → rsi_knowledge_review 批准本 run |
| 重新学习 | 先 rsi wipe --yes 清记忆,再按上面重新学 |
看到「必须指定 --host-judge 或 --local-judge」就加 --host-judge 重跑,不要改用 --local-judge(那条只给终端自己采集用)。rsi wipe --yes 会删掉该项目 .rsi 下的 memory/ logs/ cache/ audit/ state/ 与 manifest.json,保留 identity.json;若提示文件被占用,先在 Settings → MCP 关掉 rsi-boot 再重跑。
学完看 .rsi/bootstrap_report.md 的板块清单,pending=0 并经 rsi_knowledge_review 批准后才算召回可用。约定获准后只进召回,不会写成 rsi-convention-*.mdc 规则文件。
终端冒烟
不经对话、只调 CLI 时用。写盘必须带 --host-judge 或 --local-judge 其中一个;--dry-run 除外。
rsi recall "帮我审查这段 Python 代码"
rsi knowledge add --title "项目约定" --content "本项目统一使用 snake_case 命名"
rsi recall "本项目的命名约定是什么"
rsi bootstrap --dry-run
rsi bootstrap --local-judge
rsi bootstrap --local-judge --force
# 旧版 .rsi/rsi.db 先迁移
rsi memory migrate
# 一般由 Cursor 拉起,不必手跑
rsi serve
MCP 工具
| 工具 | 干什么 |
|---|---|
rsi_recall |
任务开始前召回:禁止项置顶 + 约定/文档/gene/teaching |
rsi_explore |
按 domain 板块下钻浏览知识树(空 path 列顶层板块+计数,传 path 列成员条目标题/简述/id,并附本节点条目的图谱关联 related 与冲突 conflicts) |
rsi_feedback |
采纳反馈;rejected+评语会提炼为禁止项 |
rsi_learn |
阅读包 pack_list / pack_open / pack_done,teach_catch / teach_record,Session 审计 |
rsi_knowledge_add / rsi_knowledge_search / rsi_knowledge_delete / rsi_knowledge_update / rsi_knowledge_review |
记忆管理与审批;rsi_knowledge_update 支持原地改字段(改优于新建重复)与 merge 合并近重复(保留更完整者、其余归档并写 supersedes 边);蒸馏条须带 pack_id |
rsi_conflicts |
短知识冲突查询与裁决 |
rsi_memory_health |
错误/过时记忆发现与裁决:评语极性打脸开 incorrect,来源失效开 stale_source;resolve 才能归档,扫描本身不动正式库 |
rsi_memory |
记忆索引 / 打开 / 重建 / 关系图 |
rsi_review |
Harness 改进提案与配置快照 |
rsi_stats |
记忆使用统计 |
rsi_impact |
价值/影响力面板(供宣讲):注入成本(字符+token 估算)、召回压缩比、采纳/合规、时间曲线,以及 A/B 省 token 计算器(省量仅由用户喂入的宿主用前/用后对照得出,绝不编造) |
RSI 无 OAuth。蒸馏中途不要调 mcp_auth、不要给用户弹授权。
配置
配置链:包内 default.yaml → ~/.rsi/config.yaml → 项目根 rsi-boot.yaml → 请求参数。
RSI_HOME 只覆盖用户配置目录(默认 ~/.rsi)。项目记忆、画像、归档都在工作目录 .rsi/,打开另一个仓库就是另一份,不会串。主链路零配置可用;可选增强(向量检索、LLM 提取等,需自配模型 Key)见 ~/.rsi/config.yaml 示例。
项目 rsi-boot.yaml 禁止明文密钥,发现即拒绝启动。日志落库前脱敏;注入宿主上下文前过审批闸门与黑名单;超 90 天日志自动归档到 .rsi/archive/YYYYMM.jsonl。
开发
pip install -e ".[dev]"
python -m pytest
python scripts/export_schemas.py
Metadata
Release files for rsi-boot 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| rsi_boot-0.1.2.tar.gz | 589.0 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rsi_boot-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 975.7 kB
Release files / rsi_boot-0.1.2.tar.gz
| Download URL | rsi_boot-0.1.2.tar.gz |
|---|---|
| Size | 589.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dcada6082c1499859c338226fb26a18bd5c3a4ac5f6963e4efb3af382fcb9286
|
|
BLAKE2b-256 checksum How to use checksums |
5b5c518ce25577031a46be04d240bbaf99c0fdf0e40837ceeea108555e54880d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logRelease files / rsi_boot-0.1.2-py3-none-any.whl
| Download URL | rsi_boot-0.1.2-py3-none-any.whl |
|---|---|
| Size | 386.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4d2e43235415f1ad837d89e927e29c88baba74f32afd7af48da63156888bf01d
|
|
BLAKE2b-256 checksum How to use checksums |
c2fd3be9cc89e1a11ce2d71fc65a82e8b3ca1a9b3b8c2edbead6ca74fd4252b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logSecurity for rsi-boot 0.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for rsi_boot-0.1.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.