mcpField
O
opensrc

opensrc

github.com/vercel-labs开发3.0k3.0k 次安装6 周前更新
代码仓库

关于 opensrc

opensrc 是一款命令行工具,可获取依赖项源码,供开发者和编码 Agent 查看类型定义之外的实现。它可根据项目锁文件解析 npm 版本,支持软件包和仓库引用,并将获取的源码缓存在全局目录。

主要功能

  1. 01获取软件包和仓库源码
  2. 02根据锁文件解析 npm 版本
  3. 03固定仓库分支、标签或提交
  4. 04全局缓存源码
  5. 05列出、移除和清理缓存源码

适用场景

  1. 01检查依赖项的内部行为
  2. 02调试意外的库行为
  3. 03查找测试中的边缘情况处理
  4. 04从源码学习实现模式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/vercel-labs/opensrc --skill opensrc

安装后在 Claude Code 中输入/opensrc确认已加载。

详细介绍

使用 opensrc 获取源代码

获取依赖项的源代码,让 Agent 能够阅读实现,而不仅仅是类型。按正确的版本标签克隆仓库,并将其全局缓存到 ~/.opensrc/。

核心模式

rg "parse" $(opensrc path zod)
cat $(opensrc path zod)/src/types.ts
find $(opensrc path zod) -name "*.test.ts"

opensrc path <pkg> 会打印缓存源代码的绝对路径。如果尚未缓存,则会自动获取。进度信息输出到 stderr,路径输出到 stdout,因此可以在子 shell 中使用 $(opensrc path ...)。

获取源代码

opensrc path zod
opensrc path pypi:requests
opensrc path crates:serde
opensrc path facebook/react

# Multiple packages at once
opensrc path zod react next
opensrc path pypi:requests pypi:flask
opensrc path crates:serde crates:tokio

# Specific versions
opensrc path [email protected]
opensrc path pypi:[email protected]
opensrc path owner/[email protected]
opensrc path owner/repo#main
版本解析

对于 npm 包,opensrc 会从锁文件(package-lock.json、pnpm-lock.yaml、yarn.lock)中自动检测已安装版本。使用 --cwd 可从其他项目解析版本:

opensrc path zod --cwd /path/to/project

对于 PyPI 和 crates.io,会使用显式指定的版本或最新版本。对于仓库,使用 @ref 或 #ref 固定分支、标签或提交。

管理缓存

源代码会全局缓存到 ~/.opensrc/(可通过 OPENSRC_HOME 覆盖)。

opensrc list                     # show all cached sources
opensrc list --json              # JSON output

opensrc remove zod               # remove a package
opensrc remove facebook/react    # remove a repo

opensrc clean                    # remove everything
opensrc clean --npm              # only npm packages
opensrc clean --pypi             # only PyPI packages
opensrc clean --crates           # only crates.io packages
opensrc clean --packages         # all packages, keep repos
opensrc clean --repos            # all repos, keep packages

何时获取源代码

在以下情况下获取源代码:

  • 了解类型无法揭示的内部行为
  • 调试意料之外的库行为
  • 学习知名实现中的模式
  • 验证函数如何处理边界情况

对于文档或类型已能解答的简单 API 使用问题,不要获取源代码。

评论

支持 Markdown