安装
uv tool install shikhu适合谁
你接手了一个读不完的代码库,或者团队里总有人在问“这块到底谁在用”。如果你的目标是让 AI 编码代理围绕你自己的代码反复练习,并且把“我到底懂了多少”变成一个能追踪的数字,那么 Shikhu 的思路比一次性问答更合适:它把学习变成出题与答题,工具从仓库里出题并记录你答对答错,配套技能负责在你指定的文件里带你过知识点。适合愿意让代理在真实代码上做几轮练习、并且接受“模型会读你的代码”这件事的人。
3 分钟完成第一次尝试
官方路径只有一条,先装命令行工具:
uv tool install shikhu
装完 shikhu 就在 PATH 上,并且处于隔离环境,不会和项目里的依赖打架。
前置条件有两项:一是环境里有 uv;二是 OpenRouter API key——放在仓库根目录的 .env(自动加载),或者在 shell 里导出 OPENROUTER_API_KEY,因为所有模型调用都经由 OpenRouter。
然后在你想学习的那份代码根目录执行:
shikhu init
这一步会真的写文件,先确认再跑:它会写入本地数据库 coverage.db(自动加进 .gitignore)、生成 .quizignore(用法类似 .gitignore,把配置或文档类文件排除在出题范围之外),并把两个技能安装进代理的技能目录。
安装位置:技能会落在仓库中已经存在的 .claude/skills/ 和/或 .agents/skills/ 里(看你用的代理属于哪一套);两套目录都没有时,两处都会放。之后想重装或者装到全局,可以用 shikhu install-skill,加 --global 走全局范围。
第一次触发挑只读、可逆的活儿:在支持技能的编码代理里用 /shikhu-study 指定一个小文件,或者用 /shikhu-inquiry 问一个只涉及单个函数的问题。发问前先确认这次提问会带来外部模型调用(走 OpenRouter、消耗额度),确认后再发出去。
可观察的成功信号有三个:代理的回答里出现你仓库中真实存在的文件名、函数名和调用关系,而不是通用教程;被问过的问题会变成测验种子,之后出题时还能再遇到它;项目根目录多出 coverage.db 与 .quizignore。
使用案例
案例一:定向自学某个模块。
先建索引:
shikhu summarize
它为每个被跟踪的文件写一份模型生成的缓存摘要;每个文件一次模型调用,内容没变的文件不会重跑。技能与 shikhu map 靠这些摘要判断“某个问题该看哪些文件”。索引建好后,在代理里用 /shikhu-study 指定要学的文件或目录,代理按摘要给出的定位带你逐个过。
案例二:把日常提问变成测验种子。
在代理里用 /shikhu-inquiry 问一个关于自己代码的问题——比如某个接口的入参从哪来、某段逻辑为什么这样写。它给出回答,同时把这个问题记为测验种子;之后工具从代码生成测验时这些种子会参与进来,你答对答错都会被跟踪成知识覆盖率。想让出题集中在真正的代码上,就用 .quizignore 把配置和文档类文件排除掉。
使用边界
- 需要自备 OpenRouter API key,没有它,任何涉及模型生成的步骤都做不了。
shikhu summarize按文件计费,仓库越大首次索引越慢也越贵;只有文件内容变了才会重跑。- 技能落盘位置取决于仓库里已经存在哪些技能目录,两者都没有时会同时创建两处。
coverage.db写在项目里但自动进.gitignore,不同步到版本库,团队之间不共享覆盖率和答题记录。- 来源说明了命令行工具与两个技能的用法、命令和安装位置;但它支持哪些编程语言、覆盖率具体怎么算、不同难度档位如何判定,来源里没有写明,不要按常规测试工具的行为去推断。