我做了一个自动版持久性会话skill:session_protocol
关于Claude Code的初次浅层研究,已经基本结束了。我在研究过程中,结合自己跟AI的会话,特别是在做项目、做非即时类任务需要长会话(类似市场调研、研究分析等任务)时经常遇到的一个场景就是:当上下文窗口达到上限时,AI就开始失忆,前言不搭后语、甚至敷衍了事。为了解决这个问题,我做了一个持久性会话协议,这个协议在实际开发过程中,经历了大概三个版本的迭代,手动-->半自动-->80%自动。为什么不做100%自动,这是我的下一个版本,因为现阶段使用,我认为还需要人类介入进行检查、验证以及掌控。
我说一个场景,大家就会对这个协议有更直接的代入感。想象每天打开电脑的第一件事,想查一下昨天没有完成的任务的状态,检查完之后,想要AI开始任务,在做任务的过程中,上下文窗口达到了设定的阈值,希望AI可以先保存任务状态然后执行/compact,执行完之后继续任务,在这个过程中,如果我们想介入或者停止任务则输入某个设定的指令,比如stop去停止任务。每个子任务完成后,AI会自动更新任务status,以上的每个一个节点跟我们的工作场景高度切合,只不过以前这些都是通过“人”来做,但是现在,我们可以通过AI 来实现。简而言之,session_protocol 就是为了解决这两个问题:让 AI 主动监控自己的状态,在合适的时机踩刹车,同时把进度持久化到文件,让跨会话衔接变成一句话的事。
一、session_protocol 是什么——四文件,八关键词
session_protocol 是一个 Claude Code Skill(技能插件)。在任意项目目录里运行/session_protocol后,它会生成 4 个文件,组成一套闭环工作流:

|
文件 |
作用 |
|---|---|
CLAUDE.md |
项目指令 + AI 自主会话管理规则(6 条) |
docs/project-status.md |
实时进度追踪(里程碑 ✅/🔄/⏳ + 会话备注) |
docs/todolist.md |
Task ID 化的细粒度任务清单(带工时预估) |
docs/process/session-protocol.md |
8 个关键词定义 + 三维阈值 + 模式开关 |
这 4 个文件不是文档,而是 AI 的"自我约束框架"——Claude 读CLAUDE.md里的规则,主动执行 start/done/save/resume/finish 等动作;读project-status.md恢复进度;用 8 个关键词和用户沟通节奏。
1.1 八个关键词是这套协议的"用户接口"
|
关键词 |
触发条件 |
作用 |
|---|---|---|
start |
新会话开始 |
读project-status.md,恢复上次进度,开始下一项待办 |
done |
子任务完成 |
总结改动文件 + 更新进度文件 + 三维阈值自检 |
save |
/compact
前 |
把进度写入文件,防止压缩后丢失上下文 |
resume |
/compact
之后 |
重读 project-status.md + CLAUDE.md,恢复记忆 |
continue |
其他打断后 |
不读任何文件,从内存里的待办直接继续 |
status |
任何时候 |
查进度,不推进任何任务 |
stop |
需要介入 |
退出自动流程,进入人工对话模式 |
finish |
会话结束 |
会话级封存:备注归档 + 优先级重排 + 会话日期戳 |
1.2 一次典型会话是什么样的
──── 新会话 ───────────────────────────────────────────────────── start(或 AI 自动触发) → Claude 读 project-status.md,知道上次做到 T1.2.3 → 自动开始 T1.2.4 [Claude 工作中...] done(完成子任务后自动触发) → 总结改动文件 + 更新 todolist.md → 三维阈值自检:ctx 72% ⚠,建议 save → /compact → resume save(AI 提示,用户执行) → 进度写入 project-status.md /compact(你手动执行) → 旧消息压缩,上下文清空 resume(你输入,AI 执行) → 重读 CLAUDE.md + project-status.md → 恢复约束 + 继续 T1.2.5 今天先到这 → Claude 识别结束信号,执行 finish → 写入会话备注,重排待完成列表优先级,打上会话日期戳 ─────────────────────────────────────────────────────────────────
二、三维阈值:AI 的"实时刹车"系统
session_protocol 的核心设计之一是三维阈值判断。状态栏里的三个数字(ctx%、5h%、7d%)各自代表不同维度的风险,需要不同的应对策略:
ctx% 5h% 7d%
< 50% 🟢 继续 < 70% 🟢 正常 < 70% 🟢 无需干预
50-70% 🟡 准备 compact 70-85% 🟡 专注单任务 70-85% 🟡 只做轻量任务
> 70% 🔴 立即 /compact > 85% 🔴 完成当前后收尾 > 85% 🔴 只做阻塞型任务
注意:/compact只能缓解ctx,对5h/7d没有任何作用。
这三个指标彼此独立:
- ctx:当前会话内容的总量,/compact压缩旧消息可以释放它
- 5h:过去 5 小时内的 token 消耗总量,只能靠等待时间自然滑出
- 7d:过去 7 天内的 token 消耗总量,同样只能靠时间,等不了就切到轻量模式
所以当5h已达 90% 时,就算你频繁/compact,限制也不会解除——/compact救不了它。正确的应对是finish收尾,等 5 小时窗口自然重置后再继续。
2.1 阈值自检为什么挂在 done 节?
这套自检逻辑被"钉"在done关键词上,而不是每个指令都自检一遍:done是 AI 工作流中最天然的停顿点——子任务刚完成,刚好产生了一轮增量,是读状态栏、决定是否继续的最佳时机。在每个指令都复制一份自检逻辑,反而会变成冗余噪音,也违反了continue设计为"轻量切回执行模式"的初衷。
三、两个开关 × 三个档位:找到适合自己的节奏
session_protocol 的自动化程度由两个正交开关控制,很多人在这里产生混淆,这里单独说清楚。
3.1 开关 A:是否部署"AI 主动版规则"
这是项目级、持久化的开关。项目CLAUDE.md中是否包含自主会话管理规则节,决定了 AI 能否主动触发 start/done/save/resume/finish。
|
A 状态 |
AI 的行为 |
|---|---|
| A 关
(未部署) |
手动版:所有关键词都等你输入,AI 什么都不主动 |
| A 开
(已部署) |
自动版:新会话自动 start,子任务完成自动 done,ctx>70% 自动 save,/compact 后自动 resume,识别到结束信号自动 finish |
检查 A 状态:打开项目根目录CLAUDE.md,Ctrl+F 搜索自主会话管理规则,找到 = A 开,找不到 = A 关。
切换 A:编辑CLAUDE.md添加或删除那一节,关闭当前会话、开新会话后才生效(A 的改动在当前会话内不可感知)。
3.2 开关 B:auto on / auto off
这是会话级、即时生效的开关,控制done完成后是否自动衔接continue:
You: auto on
Claude: ✅ 自动模式已开启。done 后将自动衔接 continue。
熔断条件:ctx>70% / 5h>85% / 7d>85% / 失真信号
auto on只接管一个常规行为:done → continue 自动衔接。加上 done 节阈值命中时的 4 条熔断分支(自动转 save / finish / stop),合计 5 个 AI 触发点,全部收束在 done 之后。
⚠️ 常见误解:auto on 不等于 AI 全程托管。start/done/save/resume/finish 能否主动触发,由开关 A决定,与 B 无关。
3.3 三个推荐档位(渐进路径)
|
档位 |
配置 |
适合场景 |
|---|---|---|
| 阶段 1:学习期 |
A 关 + auto off |
首次上手,手动练每个关键词,建立肌肉记忆 |
| 阶段 2:日常稳定档 ✅ |
A 开 + auto off |
日常主力——AI 自动管文件落盘,用户保留每步推进决策权 |
| 阶段 3:批量快速档 |
A 开 + auto on |
批量重构、同质子任务、套模板式纯执行 |
阶段 2 是绝大多数情况下的最佳选择:A 开让 AI 替你管八成的协议动作,auto off 保留"每个 done 后亲眼看一眼再决定是否继续"的控制权。
阶段 1 只需坚持 1-2 周,熟悉每个关键词的时机后就永久升级到阶段 2。阶段 3 临时切换:批量任务发auto on进入,任务结束发auto off退回阶段 2。
3.4 关键词触发主体矩阵(10 关键词 × 3 推荐阶段)
|
关键词 |
阶段 1(A 关 + auto off) |
阶段 2(A 开 + auto off) |
阶段 3(A 开 + auto on) |
|---|---|---|---|
start |
用户 |
🤖 AI 主动(规则 1) |
🤖 AI 主动(规则 1) |
done |
用户 |
🤖 AI 主动(规则 2,含阈值自检) |
🤖 AI 主动(规则 2,含阈值自检) |
save |
用户 |
🤖 AI 主动(规则 3,ctx>70% 时) |
🤖 AI 主动(规则 3 + done 熔断转 save) |
resume |
用户(/compact 后) |
🤖 AI 主动(规则 4,断层时自动) |
🤖 AI 主动(规则 4) |
continue |
用户 |
用户
(关键决策点,AI 不接管) |
🤖 AI 主动(规则 6,done 后衔接) |
status |
用户 |
用户 |
用户 |
stop |
用户 |
用户 |
用户 / 🤖 失真信号熔断时 AI 转入 |
finish |
用户 |
🤖 AI 主动(规则 5,识别结束信号) |
🤖 AI 主动(规则 5 + 5h/7d 熔断) |
auto on |
用户 |
用户 |
用户(已开启) |
auto off |
用户 |
用户(默认状态) |
用户(要切回阶段 2 时发) |
-
这五个关键词由 AI 主动触发的能力来自开关 A(部署 AI 主动版),与 auto on/off 无关
auto on唯一新增的常规自动行为只有 1 个:done → continue 衔接
-
加上 4 类熔断(done 后 ctx>70% 转 save、5h>85% / 7d>85% 转 finish、失真信号转 stop),共 5 个 AI 触发点,全部收束在 done 节之后
四、快速上手:从安装到第一个 start
4.1 前提:先配置状态栏
session_protocol 的三维阈值熔断依赖 Claude Code 状态栏的实时数据。没装状态栏,阈值条件全部静默失效——AI 不会报警,会一直跑到上下文真的撑爆。
配置完成后,CLI 底部会持续显示:
[Claude Sonnet 4.6 ctx:12% tok:8.3k+1.2k cache:74% 5h:22% 7d:9%]
具体配置方法(创建statusline-command.sh+ 更新settings.json)参照我的文章Claude Code CLI 用量监控(穷鬼玩法)或者到我的Github仓库session_protocol 参考
docs/usage_guide.md,约 5 分钟完成。确认底部出现上面那行数字后,再继续装 skill。
4.2 安装 skill
将我的session_protocol仓库 clone 到 Claude Code 的 plugins 目录:
macOS / Linux:
cd ~/.claude/plugins
git clone https://github.com/Filomenaxie/session_protocol.git session_protocol
Windows:
cd %USERPROFILE%\.claude\plugins
git clone https://github.com/Filomenaxie/session_protocol.git session_protocol
然后重启 Claude Code。注意:仅 cd 到新目录或新开会话不算重启,必须完全退出后重新启动。
4.3 在目标项目里初始化
cd 到你想管理的项目根目录,输入:
/session_protocol
Claude 会问 3 项基本信息(项目路径、项目名、一句话描述),然后自动扫描现有文件、提取技术栈,再问里程碑风格(M0/M1 阶段型 or H1/H2 功能型)和项目硬约束,最后生成 4 个文件。
4.4 第一天工作的完整流程
```
─── 新会话(A 开 + auto off,即阶段 2 默认模式)─────────────────
Claude: [自动读 project-status.md] 当前进度:M1 文章 CRUD 完成 80%
待续任务:T1.2.3 列表分页 UI(预计 2h)。开始。
[Claude 改了 src/pages/articles.tsx]
Claude: ✅ T1.2.3 完成。实现游标分页、Loading 骨架、空态。
改动文件:articles.tsx, Pagination.tsx
[自动更新 project-status.md + todolist.md]
阈值自检:ctx 42% 🟢 / 5h 35% 🟢 / 7d 18% 🟢
You: continue(或下一条指令)
[继续 T1.2.4,30 分钟后]
Claude: ✅ T1.2.4 完成。
⚠ ctx 已 72%,建议 save → /compact → resume
You: save
Claude: 进度已写入 project-status.md,可以执行 /compact
You: /compact
[会话历史压缩,上下文清空]
You: resume
Claude: [重读 CLAUDE.md + project-status.md] 约束已恢复。
当前进度:M1 完成 90%,下一步 T1.2.5。
──────────────────────────────────────────────────────────────
```
💡 关键点:save由 AI 执行,/compact由你手动执行,resume必须在/compact之后。三步顺序错了会丢记忆或触发幻觉。
五、最容易混淆的指令:resume vs continue
这是 8 个关键词里最容易搞混的两个,搞混了会直接导致信息丢失或 AI 产生幻觉。
|
关键词 |
用的时机 |
行为 |
|---|---|---|
resume |
仅 /compact 之后
(上下文已被清空) |
重读 project-status.md + CLAUDE.md,重载记忆 |
continue |
其他任何打断
(上下文未清空) |
不读任何文件,从内存里的待办直接继续 |
翻车场景一:上下文完好时误用 resume
You: save ← 打算 compactClaude: 进度已存档You: [改主意了] 先看下 todolistClaude: [展示 todolist]You: resume ← ❌ 错!上下文还完整,应该用 continueClaude: [重读 project-status.md]← 磁盘上的版本覆盖了内存约束——本次会话里你口头约定的”先做 RSS 再做评论”丢失了
翻车场景二:/compact 后误用 continue
You: save
Claude: 进度已存档
You: /compact
[上下文清空]
You: continue ← ❌ 错!上下文已断层,必须用 resume
Claude: 我继续 T1.2.8 ... ← T1.2.8 是 AI 凭空编的
📌一句话记忆:只有 /compact 之后用 resume,其他所有打断都用 continue。
六、常见问题
Q:状态栏不显示数字(ctx/5h/7d 全空)?
→ 没装 statusline。回docs/usage_guide.md按教程配置,装完必须重启 Claude Code才生效。
Q:/session_protocolClaude 没反应?
→ skill 没装载。检查~/.claude/plugins/session_protocol/skills/session_protocol/skill.md是否存在,然后完全重启 Claude Code(仅 cd 换目录不算)。
Q:想重装覆盖现有的 session-protocol.md?
→ 手动删除docs/process/session-protocol.md,再触发/session_protocol,Claude 会重新生成这一份。其他三个文件(CLAUDE.md / project-status.md / todolist.md)默认不覆盖以保护进度,需要手动备份后删除再触发。
Q:5h或7d已满,/compact 没用怎么办?
→ 确实没用。/compact只能释放ctx,无法解除时间窗口限速。正确操作:finish收尾 → 等时间窗口自然滑出 → 再开新会话。7d满了恢复时间更长,等待期间可以切到纯问答轻量模式。
Q:auto on 开了,但 AI 还是在等我 continue,没自动?
→ 检查 A 状态:CLAUDE.md里没有 `
自主会话管理规则 节的话,A 是关闭的,done关键词只有你手动发才会触发——这时候 B(auto on)的"done → continue 自动衔接"根本没机会执行,因为 done 本身就没发生。需要先运行/session_protocol` 部署 AI 主动版规则(A 开),再开 auto on(B 开)。
结语:让协议替你盯,而不是你盯着协议
session_protocol 的设计哲学只有一条:这不是给 Claude 看的说明书,而是让 Claude 自我约束的框架。
AI 是回合制的,不是常驻进程——它没有办法持续后台监控状态栏,只能在每次被激活时读一次。session_protocol 用的是"在关键节点插入自检"的策略(L1 协议层),加上 Claude Code 状态栏的被动数据注入(L2),形成一个足够实用的软护栏。
用 1-2 天把 8 个关键词手动敲一遍(阶段 1),然后永久部署 AI 主动版规则(阶段 2)——从那以后,大部分时候你只需要说start开始工作,说"今天先这样"收尾,AI 自己管剩下的事。
Hey🌺我是一只肥罗,坚持做一些有意思的事情
「愿始于我,但不止于我」
🍻研究+码字+反复修正不易,路过的朋友麻烦点赞关注~
更多推荐


所有评论(0)