大家好,我是十三!欢迎来到十三Tech。
上一讲聊了感知层为什么是入口闸。这一讲进入感知模块的第一个具体模式:上下文分诊。
看完之后,它给出的判断比我预期的狠。
上下文窗口是急诊室,不是数据库。
数据库追求完整保存,急诊室追求优先处置。Agent 该看什么,不应该由"哪个材料刚好被检索到"决定,而应该由一套明确的分诊规则决定。
很多 Agent 系统出问题,不是因为信息太少,而是因为信息太平均。多塞信息看起来稳,实际上会带来三个问题:关键证据被挤到上下文中间、模型注意力被无关材料稀释、token 成本被迅速拉高。
一、P0 到 P3:四级优先级
课程给的方法叫四级分诊。按优先级给候选信息排级,再决定它以原文、摘要还是 handle 的形式存在。
我更愿意把这四级理解成离模型远近不同的四个位置:
- P0:必须贴在模型眼前。 system prompt、当前任务、安全规则,原文加载,不能丢。
- P1:当前任务最相关。 最近修改的文件、错误堆栈、工具结果,保留原文片段。
- P2:有用但没必要全文常驻。 较早的对话、背景文档,压缩成摘要。
- P3:先不进窗口。 通过工具可获取的全量数据,只挂 handle,按需展开。
关键洞见在 P3:不预加载,按需展开。 上下文窗口因此变成一个虚拟内存系统。
同一个登录 bug,分诊之后:bug 描述和错误堆栈进 P0,auth.py 相关函数进 P1,历史聊天压缩成 P2,整个代码仓库只挂 handle 在 P3。Agent 不是"知道得更少",而是先看最该看的东西。
二、这不是新东西,是虚拟内存的复刻
沿 Karpathy 的类比——LLM 是 CPU,上下文是 RAM——四级分诊对应操作系统的内存管理。
P0 是不能换出的热页,P1 是当前任务的工作集,P2 是压缩后的背景页,P3 handle 就是页表项——本身很小,但能在需要时把原文拉回来。
这套映射一旦立住,所有工程决策都顺了。为什么 P0 必须常驻?实时任务不能被换出。为什么 P3 不预加载?冷数据应该 lazy loading。为什么常驻规则不能太长?内核态占多了,用户态就少了。
三、分诊的三种来源
把课程里 8 个框架的横切对比收束后,作者给出三种分诊来源。
第一种是人知道什么重要——CLAUDE.md / AGENTS.md,由开发者人工写规则。
第二种是代码结构显示什么重要——Aider 的 RepoMap 从仓库里自动抽符号骨架,再用 PageRank 排序。
第三种是系统 schema 强制什么必须存在——runtime context 加 middleware,把身份和权限做成强制字段。
成熟 Agent 系统往往三种综合运用:用规则文件锁住 P0、用算法发现 P1/P2、用 schema 保证身份和权限不会丢。
四、分诊 = 感知 + 权限
这一讲对我最大的冲击是它把分诊和多租户隔离打通了。
在多租户 SaaS 客服场景里,200 多个租户,单租户约 30 万 token,合计 6000 万 token。任何模型窗口都装不下。
分诊方案里,tenant_id 不应是普通元数据,而应是 P0 级硬约束——任何 P1/P2/P3 资源加载前都要校验它是否属于当前租户。
不一致直接拒绝,不交给模型判断。P3 handle 也要带租户前缀:manual_section://acme/billing 比 manual_section://billing 安全得多。
这就是服务端做行级安全、做数据权限隔离时同一套思路。Agent 的感知层在工程现场会和数据权限、租户隔离深度耦合。 这是过去做 LLM 应用的人很少重视、但架构师必须接管的部分。
五、三个指标把分诊变成工程对象
分诊最终能不能变成工程对象,取决于三个指标。
- budget_usage:
tokens_used / budget。如果 p99 突然升高,说明某类任务的信息量已经压垮当前策略。 - p0/p1_dropped:关键层丢失计数。如果 P1 经常被丢,通常是预算太紧,或者优先级规则写错。
- p3_hit_rate:实际读取的 handle 数 / 暴露的 handle 数。过低说明挂了太多没用 handle;过高说明本该在 P2 的材料被降到了 P3。
这和我做 SRE 看 CPU 利用率、错误率、缓存命中率是同一个动作——给一个抽象决策过程装上性能计数器。
TriageDecision 不要只写成一行文本日志,最好是结构化 trace:item_name / priority / decision / reason / tokens_used / budget。
分诊是一次有约束的工程决策,有决策就必须留审计入口。
这和我做服务端时加 APM、加链路追踪是同一个道理:没有可观测性就没有工程化。感知层的分诊也不例外。
如果只记住一件事,我会记这句:上下文分诊不是删材料,而是控制材料到模型的距离。
P0 贴近模型,P1 跟随任务,P2 压成背景,P3 只留入口。这个距离感一旦建立,Agent 的感知层就不再是 prompt 里的材料堆叠,而是一套可以设计、度量和治理的工程系统。
关于十三Tech
All in AI Agent 方向的架构师,专注 AI 工程实践。
相信 AI 是程序员的最佳搭档,帮助每一位开发者驾驭 AI。
联系方式:569893882@qq.com
GitHub:@TriTechAI
