其他
用 godig 查询 Go 包的文档、符号、版本、依赖与漏洞
需要查询 pkg.go.dev 上任意 Go 包/模块的文档、API 签名、符号、示例、版本、许可证、导入方或 CVE 时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 56/100 ×0.15
适用场景
用 godig 查询 Go 包的文档、符特定
解决思路
- 安装 godig:`go install github.com/samber/godig/cmd/godig@latest`(或使用已注册的 godig MCP 服务器 / 托管实例)。
- 可选:注册 MCP 服务器。stdio 模式:`claude mcp add pkg-go-dev -- godig mcp`;streamable HTTP 模式:先 `godig mcp --transport http --addr :8080`,再 `claude mcp add --transport http pkg-go-dev http://localhost:8080/mcp`;托管实例:`claude mcp add --transport http pkg-go-dev https://godig.samber.dev/mcp`。
- 所有命令都加 `-o md`,让结果以 Markdown 表格或原始文档形式在对话中渲染。
- 先用 `overview <path>` 获取紧凑摘要(元数据、版本、许可证、漏洞),仅在需要全文时才调用 `doc`/`examples`/`module readme`/`licenses` 这些大输出命令。
- 用 `search <query>` 查找包,可加 `--symbol --limit --filter`。
- 用 `package info`、`package imports`、`package doc`、`package examples`、`package licenses` 查询包级信息(`package doc`/`package examples` 输出很大,用 `--symbol` 缩小范围)。
- 用 `symbol doc <path> <symbol>` 和 `symbol examples <path> <symbol>` 查询单个符号,比包级命令更省 token。
- 用 `symbols <path>` 列出导出符号,可加 `--limit --filter`。
- 用 `module info`、`module licenses`、`module readme`、`dependencies`、`packages` 查询模块级信息。
- 用 `versions` 列出所有版本(最新在前),用 `major-versions` 列出作为独立模块存在的大版本(可加 `--exclude-pseudo`)。
- 用 `imported-by <path>` 查询哪些包导入了该包。
- 用 `vulns <path>` 查询已知漏洞(来自 Go 漏洞数据库)。
- `<path>` 传完整导入路径(如 `github.com/samber/lo`)作为位置参数。
- 用 `--version` 固定模块版本(`v1.5.0`、`latest`、`master`、`main`),用 `--module` 消歧包所属模块。
- 用 `--goos`/`--goarch` 设置文档/符号的构建上下文(如 `linux`/`amd64`)。
- 用 `--filter` 以 Go 布尔表达式在服务端过滤列表结果,整个表达式用单引号包裹;支持 `==` `!=` `<` `<=` `>` `>=`、`&&` `||` `!`、括号、`contains(s, sub)`、`hasPrefix(s, pre)`、`hasSuffix(s, suf)`、双引号字符串、`true`/`false`、数字。
- `--filter` 的字段因命令而异:`search` 用 `modulePath`/`packagePath`/`synopsis`/`version`;`versions` 用 `version`/`modulePath`/`deprecated`/`retracted`/`hasGoMod`/`commitTime`;`packages` 用 `path`/`name`/`synopsis`/`isRedistributable`;`imported-by` 用 `path`;`symbols` 用 `name`/`kind`(`Function`/`Method`/`Type`/`Variable`/`Constant`)/`synopsis`/`parent`;`major-versions` 用 `modulePath`/`major`/`version`/`isLatest`。字段名用条目的小写 JSON key,枚举值首字母大写。
- 并行执行相互独立的查询:每个命令都是自包含的只读 HTTP 查询,可在同一轮中一次性发出多个 `godig` 调用,把总耗时从延迟之和降到最慢单次调用。
- 大规模扇出时(记录大量符号、比较多个候选库、审计一组依赖的 CVE),最多派发 5 个并行子代理,各自运行自己的 `godig` 调用并返回紧凑摘要,避免大输出进入主上下文。
- 列表命令会自动分页返回全部结果,用 `--limit` 限制数量。
- 用退出码区分错误:`0` 成功,`1` 运行时错误(网络、包未找到),`2` 用法错误(参数/标志缺失或非法,如非正的 `--limit`,或命令组未带子命令)。
- 全局标志(所有命令可用):`-o/--output table|json|raw|md`(默认 `table`)、`--base-url`、`--vuln-base-url`、`--timeout`、`--log-level debug|info|warn|error|off`,也可通过 `GODIG_*` 环境变量设置。
- 需要时用 `godig --help` 及各子命令的 `--help` 查看当前标志和输出格式。
适用边界 · 注意事项
- 不用于升级依赖(改用 `samber/cc-skills-golang@golang-dependency-management` 技能)。
- 不用于选择库(改用 `samber/cc-skills-golang@golang-popular-libraries` 技能)。
- 不用于本地符号、已使用依赖的解析源码、调用点和泛型实例化(改用 `samber/cc-skills-golang@golang-gopls` 技能)。