Appearance
Kiro CLI Code Intelligence 提供两层代码理解能力:内置 Tree-sitter 支持符号搜索、文档符号、AST pattern search 和 rewrite;可选 LSP 集成则提供 find references、go to definition、rename、diagnostics 和 hover 文档。
Kiro CLI Code Intelligence:Tree-sitter、LSP 和 AST 级代码理解
Kiro CLI Code Intelligence 用来让 agent 更准确地理解代码库。它不是简单全文搜索,而是结合 Tree-sitter 和可选 LSP,从符号、语法树、引用关系和诊断信息等层面理解代码。
对大型项目来说,这能减少“AI 只靠关键词猜测”的问题。内置 Tree-sitter 不需要安装语言服务器;如果你需要更精确的跳转、引用和重命名,再启用 LSP。
两层能力
| 层级 | 说明 |
|---|---|
| Tree-sitter | 内置能力,支持符号搜索、document symbols、definition lookup、AST pattern search/rewrite |
| LSP Integration | 可选能力,提供 find references、go to definition、hover、rename、diagnostics、completions |
Tree-sitter 适合快速理解和结构化搜索;LSP 适合精确语义分析。
支持语言
内置 Code Intelligence 支持:
- Bash
- C / C++ / C#
- Elixir
- Go
- Java
- JavaScript / TypeScript / TSX
- Kotlin
- Lua
- PHP
- Python
- Ruby
- Rust
- Scala
- Swift
内置功能
不启用 LSP 时,也可以使用这些能力:
- Symbol search:按名称模糊查找函数、类、方法。
- Document symbols:列出文件中的所有 symbols。
- Symbol lookup:按精确名称查找 symbols。
- Pattern search:基于 AST 的结构化代码搜索。
- Pattern rewrite:基于 AST patterns 自动转换代码。
- Codebase overview:生成代码库整体结构概览。
- Codebase map:探索目录结构和代码组织。
启用 LSP 后,会额外获得:
- Find references。
- Go to definition。
- Rename symbol。
- Get diagnostics。
- Hover documentation。
- Completions。
快速了解代码库
生成 workspace 概览:
text
/code overview聚焦某个目录:
text
/code overview ./src/components输出更简洁:
text
/code overview --silent适合这些场景:
- 接手陌生代码库。
- 让 agent 回答项目结构问题。
- 快速理解某个 package。
生成项目文档
text
/code summary它会进入交互流程,让你选择生成:
AGENTS.md:给 AI agents 使用的代码库说明。README.md:标准项目文档。CONTRIBUTING.md:贡献指南。
生成内容会基于代码结构、依赖和代码模式分析。
AST Pattern Search 和 Rewrite
Pattern search/rewrite 可以按代码结构而不是文本搜索。
Metavariables:
$VAR:匹配单个节点,例如 identifier 或 expression。$$$:匹配零个或多个节点,例如 statements 或 parameters。
示例:查找 JavaScript 中所有 console.log:
text
pattern: console.log($ARG)
language: javascript查找 TypeScript async functions:
text
pattern: async function $NAME($$$PARAMS) { $$$ }
language: typescript把 var 改成 const:
text
pattern: var $N = $V
replacement: const $N = $V
language: javascript推荐 rewrite 流程:
- 先用
pattern_search验证匹配是否正确。 - 人工审查 matches。
- 用
pattern_rewrite的dry_run: true预览。 - 确认后再用
dry_run: false应用。
初始化 LSP
如果需要 LSP 能力,在项目根目录运行:
text
/code initKiro 会检测项目语言和标记文件,例如 package.json、Cargo.toml,然后启动对应 language servers,并生成 lsp.json。
常见状态:
| 状态 | 含义 |
|---|---|
✓ | 已初始化并可用 |
◐ | 正在初始化 |
○ available | 已安装但当前项目不需要 |
○ not installed | 未安装 |
如果 language servers 异常退出,可以强制重启:
text
/code init -f如果项目根目录存在 lsp.json,Kiro CLI 后续启动时会自动初始化 code intelligence。删除 lsp.json 可以禁用。
安装常见 Language Servers
| 语言 | Server | 安装命令 |
|---|---|---|
| TypeScript/JavaScript | typescript-language-server | npm install -g typescript-language-server typescript |
| Rust | rust-analyzer | rustup component add rust-analyzer |
| Python | pyright | pip install pyright 或 pipx install pyright |
| Go | gopls | go install golang.org/x/tools/gopls@latest |
| Ruby | solargraph | gem install solargraph |
| C/C++ | clangd | macOS 用 brew install llvm 或 Linux 安装 clangd |
| Kotlin | kotlin-language-server | brew install kotlin-language-server |
常用自然语言查询
查找 symbol:
text
Find the UserRepository class查找引用:
text
Find references of Person class跳转定义:
text
Find the definition of UserService查看文件 symbols:
text
What symbols are in auth.service.ts?重命名前 dry run:
text
Dry run: rename the method "FetchUser" to "fetchUserData"获取 diagnostics:
text
Get diagnostics for main.ts查看 hover 文档:
text
What's the documentation for the authenticate method in AuthService?自定义 Language Server
可以编辑项目根目录的 lsp.json 添加自定义 server:
json
{
"languages": {
"mylang": {
"name": "my-language-server",
"command": "my-lsp-binary",
"args": ["--stdio"],
"file_extensions": ["mylang", "ml"],
"project_patterns": ["mylang.config"],
"exclude_patterns": ["**/build/**"],
"multi_workspace": false,
"initialization_options": { "custom": "options" },
"request_timeout_secs": 60
}
}
}编辑后重启 Kiro CLI 加载配置。
常用 slash commands
| 命令 | 说明 |
|---|---|
/code init | 初始化当前目录 code intelligence |
/code init -f | 强制重新初始化,重启所有 LSP servers |
/code status | 查看 workspace 和 LSP 状态 |
/code logs | 查看 LSP 日志 |
日志示例:
text
/code logs -l INFO
/code logs -n 50
/code logs -l DEBUG -n 100
/code logs -p ./lsp-logs.json最佳实践
- 需要 enhanced LSP features 时,在项目根目录运行一次
/code init。 - Rename 前先 dry run。
- 先看 diagnostics,语法错误会影响分析质量。
- 搜索时尽量具体,例如
UserService比user更好。 - 用自然语言问文档和 API,例如“What methods does s3Client have?”。
常见问题
Q: Kiro CLI Code Intelligence 必须安装 LSP 吗?
A: 不必须。Tree-sitter 内置能力开箱可用;LSP 是增强精度的可选层。
Q: /code init 会做什么?
A: 它会检测项目语言,创建 lsp.json,并启动对应 language servers。
Q: AST pattern rewrite 安全吗?
A: 先 pattern_search、再 dry_run、最后应用会更安全。不要直接对大代码库无预览改写。