AI DAILY / 2026-09-27
按功能描述找代码:jevgrep CLI
dzhng/jevgrep
全文中文翻译 · AI 生成,仅供学习交流
dzhng/jevgrep

jevgrep
通过询问代码的功能来查找代码。
编程代理(coding agent)在每个不熟悉的任务里,都要花一部分时间来定位正确的文件。
Jevgrep 给它们一个起点。你向代码仓库提问,jg 在一次标准输出(stdout)响应里,返回相关文件、阅读线索,还有逐字的源代码片段。
它用 Jev 来判断跨文件夹、文件和声明(declaration)的相关性。接下来的实现和测试,由你的编程代理接手。
npm install -g @dzhng/jevgrep
jg auth
jg skilljg "How are telemetry events recorded and sent?"./my-project需要 Node.js 22+、macOS 或 Linux,外加一个 Vercel AI Gateway、TypeSafe 或 OpenRouter 的密钥。
用 jg 不需要单独装 Python、Bun 或 ripgrep。
提供商(provider)选择需要 0.3.0 或更新版本。旧版用 npm install --global @dzhng/jevgrep@latest 升级。
安装代理技能(代理设置所必需)
只装命令行工具(CLI)不够,你的编程代理不会被教会怎么用。
还得在代理工作的项目里把技能装上:
jg skill安装程序会检测你用的编程代理(Claude Code、Codex、OpenCode 等),然后问装到哪里。加 --global 是用户级安装,加 --yes 是无人值守。这个技能会告诉代理什么时候该调 jg、怎么用返回的上下文,以及什么时候该用自己的常规工具补缺口。所需上下文心里有数的时候,它会跳过重复的检索。当前的仓库技能会先检查 jg 在不在,不在就顺手把 CLI 装上;认证还是得用你选定的那家提供商的密钥。技能安装程序本身不会替你配凭据。
jg skill 底层调用的是 skills CLI,需要 npm/npx 加网络访问。CLI 没装也行,直接跑那个安装程序:
npx skills add dzhng/jevgrep --skill jevgrep0.1.0 里,jg skill 只会把自带的技能打印出来;这一版请改用 npx skills。
升级
目前没有 jg upgrade 命令。CLI 用 npm 升级:
npm install -g @dzhng/jevgrep@latest
jg --version已安装的技能单独更新,重新跑一次 jg skill 就行。更新 npm 包不会覆盖项目里的技能文件。认证相关细节见包的使用指南。
从一个问题出发,带着源码离开
知道自己要理解什么行为,却不知道它藏在哪,那就用 jg:
jg "Where is authentication checked before a request reaches a handler?"jg "How are database connections created, pooled, and closed?"./srcjg "Which tests cover retry behavior when a request times out?"Jevgrep 会探查仓库层级,再沿符合条件的分支往下走。它先用内容预览筛文件,再挑出有用的源码单元和它们周围的上下文。即便没法有把握地返回片段,它也会保留符合条件的文件位置,不会硬把每次搜索塞进一个固定的前两名。
摘要排在最前,接着是文件位置、阅读线索,以及带行号的精选源码。Python 和 TypeScript/JavaScript 支持声明解析,其他语言的文本走后备方案。这份输出是给代理用的证据,不是现成的答案,也不保证每个相关文件都翻到了。
可以看一份录好的输出示例。
如果你已经知道确切的符号或路径,那直接读文件,或者跑一次 rg(ripgrep)搜索就够了。Jevgrep 最拿手的是那种横跨多个陌生文件的问题。
我们的测量结果
在一次十任务的 SWE-bench 复现里,编程代理成本降了约 40%。
Sol(一种评估工具,译注:与 jevgrep 同作者的相关评估工具)的完整成本从 $7.62 降到 $4.52,含失败任务,不含 Jev 的开销。
用 jg 时解题率是 7/10,保存下来的基线(baseline)是 8/10。成本是省了,可质量也跟着掉了一档,不能据此说 jg 的解题质量持平或更好。
同一套修正后的运行时,更早一次跑过,那次解出 6/10,成本 $5.54。两次跑互相独立;基线只跑过一次,之后一直被复用在比对里,最终结果也没有合并到一起。两次都没过最初的质量门槛。样本是调过的 Python 子集,用 Sol 评估,所以别拿它去推断普遍能省多少、能跑多快,或者别的编程代理会怎么样。
完整结果和配对的轨迹分析里包含精确成本、失败任务,以及单独观察到的 Jev 费用。方法论见评估指南。
源代码、凭据与本地状态
搜索会把符合条件的源代码内容,通过认证时选定的那家提供商,发给 Jev。默认的文件系统过滤会尊重忽略文件(ignore files),把隐藏文件、依赖与构建产物、二进制文件,以及明显的凭据文件排除掉。这些过滤规则并不能担保所有敏感信息都已移除;选搜索根目录的时候,挑一个你愿意送出去的。
jg auth 会问你的提供商,然后把它的密钥存到权限只给所有者的配置文件里。
再跑一次 auth 会替换原有设置;搜索时一律用已保存的提供商。
jg doctor 用合成输入(synthetic input)做检查。旧版只存了密钥但没记提供商的,依然按 Vercel 密钥处理。通过环境变量设置的凭据和端点覆盖不再生效;以前要是靠这些方式跑的,请重新跑一次 jg auth。
评估答案默认会在本地缓存。CLI 把输出直接写到标准输出,不生成报告文件。缓存控制、搜索覆盖、未完成结果的行为,请用 jg --help。
开发
仓库用 TypeScript、Bun workspaces 和 Turborepo。从一个 checkout 开始:
bun install --frozen-lockfile
bun run dev --help
bun run verify验证包括对已安装的 Node-only 包跑 Docker 测试。检索、解析、缓存与失败处理背后的设计思路,可以从架构与实现记录开始翻起。
发布指南讲了怎么通过 tag 触发 npm 发布,以及如何核对发出去的包是否完全一致。
MIT。
插图与生成提示。