大家好,我是十三!欢迎来到十三Tech。

第四讲聊完设计坐标系后,课程正式进入第一个能力模式组:感知。

刚看到这个模块的名字时,我其实很好奇:感知到底在解决什么问题?它和我做服务端时熟悉的输入校验、数据清洗是什么关系?为什么课程要把它单独拎出来作为一个完整的能力模式组?

看完导论后,我才意识到自己之前对"感知"的理解太浅了。

这一讲没有急着讲具体模式,而是先把"感知"从"prompt 之前的简单预处理"里拽出来,立成一个独立的架构问题。它给出的判断很硬:模型不在真实世界里推理,它只在你喂给它的那一小块上下文里推理。

感知层负责的,就是替 Agent 守这道闸。它看到什么、按什么顺序看、压缩到什么粒度看,决定了后面所有推理的上限。

一、感知站在 PRA 循环的入口

课程里用了一个 PRA 循环来定位感知的位置。

PRA = Perception / Reasoning / Action。行动负责把决策变成对外部世界的影响;感知站在另一头,负责把外部世界压缩成模型能处理的上下文;推理只能加工已经进入上下文的材料,不能凭空补回没看见的事实。

PRA 循环里的感知位置

这个循环给出的判定很硬:感知决定看见什么,看见什么决定能想什么,能想什么决定能做什么。感知站在整个循环的入口,决定了后面两个阶段的可用素材。

Anthropic 给的定义更精确:上下文工程是"在恰当的时刻,把恰当的信息放进上下文窗口的精细工艺"。感知工程师的工作,就是找出"使下一次推理质量最大化的最小高信号 token 集合"。

这句话的工程含义是:感知层不是"多塞"的问题,而是"选什么、压缩到什么粒度、按什么顺序放"的问题。

二、窗口变大,不代表不必筛选

很多人觉得长上下文出来了,窗口够大,就不用筛信息了。

但 Liu 等人在 TACL 2024 的研究里发现:模型使用长上下文时,对开头和结尾更敏感,中间的关键信息更容易被忽略。窗口变长只是把"没检索到"变成了"检索到了但没用上"。

一个中等模型读干净的 30K token,往往比最强模型淹在 180K 噪声里更可靠。差距不一定来自模型能力,而是来自它到底看到了什么。

课程里用了一个退款的例子把这个判断落到代码层面。

粗糙版感知:

context = search_docs(query="退款", top_k=50)
answer = llm(question, context)

改进版感知:

context = [
    order.status,                # 订单当前状态
    order.delivered_at,          # 是否已签收,签收多久
    user.refund_history,         # 是否有异常退款记录
    current_refund_policy,       # 当前生效的退款规则
    sku.refund_exceptions,       # 这个商品有没有特殊限制
]
answer = llm(question, context)

粗糙版的问题不是"找少了",而是"找多了且找脏了"——top_k=50 里混着旧版退款政策、无关 FAQ、其他品类规则。改进版做的事不是堆资料,而是判断这一次推理真正需要的证据集合

三、感知工程不是新东西,是老问题换了载体

这一讲最让我停下来的是一段类比。

LLM 像 CPU,上下文窗口像 RAM,文件系统像磁盘。

沿这个类比看,感知工程和我做服务端时熟悉的那套纪律几乎是同一件事:

感知工程的同源类比

问题没变,只是载体变了。以前优化查询计划、内存页面、缓存命中率,现在优化上下文窗口、attention 预算和推理质量。

这个判断让我对 Agent 系统的工程化突然有了坐标系——感知层不是新知识,是老问题在新载体上的回归。以前做服务端时熟悉的 P0/P1/P2/P3 分级思路、热数据冷数据分层思路、缓存命中率优化思路,几乎可以平移到感知层。

四、选压探融:后面四讲的地图

感知模块不是一个名词,而是一条流水线上的四个关卡。

感知模块四象限:选 / 压 / 探 / 融

  • (分诊):哪些信息进 Context,哪些挡在门外——拓扑是 Router
  • (压缩):进来了但占地方,怎么压——拓扑是 Chain
  • (发现):不知道在哪,怎么找——拓扑是 Loop
  • (多模态):图、表、日志异类数据怎么变 LLM 友好——拓扑是 Parallel

四种模式分别绑定四种执行拓扑。这不是随意的功能分类,而是第三讲的双轴框架在感知层的具体落地。

五、没有 Perception Trace,就是在黑盒里调"猜"

这一讲最后一条判断我特别认同:没装 Perception Trace 的 Agent 系统,本质上是在黑盒里调"猜"。

Perception Trace 记录的不是模型最后说了什么,而是"模型在开始推理之前经历了什么":读了哪些文件,检索到了哪些内容,选中了哪些片段,丢弃了哪些材料,关键证据最终落在上下文什么位置。

普通日志只能告诉你"该订单已超过退款期限"。Perception Trace 能告诉你:检索命中 47 条,进入 context 只有 6 条,关键证据 refund_policy_V3.md 被排序到第 38 位,未进入 Context,实际进入的是旧版 refund_policy_V1.md

和我做服务端时加 APM、加链路追踪是同一个道理:没有可观测性就没有工程化,感知层也不例外。后续几讲里陆续出现的 budget_usagedropped_countcompression_ratio 等感知指标,本质上都是 Perception Trace 的不同切面。

这也是整个感知模块给我最大的认知收获:我以前以为 LLM 时代来了以后,做服务端时熟悉的那套工程纪律要么被"长上下文"消解掉,要么需要一套全新的方法。这一讲给出的判断很硬——问题没变,只是载体变了。

课程入口


关于十三Tech All in AI Agent方向的架构师,专注AI工程实践。 相信AI是程序员的最佳搭档,帮助每一位开发者驾驭AI。

联系方式:569893882@qq.com GitHub:@TriTechAI