mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-11 02:33:51 +08:00
feat: 增加搜索功能的代码过滤选项,支持排除特定文件扩展名和仅返回代码文件
This commit is contained in:
@@ -1218,7 +1218,7 @@ async function executeRipgrepMode(params: Params): Promise<SearchResult> {
|
||||
* Requires index
|
||||
*/
|
||||
async function executeCodexLensExactMode(params: Params): Promise<SearchResult> {
|
||||
const { query, path = '.', maxResults = 5, extraFilesCount = 10, maxContentLength = 200, enrich = false } = params;
|
||||
const { query, path = '.', maxResults = 5, extraFilesCount = 10, maxContentLength = 200, enrich = false, excludeExtensions, codeOnly = false, offset = 0 } = params;
|
||||
|
||||
if (!query) {
|
||||
return {
|
||||
@@ -1241,10 +1241,18 @@ async function executeCodexLensExactMode(params: Params): Promise<SearchResult>
|
||||
|
||||
// Request more results to support split (full content + extra files)
|
||||
const totalToFetch = maxResults + extraFilesCount;
|
||||
const args = ['search', query, '--limit', totalToFetch.toString(), '--method', 'fts', '--json'];
|
||||
const args = ['search', query, '--limit', totalToFetch.toString(), '--offset', offset.toString(), '--method', 'fts', '--json'];
|
||||
if (enrich) {
|
||||
args.push('--enrich');
|
||||
}
|
||||
// Add code_only filter if requested
|
||||
if (codeOnly) {
|
||||
args.push('--code-only');
|
||||
}
|
||||
// Add exclude_extensions filter if provided
|
||||
if (excludeExtensions && excludeExtensions.length > 0) {
|
||||
args.push('--exclude-extensions', excludeExtensions.join(','));
|
||||
}
|
||||
const result = await executeCodexLens(args, { cwd: path });
|
||||
|
||||
if (!result.success) {
|
||||
@@ -1278,10 +1286,18 @@ async function executeCodexLensExactMode(params: Params): Promise<SearchResult>
|
||||
|
||||
// Fallback to fuzzy mode if exact returns no results
|
||||
if (allResults.length === 0) {
|
||||
const fuzzyArgs = ['search', query, '--limit', totalToFetch.toString(), '--method', 'fts', '--use-fuzzy', '--json'];
|
||||
const fuzzyArgs = ['search', query, '--limit', totalToFetch.toString(), '--offset', offset.toString(), '--method', 'fts', '--use-fuzzy', '--json'];
|
||||
if (enrich) {
|
||||
fuzzyArgs.push('--enrich');
|
||||
}
|
||||
// Add code_only filter if requested
|
||||
if (codeOnly) {
|
||||
fuzzyArgs.push('--code-only');
|
||||
}
|
||||
// Add exclude_extensions filter if provided
|
||||
if (excludeExtensions && excludeExtensions.length > 0) {
|
||||
fuzzyArgs.push('--exclude-extensions', excludeExtensions.join(','));
|
||||
}
|
||||
const fuzzyResult = await executeCodexLens(fuzzyArgs, { cwd: path });
|
||||
|
||||
if (fuzzyResult.success) {
|
||||
@@ -1343,7 +1359,7 @@ async function executeCodexLensExactMode(params: Params): Promise<SearchResult>
|
||||
*/
|
||||
async function executeHybridMode(params: Params): Promise<SearchResult> {
|
||||
const timer = createTimer();
|
||||
const { query, path = '.', maxResults = 5, extraFilesCount = 10, maxContentLength = 200, enrich = false, excludeExtensions, codeOnly = false } = params;
|
||||
const { query, path = '.', maxResults = 5, extraFilesCount = 10, maxContentLength = 200, enrich = false, excludeExtensions, codeOnly = false, offset = 0 } = params;
|
||||
|
||||
if (!query) {
|
||||
return {
|
||||
@@ -1368,10 +1384,18 @@ async function executeHybridMode(params: Params): Promise<SearchResult> {
|
||||
|
||||
// Request more results to support split (full content + extra files)
|
||||
const totalToFetch = maxResults + extraFilesCount;
|
||||
const args = ['search', query, '--limit', totalToFetch.toString(), '--method', 'dense_rerank', '--json'];
|
||||
const args = ['search', query, '--limit', totalToFetch.toString(), '--offset', offset.toString(), '--method', 'dense_rerank', '--json'];
|
||||
if (enrich) {
|
||||
args.push('--enrich');
|
||||
}
|
||||
// Add code_only filter if requested
|
||||
if (codeOnly) {
|
||||
args.push('--code-only');
|
||||
}
|
||||
// Add exclude_extensions filter if provided
|
||||
if (excludeExtensions && excludeExtensions.length > 0) {
|
||||
args.push('--exclude-extensions', excludeExtensions.join(','));
|
||||
}
|
||||
const result = await executeCodexLens(args, { cwd: path });
|
||||
timer.mark('codexlens_search');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user