Skip to content

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 流程:

  1. 先用 pattern_search 验证匹配是否正确。
  2. 人工审查 matches。
  3. pattern_rewritedry_run: true 预览。
  4. 确认后再用 dry_run: false 应用。

初始化 LSP

如果需要 LSP 能力,在项目根目录运行:

text
/code init

Kiro 会检测项目语言和标记文件,例如 package.jsonCargo.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/JavaScripttypescript-language-servernpm install -g typescript-language-server typescript
Rustrust-analyzerrustup component add rust-analyzer
Pythonpyrightpip install pyrightpipx install pyright
Gogoplsgo install golang.org/x/tools/gopls@latest
Rubysolargraphgem install solargraph
C/C++clangdmacOS 用 brew install llvm 或 Linux 安装 clangd
Kotlinkotlin-language-serverbrew 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,语法错误会影响分析质量。
  • 搜索时尽量具体,例如 UserServiceuser 更好。
  • 用自然语言问文档和 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、最后应用会更安全。不要直接对大代码库无预览改写。