SuperAPI AI 工具集

github-codebase-search

编程与开发

查看项目

更新于 10-16 04:02

技能介绍

用途

github-codebase-search 用于对公开 GitHub 仓库进行语义搜索,无需在本地克隆代码。它由 MorphLLM 驱动,后者是一个经过强化学习训练的子代理,会针对 GitHub API 并行执行 grep 与读取调用,从而以自然语言回答关于代码的问题。

它主要面向以下场景:

  • 理解某个库或框架内部是如何工作的(例如“Next.js 如何解析 middleware?”)。
  • 调查开源依赖中的上游缺陷或行为。
  • 从知名仓库的参考实现中学习。
  • 追踪一个你尚未在本地克隆的仓库中的代码路径。
  • 探索某个开源项目的结构或架构。

主要能力

  • 以自然语言问题为输入,对指定 GitHub 仓库执行语义搜索。
  • 搜索代理会根据你的问题自行规划搜索策略,因此自然语言问题比关键词更有效。
  • 支持通过 owner/repo 形式或完整 GitHub URL 指定仓库。
  • 支持指定分支(--branch)。
  • 支持调整超时(--timeout),默认超时为 120 秒,大型仓库可提高到 180 或更高。
  • 输出会列出相关文件及其内容,例如:
Morph Fast Context subagent performed search on repository:

Relevant context found:
- src/routes/middleware.ts:*
- src/core/router.ts:50-120

Here is the content of files:

<file path="src/routes/middleware.ts">
1| import { NextRequest } from 'next/server';
2| export function middleware(request: NextRequest) {
...
</file>

<file path="src/core/router.ts">
50| function resolveMiddleware(chain: MiddlewareChain) {
...
120| }
</file>

如果文件路径不正确,可能会看到 Error: File not found,此时应使用更具体的查询重试。

使用方式

需要设置 MORPH_API_KEY 环境变量。

不要阅读脚本源码,直接运行脚本,并使用 --help 查看用法。

运行一次语义搜索:

python3 scripts/github-codebase-search.py search "<natural language query>" --repo <owner/repo>

参数说明:

  • query — 关于代码的自然语言问题。
  • --repo — owner/repo 格式的 GitHub 仓库(例如 vercel/next.js)。
  • --url — 替代方式,完整的 GitHub URL(例如 https://github.com/vercel/next.js)。

必须提供 --repo 或 --url 之一。

示例:

# Search by owner/repo
python3 scripts/github-codebase-search.py search "how does the router resolve middleware" --repo vercel/next.js

# Search by GitHub URL
python3 scripts/github-codebase-search.py search "how does the router resolve middleware" --url https://github.com/vercel/next.js

# Search a specific branch
python3 scripts/github-codebase-search.py search "how are migrations handled" --repo prisma/prisma --branch main

# Increase timeout for large repos
python3 scripts/github-codebase-search.py search "trace the build pipeline" --repo facebook/react --timeout 180

完整用法可运行:

python3 scripts/github-codebase-search.py --help

适用场景与选择规则

判断规则:

  • 代码在 GitHub 上且未在本地克隆?使用 github-codebase-search。
  • 代码在本地仓库?使用 codebase-search。

任务与工具对应示例:

  • “Next.js 如何解析 API 路由?”使用 github-codebase-search。
  • “我们的 auth middleware 如何工作?”使用 codebase-search。
  • “Prisma 内部如何处理迁移?”使用 github-codebase-search。
  • “我们的数据库中配置在哪里?”使用 codebase-search。
  • “React 的 reconciler 如何处理 fibers?”使用 github-codebase-search。
  • “React 文档对 useEffect 怎么说?”使用 context7。

限制

不要在以下情况使用:

  • 关于本地代码库的问题——应使用 codebase-search。
  • 私有仓库(需要 GitHub API 访问权限)。
  • 简单文档查找——应使用 context7。
  • 简单 GitHub 界面浏览(查看 README、issue、PR)。

编写查询的建议

  • 把查询写成自然语言问题。例如“How does the router resolve middleware chains?”比“router middleware”效果好得多,因为搜索代理会根据你的问题自行规划策略。
  • 明确你想知道什么。“How does Prisma handle relation loading in findMany?”优于“Prisma relations”。
  • 提供 owner/repo 或 URL,工具需要知道要搜索哪个 GitHub 仓库。
  • 默认超时为 120 秒,大型仓库可用 --timeout 180 或更高值增加。