开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
main
分支 (5)
标签 (3)
main
feature/v6
test/test-most-core-func
version/i18n/zh-cn
feature/prod
v3
v2
v1
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
main
分支 (5)
标签 (3)
main
feature/v6
test/test-most-core-func
version/i18n/zh-cn
feature/prod
v3
v2
v1
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
main
分支 (5)
标签 (3)
main
feature/v6
test/test-most-core-func
version/i18n/zh-cn
feature/prod
v3
v2
v1
claude-code
/
src
/
utils
/
codeIndexing.ts
claude-code
/
src
/
utils
/
codeIndexing.ts
codeIndexing.ts 5.97 KB
一键复制 编辑 原始数据 按行查看 历史
claude-code-best 提交于 2026年03月31日 19:22 +08:00 . feat: build
/**
* Utility functions for detecting code indexing tool usage.
*
* Tracks usage of common code indexing solutions like Sourcegraph, Cody, etc.
* both via CLI commands and MCP server integrations.
*/
/**
* Known code indexing tool identifiers.
* These are the normalized names used in analytics events.
*/
export type CodeIndexingTool =
// Code search engines
| 'sourcegraph'
| 'hound'
| 'seagoat'
| 'bloop'
| 'gitloop'
// AI coding assistants with indexing
| 'cody'
| 'aider'
| 'continue'
| 'github-copilot'
| 'cursor'
| 'tabby'
| 'codeium'
| 'tabnine'
| 'augment'
| 'windsurf'
| 'aide'
| 'pieces'
| 'qodo'
| 'amazon-q'
| 'gemini'
// MCP code indexing servers
| 'claude-context'
| 'code-index-mcp'
| 'local-code-search'
| 'autodev-codebase'
// Context providers
| 'openctx'
/**
* Mapping of CLI command prefixes to code indexing tools.
* The key is the command name (first word of the command).
*/
const CLI_COMMAND_MAPPING: Record<string, CodeIndexingTool> = {
// Sourcegraph ecosystem
src: 'sourcegraph',
cody: 'cody',
// AI coding assistants
aider: 'aider',
tabby: 'tabby',
tabnine: 'tabnine',
augment: 'augment',
pieces: 'pieces',
qodo: 'qodo',
aide: 'aide',
// Code search tools
hound: 'hound',
seagoat: 'seagoat',
bloop: 'bloop',
gitloop: 'gitloop',
// Cloud provider AI assistants
q: 'amazon-q',
gemini: 'gemini',
}
/**
* Mapping of MCP server name patterns to code indexing tools.
* Patterns are matched case-insensitively against the server name.
*/
const MCP_SERVER_PATTERNS: Array<{
pattern: RegExp
tool: CodeIndexingTool
}> = [
// Sourcegraph ecosystem
{ pattern: /^sourcegraph$/i, tool: 'sourcegraph' },
{ pattern: /^cody$/i, tool: 'cody' },
{ pattern: /^openctx$/i, tool: 'openctx' },
// AI coding assistants
{ pattern: /^aider$/i, tool: 'aider' },
{ pattern: /^continue$/i, tool: 'continue' },
{ pattern: /^github[-_]?copilot$/i, tool: 'github-copilot' },
{ pattern: /^copilot$/i, tool: 'github-copilot' },
{ pattern: /^cursor$/i, tool: 'cursor' },
{ pattern: /^tabby$/i, tool: 'tabby' },
{ pattern: /^codeium$/i, tool: 'codeium' },
{ pattern: /^tabnine$/i, tool: 'tabnine' },
{ pattern: /^augment[-_]?code$/i, tool: 'augment' },
{ pattern: /^augment$/i, tool: 'augment' },
{ pattern: /^windsurf$/i, tool: 'windsurf' },
{ pattern: /^aide$/i, tool: 'aide' },
{ pattern: /^codestory$/i, tool: 'aide' },
{ pattern: /^pieces$/i, tool: 'pieces' },
{ pattern: /^qodo$/i, tool: 'qodo' },
{ pattern: /^amazon[-_]?q$/i, tool: 'amazon-q' },
{ pattern: /^gemini[-_]?code[-_]?assist$/i, tool: 'gemini' },
{ pattern: /^gemini$/i, tool: 'gemini' },
// Code search tools
{ pattern: /^hound$/i, tool: 'hound' },
{ pattern: /^seagoat$/i, tool: 'seagoat' },
{ pattern: /^bloop$/i, tool: 'bloop' },
{ pattern: /^gitloop$/i, tool: 'gitloop' },
// MCP code indexing servers
{ pattern: /^claude[-_]?context$/i, tool: 'claude-context' },
{ pattern: /^code[-_]?index[-_]?mcp$/i, tool: 'code-index-mcp' },
{ pattern: /^code[-_]?index$/i, tool: 'code-index-mcp' },
{ pattern: /^local[-_]?code[-_]?search$/i, tool: 'local-code-search' },
{ pattern: /^codebase$/i, tool: 'autodev-codebase' },
{ pattern: /^autodev[-_]?codebase$/i, tool: 'autodev-codebase' },
{ pattern: /^code[-_]?context$/i, tool: 'claude-context' },
]
/**
* Detects if a bash command is using a code indexing CLI tool.
*
* @param command - The full bash command string
* @returns The code indexing tool identifier, or undefined if not a code indexing command
*
* @example
* detectCodeIndexingFromCommand('src search "pattern"') // returns 'sourcegraph'
* detectCodeIndexingFromCommand('cody chat --message "help"') // returns 'cody'
* detectCodeIndexingFromCommand('ls -la') // returns undefined
*/
export function detectCodeIndexingFromCommand(
command: string,
): CodeIndexingTool | undefined {
// Extract the first word (command name)
const trimmed = command.trim()
const firstWord = trimmed.split(/\s+/)[0]?.toLowerCase()
if (!firstWord) {
return undefined
}
// Check for npx/bunx prefixed commands
if (firstWord === 'npx' || firstWord === 'bunx') {
const secondWord = trimmed.split(/\s+/)[1]?.toLowerCase()
if (secondWord && secondWord in CLI_COMMAND_MAPPING) {
return CLI_COMMAND_MAPPING[secondWord]
}
}
return CLI_COMMAND_MAPPING[firstWord]
}
/**
* Detects if an MCP tool is from a code indexing server.
*
* @param toolName - The MCP tool name (format: mcp__serverName__toolName)
* @returns The code indexing tool identifier, or undefined if not a code indexing tool
*
* @example
* detectCodeIndexingFromMcpTool('mcp__sourcegraph__search') // returns 'sourcegraph'
* detectCodeIndexingFromMcpTool('mcp__cody__chat') // returns 'cody'
* detectCodeIndexingFromMcpTool('mcp__filesystem__read') // returns undefined
*/
export function detectCodeIndexingFromMcpTool(
toolName: string,
): CodeIndexingTool | undefined {
// MCP tool names follow the format: mcp__serverName__toolName
if (!toolName.startsWith('mcp__')) {
return undefined
}
const parts = toolName.split('__')
if (parts.length < 3) {
return undefined
}
const serverName = parts[1]
if (!serverName) {
return undefined
}
for (const { pattern, tool } of MCP_SERVER_PATTERNS) {
if (pattern.test(serverName)) {
return tool
}
}
return undefined
}
/**
* Detects if an MCP server name corresponds to a code indexing tool.
*
* @param serverName - The MCP server name
* @returns The code indexing tool identifier, or undefined if not a code indexing server
*
* @example
* detectCodeIndexingFromMcpServerName('sourcegraph') // returns 'sourcegraph'
* detectCodeIndexingFromMcpServerName('filesystem') // returns undefined
*/
export function detectCodeIndexingFromMcpServerName(
serverName: string,
): CodeIndexingTool | undefined {
for (const { pattern, tool } of MCP_SERVER_PATTERNS) {
if (pattern.test(serverName)) {
return tool
}
}
return undefined
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jbcode/claude-code.git
git@gitee.com:jbcode/claude-code.git
jbcode
claude-code
claude-code
main
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /