[OSS26] 关键词搜索代码 search_code_by_keyword
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- typescript
- Ambito
- devtools
Direzione di ricerca
Inizia individuando il meccanismo di registrazione degli strumenti MCP utilizzato da bootstrap_mcp_framework e la struttura dei test unitari del progetto. Implementa quindi l'entry point search_code_by_keyword in base agli input e all'output elencati, poi aggiungi test per le espressioni regolari, la distinzione tra maiuscole e minuscole, i risultati vuoti e il troncamento tramite max_results. Il lavoro è completato quando sono coperti le esclusioni, il filtraggio tramite path_prefix, la registrazione e l'obiettivo di tempo di risposta indicato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
接口介绍
在指定代码仓库内按关键词检索代码,支持普通字符串与正则两种模式,返回所有命中的文件路径、行号与代码片段(含上下文行)。
工具名
search_code_by_keyword
背景与目标
很多程序分析场景的第一步是定位代码:LLM Agent 接到一个安全审计任务时,先要找到"潜在风险关键词"出现的位置(例如 Runtime.exec、eval、SELECT *)。这是程序分析 MCP 的基础能力,要求在指定本地仓库范围内可用,不依赖外部 SaaS。
目标:实现一个 MCP tool,接收关键词和(可选的)路径前缀,返回所有匹配位置 + 命中行片段。
输入参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keyword |
string | 是 | 搜索关键词,支持普通字符串,可选支持正则(由 is_regex 控制) |
repository_path |
string | 是 | 仓库本地绝对路径 |
path_prefix |
string | 否 | 限定搜索的子目录前缀,如 src/main/java/ |
is_regex |
bool | 否 | 默认 false,true 时 keyword 按 ECMAScript 正则解释 |
max_results |
int | 否 | 默认 100,最大 1000 |
case_sensitive |
bool | 否 | 默认 false |
输出结构
{
"total_matches": 42,
"results": [
{
"file_path": "src/main/java/com/example/UserController.java",
"line_number": 87,
"column_start": 12,
"column_end": 28,
"line_content": " Runtime.exec(userInput);",
"context_before": [" public void run(String userInput) {"],
"context_after": [" }"]
}
]
}
验收标准
- 在 1k-file 中等仓库上搜索高频词响应 < 2s
- 二进制文件、
.git/、node_modules/、target/默认排除 - 支持
path_prefix过滤 - 单元测试覆盖:正则模式、大小写、空结果、超过 max_results 截断
- 与
bootstrap_mcp_framework的注册机制对齐
预估工作量
1-2 人日
- Lingua principale
- TypeScript
- Stelle
- 326
- Fork
- 38
- Merge medio
- 1m
- PR unite (30g)
- 1
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di antgroup/YASA-Engine
-
pkg 二进制在大中型 Java 项目上因 Node 18.5.0 V8 bug 崩溃Forse di nuovo libera @AntJiuFo l’ha presa 92 giorni fa e non c’è nessuna pull request aperta. Aperta
antgroup/YASA-Engine#143 · 1 assegnatario ·
-
OSS26-Team
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
antgroup/YASA-Engine#142 ·
-
OSS26-Team
Difficoltà 5/5 Più di una settimana Idoneità per principianti 32/100
antgroup/YASA-Engine#141 ·
-
OSS26-Team
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
antgroup/YASA-Engine#140 ·
-
[OSS26] 查找方法被调用点 find_callers_by_method_nameForse già presa @wryyyds7 l’ha presa 79 giorni fa. ApertaOSS26-Team
antgroup/YASA-Engine#139 · 3 commenti · 1 assegnatario ·
Tutte le issue di antgroup/YASA-Engine
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
polarsource/polar#15580 ·
I maintainer di solito rispondono entro 1 giorno
-
accepted bug via-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
pingdotgg/t3code#20931 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug/1-unconfirmed kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 83/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ranxianglei/billion-context#3583 ·
I maintainer di solito rispondono entro 1 giorno