mcpField
O
opensrc

opensrc

github.com/mxyhi开发50973 次安装1 周前更新
代码仓库

关于 opensrc

opensrc 是供 Agent 获取依赖源代码的命令行技能,让它们查看实现而不只看 API 类型。它会按对应版本获取代码并存入全局缓存,支持查询和清理。

主要功能

  1. 01获取软件包和仓库源代码
  2. 02从锁文件解析 npm 版本
  3. 03将仓库固定到指定 ref
  4. 04列出、移除和清理缓存源代码

适用场景

  1. 01检查库的内部行为
  2. 02排查依赖表现异常
  3. 03查看实现模式与边界情况

安装

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

$npx skills add https://github.com/mxyhi/ok-skills --skill opensrc

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

附带文件agents/openai.yamlLICENSE.txt

详细介绍

使用 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