用途:为 AI 智能体获取依赖库源码,使其能阅读实现细节,而不只是类型定义。
主要能力:按版本标签克隆仓库并全局缓存;支持 npm、PyPI、crates.io 及任意仓库。
使用方式:核心命令 opensrc path <pkg> 输出缓存源码的绝对路径,未缓存时自动拉取。进度写 stderr、路径写 stdout,故可用于 $(opensrc path ...) 子命令。示例:opensrc path zod;opensrc path pypi:requests;opensrc path crates:serde;opensrc path facebook/react。可一次传多个包,或指定版本:opensrc path zod@3.22.0;opensrc path pypi:flask@3.0.0;opensrc path owner/repo@v1.0.0;opensrc path owner/repo#main。
版本解析:npm 包会从 lockfile(package-lock.json、pnpm-lock.yaml、yarn.lock)自动检测已安装版本,可用 --cwd 指定其他项目目录解析;PyPI 和 crates.io 使用显式版本或最新版;仓库用 @ref 或 #ref 固定分支、标签或提交。
缓存管理:源码缓存于 ~/.opensrc/,可用 OPENSRC_HOME 覆盖。opensrc list 列出全部缓存(--json 输出 JSON);opensrc remove zod 移除包;opensrc remove facebook/react 移除仓库;opensrc clean 清空全部,或按 --npm、--pypi、--crates、--packages、--repos 过滤清理。
适用场景:需要理解类型无法揭示的内部行为、调试库的意外行为、借鉴知名实现模式、验证函数如何处理边界情况时获取源码。
限制:仅当文档或类型无法回答的简单 API 用法问题,不适用此工具。其余费用、平台支持等信息暂未提供。