Skip to content

Harness多Agent系统Token优化:五步Token Transformation Pipeline实战

2026年5月4日

多Agent系统中,素材库从150篇增长到500篇、1000篇时,不是"搜不搜得到"的问题,而是搜到了也喂不进去的问题。这不是性能问题,是架构问题。

上下文不是无限大的

LLM有上下文窗口,128K、200K,数字越来越大。但两件事不会变:

问题说明
注意力分散Lost in the Middle效应——放在中间的信息,模型更容易忽略
Token是钱输入token按量计费,素材无脑全灌是成本失控

Token Transformation Pipeline

五步流程:

采集(Collection) → 排序(Ranking) → 压缩(Compression) → 预算(Budgeting) → 拼装(Assembly)

第一步:采集——什么东西有资格进上下文

不是素材库里所有文件都往里灌。先用文件名筛一轮。

关键:采集阶段不做任何截断。相关就是相关,全文保留。截断是后面的事。

python
# 伪代码:不是这样
results = [read_full(path) for path in all_files[:10]]

# 而是这样
candidates = [path for path in all_files if matches_topic(path, topic)]

第二步:排序——谁排前面

相关不等于同等重要。排序依据 = 相关度 × 信息密度

指标说明
相关度靠关键词匹配算出来
信息密度去停用词后的独特词汇数除以总字数
python
def score(path, topic):
    content = read(path)
    relevance = keyword_match_score(content, topic)
    density = unique_content_words(content) / len(content)
    return relevance * density

排完序之后,前五篇是"必须喂进去的",剩下的按预算决定。

第三步:压缩——不是删内容,是换形式

压缩不是把长文截成短文——那是砍内容。压缩是把内容换一种表达:从正文变成摘要。

位置处理方式
前五名保留全文
后面的只保留标题 + 一句话摘要
python
def compress(path, rank):
    if rank <= 5:
        return read(path)  # 保留全文
    else:
        content = read(path)
        return f"## {extract_title(content)}\n{summarize(content)}"  # 摘要

关键选择:用哪个模型做摘要?不能用Writer用的那个,用便宜的快模型(DeepSeek或GPT-4o-mini)。

第四步:预算——每一站分多少Token

Pipeline不是只有Writer需要上下文。每一站的token分配不一样:

AgentToken预算理由
Researcher6000需要浏览多篇素材找关联
Planner4000需要素材摘要和主题,不需要全文
Writer8000需要最详细的上下文
Reviewer4000只需文章成品+规则

超出预算的,从排名最低的文件开始砍——先砍摘要,再砍正文。

python
def budget(candidates, limit):
    used = 0
    result = []
    for c in candidates:
        tokens = estimate_tokens(c.content)
        if used + tokens <= limit:
            result.append(c)
            used += tokens
    return result

第五步:拼装——不是拼接,是排版

素材和素材之间要有显式的分隔符和来源标注:

markdown
【素材 1/5】来源:Knowledge Repository/素材库_ClaudeCode_Harness架构.md | 相关度:94%
(正文)

【素材 2/5】来源:Knowledge Repository/素材库_GarryTan_HarnessEngineering_完整版.md | 相关度:87%
(正文)

两个好处:

  1. 模型知道每一段来自哪里,能追溯
  2. 分隔符帮模型区分"这是素材"和"这是我该干的事"

加进Pipeline

Context Budgeting是一个预处理层,插在Researcher和Planner之间:

Researcher(搜素材)

Context Budgeting(采集→排序→压缩→预算→拼装) ← 新加的

Planner(策划)

Writer(写作)

Reviewer(审核)

改动很轻:

python
state = researcher_agent(state)
state = context_budget(state, budget=4000)  # Planner只分4000 token
state = planner_agent(state)
state = writer_agent(state)
state = reviewer_agent(state)

Context Budgeting做五件事:读Researcher的输出 → 按相关度排序 → 排后面的压缩成摘要 → 按预算截断 → 拼装成带来源标注的格式化文本。

完整Harness系列索引

文章主题
1加结构,AI裸跑不可靠
2加上下文继承,多Agent互相不知道对方做了什么
3加质量规则,AI会自欺
4加Instructions,规则怎么组织、怎么传递
5加State,Agent之间信息怎么流动
6加Verification,产出怎么检查、不合格怎么退回去
7多Agent系统怎么省Token

代码开源:github.com/yuyingzhi828/multi-agent-writer

不要孤军奋战啦!

加入微信群一起学习交流 AI

与大神一起使用 OpenClaw、Hermes、Claude Code、Seedance 2.0、GPT-Image-2 等

微信公众号

扫码关注微信公众号
私信 "加群",将自动获取微信群二维码

探索 AI 世界,掌握智能未来