关于 librarian
librarian 用于维护远程 Git 仓库的可复用本地检出。它解析仓库地址并复用缓存,按间隔获取更新,在条件允许时快进同步。
主要功能
- 01解析常见 Git 仓库地址
- 02将检出存入固定路径
- 03使用 blob 过滤进行部分克隆
- 04每五分钟刷新过期仓库
- 05条件允许时快进更新干净检出
适用场景
- 01在本地搜索和分析远程仓库
- 02多个任务复用现有检出
- 03检查前强制立即刷新
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mitsuhiko/ agent-stuff --skill librarian安装后在 Claude Code 中输入/librarian确认已加载。
附带文件checkout.sh
详细介绍
当用户提供远程 Git 仓库地址(GitHub/GitLab/Bitbucket URL、git@... 或 owner/repo 简写)时,使用此技能。
目标是保留可重复使用的本地检出版本,并确保其:
- 稳定(路径可预测)
- 保持最新(定期获取更新,并在安全时快进)
- 高效(使用
--filter=blob:none进行部分克隆,避免重复完整克隆)
缓存位置
仓库存储在:
~/.cache/checkouts/<host>/<org>/<repo>
示例:
github.com/mitsuhiko/minijinja → ~/.cache/checkouts/github.com/mitsuhiko/minijinja
命令
bash checkout.sh <repo> --path-only
示例:
bash checkout.sh mitsuhiko/minijinja --path-only
bash checkout.sh github.com/mitsuhiko/minijinja --path-only
bash checkout.sh https://github.com/mitsuhiko/minijinja --path-only
脚本将:
- 将仓库引用解析为 host/org/repo。
- 如果仓库不存在,则克隆。
- 如果已有检出版本,则重复使用。
- 仓库过期时,从
origin获取更新(默认间隔:300s)。 - 如果检出版本干净且配置了上游,则尝试快进合并。
更新策略
- 默认行为是限制刷新频率(每 5 分钟一次),以避免不必要的网络请求。
- 使用以下命令立即强制刷新:
bash checkout.sh <repo> --force-update --path-only
推荐工作流
- 通过
checkout.sh --path-only获取仓库路径。 - 使用该路径进行搜索、读取和分析。
- 后续再次引用同一仓库时,再次调用
checkout.sh;它会找到并更新缓存的检出版本。
如需编辑
尽量不要直接编辑共享缓存。请创建单独的 worktree,或从缓存的检出版本复制一份,用于特定任务的修改。
注意事项
owner/repo默认使用github.com。
评论
支持 Markdown