Pi 的上下文压缩,到底是怎么工作的?
Pi çä¸ä¸æå缩ï¼å°åºæ¯æä¹å·¥ä½çï¼
è´Great 2026-08-18 0 é 读11åéåææ é¢ï¼ How Compaction Works in Pi
åæé¾æ¥ï¼earendil.com/posts/compaâ¦
åªè¦å¨ PiãClaude Code æ Codex éè¿ç»åè¿ä¸æ®µæ¶é´ç代ç ï¼å¤§æ¦çé½è§è¿ä¸ä¸ªè¯ï¼
Compactionã
䏿å¯ä»¥æå®çè§£æâä¸ä¸æå缩âã
å¾å¤äººç¬¬ä¸æ¬¡çå°è¿ä¸ªæç¤ºï¼å¯è½ä¼ä»¥ä¸ºï¼Agent æ¯ä¸æ¯èä¸å¨äºï¼å夿åé¢çè®°å½ç´æ¥å æã
å ¶å®æ²¡é£ä¹ç²æ´ã
è³å°å¨ Pi éï¼Compaction æ´å䏿¬¡âæ¢ç交æ¥âï¼æåé¢å·²ç»åçè¿çäºæ æ´çæä¸ä»½æè¦ï¼ä¿çæè¿è¿å¨å¤ççå 容ï¼ç¶å让æ¥ä¸æ¥ç模åç»§ç»å¹²æ´»ã
为ä»ä¹éè¦è¿ä¹åï¼
å¾å ä»ä¸æ¬¡ LLM å¯¹è¯æ¯æä¹è¶èè¶é¿è¯´èµ·ã
ä¸åºå¯¹è¯ï¼æ¯æä¹è¶èè¶âèâç
大åè¯è¨æ¨¡åï¼ä¹å°±æ¯ LLMï¼é½æèªå·±çä¸ä¸æçªå£ã
æè°ä¸ä¸æçªå£ï¼å¯ä»¥ç®åçè§£æï¼æ¨¡åå¨çæåçæ¶ï¼ä¸æ¬¡æå¤è½å¤âçå°âå¤å°å 容ã
è¿ä¸ªéå¶æ¥èª LLM 使ç¨ç Transformer æ¶æãæ¨¡åè½å¤å¤ççè¾å ¥é¿åº¦ä¸æ¯æ éçï¼è¶ è¿ä¸éä¹åï¼è¯·æ±å°±ä¼è¢«ç´æ¥æç»ã
æ¾å°ç¼ç¨ Agent éï¼è¿ä»¶äºä¼æ´ææ¾ã
å ä¸ºä¸æ¬¡ Agent ä¼è¯éï¼ä¸åªæä½¿ç¨è
ååºçæ¶æ¯ï¼è¿å
æ¬ç³»ç»æç¤ºè¯ãå·¥å
·å®ä¹ãå è½½è¿æ¥çæä»¶ï¼ä¾å¦ AGENTS.mdï¼ä»¥åä¹åææç对è¯ãå·¥å
·è°ç¨åå·¥å
·è¿åç»æã
è¿äºå 容ï¼ä¼éç任塿¨è¿ä¸æç´¯ç§¯ã
䏿¬¡ç¼ç¨ Agent çé¦ä¸ªè¯·æ±ï¼å¤§æ¦æ¯è¿æ ·çï¼
request 1:
[system][tools][user]
è¿éä¼å¼å¯ä¸è½®äº¤äºã
æ¨¡åæ¶å°è¯·æ±åï¼å¯è½ä¸ä¼ç«å»ç»åºæç»åçï¼èæ¯å è¿å䏿¡å å«å·¥å ·è°ç¨ç assistant æ¶æ¯ã
Agent ç¨åºæ§è¡å·¥å ·ï¼æå·¥å ·ç»æéæ°å¡è¿ä¸ä¸æï¼å忍¡ååéä¸ä¸ªæ°ç请æ±ã模åçå°å®æ´ç对è¯åå²åç»§ç»å¤çï¼ç´å°è¾åºæç»ç»æï¼è¿ä¸è½®äº¤äºæç®ç»æã
after request 1:
[system][tools][user][assistant: tool call][tool result][assistant]
<-------------------> ^ <--------->
LLM è¿å | LLM è¿å
|
Agent æ§è¡å·¥å
·
æ¥çï¼ä½¿ç¨è å忥䏿¡æ°æ¶æ¯ã
ä¸ä¸æ¬¡è¯·æ±å°±åæäºè¿æ ·ï¼
request 2:
[system][tools][user][assistant: tool call][tool result][assistant][user]
^
æ°ç¨æ·æ¶æ¯
çèµ·æ¥åªæ¯å¤èäºä¸è½®ã
ä½å¨æ¨¡åç¼éï¼åé¢çç³»ç»æç¤ºè¯ãå·¥å ·å®ä¹ãç¨æ·æ¶æ¯ã模ååçãå·¥å ·è°ç¨åå·¥å ·ç»æï¼ä¸ä¸ªé½ä¸è½å°ï¼å ¨é½è¦éæ°å¸¦ä¸ã
äºæ¯ï¼æ¯å¤è¿è¡ä¸è½®äº¤äºï¼æ´ä¸ªä¸ä¸æå°±ä¼åé¿ä¸ç¹ã
代ç ä»»å¡ä¸æ¦å¤æèµ·æ¥ï¼Agent åå¤è¯»æä»¶ãæç´¢ä»£ç ãæ§è¡å½ä»¤ãæ¥çæ¥éï¼åæ ¹æ®ç»æä¿®æ¹æ¹æ¡ï¼ä¸ä¸æå¢é¿å¾ä¼é常快ã
æåï¼æ´æ®µåå²è¶ è¿æ¨¡åçä¸ä¸æçªå£ï¼ä¸ä¸æ¬¡è¯·æ±å°±ä¼ç´æ¥æ¥éï¼
[system][tools][user][assistant][....][tool result][user]
^
è¶
åºä¸ä¸æçªå£
常è§çé误æç¤ºå°±æ¯ï¼
Request exceeds the maximum size
ç¿»è¯ä¸ä¸å°±æ¯ï¼è£ ä¸ä¸äºã
ä¸ä¸æè£ ä¸ä¸ä¹åï¼æä¹åï¼
å½åæ¥çä¼è¯å·²ç»æ æ³ç»§ç»æ¶ï¼çè®ºä¸æä¸¤ç§éæ©ã
第ä¸ç§ï¼ç´æ¥å¼å¯ä¸ä¸ªå ¨æ°ç空ç½ä¼è¯ã
è¿æ ·ç¡®å®å¹²åï¼ææä¸ä¸æç¬é´å½é¶ãä½ä¹åå·²ç»ååºçå³å®ãææ¥è¿çé®é¢ãä¿®æ¹å°ä¸åç代ç ï¼ä»¥åè¿æ²¡æè§£å³çä»»å¡ï¼ä¹ä¼ä¸èµ·æ¶å¤±ã
å½ç¶ï¼éæ°å¼ä¼è¯ä¸ä¸å®æ¯åäºã
æç ç©¶æåºï¼éçä¸ä¸æä¸æåé¿ï¼LLM çè¾åºæ§è½ä¹å¯è½éæ¸ä¸éï¼è¿ç§ç°è±¡é常被称为 Context Rotï¼ä¹å°±æ¯âä¸ä¸æè åâã
ä½å¯¹äºä¸ä¸ªæ£å¨è¿è¡ä¸çç¼ç¨ä»»å¡æ¥è¯´ï¼ç´æ¥æ¸ 空éå¸¸è¿æ¯å¤ªæ¿è¿äºã
äºæ¯å°±æäºç¬¬äºç§æ¹æ¡ï¼
æåæ¥ç对è¯å缩ä¸ä¸ã
䏿¯å ¨é¨ä¸¢æï¼èæ¯æå·²ç»åçè¿çå 容ï¼è½¬æ¢æä¸ä¸ªæ´çãæ´éåç»§ç»ä½¿ç¨ççæ¬ã
è¿å°±æ¯ Compactionã
Compaction å°åºåäºä»ä¹ï¼
ç论ä¸ï¼ä¸ä¸æå缩å¯ä»¥æå¾å¤å®ç°æ¹å¼ã
ä¾å¦åä¸ä¸ªåºå®çç¨åºï¼åªä¿çæäºæ¶æ¯ï¼æå ¶ä»å å®¹ç´æ¥å é¤ï¼æè åªä¿åç¨æ·æ¶æ¯ï¼ä¸¢æå¤§é¨åå·¥å ·è°ç¨è®°å½ã
ä½å¨å®é çç¼ç¨ Agent ä¸ï¼Compaction é叏䏿¯ç®åç²æ´å°æªæåå²ï¼èæ¯é¢å¤è°ç¨ä¸æ¬¡ LLMï¼è®©æ¨¡åæ»ç»ä¹åçä¼è¯ã
åç¼©å®æä¹åï¼åæ¥çé¨ååå²ä¼è¢«ä¸æ®µæè¦æ¿ä»£ï¼
[system][tools][compaction result][user]
^
æ°æ¶æ¯
åé¢çå 容åçäºï¼ä¸ä¸æçªå£èªç¶ä¹å°±è ¾åºäºæ°ç空é´ã
Agent å¯ä»¥ç»§ç»æ¥æ¶æ¶æ¯ãè°ç¨å·¥å ·ãä¿®æ¹æä»¶ï¼èä¸å¿ 马ä¸å¼å¯ä¸åºå ¨æ°çä¼è¯ã
Pi æ¯æä¹å®ç°ä¸ä¸æå缩çï¼
æ¥ä¸æ¥å ·ä½çç Pi çå缩å®ç°ã
å½ä¼è¯è¶æ¥è¶é¿ï¼å¼å§æ¥è¿æ¨¡åä¸ä¸æçªå£çä¸éæ¶ï¼Pi ä¼èªå¨è§¦å Compactionã
é¤äºèªå¨è§¦åï¼ä½¿ç¨è ä¹å¯ä»¥æå¨è¾å ¥ï¼
/compact
主å¨å缩å½åä¼è¯ã
æ£å¸¸æ åµä¸ï¼Pi ä¼å¨ä¸è½®äº¤äºç»æä¹åæ£æ¥æ¯å¦éè¦èªå¨å缩ã
å¨è¿ä¸è½®ç»æä¹åï¼æ¯ä¸æ¬¡æ¨¡å请æ±ä»ç¶ä¼æ²¿ç¨åæ¥ç宿´æç¤ºè¯ãè¿æ ·åæä¸ä¸ªå¥½å¤ï¼è¯·æ±ä¹é´å¯ä»¥ç»§ç»å¤ç¨å·²ç»ç¼åçåç¼ã
ä¸è¿ï¼å¦æä»»å¡è¿æ²¡æ§è¡å®ï¼å°±å¨ä¸ééå°äºä¸ä¸ææº¢åºé误ï¼Pi ä¹å¯è½å¨å½å交äºè¿ç¨ä¸ç´æ¥è§¦åå缩ã
å缩ä¹åï¼ä¸ä¸æå¤§æ¦æ¯è¿æ ·çï¼
before compaction:
[system + tools][older turns][recent retained messages]
è¿éæä¸ä¸ªå¾éè¦çç»èã
Pi ä¸ä¼ææ´æ®µå¯¹è¯å ¨é¨æ»ç»æï¼èæ¯ä¼ä¿çä¸é¨åæè¿çæ¶æ¯ï¼è®©å®ä»¬ç»§ç»ä»¥åå§å½¢å¼åå¨ã
è³äºä¿çå¤å°ï¼ä¸æ¯æç §åºå®çæ¶æ¯æ¡æ°è®¡ç®ï¼èæ¯æ ¹æ®ä¸ä¸ªå¯é ç½®ç Token é¢ç®å³å®ã
æç §åæå叿¶ Pi çé»è®¤é ç½®ï¼è¿é¨åé¢ç®æ¯ 2 ä¸ Tokenï¼å¤§çº¦ç¸å½äºæè¿ 5 å° 20 轮对è¯ã
乿以åªè½ç»åºä¸ä¸ªèå´ï¼æ¯å 为ä¸åæ¶æ¯çé¿åº¦å·®å¼å¾å¤§ã
ä¸è½®ç®åé®çå¯è½åªæå ç¾ä¸ª Tokenï¼ä¸è½®å å«å¤§é代ç ãæ¥å¿åå·¥å ·ç»æçæä½ï¼åå¯è½å æå åçè³ä¸ä¸ä¸ª Tokenã
æ¾å°ååä½ç½®ä¹åï¼Pi 伿ååç¹ä¹åçæææ¶æ¯æååºæ¥ï¼è¿è¡åºååï¼ç¶åäº¤ç» LLM çææè¦ã
Pi çå缩æç¤ºè¯ï¼ä¹åæ®é对è¯ä¸ä¸æ ·
åç¼©å¹¶ä¸æ¯è®©æ¨¡åé便æ¥ä¸å¥âåæ æè¦âã
对ç¼ç¨ Agent æ¥è¯´ï¼ä¸ä»½å¥½çå缩æè¦ï¼åºè¯¥å两çå·¥ç¨å¸äº¤æ¥å·¥ä½æ¶çä¸ç说æï¼
å½åè¦è§£å³ä»ä¹é®é¢ï¼å·²ç»åäºä»ä¹ï¼åªäºæ¹æ¡è¢«å¦å®äºï¼ä»£ç æ¹å°äºåªéï¼æ¥ä¸æ¥è¿éè¦å®æä»ä¹ã
æä»¥ï¼Pi 卿§è¡ Compaction æ¶ï¼åéç并䏿¯æ®é对è¯è¯·æ±ï¼èæ¯ä¸å¥ä¸é¨ç¨äºæ»ç»ä¸ä¸æç请æ±ã
å®åæ£å¸¸è¯·æ±ä¸»è¦æä¸ç¹ä¸åã
1. ç³»ç»æç¤ºè¯åäº
æ®é对è¯ä¸ï¼æ¨¡åå¯è½ä¼è¢«åç¥ï¼
ä½ æ¯ä¸åä¸ä¸çç¼ç¨å©æã
å°äºåç¼©é¶æ®µï¼Pi 使ç¨çç³»ç»æç¤ºè¯åä¼ææ¨¡åå®ä¹ä¸ºï¼
ä½ æ¯ä¸åä¸ä¸ææ»ç»å©æã
对åºå®ç°å¯ä»¥å¨ Pi çæºä»£ç ä¸çå°ã
è¿æ¶æ¨¡åçä»»å¡ä¸åæ¯ç»§ç»å代ç ï¼èæ¯æå·²ç»åççäºæ æ´çæ¸ æ¥ã
2. ç¨æ·æç¤ºè¯ä¹åäº
å缩请æ±ä¸çç¨æ·æ¶æ¯ï¼ä¼è¦æ±æ¨¡åï¼
为ä¹åéæ°è¿å ¥è¯¥ä¼è¯åæ¯ï¼çæä¸ä»½ç»æåçå¯¹è¯æè¦ã
è¿é¨åæç¤ºè¯åæ ·å¯ä»¥å¨ Pi çå®ç°ä»£ç 䏿¾å°ã
æç¤ºè¯éè¿æç¡®è§å®äºæè¦ç»æï¼å æ¬ä»»å¡ç®æ ãå½åè¿åº¦åå ³é®å³ççå 容ã
ä¹å°±æ¯è¯´ï¼Pi è¦ç䏿¯ä¸æ®µæ³æ³èè°çæ»ç»ï¼èæ¯ä¸ä»½è½å¤è®©åç»æ¨¡åç«å»æ¥æä»»å¡çå·¥ä½äº¤æ¥è®°å½ã
3. è¿æ¯ä¸æ¬¡ç¬ç«ç模å请æ±
Compaction 请æ±ä¸ä¼ç´æ¥æ²¿ç¨åæ¥çä¼è¯åå²ï¼èæ¯ä¸æ¬¡åç¬åèµ·ç请æ±ã
è¿æ ·åæå³çï¼Pi å¯ä»¥ä¸ºå缩任å¡éæ©ä¸åç LLMï¼èä¸éè¦ææ´æ®µåå§ä¸ä¸æåæ¬¡å¸¦å ¥æ®éå¯¹è¯æ¨¡åï¼äº§çä¸å¿ è¦çææ¬ã
åç¼©å®æåï¼çæçæè¦ä¼ä½ä¸ºä¸æ¡ Compaction è®°å½åå ¥ Pi çä¼è¯ã
æ°çä¸ä¸æå°±ä¼åæè¿æ ·ï¼
after compaction:
[system][tools][summary][recent turns][new user message]
åé¢åé¿çåå²ï¼è¢«ä¸æ®µæ´ççæè¦æ¿ä»£ã
æè¿å 轮对è¯ä»ç¶ä¿çåæ ·ï¼æ°ç¨æ·æ¶æ¯ä¹å¯ä»¥ç»§ç»è¿½å ã
ä¸ä¸æä¸ä¸åæç©ºé´äºã
为ä»ä¹ Pi è¦ææè¦ä¿åæçº¯ææ¬ï¼
Pi 伿åç¼©ç»æä»¥çº¯ææ¬å½¢å¼ä¿åå¨ä¼è¯ä¸ã
è¿ä¸ªè®¾è®¡çèµ·æ¥å¾æ®éï¼å®é ä¸å¾éè¦ã
é¦å ï¼çº¯ææ¬æ¯å¯è¯»çã
å¼åè å¯ä»¥ç´æ¥æå¼ä¼è¯è®°å½ï¼æ¥ç模åç©¶ç«ä¿çäºåªäºä¿¡æ¯ï¼è䏿¯é¢å¯¹ä¸æ®µä¸å¯è§£éçå é¨ç¶æã
å ¶æ¬¡ï¼çº¯ææ¬ä¹æ´å®¹æè¿ç§»ã
å³ä½¿ä¸éåæ¢äºæ¨¡åï¼æ°ç模åä¾ç¶è½å¤è¯»æè¿ä»½æè¦ï¼ç¶åç»§ç»å¤çä»»å¡ã
è¿ä¹æ¯ Pi 强è°ä¼è¯å¯ç§»æ¤æ§çä¸é¨åã
æ¢å¥è¯è¯´ï¼è¿ä»½æè¦ä¸åªæ¯å¨ç»å½å模åçã
宿´åä¸ä»½éç¨çå·¥ä½äº¤æ¥ææ¡£ï¼æ¢ä¸ä¸ªæ¨¡åï¼ä¹è½æ¥çå¾ä¸å¹²ã
Compaction 伿æ Prompt Cache
ä¸ä¸æå缩è½ç¶è§£å³äºâçªå£è£ ä¸ä¸âçé®é¢ï¼ä½ä¹ä¼å¸¦æ¥ä¸ä¸ªç´æ¥å½±åï¼
忥ç Prompt Cache ä¼å¤±æã
å¾å¤ LLM æå¡åé½ä¼æä¾ Prompt Cachingï¼ä¹å°±æ¯æç¤ºè¯ç¼åã
å¨ä¸æ¬¡æç»è¿è¡çç¼ç¨ä¼è¯ä¸ï¼å¾å¤è¯·æ±çååé¨å齿¯å®å ¨ä¸æ ·çã
ä¾å¦ç³»ç»æç¤ºè¯ãå·¥å ·å®ä¹ï¼ä»¥åæ¤åå·²ç»åºç°è¿ç对è¯åå²ã
æå¡åå¯ä»¥ç¼åè¿äºéå¤å 容ï¼ä»èåå°åç»è¯·æ±ç计ç®éåè´¹ç¨ã
å缩åçç¼åå¤§æ¦æ¯è¿æ ·ï¼
cached before compaction:
[system][tools][older history][recent retained turns]
<-------------------- cached prefix -------------------->
ä½å®æå缩åï¼åæ¥çåå²å·²ç»è¢«æè¦æ¿æ¢ï¼
first request after compaction:
[system][tools][summary][recent retained turns][new user message]
<-- å¯å¤ç¨ -->^
|
é¦ä¸ªååç Token
|
+-- ä»è¿éå¼å§ï¼åé¢çå
容é½éè¦éæ°è®¡ç®
Prompt Cache ä¾èµçæ¯å®å ¨ä¸è´çåç¼å¹é ã
䏿¦ä¸é´åºç°ä¸ä¸ªä¸åç Tokenï¼åé¢çç¼åå°±æ æ³ç»§ç»å¤ç¨ã
è½ç¶å缩åä¿ççæè¿å 轮对è¯ï¼å 容å Token 齿²¡æååï¼ä½å®ä»¬åé¢åæ¬æ¥çæ¯å®æ´åå²ï¼ç°å¨æ¥çæ¯ä¸æ®µæ°çæè¦ã
åç¼åäºã
æä»¥ï¼è¿äºå 容ä¹åçæçç¼åç¶æä¹å°±ä¸è½ç»§ç»ä½¿ç¨ã
ä¸è¿ï¼è¿ç§å½±ååªåçå¨å缩åçæ°åç¼å»ºç«é¶æ®µã
çåç»è¯·æ±ç»§ç»åºäºæ°çæè¦å对è¯åå²å±å¼ï¼Prompt Cache åå¯ä»¥éæ°çæã
说å°åºï¼Compaction å°±æ¯ä¸æ¬¡ä¸ä¸æäº¤æ¥
æä»¥ï¼Pi ç Compaction 并䏿¯ä»ä¹ç¹å«ç¥ç§çæºå¶ã
å®åçäºæ ï¼å¯ä»¥æ¦æ¬æå æ¥ï¼
å ä¿çæè¿ä»ç¶éè¦çå è½®æ¶æ¯ï¼åææ´æ©çåå²äº¤ç» LLMï¼çæä¸ä»½å å«ç®æ ãè¿åº¦åå ³é®å³ççç»æåæè¦ã
ç¶åï¼Pi ç¨è¿ä»½æè¦æ¿æ¢åæ¥çé¿å¯¹è¯ï¼ææè¿æ¶æ¯éæ°æ¥å¨åé¢ï¼ç»§ç»æ§è¡ä»»å¡ã
è¿æ ·ä¸æ¥ï¼é¿æ¶é´è¿è¡çç¼ç¨ä»»å¡ä¸éè¦å½»åºæ¸ ç©ºéæ¥ï¼ä¹ä¸è³äºå 为ä¸ä¸æçªå£èå°½ï¼ç´æ¥å¡æ»å¨åè·¯ã
å½ç¶ï¼åç¼©ä¹ææç¡®ç代价ã
ç±äºæç¤ºè¯åç¼åçäºååï¼å缩åçç¬¬ä¸æ¬¡è¯·æ±æ æ³å®æ´å¤ç¨æ§ç Prompt Cacheï¼éè¦éæ°è®¡ç®ä¸ä¸æã
ä½ç¸æ¯ç´æ¥ä¸¢ææ´æ®µä»»å¡åå²ï¼è¿ä¸ªä»£ä»·æ¾ç¶æ´å®¹ææ¥åã
è¿å¯ä»¥èªå·±æ¹ä¸å¥å缩æºå¶
Pi æ¬èº«å ·æå¾å¼ºçæ©å±æ§ã
妿é»è®¤ç Compaction æºå¶ä¸ç¬¦åéæ±ï¼ä¹å¯ä»¥èªå·±æ¿æ¢ã
ä¾å¦ä¿®æ¹å缩æç¤ºè¯ï¼è¦æ±æ¨¡åéç¹ä¿çä»£ç æ¹å¨ãå¾ åäºé¡¹ãæ¥éä¿¡æ¯ï¼æè éç¨å®å ¨ä¸åçæè¦ç»æã
æ³æµè¯æ°çå缩æ¹å¼ï¼å¯ä»¥ç´æ¥è®© Pi å建ä¸ä¸ªå¸¦æèªå®ä¹ Compaction Prompt çæ©å±ã
ä¹å°±æ¯è¯´ï¼Pi ä¸åªæ¯æä¸ä¸æå缩åæäºä¸ä¸ªå ç½®åè½ã
å®è¿æè¿é¨åè½åçç»äºå¼åè ã
è³äºææ ·å缩æåéï¼åºè¯¥ä¿çå¤å°æè¿æ¶æ¯ï¼æè¦éæéè¦çå å®¹ç©¶ç«æ¯ä»ä¹ï¼å°±å¯ä»¥æ ¹æ®ä¸åçä»»å¡ç»§ç»æè ¾äºã
Aitishiku.com