2026年7月4日 4 分钟阅读

Open Kioku 完全指南:给 AI 编码 Agent 加上本地代码索引证据层

tinyash 0 条评论

概述

AI 编码 Agent(Claude Code、Cursor、Codex 等)非常擅长写代码,但它们有一个致命弱点:在做修改之前,它们对代码库的上下文掌握往往不够。Agent 会逐文件搜索、用文本匹配推断符号引用、写完了才跑测试——而如果能在动代码之前,先让 Agent 拿到一份完整的索引证据(符号定义、引用关系、影响范围分析、测试候选),很多 bug 和返工都可以避免。

Open Kioku(简称 ok)正是为解决这个问题而生的。它是一个本地优先的代码索引 MCP 服务器,使用 Elastic License 2.0 发布。安装后,用三条命令就能让 AI 编码 Agent 获得强大的代码感知能力:

npm install -g open-kioku
ok index .
ok mcp install cursor --repo .

完成后,Agent 在修改代码之前会自动执行:搜索代码 → 获取定义 → 分析影响范围 → 定位测试文件 → 生成预编辑计划 → 修改后验证。22,000+ 字符的 README 详尽记录了所有命令和原理,是目前同类工具中文档最完备的项目之一。

架构:本地索引 + MCP 证据层

Open Kioku 的架构非常简单但高效,分为三层:

  1. 索引层ok index):扫描仓库中的源文件,建立符号索引(函数、类、变量)、定义-引用图和文件依赖关系。索引结果存储在本地 SQLite 数据库中。
  2. MCP 服务层ok mcp serve):在 stdio 上运行 JSON-RPC MCP 服务器,暴露 59 个只读工具。所有工具默认不修改源码,只在确认需要写入时才启用写模式。
  3. CLI 交互层ok 命令):为开发者提供直接查询接口——搜索代码、查看架构、运行验证、导出索引快照等。

三层之间通过本地文件系统连接,不依赖外部 API 或云服务。索引数据完全存储在本地仓库的 .ok/ 目录下,不出本机。

安装

npm 安装(推荐)

npm install -g open-kioku
ok --version

open-kioku 的 npm 包是一个包装器,通过平台特定的可选依赖安装原生 ok 二进制文件,无需额外配置。

验证安装

ok --help

如果安装成功,会列出所有可用的子命令。

核心工作流:三分钟让 Agent 具备代码感知

第一步:初始化并索引仓库

cd /path/to/your/project
ok init /absolute/path/to/repo
ok index /absolute/path/to/repo
ok doctor /absolute/path/to/repo
  • ok init 创建索引配置
  • ok index 扫描代码并构建索引(一份中型仓库约 30 秒)
  • ok doctor 检查索引健康状态

验证索引质量:

ok status /path/to/repo --markdown --write ok-status.md
ok setup audit /path/to/repo --markdown --write ok-setup.md

第二步:安装 MCP 配置到你的 Agent

ok mcp install cursor --repo /path/to/repo

ok mcp install claude --repo /path/to/repo

ok mcp install codex --repo /path/to/repo

ok mcp install gemini --repo /path/to/repo
ok mcp install windsurf --repo /path/to/repo
ok mcp install zed --repo /path/to/repo
ok mcp install opencode --repo /path/to/repo
ok mcp install trae --repo /path/to/repo

每个命令会打印一个 JSON 配置块,将其粘贴到对应的 Agent 配置文件中即可。

第三步:设置 Agent 提示词(推荐)

在 Agent 的 system prompt 或会话开始前粘贴以下指令:

Use Open Kioku before editing. Check repo_status, search_code, get_definition,
get_references, impact_analysis, ownership_lookup, reviewer_suggestions,
search_memory, and find_tests_for_change.
Build a plan first, then edit only after the indexed evidence is clear.

然后 Agent 在每次修改前会自动执行这一套预编辑流程:

  1. repo_status → 确认索引已就绪
  2. search_code → 定位要修改的文件和符号
  3. get_definition + get_references → 解析完整引用链
  4. impact_analysis → 判断改动影响范围
  5. find_tests_for_change → 找到需要更新的测试
  6. plan_change → 生成预编辑计划
  7. 修改文件(使用 Agent 的标准编辑工具)
  8. verify_change → 修改后验证

功能详解

搜索与查询

ok --repo /path/to/repo search "token expiration handler"

ok --repo /path/to/repo symbol definition PolicyGate

ok --repo /path/to/repo symbol refs PolicyGate

搜索工具使用有界候选扫描,返回结构化的分页结果,包含 returnedlimitoffsethas_more 等元数据字段,以便 Agent 决定是否需要继续翻页。

影响分析

ok --repo /path/to/repo impact --file src/auth.rs

在做任何修改之前,Agent 可以用此命令判断:

  • 哪些文件直接依赖被修改的代码
  • 哪些文件间接依赖(隔层调用链)
  • 修改的「爆炸半径」有多大

测试定位

ok --repo /path/to/repo tests --changed src/auth.rs

自动找到与变更相关的测试文件,避免 Agent 在修改后忘记更新测试,或者在错误的测试目录中搜索。

预编辑计划

ok --repo /path/to/repo plan "add rate limiting to auth" --format markdown

生成结构化的修改计划,包含:

  • 需要修改的主文件
  • 相关的符号和依赖
  • 验证命令(如 cargo test auth
  • 置信度说明

计划可以输出为 markdown(供人类阅读)、json(供工具使用)或 toon(紧凑的 LLM Token 格式)。

变更合约

对于需要追踪的修改流程,可以创建「变更合约」(Change Contract):

ok --repo /path/to/repo contract create "add rate limiting" --limit 12
ok --repo /path/to/repo contract verify --id  --changed src/auth.rs

合约是一个版本化的预编辑约束,Agent 修改完成后可以通过 verify 命令确认修改是否在合约定义的范围内。这特别适合多 Agent 协作的场景——一个 Agent 制定合约,另一个 Agent 按合约执行。

代码历史与所有权

ok --repo /path/to/repo history provenance --path src/auth.rs

ok --repo /path/to/repo history churn --path src/auth.rs

ok --repo /path/to/repo history similar --task "fix token" --path src/auth.rs

ok --repo /path/to/repo history ownership --path src/auth.rs

ok --repo /path/to/repo history reviewers --path src/auth.rs

这些命令让 Agent 不再只是”当前文件的编辑器”,而是有代码历史意识的协作伙伴。例如,ownership_lookup 返回 CODEOWNERS 和 Git 历史的双重归属信号,让 Agent 知道修改某个文件前应该通知谁。

架构感知

ok --repo /path/to/repo architecture detect
ok --repo /path/to/repo architecture overview
ok --repo /path/to/repo architecture hotspots
ok --repo /path/to/repo architecture policy check --json

对于大型仓库,Agent 可以先用 architecture detect 了解代码的整体模块划分,再决定从哪个模块入手修改。

证据报告

ok prove /path/to/repo --task "your feature" --html

生成一份包含索引统计数据、任务评分和验证信号的 HTML 或 Markdown 报告。报告不包含源码片段,因此可以安全地分享自私有仓库的审计结果。

工作流基准测试

ok workflow-bench . --cases-file benchmarks/workflow-cases.json --limit 10
ok --repo . history bench --cases-file benchmarks/history-cases.json

内置的工作流评测工具可以帮助团队评估 Open Kioku 在不同代码场景下的查询性能,找到瓶颈并进行优化。

语义搜索与混合搜索

除了基于正则的代码搜索,Open Kioku 还支持语义搜索和混合搜索:

ok --repo /path/to/repo semantic status

MCP 工具中的 semantic_searchhybrid_search 可以同时匹配文本模式和语义含义,提高搜索召回率。

安全模型

Open Kioku 默认以只读模式运行 MCP 服务:

ok mcp serve --repo /path/to/repo --read-only

写模式需要显式启用,并可以配合 Approval Required 机制:

ok mcp serve --repo /path/to/repo --allow-write --approval-required \
  --allow-command "cargo test" --deny-network

这意味着 Agent 默认只能通过 Open Kioku 查询信息,不能通过它修改文件。Agent 仍然使用自己的编辑工具(如编辑器 API)进行修改,Open Kioku 只负责在修改前提供证据、在修改后验证变更。

对大规模仓库,Open Kioku 支持快照导出和导入,方便跨机器或团队内共享索引状态:

ok --repo /path/to/repo snapshot export --quality best
ok --repo /path/to/repo snapshot import

排错

问题:Agent 提示”no index found”

运行 ok doctor /path/to/repo 检查索引状态,确保索引已完成。如果未索引,重新执行 ok index /path/to/repo

问题:MCP 配置后 Agent 不调用 Open Kioku 工具

检查 MCP 配置的 JSON 是否正确粘贴到 Agent 配置文件中。不同 Agent 的配置文件路径不同(Cursor 在 .cursor/mcp.json,Claude Code 在 ~/.claude/settings.json 等)。运行 ok mcp install cursor --repo . 重新生成配置。

问题:索引大型仓库时耗时过长

Open Kioku 支持基于 SCIP 的索引模式,可以分析部分文件而非全量扫描。使用以下命令生成并应用 SCIP 索引:

ok scip setup /path/to/repo
ok scip doctor /path/to/repo
ok index /path/to/repo --with-scip auto

问题:只想查某些类型的文件

由于 Open Kioku 基于符号索引而非文件系统遍历,它会自动过滤掉生成的、vendor 的和构建目录中的代码,只索引实际源文件。

FAQ

Q:Open Kioku 与 GitHub Copilot 的代码搜索有什么区别?

GitHub Copilot 提供的是基于 LM 的在线代码补全和问答,而 Open Kioku 提供的是本地预索引的确定性符号级查询。后者在大型仓库中更准确(不会因上下文窗口限制而遗漏),且完全离线运行。

Q:需要网络连接吗?

不需要。所有索引和查询都在本地完成,不连接外部 API。

Q:支持哪些编程语言?

Open Kioku 的索引引擎支持主要语言(Rust、TypeScript、Python、C/C++、Go、Java 等),通过 SCIP 索引格式扩展语言支持。具体语言覆盖度可以通过 ok prove 报告查看。

Q:可以用于 CI/CD 流水线吗?

可以。ok proveok eval 命令专为非交互式环境设计,输出为结构化 JSON/Markdown,适合集成到 CI 流水线中做代码质量门禁。

Q:Elastic License 2.0 是什么?

Elastic License 2.0 是一个源代码可用的许可证。它允许免费使用、修改和分发(非商业),但有一些限制(如不能提供 SaaS 管理服务)。对于个人和团队内部使用完全免费。

总结

Open Kioku 为 AI 编码 Agent 填补了一个关键空白:在修改代码之前,让 Agent 先了解代码。它通过本地索引 + MCP 证据层的方式,在不依赖网络、不修改源码的前提下,为 Agent 提供符号定义、引用分析、影响评估、测试定位等 59 个只读工具。三条命令即可完成初始化,适合从个人项目到企业仓库的各类规模。

如果你的团队正在使用 Claude Code、Cursor 或 Codex 等 AI 编码 Agent,并且受够了 Agent”写完代码才发现问题”的窘境,Open Kioku 值得一试。

  • GitHub 仓库
  • 安装npm install -g open-kioku
  • 许可证:Elastic License 2.0(免费使用)

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。