opensrc
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseSource Code Fetching with opensrc
使用 opensrc 拉取源代码
Fetches dependency source code so agents can read implementations, not just types. Clones repositories at the correct version tag and caches them globally at .
~/.opensrc/拉取依赖源代码,让Agent可以读取实现逻辑,而不仅仅是类型定义。会克隆对应版本标签的仓库,并全局缓存到 路径下。
~/.opensrc/Core Pattern
核心使用模式
bash
rg "parse" $(opensrc path zod)
cat $(opensrc path zod)/src/types.ts
find $(opensrc path zod) -name "*.test.ts"opensrc path <pkg>$(opensrc path ...)bash
rg "parse" $(opensrc path zod)
cat $(opensrc path zod)/src/types.ts
find $(opensrc path zod) -name "*.test.ts"opensrc path <pkg>$(opensrc path ...)Fetching Source Code
拉取源代码
bash
opensrc path zod
opensrc path pypi:requests
opensrc path crates:serde
opensrc path facebook/reactbash
opensrc path zod
opensrc path pypi:requests
opensrc path crates:serde
opensrc path facebook/reactMultiple packages at once
同时拉取多个包
opensrc path zod react next
opensrc path pypi:requests pypi:flask
opensrc path crates:serde crates:tokio
opensrc path zod react next
opensrc path pypi:requests pypi:flask
opensrc path crates:serde crates:tokio
Specific versions
指定版本
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
undefinedopensrc path zod@3.22.0
opensrc path pypi:flask@3.0.0
opensrc path owner/repo@v1.0.0
opensrc path owner/repo#main
undefinedVersion Resolution
版本解析
For npm packages, opensrc auto-detects the installed version from lockfiles (, , ). Use to resolve from a different project:
package-lock.jsonpnpm-lock.yamlyarn.lock--cwdbash
opensrc path zod --cwd /path/to/projectFor PyPI and crates.io, explicit versions or latest are used. For repos, use or to pin a branch, tag, or commit.
@ref#ref对于npm包,opensrc会自动从锁文件(、、)中检测已安装的版本。可以使用 从其他项目路径解析版本:
package-lock.jsonpnpm-lock.yamlyarn.lock--cwdbash
opensrc path zod --cwd /path/to/project对于PyPI和crates.io包,默认使用指定版本或最新版本。对于Git仓库,可以使用 或 绑定分支、标签或 commit 哈希。
@ref#refManaging the Cache
缓存管理
Source is cached globally at (override with ).
~/.opensrc/OPENSRC_HOMEbash
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源代码全局缓存到 路径下(可以通过 环境变量自定义路径)。
~/.opensrc/OPENSRC_HOMEbash
opensrc list # 查看所有已缓存的源代码
opensrc list --json # 以JSON格式输出
opensrc remove zod # 删除指定包的缓存
opensrc remove facebook/react # 删除指定仓库的缓存
opensrc clean # 清空所有缓存
opensrc clean --npm # 仅清空npm包缓存
opensrc clean --pypi # 仅清空PyPI包缓存
opensrc clean --crates # 仅清空crates.io包缓存
opensrc clean --packages # 清空所有包缓存,保留仓库缓存
opensrc clean --repos # 清空所有仓库缓存,保留包缓存When to Fetch Source
适用场景
Fetch source when you need to:
- Understand internal behavior that types don't reveal
- Debug unexpected library behavior
- Learn patterns from well-known implementations
- Verify how a function handles edge cases
Don't fetch source for simple API usage questions that docs or types can answer.
当你需要做以下操作时可以拉取源代码:
- 理解类型定义无法体现的内部行为
- 调试不符合预期的库行为
- 学习知名开源项目的实现模式
- 验证函数处理边界情况的逻辑
对于可以通过文档或类型定义解答的简单API使用问题,不需要拉取源代码。