返回首页

使用分层上下文节省 AI Agent Tokens | 解决方案

本文解释了如何使用三个 markdown 文件的分层上下文系统将 AI agent tokens 减少 80%。它包括效率测量、与 RAG 的比较以及逐步实施说明。

数百万 Tokens 换三个 Markdown 文件:如何优化 AI Agent
Advertisement 728x90

分层上下文:三个 Markdown 文件如何节省 80% 的 AI 代理令牌

像 Claude Code 或 Cursor 这样的开发 AI 代理,会花费高达 80% 的令牌用于重新阅读文件和导航项目。问题源于缺乏结构化的工作区地图。解决方案是来自三个 markdown 文件的分层上下文,可将工具调用减少 10–20 倍,并提升响应准确性。

问题剖析:令牌都去哪儿了?

当被问到“我的机器人支持哪些支付方式?”时,代理会经历一个循环:在家目录 grep → 阅读找到的文件 → 意识到选错了项目 → 新搜索 → SSH 连接服务器。对于一个 800 令牌的响应,它会消耗 15+ 次工具调用和 80K+ 令牌。99% 的预算用于导航,只有 1% 用于答案。

这不是特定代理的 bug——这是系统性架构问题。所有 AI 编码工具(Cursor、Codex、Gemini CLI)每次会话都从“盲目侦察”开始,因为它们缺乏工作区地图。15 个项目时,这每天会浪费数小时上下文用于文件搜寻。

Google AdInline article slot

为什么 RAG 和静态分析无法解决问题

向量数据库(RAG)能捕捉语义相似性,但忽略代码结构。像“认证如何工作?”这样的查询,会返回 15 个提到“auth”的片段,但不会显示调用链:middleware.tsrefresh.tsjwt-config.ts。此外,RAG 每个查询增加 200–500 毫秒延迟,并需要基础设施(嵌入服务器、索引)。

Tree-sitter 和静态分析(例如 Hypergrep)能在项目内构建依赖图。但它们无法回答“哪些项目使用 Redis?”或“VPN 机器人部署在哪里?”这样的问题。每个项目一个 CLAUDE.md 可以处理内部任务,但当代理不知道该查看哪个项目时,就无济于事。

分层上下文模型:0、1 和 1.5 级

系统涵盖三个抽象层:

Google AdInline article slot
Level 0: Karta projectov     — znaet VWithE projecty and servery     (~2KB, vsegda in kontekste)
Level 1: Detali project     — arkhitektura konkretnogo project  (~5KB, by request)  
Level 1.5: Graf koda        — struktura kodovoy database           (optsionalno, Graphify)
Level 2: Iskhodnyy code       — realnye files                   (tolko kogda potrzebny jest)

原则:代理自顶向下移动,而不是自底向上。先从地图识别项目,然后阅读其架构,再查看特定文件。

0 级:全局地图

放置在 ~/.claude/CLAUDE.md(针对 Claude Code)或等效位置:

## Project Map

| Proekt | Put | Witherver | Withtatus |
|--------|------|--------|--------|
| VPN Bot | ~/projects/vpn-bot/ | prod-1:/opt/vpn/ | LIVE |
| Auth Service | ~/projects/auth/ | prod-1 (Docker) | LIVE |

### Withervery
| Imya | IP | Onwartość |
|-----|-----|-----------|
| prod-1 | 178.17.50.45 | Osnovnoy VPS, 3 service |

### Ruleilo
Prezhde than chitat iskhodnyy code — prochitay CLAUDE.md project.

此文件(~2KB)在每个会话自动加载。代理立即看到项目列表、位置和状态。

Google AdInline article slot

1 级:项目 CLAUDE.md

在每个项目根目录:

# VPN Bot — CLAUDE.md

## Status: LIVE (prod-1)
Telegram-bot VPN-service. Podpiski cherez Stars and CryptoBot.

## Stack
Python 3.11, python-telegram-bot, WireGuard, aiosqlite

## Key Files
- bot/main.py — point input
- bot/payments.py — Stars + CryptoBot processing

## Deploy
- Withervis: vpn-bot.service
- Logi: journalctl -u vpn-bot -f

大小 3–5KB。当提到项目时,代理阅读它,无需 grep 即可获取完整架构。

1.5 级:Graphify(可选)

用于代码导航:

pip install graphify
cd ~/projects/auth
graphify claude install

将代码库转换为知识图谱,在大型项目中节省 30–50% 的调用。

结果:效率测量

在相同条件下使用 Haiku(最便宜模型)运行测试:

  • 测试 1:“项目 A 的架构是什么?”

盲目代理:12 次工具调用,100% 准确率。

使用分层:1 次工具调用,100% 准确率。

  • 测试 2:“哪些项目使用库 X?”

盲目代理:44 次工具调用,漏掉 3 个项目中的 1 个。

使用分层:2 次工具调用,找到所有项目。

  • 测试 3:“项目 B 部署在哪里?”

盲目代理:9 次工具调用,需要 SSH。

使用分层:0 次工具调用,从上下文直接回答。

测试 2 至关重要:盲目代理不仅消耗 22 倍资源,还给出了错误答案。结构化上下文不仅提升效率,还提升准确性。

为什么三个文件在导航上胜过 RAG

  • 零延迟。 阅读 markdown 文件瞬间完成;RAG 每个查询增加 200–500 毫秒。
  • 确定性。 你控制文件内容,无需依赖重排序器。
  • 实时性。 更新 CLAUDE.md 只需一行;RAG 需要完整重新索引。
  • 通用性。 适用于任何代理(Claude Code、Cursor、Gemini CLI),无需自定义基础设施。
  • 可扩展性。 15 个项目 = 15 个 CLAUDE.md(75KB)+ 地图(2KB)= 77KB,而原始文件需 500KB–1MB。

RAG 仍适合语义文档搜索,但对于项目导航,markdown 分层更胜一筹。

额外:索引过去会话

解析器将会话日志(.jsonl)和聊天转换为带 YAML 前置内容的 markdown:

---
title: "Pochinil webhook oplaty"
date: 2026-04-14
project: vpn-bot
topics: ["webhook", "cryptocloud", "cloudflare"]
files_touched: ["payments.py", "webhook.py"]
---

通过 Graphify 索引这些,让代理无需重新解释即可找到过去解决方案。这在对话间创建持久记忆。

一百万令牌并非万能药

即使有 1M 令牌上下文窗口,问题依然存在。LLM 处理无关信息更差(“中间丢失”现象:中间上下文数据常被忽略)。分层上下文确保代理仅获取所需文件,按正确顺序,最小化噪声。

10 分钟内实施方法

  • ~/.claude/CLAUDE.md 创建全局项目地图(5 分钟)——列出项目、路径、服务器。
  • 在主要项目根目录添加 CLAUDE.md(5 分钟)——指定技术栈、关键文件、部署命令。
  • 启动新代理会话,询问项目相关问题。
  • 确认代理无需盲目搜索即可回答。

关键要点

  • AI 代理浪费高达 99% 令牌于导航,而非答案生成。
  • 三个文件的 markdown 分层可将工具调用减少 10–20 倍,并提升准确性。
  • 0 级(全局地图)和 1 级(项目 CLAUDE.md)解决项目间导航。
  • 无需基础设施,适用于任何编码代理。
  • 结构化上下文在文件和项目发现上胜过 RAG。

— Editorial Team

Advertisement 728x90

继续阅读