这个项目能做什么
claude-code-rlm 是 Claude Code 的一个钩子,在主模型处理提示词之前对代码库进行预研究。它不再让主模型(Opus 或 Sonnet)在首次工具调用时进行自我定位,而是先派遣速度更快、成本更低的 Haiku 模型探索存储库,并将结果作为注入的上下文交给主模型。
工作原理
1. Claude Code 通过 UserPromptSubmit 钩子调用 rlm-hook.mjs,通过 stdin 传递包含 prompt、cwd 和 transcript_path 等字段的 JSON。
2. 立即跳过简单输入:短于配置最小长度的提示词、简单的 shell 命令(ls, pwd, cat, echo, git status, npm, yarn)、单词肯定词、斜杠命令(如 /help, /clear 和 /compact),以及代码量超过输入一半的代码粘贴。
3. 将提示词和工作目录的 SHA-256 哈希值与默认 TTL 为一小时的文件缓存进行比对。
4. 若缓存未命中,则启动配置了 Haiku 模型的 Claude CLI,限制其仅能使用 Read, Glob, Grep 和 git Bash,并给定系统提示词,指示其在可配置的工具调用次数内探索代码库。
5. Haiku 将发现的结果写入临时 JSON 文件;钩子将其格式化为结构化的 rlm_preresearch 块(包含意图、摘要、相关文件、现有模式、近期更改、建议方法、任务和警告),然后将其打印到 stdout,以便 Claude Code 在用户提示词之前将其注入。
6. 任何失败(包括超时、API 错误和 JSON 解析错误)都将不输出内容直接退出,因此该钩子不会阻塞或损坏对话。
模式与配置
所有内容均通过环境变量配置。Agentic 模式(默认)启用基于工具的探索,在缓存未命中时耗时约为 20 秒;fast 模式在约 4 秒内执行不含工具调用的简明分析。其他设置涵盖模型名称、总超时时间、缓存 TTL、最小和最大输入长度、最大工具轮数、缓存和日志路径以及指标文件。可选的 SDK-Direct 模式使用带有 API 密钥的 Anthropic SDK 而非子进程。
README 中描述的其他功能包括:可选的语义缓存(通过可配置的余弦相似度阈值比较嵌入)、上下文复用(回顾近期 RLM 块以避免重复分析相同的意图或文件),以及带有配套仪表盘(本地 9876 端口提供服务)的指标 JSONL 日志,用于显示延迟分布、缓存命中率、各模式性能和预估的 Haiku 成本。
报告的延迟数据:跳过时约 27 毫秒,缓存命中时约 37 毫秒,Agentic 模式未命中时约 20 秒,fast 模式约 4 秒。
要求与安装:Node.js 18 或更高版本,且 Claude Code CLI 在 PATH 中。提供的安装脚本将钩子复制到 Claude 钩子目录并使其可执行;必须在 Claude Code 配置文件中添加包含命令和超时的钩子条目。测试和基准测试通过 npm 脚本运行,集成测试需要运行中的 claude 二进制文件。该项目采用 MIT 许可证发布。
评论
0 评分人数达到10人后显示
登录后参与讨论。