📄 一句话概括
PTC 把确定性控制流(顺序、循环、条件、数据传递)从上下文里拿走;而依赖语义理解的决策一步也省不掉。
📝 本节和前面几节的关系
上一节说能力与实现分离,这一节回到 PTC 本身:它到底压缩了什么、压缩不了什么。
一、先把活儿分成两类
- 确定性控制流:清单已知、判据是字符串或数值、纯数据变换。
- 依赖语义理解的决策:哪些文件算日志、要汇成什么表、这算不算问题。
两类的区别只有一条:判据能不能提前写成规则。
二、算一笔账
5 段任务里,3 段确定性、2 段要判断。
- Native 路:5 段都摆在上下文里,模型看 5 遍。
- PTC 路:3 段进程序,上下文里只剩 2 段要判断的。
省下的是 3 段,不是 5 段——这句就是本节的全部。
三、为什么不能全拿走
全拿走就要把判断也写成规则——规则写不全,任务就做偏。
而且判据一变,写死的规则就失效:判断的活本来就该由会判断的一方做。
四、一句口诀
PTC 能替模型跑程序,不能替模型做判断。
反过来读也成立:如果整件事都是判断,PTC 帮不上忙——这就是 7.3.5 要划的边界。
五、动手 Demo:PTC 压缩的是确定性控制流
把任务逐段问一句:这一步需要【理解】吗?
segs = [("读 5 个文件", False), ("挑含 ERROR 的行", False),
("按文件分组汇表", False), ("哪些文件算日志", True),
("汇成什么表", True)]
for name, need in segs:
who = "模型" if need else "程序"
print(" %-16s 需要判断=%-5s -> %s" % (name, need, who))
print()
print(" 5 段里 3 段进程序, 2 段留在上下文")
实跑输出:
--------------------------------------------------------------------
PTC 压缩的是确定性控制流
--------------------------------------------------------------------
把任务拆开,逐段问一句:这一步需要【理解】吗?
任务段 需要语义判断吗 该谁做
---------------------------------------------------------
读 5 个文件 不需要(清单已知) 程序
挑含 ERROR 的行 不需要(判据是字符串) 程序
按文件分组汇表 不需要(纯数据变换) 程序
决定哪些文件算日志 需要 模型
决定汇成什么表 需要 模型
---------------------------------------------------------
5 段里 3 段是确定性控制流,2 段要模型判断——
**PTC 把前 3 段从上下文里拿走,后 2 段一步都省不掉**。
压缩的是控制流,不是判断——这张表就是本节论证的全部。 判据能提前写成规则的,才归程序;不能的,留着让模型判断。 分不清这两样,就会误以为 PTC 能省掉一切——那是 7.3.5 的误区。
30 秒实验
- 把自己的一个任务按上面那张表拆一遍,数出 3 段与 2 段。
- 给每一段写一句判据,能写成规则的算程序,不能的算模型。
- 想想为什么判据一变,写死的规则就失效。
常见误区
- 错误:PTC 能压缩一切。——纠正:只压缩确定性控制流——依赖语义理解的决策一步也省不掉。
- 错误:把判断也写成规则更省事。——纠正:规则写不全,任务就做偏——该判断的一方还是模型。
- 错误:控制流和判断是一回事。——纠正:判据能不能提前写成规则,就是两类的分界线。
自测三问(点开对答案)
1. PTC 压缩的是什么? —— **确定性控制流**——顺序、循环、条件、数据传递。 2. 哪一类省不掉? —— **依赖语义理解的决策**——哪些算日志、汇成什么表这类。 3. 两类怎么分? —— 看**判据能不能提前写成规则**——能就归程序,不能就留给模型。- ☐ 下一节(7.3.3 PTC 中的工具调用为什么还要经过统一执行管线)
相关笔记
- PTC:让模型用程序编排已有工具 —— 上一节的铺垫
- PTC 什么时候反而不划算 —— 本节结论的直接推论
- PTC:同一批能力,不同的呈现方式 —— 省上下文这件事第一次出现
- 🐳 DeepSeek Harness · 索引