跳转到正文

MODULE 03 · STEP 08 · 可练习

上下文与压缩 ​

本课类型

本课以理解与工作习惯为主。只有当重要信息已经写入文件,且你确实想练习压缩时,才需要输入 /compact。

对话变长以后,你可能会看到底部的上下文占用逐渐升高。上下文可以暂时理解为“模型这一轮能同时参考的内容”。它包括系统指令、项目规则、你的消息、模型回复和工具结果。

上下文不是永久记忆,也不等同于磁盘上的会话文件。会话可以保存很久,但模型一次能够接收的内容有上限。

为什么需要压缩 ​

自动压缩默认启用:当对话接近模型的上下文限额时,Pi 可以保留较近的消息,同时把更早的部分整理成摘要。你也可以在交互界面手动输入:

text
/compact

这条命令输入在 Pi 底部编辑区,按 Return 后等待压缩完成。界面回到可以继续输入的状态后,让 Pi 复述当前目标、已做决定和下一步,再与你的项目文件核对。不确定时不要连续反复执行。

压缩能让工作继续,但不可能无损保留所有细节。一段很长的调试过程,模型后续收到的可能只剩“已排除 A 和 B,下一步检查 C”以及较近消息。更早的原始条目仍留在 JSONL 会话树中;压缩不会恢复或修改磁盘文件。如果某个精确错误、命令输出或决策原因必须保留,就不要只让它留在模型后续收到的上下文里。

把重要结果写进文件 ​

处理长任务时,可以让 Pi 维护三类产物。下面的文件名是本书建议的工作方法,不是 Pi 要求的固定文件:

  • plan.md 记录目标、阶段和未完成项。
  • decisions.md 记录做过的选择及原因。
  • verification.md 记录检查方法、实际结果和遗留问题。

这些文件能被你、Pi 和后续会话重新读取。它们不取代 Git,却可以防止关键决定只存在于某次模型回复中。

先做一份最小交接 ​

在普通终端确认自己位于 pi-practice,再建立一个工作记录目录:

bash
mkdir -p worklog

回到 Pi 编辑区,把下面这段任务交给 Pi。这里不要求你真的把会话撑到很长;目标是先得到一份可以重新读取的交接文件。

text
请在 worklog/handoff.md 建立本任务的交接记录,只写五部分:
目标、范围、已经完成、未解决问题、下一步。
依据当前会话填写;不知道的内容写“未知”,不要猜测。
写完后重新读取文件,并告诉我它的路径。

独立检查文件确实存在:

bash
test -f worklog/handoff.md && echo "PASS: 交接文件存在"

如果没有出现 PASS,先不要压缩。回到 Pi 核对写入路径;仍找不到时保留当前会话,在普通终端运行 pwd 和 find worklog -maxdepth 1 -type f,确认文件是不是写到了别处。

一个长任务的节奏 ​

  1. 开始前写清目标和验收标准。
  2. 每完成一个阶段,更新产物和待办。
  3. 调试进入岔路时,用 /tree 回到正确节点。
  4. 上下文接近上限前,检查重要信息是否已经落到文件。
  5. 压缩后重新读取目标、决策和验收记录,再继续。

在真实终端中核对数量与检查点记录

这张实操图展示的是“把状态写出会话以后怎样验收”:先比较输入与索引数量,再查看检查点中记录的已完成文件和失败项。它能证明进度记录与磁盘产物可以独立核对,但不能证明 /compact 已经成功;压缩是否完成,仍要以 Pi 回到可输入状态以及压缩后的复述核对为准。

想实际练习 /compact 时 ​

只有在 worklog/handoff.md 已存在,而且里面的目标、范围和下一步与你的理解一致时,才在 Pi 编辑区输入:

text
/compact

压缩完成、Pi 再次等待输入后,发送:

text
请先读取 worklog/handoff.md,再列出当前目标、不能越过的范围、
已经完成的事情和唯一下一步。若会话记忆与文件冲突,以文件为核对依据并指出冲突。

压缩不会撤销或恢复磁盘文件。若命令报错、长时间没有回到可输入状态,停止重复执行,保留错误文字和当前 handoff.md;重新启动并恢复会话后,先从文件重建上下文。

本课验收 ​

  • worklog/handoff.md 能在普通终端中确认存在。
  • 文件写清目标、范围、已完成、未知和下一步,没有用猜测补空白。
  • 你能说清:会话用于找回对话,上下文是模型本轮能参考的内容,文件或 Git 才是可独立检查和恢复的产物。
  • 如果做了压缩,压缩后复述与交接文件一致;有冲突时已经明确列出。

配套实验:真正对照压缩前后 ​

完成本课的最小交接后,进入 CASE 02 · 压缩前后对照。它提供固定简报、磁盘检查点、压缩前记录、压缩后记忆回答和重新读取后的恢复记录,不需要新增课程,也不会把缓存数字当成任务质量。

一个容易忽略的区别

会话可携带性、上下文压缩和文件版本管理是三个不同问题。想继续对话,关心会话;想继续模型当前的思考线索,关心上下文;想恢复文件,使用 Git 或备份。

推荐继续阅读官方授权译文 Pi 中的压缩机制 和 无法随身带走的会话,对照理解压缩过程与会话可移植性。

想把会话、提示缓存和可调整的上下文连起来思考,可以读小墨同学的译文串读。

本章依据 ​