安裝
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,不同步到版本控制,團隊之間不共享覆蓋率與答題紀錄。- 來源說明了命令列工具與兩個技能的用法、命令與安裝位置;但它支援哪些程式語言、覆蓋率具體怎麼算、不同難度級距如何判定,來源裡沒有寫明,不要依一般測試工具的行為去推論。