---
title: 压缩与交接：上下文满了也不失忆
nav: 压缩与交接
summary: 压缩前 Agent 先把原话、进度、决定和路径写进一份交接文件；压缩或清空之后，不用你再发消息，Agent J 会提醒它先读交接再接着干。
order: 28
---
# 压缩与交接：上下文满了也不失忆

和 Agent 聊得久了，上下文会满。压缩（`/compact`）把前面的对话变成一段摘要，腾出空间；摘要会丢细节：确切的数字、文件路径、你否掉的方案、试过不行的做法。所以 Agent J 的做法是：**压缩前先写交接文件，压缩后先读它。** 磁盘上的文件不会被压缩。

## 交接文件在哪

路径固定，名字是人能看懂的，在手机上可以直接复制：

| 情况 | 文件 |
|---|---|
| 共享模式（你自己电脑上的 Claude Code）压缩前 | `~/.local/state/agentj/handoff/compact.md` |
| 共享模式 `/clear` 前 | `~/.local/state/agentj/handoff/clear.md`（只用一次，交回给 Agent 后改名为 `clear-used.md`） |
| Agent J 自己的主对话 | `<工作目录>/.agentj/handover/compact.md` |

路径里不会出现会话 ID 之类的随机串：手机会把像密钥的长串打码，你就复制不到了。

切换 AI 编程工具（`/switch-harness`）也用同一套交接：离开的那个先写 `switch.md`（独立会话在 `<工作目录>/.agentj/handover/`，共享会话在 `~/.local/state/agentj/handoff/`），接上的那个先读再接着干，见 [换 AI 编程工具](/docs/switch-harness/)。

## 压缩之前

- 你说要压缩、点 `/compact`，或者在菜单里选压缩：交接文件不存在、或者比这一轮对话旧，Agent J 先让 Agent 按 `agentj-handoff` 技能写好交接，再压缩。
- 你告诉 Agent 上下文过半了、先写个交接：它自己写，写完把路径单独放进代码块，方便你复制。
- 交接里写：你的原话、已完成 / 进行中 / 下一步、定下的决定、绝对路径、踩过的坑。**不写任何密钥、token、密码。**
- 在电脑上直接敲 `/compact`，或者 Claude Code 自己自动压缩时，Agent J 来不及先写；它会记下来，压缩后告诉 Agent「本次没有交接文件」。
- 手机上的 `/compact`、`/clear` 会等电脑上这一轮说完、确认框处理完再执行，但不等后台任务：电脑上挂着后台命令或后台子代理时，手机会告诉你电脑上有几个后台任务在跑、前台已经空闲，几秒后照常压缩，后台任务继续跑。真等了 30 分钟还没轮到，手机会说明是哪一轮没结束、还是哪个确认框没处理，命令不会发出去。

## 压缩或清空之后

以前，压缩完要等你再发一条消息，Agent 才想起去读交接；你不发，它就停在那里，看起来像失忆了。

现在不用等：压缩完 1–2 秒内如果没有新消息，Agent J 自己给会话发一条〔Agent J 系统提示〕：「压缩完成。先读交接文件 …，再继续刚才的任务。」手机上只显示一行「压缩好了，我在翻交接笔记，马上接上思路」，Agent 读完交接后的回复照常发到手机。这条提示由电脑上的 Agent J 发出，不算你的消息，也不给 Agent 任何新权限。

`/clear` 之后同理：如果有 `clear.md`，Agent J 提醒 Agent 先读它；没有就什么都不发，新对话从零开始。

如果 Claude Code 是在一个回合中途自动压缩的，压缩完它会自己接着干，Agent J 不插话。

**复制给主 Agent：**

> 上下文过半或我说要压缩时，先按 agentj-handoff 技能写好交接文件（我的原话、进度、决定、绝对路径、坑、下一步，不写凭据），把路径单独放进代码块发我；压缩之后第一件事读它，再接着干。

定时任务正在运行时，手机上的 `/compact` 或 `/clear` 会显示任务名，并说明命令尚未发送。发起命令的遥控器可以点「取消」；取消后，任务完成也不会再执行这条命令。命令开始执行后，取消入口会收起。共享 Claude 会话若还在等桌面空闲，仍可取消尚未发送的控制。
