Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[OSS26] 关键词搜索代码 search_code_by_keyword

Aperta
#130 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

@wryyyds7 ci sta già lavorando.

Dal 29/7/2026.

  • #147 di @wryyyds7 — aperta

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

OSS26-Good First Issue
接口介绍

在指定代码仓库内按关键词检索代码,支持普通字符串与正则两种模式,返回所有命中的文件路径、行号与代码片段(含上下文行)。

工具名

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

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di antgroup/YASA-Engine

Tutte le issue di antgroup/YASA-Engine

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.