Skip to main content
Glama

Install MCP Server Install in VS Code rsi-boot MCP server

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 工具、换同事

重学,各记各的

对方接得上才有

多数只做存取

同一份 .rsi/ 与 AGENTS.md

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

差值

LongMemEval 同一档,LoCoMo 总平均挨着论文。右边高于公开检索数字,左边低于。

前四行的差值不到 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。

你说

结果

第一次学这个项目

扫这个仓库,写成待审条目;你批准之后,下次才能召回

重新学习

清掉这份仓库的记忆,再学一遍

打开记忆大屏 / 关掉记忆大屏

本机页面打开或关掉

把刚才的修法记下来

先进入待审,批准后才留下

这两条是不是矛盾

查冲突,等你裁决

重新学习会删掉该项目 .rsi 里的记忆、日志和缓存,保留 identity.json。文件被占着,就先在 Settings → MCP 关掉 rsi-boot。学完看 .rsi/bootstrap_report.md:待审清空并且批准过,召回才可用。代理如果报必须指定 --host-judge,让它加上这个参数再跑。

工具

接上之后,这些工具出现在当前项目的代理里。DeepSeek Harness 上的名字多一层前缀,例如 mcp__rsi-boot__rsi_recall。

工具

干什么

rsi_recall

开工前召回。禁止项放在最前,后面是约定、文档和修过的教训

rsi_explore

按板块看知识树。不传路径时列出顶层和条数;传路径时列出这一支的标题和 id

rsi_learn

第一次学这个仓库、把这次的教训记下来、做会话收工

rsi_knowledge_add

新增一条记忆。先待审,批准后才进入召回

rsi_knowledge_search

按问题查找已有记忆

rsi_knowledge_update

改已有的一条,或把近重复的几条合成一条

rsi_knowledge_delete

删除一条记忆

rsi_knowledge_review

批准或拒绝待审条目

rsi_conflicts

查出互相矛盾的记忆,等你裁决

rsi_memory_health

查出写错或来源已经失效的正式记忆。扫描本身不改库,确认之后才归档

rsi_memory

看索引、打开一条、重建索引、看条目之间的关系

rsi_feedback

记下这次召回有没有被用上。拒绝并写明原因时,会收成一条禁止项

rsi_review

看 harness 的改进提案和配置快照,决定留不留

rsi_stats

看记忆用了多少、采纳得怎么样

rsi_impact

看注入了多少、召回压了多少、采纳和合规

rsi_web_ui

打开或关掉本机记忆大屏。不改 rsi serve 的启动参数

字段和调用参数见 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 tools
rsi_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,不要关掉抉择卡。

NameRequiredDescriptionDefault
noteNoresolve 可选:裁决备注
limitNolist 分页:每页条数(夹到 [1, 200])
actionYeslist=查询冲突(默认) resolve=裁决 scan=立即扫描 explain=只读展开
offsetNolist 分页:起始偏移
statusNolist 过滤:open/user_wins/memory_wins/keep_peer/keep_item/coexist/closed/allopen
decisionsNoresolve 批量:逐条裁决,存在时忽略 conflict_id/resolution
resolutionNoresolve 必填:规则冲突用 user_wins/memory_wins/coexist;version/doc_code/incoherent 用 keep_peer/keep_item/coexist
conflict_idNoresolve/explain 必填:冲突 id
bootstrap_run_idNolist 过滤:只列该 bootstrap run 的冲突(item 侧或 user_rule_path 侧条目 tags 含 bootstrap_run_id:<id>)

TDQS

A4.2/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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。

NameRequiredDescriptionDefault
pathNo知识树节点路径;空 = 列顶层板块,如 backend 或 backend/api = 下钻该板块
depthNo返回的子树层级深度(默认 2)
limitNo最多列出成员条目数(默认 50)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 将提炼为禁止项。

NameRequiredDescriptionDefault
actionYesaccepted/applied=采纳应用 modified=修改后采纳 copied=复制 referenced=参考 ignored=忽略 rejected=拒绝
ratingNo可选 1-5 评分(与 action 可叠加,分别生效)
commentNo可选评语;action=rejected 时填写将提炼为禁止项(§4.4)
feedback_tokenYesrsi_recall 返回的反馈令牌
modified_contentNoaction=modified 时的修改后内容(用于 diff 比例计算)

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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。

NameRequiredDescriptionDefault
abNo用前/用后对照输入(数字来自宿主自己报的 token 用量,本工具只做差,不估算)
exportNotrue 时导出一页纸 markdown 到 ~/.rsi/exports/ 并返回路径
periodNo统计窗口(默认 week)
snapshotNotrue 时顺带把当前窗口聚合落一条日快照(攒长期曲线)

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 必填)。

NameRequiredDescriptionDefault
tagsNo标签
rolesNo适用角色,空=通用
titleYes条目标题
domainNo领域
contentYes条目正文
pack_idNo阅读包 id;蒸馏时必填,写入 pack_id: 标签
source_urlNo来源(文档路径/signal),带来源的 active 落正式
content_typeNoprohibition/convention/skill/documentation 或案例类型
expiry_conditionNo失效条件:什么情况下该记忆应视为过时(如「迁移到 JPA 后作废」)
trigger_conditionNo前提条件:这条记忆在什么前提下成立(如「仅当使用 MyBatis 时」)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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). 删除指定知识条目(删除权)。

NameRequiredDescriptionDefault
idYes知识条目 ID

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 规则文件。

NameRequiredDescriptionDefault
idNo待审知识条目 ID;action=skip 时为决策卡 id(extract:<run_id> 或冲突 id)
idsNo批量审批的条目 ID 列表
actionYesapprove/reject=审批;skip=抑制决策卡(不审批)
all_pendingNotrue = 审批 tags 不含 bootstrap_run_id 的 pending(日常 auto-extract 等);不含本轮 bootstrap 抽取,除非同时传 bootstrap_run_id
content_typeNo批量审批时按内容类型过滤(convention/architecture/faq/documentation)
bootstrap_run_idNo只审批该 bootstrap 轮次的抽取(与 all_pending 联用,或单独表示本轮全部)
include_archivedNo批量审批时包含 archived(bootstrap 限量溢出)条目

TDQS

A3.5/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_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 与所在目录。

NameRequiredDescriptionDefault
idNoupdate 必填:目标条目 id
idsNomerge 必填:待合并的条目 id(≥2)
tagsNo标签(整体替换)
rolesNo适用角色(整体替换)
titleNo新标题(≤120 字)
actionNoupdate=按 id 原地改字段(默认);merge=合并近重复
domainNo领域/板块
contentNo新正文(短知识≤1500,案例类≤20000)
keep_idNomerge 可选:指定保留者;缺省自动取正文最长/最新的一条
descriptionNo一句话简述
expiry_conditionNo失效条件
trigger_conditionNo前提条件

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 改用其它工具。

NameRequiredDescriptionDefault
idNoteach-draft id or reading-pack id
laneNopack_list filter: skills_rules / teaching / docs / code / git / conversation / cursor / other
langNoexplicit locale override
globsNohost ATS globs for audit_start
itemsNoclassified closeout items for extract
scopeNoaudit/extract scope: session or full
actionNoteach_catch / teach_record / skip / rubric / audit_start / audit_probes / audit_report / audit_finish / extract / promote / pack_list / pack_open / pack_done
lessonNohost-written lesson; correct_fix required for teach_record
reasonNoskip reason
statusNopack_done: done / skipped / pending
overallNopass or fail
pack_idNoalias of id for pack_open / pack_done
payloadNo
triggerNoteach_catch trigger
draft_idNoalias of id
findingsNohost findings for audit_report
scope_idNorequired when scope=full
changed_filesNohost ATS file list for audit_start
probe_resultsNouploaded probe results; RSI does not exec
probe_summaryNo
low_confidenceNo
reopen_skippedNopack_list: true = 把不允许 skip 的 skipped 包改回 pending
system_attemptsNoteach_catch attempts
disclaimer_partialNo
promote_to_patternNo

TDQS

C2.9/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines3/5

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 文本。

NameRequiredDescriptionDefault
idNoexact 32-hex document id for open
langNoexplicit locale override
actionNoindex / open / reindex / graph

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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。扫描本身不会归档。

NameRequiredDescriptionDefault
noteNoresolve 可选备注
actionYesscan=立即扫描 list=列出发现 explain=只读展开 resolve=裁决
statusNolist 过滤;缺省为 open 与 awaiting_edit
finding_idNoexplain / resolve 必填
resolutionNoresolve 必填:archive / revise / keep / snooze

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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。

NameRequiredDescriptionDefault
roleNo调用方角色(如 developer/test/pm)
taskYes即将开始的任务描述(自然语言)
top_kNo返回条数上限(缺省由召回策略臂决定)

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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。

NameRequiredDescriptionDefault
actionYes操作类型
reasonNoreject/rollback 理由
statusNolist 状态过滤
out_dirNobundle 导出目录(snapshot_export)
versionNo快照版本(snapshot_switch/export)
proposal_idNo提案 ID(approve/reject/rollback)

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness2/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 汇总触达/采纳/禁止项遵循/提案通过率。

NameRequiredDescriptionDefault
exportNotrue 时导出到 ~/.rsi/exports/ 并返回路径
formatNo导出格式(默认 json)
periodYes统计周期(必填)
group_byNo分组维度:intent 或召回臂 arm
stale_daysNo失活判定天数(默认 30)
include_staleNotrue 时附失活候选(长期未召回且未编辑的正式条目,只读)

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 15 tool updatesv0.1.0
    • First observedrsi_conflicts
    • First observedrsi_explore
    • First observedrsi_feedback
    • First observedrsi_impact
    • First observedrsi_knowledge_add
    • First observedrsi_knowledge_delete
    • First observedrsi_knowledge_review
    • First observedrsi_knowledge_search
    • First observedrsi_knowledge_update
    • First observedrsi_learn
    • First observedrsi_memory
    • First observedrsi_memory_health
    • First observedrsi_recall
    • First observedrsi_review
    • First observedrsi_stats

TDQS

B3/5.0

Scored across 15 tools

Disambiguation2/5

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.

Naming Consistency3/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Saves 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 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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 npm
    MIT