关于 code-semantic-search
code-semantic-search 是面向开发者的代码搜索技能,可按代码行为查找实现与模式,并结合语义和结构搜索,也支持单独搜索概念或精确模式。
主要功能
- 01语义与结构混合搜索
- 02仅语义概念搜索
- 03仅结构模式搜索
- 04搜索结果排序
适用场景
- 01按行为定位身份验证逻辑
- 02查找错误处理模式
- 03发现相似实现
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oimiragieo/ agent-studio --skill code-semantic-search安装后在 Claude Code 中输入/code-semantic-search确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
commands/code-semantic-search.mdhooks/post-execute.cjspre-execute.cjsreferences/research-requirements.mdrules/code-semantic-search.mdschemas/input.schema.jsonoutput.schema.jsonscripts/main.cjstemplates/implementation-template.md详细介绍
代码语义搜索
概览
使用 Phase 1 向量嵌入和 Phase 2 混合搜索(语义 + 结构)进行代码语义搜索。根据含义查找代码,而不只是匹配关键词。
核心原则: 根据代码的功能搜索,而不是根据它的名称搜索。
Phase 2:混合搜索
此技能现已支持三种搜索模式:
-
混合搜索(默认):
- 结合语义搜索 + 结构搜索
- 准确率最高(95%+)
- 速度稍慢,但仍低于 150ms
- 推荐用于所有搜索
-
仅语义搜索:
- 仅使用 Phase 1 语义向量
- 速度最快(<50ms)
- 适用于概念搜索
- 结构不重要时使用
-
仅结构搜索:
- 仅使用 ast-grep 模式
- 精确匹配时非常精准
- 最适合查找函数/类定义
- 需要精确结构模式时使用
性能对比
| 模式 | 速度 | 准确率 | 最适用于 |
|---|---|---|---|
| 混合搜索 | <150ms | 95% | 通用搜索 |
| 仅语义搜索 | <50ms | 85% | 概念搜索 |
| 仅结构搜索 | <50ms | 100% | 精确模式 |
| 仅 Phase 1 | <50ms | 80% | 旧版(回退) |
适用场景
始终使用:
- 不知道函数名称时查找身份验证逻辑
- 搜索错误处理模式
- 定位数据库查询
- 查找与某个概念相似的代码
- 发现实现模式
不要使用:
- 精确文本匹配(改用 Grep)
- 文件名搜索(改用 Glob)
- 简单关键词搜索(改用 ripgrep)
使用示例
混合搜索(推荐)
// Basic hybrid search
Skill({ skill: 'code-semantic-search', args: 'find authentication logic' });
// With options
Skill({
skill: 'code-semantic-search',
args: 'database queries',
options: {
mode: 'hybrid',
language: 'javascript',
limit: 10,
},
});
仅语义搜索
// Fast conceptual search
Skill({
skill: 'code-semantic-search',
args: 'find authentication',
options: { mode: 'semantic-only' },
});
仅结构搜索
// Exact pattern matching
Skill({
skill: 'code-semantic-search',
args: 'find function authenticate',
options: { mode: 'structural-only' },
});
实现参考
混合搜索: .claude/lib/code-indexing/hybrid-search.cjs
查询分析: .claude/lib/code-indexing/query-analyzer.cjs
结果排序: .claude/lib/code-indexing/result-ranker.cjs
集成点
- developer:代码探索、实现发现
- architect:系统理解、模式分析
- code-reviewer:查找相似模式、一致性检查
- reverse-engineer:理解陌生代码库
- researcher:研究现有实现
铁律
- 通用搜索始终使用混合模式(语义 + 结构)——仅语义搜索会漏掉精确匹配;仅结构搜索会漏掉概念变体;混合搜索的准确率为 95%,单一模式则为 85%。
- 快速发现关键词时始终先使用 ripgrep/关键词搜索——语义搜索适用于基于含义的查询;使用 ripgrep 查找精确字符串、函数名称和文件名更快。
- 没有有意义的自然语言查询时,绝不使用语义搜索——单个词或代码语法查询会产生较差的语义搜索结果;应描述代码的功能,而不是名称。
- 始终结合 code-structural-search 进行精准优化——先通过语义搜索广泛发现,再使用 ast-grep 模式从语义搜索结果中查找精确的结构匹配。
- 绝不未经检查就忽略相似度低的结果——相似度分数只是近似值;对于不常见的模式,0.7 分的结果可能比 0.9 分的结果更相关。
反模式
| 反模式 | 失败原因 | 正确做法 |
|---|---|---|
| 使用语义搜索进行精确字符串匹配 | 比文本搜索更慢,准确性也更低 | 使用 ripgrep/Grep 进行精确关键词匹配 |
| 使用单词查询(“auth”) | 对语义匹配而言过于宽泛;会返回无关结果 | 使用自然语言描述(“authentication token validation logic”) |
| 对常规搜索使用纯语义模式 | 会漏掉结构变体;准确率为 85%,而非 95% | 对常规查询使用混合模式(默认) |
| 忽略不符合预期的搜索结果 | 语义搜索会找到出乎意料但相关的代码 | 阅读所有结果;意外的匹配往往最有价值 |
| 不结合结构搜索 | 能找到概念,却找不到精确模式 | 使用语义搜索进行发现 → 使用结构搜索提高精度 |
记忆协议(强制)
开始之前:
阅读 .claude/context/memory/learnings.md
完成之后:
- 新模式 ->
.claude/context/memory/learnings.md - 发现问题 ->
.claude/context/memory/issues.md - 做出决策 ->
.claude/context/memory/decisions.md
假设任务可能会被中断:如果没有记录在记忆中,就等于没发生。
评论
支持 Markdown