rsi-boot
Summary: rsi-boot is a project-scoped engineering-memory MCP server that recalls conventions and prohibitions before tasks, captures new lessons as pending items, and governs them through human review, conflict resolution, and harness self-improvement.
Recall before work (
rsi_recall): returns prohibitions, related memory items, and a skill catalog for an upcoming task, plus a feedback token.Browse the knowledge tree (
rsi_explore): list top-level domain modules or drill into a path, with related/conflict edges.Manage knowledge (
rsi_knowledge_add,rsi_knowledge_search,rsi_knowledge_update,rsi_knowledge_delete): add, search (FTS5 + CJK), edit in place, merge near-duplicates, or delete memories.Review pending norms (
rsi_knowledge_review): approve (promotes to official dirs, injects prohibitions) or reject (archives) pending items.Give feedback (
rsi_feedback): rate or mark recalls accepted/applied/modified/copied/referenced/ignored/rejected; rejections with comments become prohibitions.Resolve conflicts (
rsi_conflicts): list, scan, explain, or decide conflicts between learned memory and handwritten rules (user_wins / memory_wins / coexist / keep_item / keep_peer).Improve the harness (
rsi_review): list/approve/reject/rollback/generate improvement proposals and manage config snapshots (list/switch/export).Check memory health (
rsi_memory_health): scan for incorrect or stale-source memories, then archive/revise/keep/snooze.Inspect memory files (
rsi_memory): index entries, open one by id, rebuild the cache, or render a mermaid graph.Learn and audit (
rsi_learn): teach_catch/teach_record lessons, run audits, extract closeout items, promote patterns, and walk reading packs.Measure value (
rsi_stats,rsi_impact): adoption, prohibition compliance, proposal pass rates, injected cost, and an honest A/B token-savings calculator (no invented numbers).No API key on the main path; memory lives in the repo's
.rsi/and travels with the project across Cursor, Claude Code, Codex, Qoder, and DeepSeek Harness.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rsi-bootBefore refactoring, recall this project's conventions and prohibitions."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
RSI Boot
简体中文 | English
Agent 的工程记忆,不是对话记忆:约定和禁止项落在仓库里,换一个宿主读到的还是这一份。
Cursor 在 2.1 删掉了 Memories,新会话对你的项目一无所知;Claude Code 的记忆锁在本机、不跟 git,换一个同事就对不上;云记忆要 Key、要服务,记忆还跟账号走。同一个人换着 Cursor、Claude Code、Codex、DeepSeek Harness 写同一个仓库,或者团队里各用各的工具,写法、禁止项和修 bug 的经验也各记各的。
RSI Boot 把约定、禁止项、修复经验和 harness 槽位落在仓库的 .rsi/,跟仓库走:装一次,Cursor / Claude Code / Codex / Qoder / DeepSeek Harness 通用。主链路零 API Key,不调用模型。
环是固定的:召回 → 干活 → 蒸馏成待审条目 → 人批准后才留下 → 下一轮召回读到留下的条目。 负反馈另外进失败桶,只改可写槽位(提示词 / 技能 / 召回策略 / 意图规则 / 知识)。提案过静态门禁和人工确认才晋升,观察 7 天,采纳率掉就回滚。这是软件自己的写法。公开结果还没有和别人的答题分放在同一列。召回主榜的表在 benchmark/results/recall-20261028/SUMMARY.md。
和「又一个记忆插件」差在哪
rsi-harness(Harness-RSI) 负反馈进失败桶,只改可写槽位(提示词 / 技能 / 召回策略 / 意图规则 / 知识)。提案过静态门禁和人工确认才晋升,观察 7 天,采纳率掉就回滚。留下的是槽位版本。这条环已经在软件里;公开基准还没有量过「下一轮是否更好」。
跟随项目迁移
记忆按仓库隔离,不跟账号、不跟 IDE。仓库拷走、换机器、换目录,.rsi/ 一起走;打开另一个仓库就是另一份,不会串。Harness 基因组可导出 bundle,跨项目备份或迁槽位。
跨 AI 工具、多人共用一份项目记忆
同一套 MCP(rsi serve)接 Cursor、Qoder、Codex 和 DeepSeek Harness;状态栏同时吃 Claude Code 与 Cursor CLI。要共用的是这个仓库的项目记忆:函数名怎么写、支付日志里不能打卡号、上次空指针是怎么修的。聊天记录不在这里面。
核准后的约定写进仓库根的 AGENTS.md 托管块,也写进 .cursor/rules。Cursor、Claude Code、Codex、Qoder、DeepSeek Harness 打开同一份仓库,都会读到这段托管块。接上 MCP 之后,召回读的是同一份 .rsi/:上午在 Cursor 里记下的禁止项,晚上换 DeepSeek Harness、或者同事换 Codex 打开这个仓库,读到的是同一条。
同事要拿到召回用的全文,仓库里得有同一份 .rsi/。学习默认把 .rsi/ 写进 .gitignore,日志和缓存留在本机。交给同事时,把核准过的 .rsi/memory 纳入版本库;Git 一旦忽略了整个 .rsi/ 目录,里面的文件需要改忽略规则才能再提交。AGENTS.md 在仓库根,提交后大家拉下来就能读到托管块。
宿主自带记忆 | 云端记忆(Mem0 一类) | 通用本地记忆 MCP | RSI Boot | |
数据跟谁走 | 跟账号 / 跟宿主 | 跟云端用户 | 看实现 | 跟当前仓库 |
换 AI 工具、换同事 | 重学,各记各的 | 对方接得上才有 | 多数只做存取 | 同一份 |
Harness 自改进 | 无 | 无 | 无或弱 | 提案 → 门禁 → 观察 → 回滚 |
主链路 API Key | 绑宿主 | 要 | 常要 | 不要 |
写入闸门 | 模型自觉 | 服务端策略 | 少 | 审批 + 禁止项 + 冲突裁决 |
Related MCP server: jevmem
公开基准
主榜是召回。冷启动默认 5 条。分母是有标准证据的题数。MRR 是第一条命中的名次倒数(0 到 1)。token 记 null。协议和分项在 benchmark/results/recall-20261028/SUMMARY.md。
这次的分
数据集 | 有证据的题 | Hit@5 | Recall@5 | MRR | Hit@10 | Recall@10 | 该空时空了 |
LoCoMo | 1536 | 56.5% | 51.0% | 0.427 | 64.0% | 57.8% | 0/450 |
LongMemEval-S | 500 | 96.6% | 90.1% | 0.907 | 98.4% | 94.8% | — |
这是检索命中,不是模型答题分。
和公开检索分对照
公开列来自论文里的检索数字,这次列就是上面的主榜。差值 = 这次 − 公开,单位是百分点。LoCoMo 论文的口径是对话 recall accuracy,这次 k=5 用 Hit@5、k=10 用 Hit@10。论文总平均含对抗题,这次的总平均是 1536 道可答题。ECHO 写明 LoCoMo 的 Hit@10 是开发测量,查询扩展可能沾了题面。
对照 | 分项 | 公开 | 这次 | 差值 |
LoCoMo 论文,对话 k=5 | 单跳 | 68.0 | 38.7 | −29.3 |
LoCoMo 论文,对话 k=5 | 多跳 | 35.4 | 63.2 | +27.8 |
LoCoMo 论文,对话 k=5 | 时间 | 70.4 | 31.5 | −38.9 |
LoCoMo 论文,对话 k=5 | 开放域 | 33.1 | 62.7 | +29.6 |
LoCoMo 论文,对话 k=5 | 总平均,论文含对抗题 | 56.7 | 56.5 | −0.2 |
LoCoMo 论文,对话 k=10 | 总平均,论文含对抗题 | 66.2 | 64.0 | −2.2 |
ECHO,LoCoMo 1536 题 | Hit@10,开发测量 | 96.29 | 64.0 | −32.3 |
ECHO,LongMemEval-S 500 题 | Hit@10 | 97.60 | 98.4 | +0.8 |
ECHO,LongMemEval-S | 会话 Recall@5 | 88.71 | 90.1 | +1.4 |
差值

前四行的差值不到 5 个点。后面几行是拉开的格子:多跳和开放域更高,单跳、时间题,以及对 ECHO 的 LoCoMo Hit@10 更低。
对照 | 这次 | 公开 | 差值 |
LongMemEval-S Hit@10 | 98.4 | 97.60 | +0.8 |
LongMemEval-S 会话 Recall@5 | 90.1 | 88.71 | +1.4 |
LoCoMo 总平均 k=5 | 56.5 | 56.7 | −0.2 |
LoCoMo 总平均 k=10 | 64.0 | 66.2 | −2.2 |
LoCoMo 开放域 k=5 | 62.7 | 33.1 | +29.6 |
LoCoMo 多跳 k=5 | 63.2 | 35.4 | +27.8 |
LoCoMo 单跳 k=5 | 38.7 | 68.0 | −29.3 |
LoCoMo 时间题 k=5 | 31.5 | 70.4 | −38.9 |
LoCoMo Hit@10 对 ECHO | 64.0 | 96.29 | −32.3 |
安装
需要 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.json。那里的 ${workspaceFolder} 经常不展开,记忆会串到别的仓库。要记哪个项目,就写在那个项目里。
接到其他宿主
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在要记的那个仓库目录里打开 Claude Code。状态栏是可选项,见下文。
Qoder
qoder mcp add rsi-boot -- rsi serve或在项目根 .mcp.json 加与 Cursor 相同的 mcpServers 片段。同样要写在这个项目里,不要写进用户级配置。
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。要钉死目录,在上面的表里加一行:env = { RSI_PROJECT_ROOT = "/绝对/路径" }。
DeepSeek Harness
在要记的那个仓库目录里打开桌面端。插件页安装 dsh-rsi-boot,或在已经能用 dsh 的终端里执行:
dsh plugin --profile web add dsh-rsi-boot本机需要 Python 3.10+,并且终端里能运行 rsi serve。装完重启一次。工具名多一层前缀,例如 mcp__rsi-boot__rsi_recall。不要从用户主目录启动,否则 .rsi/ 可能写进主目录。
状态栏(可选)
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 陪伴、serious 严肃、healing 治愈、geek 极客、lucky 好运。改完下一次刷新就生效。
风格写在 statusLine 的命令里,或写在 config.yaml 的 statusline_style。不要写进 mcp.json,那是记忆服务的配置。语言同样:命令加 --lang zh,或在项目 .rsi/config.yaml 写 lang: zh。想换一批文案,对代理说「生成状态栏文案」,写完跑 rsi statusline --validate-quips。
记忆大屏
不用改 rsi serve 的启动参数。对当前项目窗口里的代理说「打开记忆大屏」。说「关掉记忆大屏」后,下面这个地址立刻访问不到。
默认地址(端口被占用时,以代理回报的地址为准):
http://127.0.0.1:18765/dashboard页面读的是当前仓库 .rsi/,不需要 API Key。

在对话里用
接好之后,对当前项目窗口里的代理说。不用自己开终端跑 rsi。
你说 | 结果 |
第一次学这个项目 | 扫这个仓库,写成待审条目;你批准之后,下次才能召回 |
重新学习 | 清掉这份仓库的记忆,再学一遍 |
打开记忆大屏 / 关掉记忆大屏 | 本机页面打开或关掉 |
把刚才的修法记下来 | 先进入待审,批准后才留下 |
这两条是不是矛盾 | 查冲突,等你裁决 |
重新学习会删掉该项目 .rsi 里的记忆、日志和缓存,保留 identity.json。文件被占着,就先在 Settings → MCP 关掉 rsi-boot。学完看 .rsi/bootstrap_report.md:待审清空并且批准过,召回才可用。代理如果报必须指定 --host-judge,让它加上这个参数再跑。
工具
接上之后,这些工具出现在当前项目的代理里。DeepSeek Harness 上的名字多一层前缀,例如 mcp__rsi-boot__rsi_recall。
工具 | 干什么 |
| 开工前召回。禁止项放在最前,后面是约定、文档和修过的教训 |
| 按板块看知识树。不传路径时列出顶层和条数;传路径时列出这一支的标题和 id |
| 第一次学这个仓库、把这次的教训记下来、做会话收工 |
| 新增一条记忆。先待审,批准后才进入召回 |
| 按问题查找已有记忆 |
| 改已有的一条,或把近重复的几条合成一条 |
| 删除一条记忆 |
| 批准或拒绝待审条目 |
| 查出互相矛盾的记忆,等你裁决 |
| 查出写错或来源已经失效的正式记忆。扫描本身不改库,确认之后才归档 |
| 看索引、打开一条、重建索引、看条目之间的关系 |
| 记下这次召回有没有被用上。拒绝并写明原因时,会收成一条禁止项 |
| 看 harness 的改进提案和配置快照,决定留不留 |
| 看记忆用了多少、采纳得怎么样 |
| 看注入了多少、召回压了多少、采纳和合规 |
| 打开或关掉本机记忆大屏。不改 |
字段和调用参数见 SKILL.md。
配置
配置链:包内 default.yaml → ~/.rsi/config.yaml → 项目根 rsi-boot.yaml → 请求参数。
RSI_HOME 只覆盖用户配置目录(默认 ~/.rsi)。项目记忆在工作目录 .rsi/,打开另一个仓库就是另一份。主链路不用配;向量检索、模型提取这类增强要自己的 Key,示例在 ~/.rsi/config.yaml。
项目里的 rsi-boot.yaml 不能写明文密钥,发现了就拒绝启动。
开发
改过本仓库代码后,在 Settings → MCP 重载 rsi-boot。
pip install -e ".[dev]"
python -m pytest
python scripts/export_schemas.py不经对话、直接调命令时,写盘要带 --host-judge 或 --local-judge(--dry-run 不用)。旧的 .rsi/rsi.db 用 rsi memory migrate 迁到文件库。
Available Tools
15 toolsrsi_conflictsA
List or resolve suspected conflicts. Three kinds: (1) learned memory vs handwritten rules (contradiction/stale/overlap) — user_wins keeps your rule (learned memory no longer injected), memory_wins keeps learned memory (edit the rule file yourself), coexist keeps both and stops reminding; (2) knowledge pairs (version/doc_code/incoherent) — keep_item keeps item_id and archives the peer source_url, keep_peer keeps the user_rule_path side, coexist keeps both; (3) explain (conflict_id required) expands both sides read-only. Call explain first when the user wants detail; do not close the card. 查询疑似冲突并对冲突做出裁决。三类:① 学习记忆 vs 手写规则(contradiction/stale/overlap)——user_wins=以你的规则为准(学习记忆不再注入)、memory_wins=以学习记忆为准(返回规则文件位置请手动修改)、coexist=两者共存不再提醒;② 知识对(version/doc_code/incoherent)——keep_item=保留 item_id 侧并归档对侧 source_url、keep_peer=保留 user_rule_path 侧、coexist=两侧转/保持可用且不再提醒;③ explain(conflict_id 必填)=只读展开两侧摘录与各 option 影响,不改库。用户要展开说明时先 explain,不要关掉抉择卡。
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | resolve 可选:裁决备注 | |
| limit | No | list 分页:每页条数(夹到 [1, 200]) | |
| action | Yes | list=查询冲突(默认) resolve=裁决 scan=立即扫描 explain=只读展开 | |
| offset | No | list 分页:起始偏移 | |
| status | No | list 过滤:open/user_wins/memory_wins/keep_peer/keep_item/coexist/closed/all | open |
| decisions | No | resolve 批量:逐条裁决,存在时忽略 conflict_id/resolution | |
| resolution | No | resolve 必填:规则冲突用 user_wins/memory_wins/coexist;version/doc_code/incoherent 用 keep_peer/keep_item/coexist | |
| conflict_id | No | resolve/explain 必填:冲突 id | |
| bootstrap_run_id | No | list 过滤:只列该 bootstrap run 的冲突(item 侧或 user_rule_path 侧条目 tags 含 bootstrap_run_id:<id>) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full burden and largely discharges it: it discloses the side effect of every resolution ('memory no longer injected', 'archives the peer source_url', 'stops reminding'), states that memory_wins leaves the edit to the user's rule file, and marks explain as read-only. These are exactly the mutation/destructiveness facts an agent needs before acting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and logically ordered into three numbered classes, but the entire content is duplicated in Chinese, roughly doubling length without adding information for a single-language reader. The resolution explanations are dense run-on clauses rather than scannable structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter, no-annotation, no-output-schema tool, the description explains conflict classes, resolution semantics, and the read-only explain path — enough to act safely. It still omits the 'scan' action entirely and says nothing about what list returns or how paging interacts with status filtering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds genuine meaning beyond it by tying each resolution value to the conflict class it applies to and to its real-world effect, and by stating conflict_id is required for explain. It does not cover limit/offset/status/bootstrap_run_id, but the schema already documents those.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb pair plus resource ('List or resolve suspected conflicts') and then partitions the domain into three named conflict classes with their own vocabularies. Nothing in the sibling list (rsi_review, rsi_memory_health, rsi_knowledge_review) could be confused with this, since the description names its own artifact — a conflict card with resolution options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong guidance for the explain path ('Call explain first when the user wants detail; do not close the card') and implicit guidance for choosing a resolution per conflict class. However, the action enum includes 'scan' and the description never mentions scanning at all, and there is no stated condition for choosing list versus resolve versus scan.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_exploreA
Navigate the knowledge tree by domain module. Empty path lists top-level modules with counts; pass a path (e.g. backend or backend/api) to drill down and list member items (title/brief/id), plus graph edges (related / conflicts) touching this node's items. Use rsi_recall to pull full content after you find the node you want. 按领域板块浏览知识树:空 path 列顶层板块与计数;传 path(如 backend 或 backend/api)下钻列出成员条目(标题/简述/id)并附本节点条目的图谱关联(related)与冲突(conflicts);需要正文用 rsi_recall。
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | 知识树节点路径;空 = 列顶层板块,如 backend 或 backend/api = 下钻该板块 | |
| depth | No | 返回的子树层级深度(默认 2) | |
| limit | No | 最多列出成员条目数(默认 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses the return shape well: top-level modules with counts, member items with title/brief/id, and related/conflicts graph edges. It does not explicitly state read-only/no-side-effects or pagination behavior, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The English portion is front-loaded and efficient, covering behavior, output shape, and the rsi_recall handoff. The full Chinese translation duplicates the same information, which adds length without adding new semantics for a single-language reader.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, yet the description explains both top-level and drill-down return contents, including member fields and graph edges. It also tells the agent how to get full content afterward, which is enough to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so path, depth, and limit are already documented. The description restates the empty-path behavior and examples already present in the schema, adding little parameter meaning beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: navigating the knowledge tree by domain module. It clearly distinguishes browsing behavior from full-content retrieval by naming rsi_recall as the follow-up tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit usage conditions: an empty path lists top-level modules, while a path such as backend or backend/api drills down. It also directs agents to rsi_recall for full content, but does not contrast with other siblings such as rsi_knowledge_search or state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_feedbackB
Submit feedback on a recall: explicit rating or IDE implicit action (accepted/applied/modified/copied/referenced/ignored/rejected). On rejected, a comment is extracted as a prohibition. 对召回结果提交反馈:显式评分或 IDE 隐式行为(accepted/applied/modified/copied/referenced/ignored/rejected);rejected 时填 comment 将提炼为禁止项。
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | accepted/applied=采纳应用 modified=修改后采纳 copied=复制 referenced=参考 ignored=忽略 rejected=拒绝 | |
| rating | No | 可选 1-5 评分(与 action 可叠加,分别生效) | |
| comment | No | 可选评语;action=rejected 时填写将提炼为禁止项(§4.4) | |
| feedback_token | Yes | rsi_recall 返回的反馈令牌 | |
| modified_content | No | action=modified 时的修改后内容(用于 diff 比例计算) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden; it usefully discloses that a rejected action's comment is extracted as a prohibition, a persistent side effect. However, it omits other important behavior for a write operation: token lifetime, idempotency, what confirmation is returned, and how rating and action interact beyond a schema note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the entire description is duplicated in Chinese, which adds length without new information for an agent that reads the English text. The two sentences are not wasteful individually, but the bilingual duplication weakens conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a feedback-writing tool with no annotations and no output schema, the description covers the action taxonomy and the key rejected→prohibition consequence. It does not explain whether a success confirmation is returned, whether the feedback_token expires, or what permissions are needed, leaving gaps an agent would want closed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters already have documented meaning, including the enum and the modified_content diff-ratio note. The description adds little beyond restating the action vocabulary and the rejected-comment rule, making baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Submit feedback on a recall') and enumerates the exact action vocabulary, so an agent can identify the operation without opening the schema. It does not explicitly contrast itself with siblings such as rsi_recall, but the purpose is distinct enough to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the required feedback_token ('from rsi_recall'), but the description never says explicitly to call this after a recall or what alternatives exist. The rejected/comment rule is a behavioral detail rather than when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_impactA
Value/impact panel for evangelism: injected cost (chars + est tokens), recall value (hit rate + on-demand exposure vs full corpus), behavioral gains (adoption, compliance, proposal pass), a time curve, and an A/B token-savings calculator. Honesty: RSI cannot see the host's real token usage, so 'tokens saved' is ONLY produced from a user-supplied before/after comparison (ab={baseline:{tokens,tasks},treatment:{tokens,tasks}}); without it no savings number is invented. export=true writes a one-page markdown to ~/.rsi/exports/. 价值/影响力面板(供宣讲):注入成本(字符+token 估算)、召回价值(命中率与按需暴露 vs 全库)、行为收益(采纳/合规/提案通过率)、时间曲线,以及一个 A/B 省 token 计算器。诚实原则:RSI 看不到宿主真实 token 用量,‘省了多少’只在用户喂入用前/用后对照(ab 参数)时才产出,否则不编造任何省量;export=true 导出一页纸 markdown。
| Name | Required | Description | Default |
|---|---|---|---|
| ab | No | 用前/用后对照输入(数字来自宿主自己报的 token 用量,本工具只做差,不估算) | |
| export | No | true 时导出一页纸 markdown 到 ~/.rsi/exports/ 并返回路径 | |
| period | No | 统计窗口(默认 week) | |
| snapshot | No | true 时顺带把当前窗口聚合落一条日快照(攒长期曲线) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it explicitly warns that RSI cannot see real host token usage and that a savings number is only produced when ab is supplied, and it discloses that export=true writes a markdown file to ~/.rsi/exports/. It omits one notable side effect — the snapshot flag persisting a daily aggregate — which is only disclosed in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and the honesty constraint is well placed, but the entire text is duplicated verbatim in Chinese, roughly doubling length for an English-reading agent without adding information. Redundancy costs it points even though no individual sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, dependency-free reporting tool with no output schema, the definition covers the main inputs and the key limitation. The remaining gap is that the return payload's shape (what the 'panel' actually looks like) is only gestured at, and snapshot behavior is delegated entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3; the description goes beyond it by spelling out the nested ab shape (baseline/treatment with tokens and tasks) and, more importantly, the precondition that numbers must come from the host's own reported usage rather than being estimated. period and snapshot are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names a concrete deliverable — a value/impact panel composed of cost, recall value, behavioral gains, a time curve, and an A/B calculator — so an agent knows exactly what it produces. It does not, however, distinguish itself from the sibling rsi_stats, which plausibly also returns statistics, leaving overlap ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for evangelism' and 'a one-page markdown' imply the presentation/reporting scenario, and the ab condition is stated precisely. But there is no explicit when-not-to-use or routing versus rsi_stats / rsi_memory_health, so selection among siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_knowledge_addC
Add a knowledge item (title + content required). 添加知识条目(title + content 必填)。
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | 标签 | |
| roles | No | 适用角色,空=通用 | |
| title | Yes | 条目标题 | |
| domain | No | 领域 | |
| content | Yes | 条目正文 | |
| pack_id | No | 阅读包 id;蒸馏时必填,写入 pack_id: 标签 | |
| source_url | No | 来源(文档路径/signal),带来源的 active 落正式 | |
| content_type | No | prohibition/convention/skill/documentation 或案例类型 | |
| expiry_condition | No | 失效条件:什么情况下该记忆应视为过时(如「迁移到 JPA 后作废」) | |
| trigger_condition | No | 前提条件:这条记忆在什么前提下成立(如「仅当使用 MyBatis 时」) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: not whether new items are pending review, deduplicated, indexed for recall, or what permissions are needed. For a write tool with 10 parameters and a review sibling (rsi_knowledge_review), the absence of lifecycle context is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded with zero padding beyond the bilingual repetition, which duplicates the same sentence rather than adding information. The size is appropriate, but the second sentence earns no new content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters, no annotations, and no output schema, an agent still cannot tell what happens after a successful add or how optional fields like trigger_condition and expiry_condition interact with the record's lifecycle. The description is far too thin for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, and the description only repeats the two required ones. Baseline 3 applies; the description adds no interpretation of conditional fields like pack_id or expiry_condition beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a knowledge item') and names the two required fields, which is enough to distinguish it from rsi_knowledge_update and rsi_knowledge_delete. It does not, however, differentiate it from rsi_memory or rsi_learn, which could plausibly also write knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to add a new item versus updating an existing one (rsi_knowledge_update) or when this tool is appropriate at all. The only condition mentioned is that title and content are required, which is already in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_knowledge_deleteB
Delete a knowledge item (deletion right). 删除指定知识条目(删除权)。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 知识条目 ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. 'Delete' makes the destructive nature clear, and '(deletion right)' implies an authorization requirement, but the description does not state whether deletion is permanent, what happens to related records, or what errors to expect if the item does not exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the core action. The Chinese translation duplicates the English content, which may be intentional for bilingual users but slightly reduces conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with full schema coverage, the description covers the basic action and hints at permission. However, because this is a destructive operation with no annotations or output schema, it should more clearly describe the consequences of deletion and any irreversibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'id' parameter is already documented in the schema. The description adds no content about parameter format or semantics beyond what the schema provides, which meets the baseline for fully covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Delete a knowledge item.' It is clear what the tool does, but it does not explicitly differentiate itself from sibling tools such as rsi_knowledge_update or rsi_knowledge_add.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives, nor any exclusion criteria. The parenthetical '(deletion right)' hints at a permission prerequisite, but it does not explain usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_knowledge_reviewA
Approve pending norms: approve moves to official dirs and injects prohibitions; reject archives. Does not create new bodies. Approved conventions are recall-only (no rsi-convention rule files). 审批 pending 规范:approve 搬到正式目录并注入禁止项,reject 搬到 archive。不新建正文。约定获准后只进召回,不会写成 rsi-convention 规则文件。
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | 待审知识条目 ID;action=skip 时为决策卡 id(extract:<run_id> 或冲突 id) | |
| ids | No | 批量审批的条目 ID 列表 | |
| action | Yes | approve/reject=审批;skip=抑制决策卡(不审批) | |
| all_pending | No | true = 审批 tags 不含 bootstrap_run_id 的 pending(日常 auto-extract 等);不含本轮 bootstrap 抽取,除非同时传 bootstrap_run_id | |
| content_type | No | 批量审批时按内容类型过滤(convention/architecture/faq/documentation) | |
| bootstrap_run_id | No | 只审批该 bootstrap 轮次的抽取(与 all_pending 联用,或单独表示本轮全部) | |
| include_archived | No | 批量审批时包含 archived(bootstrap 限量溢出)条目 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does useful work: it discloses that approve relocates files to official directories and injects prohibitions, that reject archives rather than deletes, that no new bodies are created, and that approved conventions are recall-only with no rule files written. It does not mention irreversibility, permission needs, or what 'skip' does behaviorally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Each sentence is front-loaded and earns its place, with the side effects stated before the caveats. However, the entire text is then repeated verbatim in Chinese, roughly doubling length without adding information for a monolingual reader.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers side effects well but omits the skip action and the entire batch-approval surface (all_pending, content_type, bootstrap_run_id, include_archived). An agent could not infer from the prose alone that bulk approval exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; every parameter including skip, ids, all_pending and bootstrap_run_id is already documented in the schema. The description adds nothing beyond echoing the approve/reject semantics that the action enum already encodes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb and resource ('Approve pending norms') and spells out the result of each action (approve moves files and injects prohibitions, reject archives). It does not differentiate itself from the sibling rsi_review, which an agent would also consider for review-like work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: it is clearly the tool for acting on pending items, but there is no statement of when to prefer it over rsi_review, rsi_knowledge_update or rsi_conflicts. The 'skip' action and the batch modes (all_pending, bootstrap_run_id) are entirely absent, so the agent gets no guidance on those paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_knowledge_searchB
Search the knowledge base (FTS5 + CJK bigram by default; embedding is optional). 搜索知识库(默认纯 FTS5 + CJK bigram;embedding 为可选增强)。
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | 角色过滤 | |
| query | Yes | 检索查询 | |
| top_k | No | 返回条数上限 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose something genuinely useful about matching behavior (default pure FTS5 + CJK bigram, embedding as optional enhancement), but says nothing about read-only safety, ordering/ranking, result size behavior, or permissions — gaps that matter for a search tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, but the entire sentence is duplicated in Chinese with no added information, roughly doubling length for a one-line tool. No wasted hedging beyond that, but the parallel-language repetition is pure redundancy for a token-sensitive agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only, 3-parameter search with fully documented parameters and no output schema needs modest description — and this covers the mechanism but not what comes back (count, ranking, snippet format) or how to choose between the default FTS mode and the optional embedding path. Adequate but with clear gaps given a crowded sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query, role and top_k are already documented in structured form; baseline 3 applies. The description adds no syntax hints (e.g., quoting, CJK tokenization implications of the bigram mode) or guidance on how role/top_k interact with the search mode.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search the knowledge base') and adds the retrieval mechanism (FTS5 + CJK bigram, optional embedding), which clearly separates it from the write-side siblings rsi_knowledge_add/update/delete. It does not differentiate itself from read-side siblings such as rsi_recall or rsi_explore, so an agent still cannot tell which retrieval tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, no mention of prerequisites, and no routing among the many sibling retrieval tools. The only usage-like signal is the incidental note that embedding is optional, which concerns internals rather than selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_knowledge_updateA
Update an existing memory in place by id (title/content/tags/roles/domain/description/trigger_condition/expiry_condition) — prefer updating over re-adding duplicates. action=merge combines near-duplicates: keep the more complete one, archive the rest (recoverable, not hard-deleted) and record a supersedes edge. Preserves id and location. 按 id 原地更新已有记忆(改 title/content/tags/roles/domain/description/前提与失效条件),改优于新建重复。action=merge 合并近重复:保留更完整者、其余归档(可恢复非硬删)并写 supersedes 边;保留 id 与所在目录。
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | update 必填:目标条目 id | |
| ids | No | merge 必填:待合并的条目 id(≥2) | |
| tags | No | 标签(整体替换) | |
| roles | No | 适用角色(整体替换) | |
| title | No | 新标题(≤120 字) | |
| action | No | update=按 id 原地改字段(默认);merge=合并近重复 | |
| domain | No | 领域/板块 | |
| content | No | 新正文(短知识≤1500,案例类≤20000) | |
| keep_id | No | merge 可选:指定保留者;缺省自动取正文最长/最新的一条 | |
| description | No | 一句话简述 | |
| expiry_condition | No | 失效条件 | |
| trigger_condition | No | 前提条件 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full load and does well: it discloses that merge archives rather than hard-deletes (recoverable), writes a supersedes edge, preserves id and location, and defaults keep_id to the longest/newest entry. It doesn't cover error behavior for a missing id or what the response contains, which for a mutation tool leaves a small gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The English sentence is front-loaded with the core action and the merge semantics follow logically. The full Chinese restatement roughly doubles the length without adding new information, which is a deliberate bilingual choice but still dilutes density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation tool with no annotations and no output schema, the description covers the essential risk surface: partial vs whole-field replacement, recoverability of merge, and identity preservation. It stops short of stating failure modes (nonexistent id, conflicting keep_id) or what a successful call returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every one of the 12 parameters is already documented in the schema, including id/ids requirements and the action enum. The description restates the field list and merge semantics but adds no format or constraint detail beyond what the schema already provides, so the baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (update an existing memory in place by id) and enumerates exactly which fields can change, which cleanly separates it from sibling rsi_knowledge_add (creation) and rsi_knowledge_delete. The two modes (update vs merge) are named up front so the agent can tell what it is invoking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"prefer updating over re-adding duplicates" is an explicit routing directive away from the add tool, and merge's purpose (combine near-duplicates) is stated. What's missing is a when-NOT clause — e.g. what to do if the id is unknown, or when to fall back to add/delete instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_learnC
Teaching / audit / closeout learn / promote / reading-pack actions. The host agent writes the lesson (Catch→Teach→Fix) then teach_record; RSI does not write the lesson. pack_list / pack_open / pack_done walk reading packs. Unavailable actions return not_in_phase — follow message. 教学/审计/收工学习/晋升/阅读包。Agent 自己 Catch→Teach→Fix 后 teach_record;不要让 RSI 代写 lesson。pack_list / pack_open / pack_done 串联阅读包。未开放的 action 返回 not_in_phase,按 message 改用其它工具。
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | teach-draft id or reading-pack id | |
| lane | No | pack_list filter: skills_rules / teaching / docs / code / git / conversation / cursor / other | |
| lang | No | explicit locale override | |
| globs | No | host ATS globs for audit_start | |
| items | No | classified closeout items for extract | |
| scope | No | audit/extract scope: session or full | |
| action | No | teach_catch / teach_record / skip / rubric / audit_start / audit_probes / audit_report / audit_finish / extract / promote / pack_list / pack_open / pack_done | |
| lesson | No | host-written lesson; correct_fix required for teach_record | |
| reason | No | skip reason | |
| status | No | pack_done: done / skipped / pending | |
| overall | No | pass or fail | |
| pack_id | No | alias of id for pack_open / pack_done | |
| payload | No | ||
| trigger | No | teach_catch trigger | |
| draft_id | No | alias of id | |
| findings | No | host findings for audit_report | |
| scope_id | No | required when scope=full | |
| changed_files | No | host ATS file list for audit_start | |
| probe_results | No | uploaded probe results; RSI does not exec | |
| probe_summary | No | ||
| low_confidence | No | ||
| reopen_skipped | No | pack_list: true = 把不允许 skip 的 skipped 包改回 pending | |
| system_attempts | No | teach_catch attempts | |
| disclaimer_partial | No | ||
| promote_to_pattern | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two useful traits: responsibility for lesson authoring lies with the host (RSI will not generate it), and gated actions return not_in_phase with a message to redirect. It does not say which actions mutate persistent state, what promote or teach_record actually change, or whether any operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action categories are front-loaded, which is good, but the entire content is duplicated in Chinese, roughly doubling length with zero new information for a single locale-driven audience. No sentence is wasted individually, yet the deliverable is twice the necessary size.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a 13-action dispatcher with 25 parameters, nested objects, no annotations, and no output schema — the highest-burden case — yet the description explains only the teach loop and the pack trio. The audit pipeline (audit_start → audit_probes → audit_report → audit_finish), extract, promote, skip, and rubric are unaddressed, leaving an agent unable to sequence most of the tool's surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the baseline is 3 and the schema already documents the individually described fields. The description adds only indirect hints by naming some action values in prose (teach_record, pack_list, pack_open, pack_done) but says nothing about scope/scope_id pairing, pack_id vs id aliasing, or the payload object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a noun list ('Teaching / audit / closeout learn / promote / reading-pack actions') rather than a single clear verb+resource, and it never says outright that this is a multi-action dispatcher for the RSI learning lifecycle. The second sentence does name concrete actions (teach_record, pack_list/pack_open/pack_done), which gives partial specificity, but nothing distinguishes this from siblings like rsi_recall or rsi_review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real procedural guidance for one path: 'The host agent writes the lesson (Catch→Teach→Fix) then teach_record; RSI does not write the lesson.' That tells an agent who must supply content. But for the other nine-plus actions (audit_start/probes/report/finish, extract, promote, skip, rubric) there is no when-to-use, ordering, or alternative-tool guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_memoryC
Open or search memory files. index lists entries, open reads one id, reindex rebuilds cache, graph returns mermaid text. 打开或检索记忆文件。index 列目录,open 按 id 读全文,reindex 重建缓存,graph 返回 mermaid 文本。
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | exact 32-hex document id for open | |
| lang | No | explicit locale override | |
| action | No | index / open / reindex / graph |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must carry the full behavioral burden. It hints that reindex mutates a cache, but never says whether reindex is expensive, idempotent, or permission-gated, what index returns, or what happens with a malformed id. Only 'graph returns mermaid text' discloses output shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action-mode breakdown is front-loaded and useful, but the entire English sentence is then repeated verbatim in Chinese. That duplication roughly doubles length without adding information for a single-language reader, so a significant portion of the text does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and a dispatcher spanning four behaviors, the description is thin: it does not describe index/read return formats, reindex cost or side effects, locale behavior, or failure modes. An agent can pick a mode but cannot predict consequences.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents id (32-hex, for open), lang (zh/en), and the action enum. The description adds only the action-to-parameter link for open, while the lang override and its effect on returned text are never mentioned, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The definition enumerates four concrete modes (index lists entries, open reads one id, reindex rebuilds cache, graph returns mermaid text), which is specific. However, the opening phrase 'Open or search memory files' promises a search capability that no action provides, and nothing distinguishes rsi_memory from siblings such as rsi_memory_health or rsi_recall.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each action is described in isolation ('index 列目录', 'open 按 id 读全文'), which hints at when to use each. But there is no guidance on when to choose this tool over rsi_recall, rsi_explore, or rsi_memory_health, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_memory_healthA
Memory health findings: scan/list/explain/resolve. scan attributes a rejected or low-rated recall to every retrieved id, opens incorrect when comment polarity contradicts the memory, and opens stale_source when a changed source file no longer contains the title phrase. resolve is archive, revise, keep, or snooze. Scan never archives by itself. 记忆健康发现:scan/list/explain/resolve。scan 把拒绝或低分记到本次召回的每一条记忆上;评语极性与记忆相反时开 incorrect,来源已变且标题短语不在文件中时开 stale_source。resolve 取 archive、revise、keep、snooze。扫描本身不会归档。
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | resolve 可选备注 | |
| action | Yes | scan=立即扫描 list=列出发现 explain=只读展开 resolve=裁决 | |
| status | No | list 过滤;缺省为 open 与 awaiting_edit | |
| finding_id | No | explain / resolve 必填 | |
| resolution | No | resolve 必填:archive / revise / keep / snooze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses what scan writes (a finding against every retrieved id), the exact conditions that open incorrect and stale_source findings, and the important safety fact that 'scan never archives by itself.' It still omits whether resolve actions like archive are reversible and what side effects resolve has on the underlying memory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded with the action list and dense with useful rules, but the entire description is duplicated verbatim in English and Chinese, roughly doubling the length without adding new information for most readers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, no-annotation, no-output-schema tool, the description covers the action semantics, the finding-opening rules, and the key safety boundary. It stops short of describing finding shape or resolve side effects, which are the remaining gaps an agent must infer from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with enums and inline descriptions for action, status, finding_id and resolution, so the schema already does the heavy lifting. The description reinforces the resolution enum and the resolve workflow but adds no format or constraint detail beyond what the schema provides, making baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (memory health findings) and enumerates its four action modes, with concrete behavioral detail for scan (attributing rejected/low-rated recalls, opening incorrect and stale_source findings). It distinguishes this tool from generic recall/review siblings by framing it around health findings, though it never names an alternative tool directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the action list plus notes like 'resolve is archive, revise, keep, or snooze' and 'Scan never archives by itself' hint at the workflow (scan → list/explain → resolve), but the description states no explicit when-to-use, when-not-to-use, or alternative-sibling guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_recallA
Call before any coding, adaptation, debugging, or design task. Returns prohibitions you must follow, related items, and a skill catalog (name/description/path only). Use feedback_token with rsi_feedback before you wrap up. If decisions is non-empty, call rsi_conflicts / rsi_knowledge_review immediately; do not ask the user to run rsi in a terminal. 任务开始前调用。返回必须遵守的 prohibitions、相关 items,以及技能目录。用 feedback_token 在收工前调用 rsi_feedback。有 decisions 时立刻调 rsi_conflicts / rsi_knowledge_review,不要让用户去终端跑 rsi。
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | 调用方角色(如 developer/test/pm) | |
| task | Yes | 即将开始的任务描述(自然语言) | |
| top_k | No | 返回条数上限(缺省由召回策略臂决定) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses returned categories (prohibitions, items, skill catalog, and decisions by implication) and the required workflow after recall. It does not state whether the tool is read-only or otherwise side-effect-free, which leaves a minor gap for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The English portion is front-loaded and purposeful, covering trigger, outputs, and follow-ups efficiently. However, the full Chinese translation duplicates the same content, which is redundant for an agent and makes the definition longer than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the main return categories and the required downstream workflow, which is the critical context for this orchestration tool. It could be more complete by clarifying how feedback_token is obtained or what the decisions field represents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains role, task, and top_k. The description adds no further parameter semantics, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific trigger and output set: call before coding/adaptation/debugging/design tasks to get prohibitions, related items, and a skill catalog. It names several sibling tools for follow-up, but does not explicitly distinguish itself from rsi_knowledge_search or rsi_explore, so sibling differentiation is incomplete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states when to call (before coding, adaptation, debugging, or design tasks) and gives explicit follow-up rules: use feedback_token with rsi_feedback before wrapping up, and call rsi_conflicts / rsi_knowledge_review immediately if decisions is non-empty. It lacks explicit when-not-to-use guidance or a direct comparison to search-oriented alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_reviewC
Harness improvement proposals: list/approve/reject/rollback/generate and config snapshots snapshot_list/snapshot_switch/snapshot_export. Harness 改进提案:list/approve/reject/rollback/generate 及配置快照 snapshot_list/snapshot_switch/snapshot_export。
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | 操作类型 | |
| reason | No | reject/rollback 理由 | |
| status | No | list 状态过滤 | |
| out_dir | No | bundle 导出目录(snapshot_export) | |
| version | No | 快照版本(snapshot_switch/export) | |
| proposal_id | No | 提案 ID(approve/reject/rollback) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden, yet it only implies mutations via the action names (approve/reject/rollback). It says nothing about permissions, reversibility, what rollback or snapshot_switch actually change, blast radius, or whether generate/snapshot_export write files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is a single bare enumeration duplicated verbatim in Chinese, which wastes tokens for most agents without adding information. It is front-loaded but not structured, and every sentence is just a restatement of the schema enum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with mutation-capable actions and no annotations and no output schema, the description is severely underspecified: no lifecycle of proposals, no effect of approve vs rollback, no snapshot semantics, no return info. An agent can guess from action names but cannot call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents action, reason, status, out_dir, version, and proposal_id. The description merely repeats the action enum values and adds no additional semantics (e.g., which ids come from where, what versions mean).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names a resource ('Harness improvement proposals') and enumerates actions (list/approve/reject/rollback/generate) plus config snapshots, but lumps two distinct domains into one tool without explaining what a 'harness improvement proposal' actually is. The purpose is recognizable but vague, and nothing distinguishes it from siblings like rsi_feedback or rsi_learn.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only lists action values; it never says when to use this tool versus the many rsi_* siblings, nor when approval/rollback/generate are appropriate. There are no prerequisites, exclusions, or alternative-tool routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rsi_statsC
Memory usage stats: period=day/week/month summaries of reach, adoption, prohibition follow-through, and proposal pass rate. 记忆使用统计:period=day/week/month 汇总触达/采纳/禁止项遵循/提案通过率。
| Name | Required | Description | Default |
|---|---|---|---|
| export | No | true 时导出到 ~/.rsi/exports/ 并返回路径 | |
| format | No | 导出格式(默认 json) | |
| period | Yes | 统计周期(必填) | |
| group_by | No | 分组维度:intent 或召回臂 arm | |
| stale_days | No | 失活判定天数(默认 30) | |
| include_stale | No | true 时附失活候选(长期未召回且未编辑的正式条目,只读) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden, and it discloses very little: nothing about read-only vs mutating behavior, the fact that export=true writes files to disk, cost/latency, or what the returned summary looks like. The one behavioral side effect an agent would care about (file export) is only visible in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, which is good. But the description is given twice (English then Chinese) with no additional information in the second copy, roughly doubling length without adding value for an agent that can read either language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a six-parameter reporting tool with no output schema, so the description is the only place an agent can learn what the summary contains or how it is shaped. It lists metric names but not their structure, grouping semantics, or the export side effect, leaving significant gaps for a tool with no annotations and no return schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so period, export, format, group_by, stale_days and include_stale are already documented in the schema. The description repeats only the period enum values and adds no interpretation of what group_by=intent vs arm means or when to set include_stale. Baseline 3 is appropriate when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (memory usage stats) and enumerates the four metric families computed (reach, adoption, prohibition follow-through, proposal pass rate) alongside the period granularity. That is clearly more than a name restatement. It does not, however, position itself against the obvious sibling rsi_memory_health, which likely also reports memory statistics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance; the agent must infer that this is for aggregate reporting rather than record-level work. The presence of rsi_memory_health among the siblings makes the missing differentiation a real ambiguity, since both plausibly answer 'how healthy is my memory'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
v0.1.0- First observed
rsi_conflicts - First observed
rsi_explore - First observed
rsi_feedback - First observed
rsi_impact - First observed
rsi_knowledge_add - First observed
rsi_knowledge_delete - First observed
rsi_knowledge_review - First observed
rsi_knowledge_search - First observed
rsi_knowledge_update - First observed
rsi_learn - First observed
rsi_memory - First observed
rsi_memory_health - First observed
rsi_recall - First observed
rsi_review - First observed
rsi_stats
TDQS
Scored across 15 tools
Multiple tools cover retrieval/reading of the same underlying corpus: rsi_recall, rsi_knowledge_search, rsi_explore and rsi_memory all pull knowledge/memory content, distinguished only by entry path. Names like rsi_review vs rsi_knowledge_review, and rsi_stats vs rsi_impact vs rsi_memory_health, look interchangeable and require reading long descriptions to separate. Several tools are also multi-action multiplexers (rsi_learn, rsi_review, rsi_memory, rsi_conflicts) whose internal actions overlap with other tools.
The rsi_ prefix and snake_case are used throughout, which is good. However, the verb/noun convention is mixed: some tools are bare nouns (rsi_memory, rsi_stats, rsi_impact, rsi_conflicts) while others are verb or noun_verb (rsi_knowledge_search, rsi_knowledge_add, rsi_learn, rsi_recall). The near-identical rsi_review / rsi_knowledge_review pair further weakens predictability.
15 tools sits at the upper bound of a healthy set for a fairly broad surface (recall, knowledge CRUD, review/approval, conflicts, health, stats/impact, learning packs). Each tool broadly maps to a distinct capability area, though a few analytics/health tools feel like they could be consolidated. Not an egregious over-scoping.
Knowledge lifecycle is well covered: add, update/merge, delete, search, browse, approval review, conflict resolution, feedback, and health remediation. The main gap is a direct read-by-id/get-item tool; reading full bodies relies on rsi_recall semantics, which is a minor workaround rather than a blocker.
Maintenance
Related MCP Connectors
Path-scoped project memories, rules and skills for coding agents, on your machine or Pathrule Cloud.
Checks AI-written code against your rules as it is written, and keeps a record of what it found.
Shared project memory for coding agents: decisions, lessons, guardrails and tasks per repository.
Path-scoped team memories, rules and skills for Claude Code, Cursor, Codex and other MCP clients.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides AI agents with queryable, version-controlled project rules and coding standards. Enables validation, rule-based guidance, and task summaries to keep AI work aligned with your project's conventions without repeating context.2MIT
- AlicenseNot gradedqualityAmaintenanceEnables Claude Code, Cursor, Codex, and Claude Desktop to carry project decisions, rules, bugs, to-dos, and failed approaches across sessions by saving them as lines in a repo file and bringing the relevant ones back on each prompt. It also checks commands and file edits against those saved rules before they run, flagging anything that might break one.848 npmMIT
- AlicenseNot gradedqualityAmaintenanceSaves decisions, rules, bugs, to-dos, and failed approaches from Claude Code, Cursor, and Codex chats into a repository file, then brings relevant entries back in later sessions and checks tool calls against saved rules before commands or edits run.848 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables coding assistants to save decisions, rules, bugs, to-dos and failed approaches from chats into a repo memory file, bring the relevant entries back in later sessions, and check commands or edits against saved rules before they run.848 npmMIT