Open Kioku 完全指南:给 AI 编码 Agent 加上本地代码索引证据层
概述
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 的架构非常简单但高效,分为三层:
- 索引层(
ok index):扫描仓库中的源文件,建立符号索引(函数、类、变量)、定义-引用图和文件依赖关系。索引结果存储在本地 SQLite 数据库中。 - MCP 服务层(
ok mcp serve):在 stdio 上运行 JSON-RPC MCP 服务器,暴露 59 个只读工具。所有工具默认不修改源码,只在确认需要写入时才启用写模式。 - 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 在每次修改前会自动执行这一套预编辑流程:
repo_status→ 确认索引已就绪search_code→ 定位要修改的文件和符号get_definition+get_references→ 解析完整引用链impact_analysis→ 判断改动影响范围find_tests_for_change→ 找到需要更新的测试plan_change→ 生成预编辑计划- 修改文件(使用 Agent 的标准编辑工具)
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
搜索工具使用有界候选扫描,返回结构化的分页结果,包含 returned、limit、offset、has_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_search 和 hybrid_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 prove 和 ok 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(免费使用)