实测|Kimi K3 虽强但贵?我们用 claude-context 减少了K3 27%的代码检索token

2026-07-212 分钟阅读

Kimi K3 最近真的很火。

2.8T 参数参数规模、1M上下文、coding 能力,几个优势叠在一起,几乎毫不犹豫,我们就把它接入了现有开发工作流里。

强是真的强,贵也是真的贵。

在X上,Arena.ai 发文说 Kimi-K3 在 Frontend Code Arena 以 1679 分排名第 1,超过 Claude Fable 5,前端代码能力堪称惊艳。

但在Reddit 上,也有人反馈 Kimi 的 $99 Allegro plan 只跑了 4 个 session 就打满周额度。

当然,kimi本身的性价比还是在的,只是如今现如今长程agent越来越多,一个任务执行下来,上下文窗口被刷爆好几回也是常态。

要想把token成本压下来,还需要在harness、提示词、工具策略方面,进一步优化。

本文将重点分享,如何在coding场景的上下文检索层面,对Kimi K3 做进一步优化。

实验所需工具: Kimi K3 与 claude-context 。

Kimi K3 实测,真实大型代码库定位又快又准

我一开始只是想看看,Kimi K3 在一个真实的大型代码库里,能不能快速找到和问题最相关的代码。

测试用的是 Django 仓库。我选了 django/db 目录里的 4 个代码定位任务,分别涉及:

  • year_bounds_between
  • iso_year_lookup
  • select_for_update
  • datetime_year_bounds_timezone

我没有让 Kimi K3 修改代码或运行测试(相关测试已经很多了,K3的能力毋容置疑),而是要求它根据问题,返回最相关的源文件路径。

第一轮测试只使用 Kimi K3。在这一模式下,Kimi Code 只能通过本地的 GlobGrepRead 来搜索和阅读代码。

实际效果不错。4 个任务中,Kimi Code 基本都能找到正确的核心文件,平均定位 F1 达到 0.844。从使用体验来看,Kimi K3 的代码理解没问题,核心文件基本能定位到。

但看完 session usage 后,我发现了一个不太理想的地方:token 消耗比预期高。纯Kimi K3 完成一次代码定位任务,平均需要 125,147 token,平均 tool calls 在4.2次。

token 统计来自 Kimi Code session 里的 usage 记录,口径是:total_tokens = inputOther + inputCacheRead + inputCacheCreation + output

在这个过程中,问题不在于 Kimi K3 找不到代码,而在于它需要把不少候选内容送进模型:先根据问题提取关键词,用 Grep 找可能相关的文件,再用 Read 打开候选片段,最后比较哪些文件最相关。

这套方式像人工在仓库里逐层翻文件。只要问题不能直接对应某个类名或函数名,搜索轮数和上下文就会迅速增加。

我给 Kimi Code 加了一层语义检索

既然问题不在 Kimi K3 的代码理解能力,而在搜索路径太长,我没有换模型,而是给 Kimi Code 加了一层语义检索。

在对照组里,我接入了 claude-context MCP。任务开始后,Kimi Code 会优先用 claude-context 检索代码库;如果结果还不够明确,再用本地 GrepRead 做确认。

其他条件全部保持不变:

  • 模型仍然是 kimi-code/k3
  • 使用同一个 Django commit
  • 测试范围仍然是 django/db
  • 任务内容完全相同

4 个任务,两组各重复 3 次,一共 24 次运行。

结果是,Kimi Code 的定位质量不但没有下降,token 和工具调用次数还明显减少了。

指标Pure Kimi K3Kimi K3 + claude-context变化
平均 token125,14791,174-27.1%
平均 tool calls4.21.9-55.0%
平均定位 F10.8440.946提升

整体对比图如下:

Kimi K3 + claude-context:整体 token 与 tool calls 对比

平均看下来,接入 claude-context 后,token 从 125,147 降到 91,174,少了 27.1%;tool calls 从 4.2 次降到 1.9 次,少了 55.0%。定位质量没有下降,平均 F1 反而从 0.844 提升到 0.946。

为什么会省? 原因在于:纯 Kimi K3 更像是在仓库里一层层翻文件:先搜关键词,再读候选片段,再判断哪几个文件相关。claude-context 先把代码库做成语义索引,Kimi Code 检索时拿到的就是更靠近问题的代码片段,无关上下文少进模型,token 自然就下来了。

差距最大的任务,最能说明问题

4 个任务中,datetime_year_bounds_timezone 的变化最明显。这个任务里,Pure Kimi K3 平均 143,684 tokens、4.7 次工具调用;接入 claude-context 后,平均 59,375 tokens、1 次工具调用,token 少了 58.7%。

这个任务问的是“带时区处理的 datetime year bounds helper”,不是一个简单类名。纯 Kimi K3 会沿着 year、datetime、timezone、bounds 几个关键词来回 Grep 和 Read;claude-context 的第一次检索就命中了 django/db/backends/base/operations.py 里的相关 helper。Kimi Code 拿到的第一批上下文就已经接近答案,因此不再需要沿着多个关键词反复搜索。

所以省下来的 token 并不是来自更短的答案,而是来自更短的搜索路径。更少的无关代码进入模型,Kimi Code 就能更快完成判断。

在 Kimi Code 里怎么接入 claude-context

把 claude-context 接到 Kimi Code 里,安装很简单

Step 1:准备 Milvus / Zilliz 连接配置

claude-context 需要一个向量数据库来存代码索引。这里可以用 Zilliz Cloud,也可以用自己本地或内网的 Milvus。你只需要准备两个环境变量:

  • MILVUS_ADDRESS:Zilliz Cloud 的 endpoint,或者本地 Milvus 地址,比如 http://localhost:19530
  • MILVUS_TOKEN:Zilliz Cloud 用 API key;本地 Milvus 没开鉴权时可以留空。

另外还需要一个 embedding 模型的 key。下面示例用 OpenAI embedding。

~/.context/.env
mkdir -p ~/.context
cat > ~/.context/.env <<'EOF'
EMBEDDING_PROVIDER=OpenAI
EMBEDDING_MODEL=text-embedding-3-small
OPENAI_API_KEY=sk-xxx

# Zilliz Cloud: https://xxx.aws-us-west-2.vectordb.zillizcloud.com:19544
# Local Milvus: http://localhost:19530
MILVUS_ADDRESS=http://localhost:19530

# Zilliz Cloud 填 API key;本地 Milvus 没开鉴权可以留空
MILVUS_TOKEN=
EOF

Step 2:在项目里配置 Kimi Code 的 MCP

进入你要分析的代码仓库,在项目根目录创建 .kimi-code/mcp.json

创建 Kimi Code MCP 配置
mkdir -p .kimi-code
vim .kimi-code/mcp.json

写入下面这段配置:

.kimi-code/mcp.json
{
  "mcpServers": {
    "claude-context": {
      "command": "bash",
      "args": [
        "-lc",
        "set -a; source ~/.context/.env; set +a; export CUSTOM_EXTENSIONS=.py,.js,.ts,.tsx,.go,.java; export CUSTOM_IGNORE_PATTERNS='node_modules/**,.git/**,dist/**,build/**,*.png,*.jpg,*.jpeg,*.gif,*.svg'; npx -y @zilliz/claude-context-mcp@latest"
      ],
      "startupTimeoutMs": 60000,
      "toolTimeoutMs": 600000
    }
  }
}

这里的 npx -y @zilliz/claude-context-mcp@latest 就是安装并启动 claude-context MCP。第一次运行时会稍微慢一点,因为 npx 会先下载 package;后面再启动 Kimi Code 就会复用本地缓存。

这里有两个地方可以按自己的项目改:

  • CUSTOM_EXTENSIONS:只索引你关心的源码后缀,比如 Python 项目可以只留 .py
  • CUSTOM_IGNORE_PATTERNS:排除 node_modules.git、构建产物和图片,避免无关文件进索引。

Step 3:启动 Kimi Code,并先建索引

回到项目根目录启动 Kimi Code。第一次用的时候,可以直接对 Kimi 说:

在项目根目录启动 Kimi Code
cd /path/to/your/repo
kimi
text
给 Kimi Code 的索引指令
Index this codebase with claude-context.

索引完成后,再让 Kimi Code 做代码定位、调用链分析或 bug 修复。比如:

text
使用 claude-context 做代码定位
Use claude-context to locate the files related to bulk_create returning fields. Return the most relevant source file paths.

能看到 Kimi Code 调用 mcp__claude-context__search_code,基本就说明 MCP 已经接通了。

最后

Kimi K3 的长上下文和 coding 能力都很强,但强模型也需要一个好检索层。

不过,如果你只是问一个小函数,Pure Kimi Code 就够了;如果你经常让 agent 在大仓库里找代码、追调用链、修 bug,claude-context 不妨一试。

AI Assistant