关于 grepai-languages
grepai-languages 是 GrepAI 语言支持的参考技能,面向配置代码索引和调用关系分析的开发者。它区分仅支持索引的文件类型与同时支持追踪的语言,并说明扩展名配置和检测方式。
主要功能
- 01列出支持索引的文本文件类型
- 02区分完整支持与仅索引语言
- 03说明追踪语言配置方式
- 04介绍快速与精确追踪模式
- 05解释基于扩展名的文件检测
适用场景
- 01确认项目语言是否支持调用追踪
- 02为多语言项目配置追踪扩展名
- 03排查文件未索引或缺少追踪结果
- 04选择适合的追踪模式与排除规则
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ yoanbernabeu/ grepai-skills --skill grepai-languages安装后在 Claude Code 中输入/grepai-languages确认已加载。
详细介绍
GrepAI 支持的语言
本技能介绍 GrepAI 支持用于索引和调用图分析的编程语言。
何时使用此技能
- 检查是否支持你的语言
- 配置特定语言的设置
- 了解各语言的追踪能力
- 排查语言相关问题
支持的语言概览
GrepAI 支持为所有基于文本的文件建立索引,但对特定编程语言提供增强支持。
完整支持(索引 + 追踪)
| 语言 | 扩展名 | 索引 | 追踪 |
|---|---|---|---|
| Go | .go | ✅ | ✅ |
| JavaScript | .js、.jsx | ✅ | ✅ |
| TypeScript | .ts、.tsx | ✅ | ✅ |
| Python | .py | ✅ | ✅ |
| PHP | .php | ✅ | ✅ |
| C | .c、.h | ✅ | ✅ |
| C++ | .cpp、.hpp、.cc、.cxx、.hh | ✅ | ✅ |
| Rust | .rs | ✅ | ✅ |
| Zig | .zig | ✅ | ✅ |
| C# | .cs | ✅ | ✅ |
| Java | .java | ✅ | ✅ |
| Pascal/Delphi | .pas、.dpr | ✅ | ✅ |
仅支持索引(不支持追踪)
| 语言 | 扩展名 | 索引 | 追踪 |
|---|---|---|---|
| Ruby | .rb | ✅ | ❌ |
| Swift | .swift | ✅ | ❌ |
| Kotlin | .kt、.kts | ✅ | ❌ |
| Scala | .scala | ✅ | ❌ |
| Lua | .lua | ✅ | ❌ |
| Shell | .sh、.bash、.zsh | ✅ | ❌ |
| SQL | .sql | ✅ | ❌ |
| HTML | .html、.htm | ✅ | ❌ |
| CSS | .css、.scss、.less | ✅ | ❌ |
| Markdown | .md、.mdx | ✅ | ❌ |
| YAML | .yaml、.yml | ✅ | ❌ |
| JSON | .json | ✅ | ❌ |
| TOML | .toml | ✅ | ❌ |
| XML | .xml | ✅ | ❌ |
语言配置
启用/禁用语言追踪
# .grepai/config.yaml
trace:
enabled_languages:
- .go
- .js
- .ts
- .jsx
- .tsx
- .py
- .php
- .rs
- .c
- .cpp
- .cs
- .java
排除特定扩展名
trace:
enabled_languages:
- .go
# Exclude JavaScript intentionally
# - .js
exclude_patterns:
- "*_test.go"
- "*.spec.ts"
特定语言提示
Go
trace:
enabled_languages:
- .go
exclude_patterns:
- "*_test.go"
- "mock_*.go"
- "*_mock.go"
追踪准确度: 极佳。Go 的语法明确,因此追踪非常可靠。
JavaScript/TypeScript
trace:
enabled_languages:
- .js
- .jsx
- .ts
- .tsx
exclude_patterns:
- "*.test.js"
- "*.spec.ts"
- "*.d.ts" # Type declarations
追踪准确度: 良好。某些动态模式可能无法识别。
Python
trace:
enabled_languages:
- .py
exclude_patterns:
- "test_*.py"
- "*_test.py"
- "conftest.py"
追踪准确度: 良好。动态导入和装饰器可能无法识别。
C/C++
trace:
enabled_languages:
- .c
- .h
- .cpp
- .hpp
- .cc
- .cxx
exclude_patterns:
- "*_test.cpp"
追踪准确度: 良好。宏和模板可能影响准确度。
Rust
trace:
enabled_languages:
- .rs
exclude_patterns:
- "**/tests/**"
- "**/benches/**"
追踪准确度: 极佳。Rust 的语法明确,有助于准确追踪。
PHP
trace:
enabled_languages:
- .php
exclude_patterns:
- "*Test.php"
- "**/tests/**"
追踪准确度: 良好。魔术方法可能无法被完整追踪。
Java
trace:
enabled_languages:
- .java
exclude_patterns:
- "*Test.java"
- "**/test/**"
追踪准确度: 良好。基于反射的调用可能无法识别。
C#
trace:
enabled_languages:
- .cs
exclude_patterns:
- "*Tests.cs"
- "**/Tests/**"
追踪准确度: 良好。委托和事件可能只能被部分追踪。
多语言项目
对于包含多种语言的项目:
trace:
enabled_languages:
# Backend (Go)
- .go
# Frontend (TypeScript)
- .ts
- .tsx
# Shared (SQL, etc.)
- .sql # Index only
exclude_patterns:
- "*_test.go"
- "*.spec.ts"
索引与追踪说明
索引(语义搜索)
- 适用于任何文本文件
- 将代码切分为块并生成嵌入
- 支持语义搜索
- 无需进行特定语言解析
追踪(调用图)
- 需要进行特定语言解析
- 提取函数定义和调用
- 构建调用方/被调用方关系
- 使用正则表达式(快速)或 tree-sitter(精确)
各语言的追踪模式
| 语言 | 快速模式 | 精确模式 |
|---|---|---|
| Go | ✅ | ✅ |
| JavaScript | ✅ | ✅ |
| TypeScript | ✅ | ✅ |
| Python | ✅ | ✅ |
| PHP | ✅ | ✅ |
| C/C++ | ✅ | ✅ |
| Rust | ✅ | ✅ |
| Zig | ✅ | ✅ |
| C# | ✅ | ✅ |
| Java | ✅ | ✅ |
| Pascal | ✅ | ⚠️ 有限支持 |
添加自定义扩展名
如果你使用非标准扩展名,文件会被索引,但不会被追踪:
# Custom extension files will be indexed
ignore:
# Only add patterns for files you DON'T want indexed
- "*.generated.go"
文件类型检测
GrepAI 使用文件扩展名进行检测。它不会使用:
- Shebang(
#!/usr/bin/env python) - 文件内容分析
- .editorconfig
不支持的语言(可建立索引,不支持追踪)
以下语言可建立索引用于语义搜索,但不支持追踪:
- Ruby
- Swift
- Kotlin
- Scala
- Elixir
- Clojure
- Haskell
- OCaml
- F#
- Erlang
- R
- Julia
- Perl
- Groovy
替代方案: 使用语义搜索查找代码,然后手动追踪。
最佳实践
- 仅启用所需语言: 加快追踪构建速度
- 排除测试文件: 让追踪结果更简洁
- 使用精确模式以提高准确性: 追踪结果似乎不完整时
- 匹配你的技术栈: 根据实际使用的语言进行配置
检查语言支持
# Check what's being indexed
grepai status
# Will show file counts by type
常见问题
❌ 问题: 文件未被索引 ✅ 解决方案: 检查文件是否匹配忽略规则
❌ 问题: 缺少某种语言的追踪结果
✅ 解决方案: 确保该语言已列入 enabled_languages
❌ 问题: 检测到的语言不正确 ✅ 解决方案: GrepAI 仅使用文件扩展名;如有需要,请重命名文件
输出格式
语言支持摘要:
📚 GrepAI Language Support
Full Support (Index + Trace):
- Go (.go)
- JavaScript (.js, .jsx)
- TypeScript (.ts, .tsx)
- Python (.py)
- PHP (.php)
- C/C++ (.c, .cpp, .h, .hpp)
- Rust (.rs)
- Zig (.zig)
- C# (.cs)
- Java (.java)
- Pascal (.pas, .dpr)
Index Only (No Trace):
- Ruby, Swift, Kotlin, Scala
- Shell scripts, SQL, HTML, CSS
- Config files (YAML, JSON, TOML)
- Documentation (Markdown)
Your config enables trace for:
- .go, .js, .ts, .py
评论
支持 Markdown