我做了一个自动版持久性会话skill:session_protocol
2026-06-27
一、为什么要做这个session_protocol
关于Claude Code的初次浅层研究,已经基本结束了。我在研究过程中,结合自己跟AI的会话,特别是在做项目、做非即时类任务需要长会话(类似市场调研、研究分析等任务)时经常遇到的一个场景就是:当上下文窗口达到上限时,AI就开始失忆,前言不搭后语、甚至敷衍了事。 为了解决这个问题,我做了一个持久性会话协议,这个协议在实际开发过程中,经历了大概三个版本的迭代,手动-->半自动-->80%自动。为什么不做100%自动? 这是我的下一个版本,因为现阶段使用,我认为还需要人类介入进行检查、验证以及掌控。
我说一个场景,大家就会对这个协议有更直接的代入感。想象每天打开电脑的第一件事,想查一下昨天没有完成的任务的状态,检查完之后,想要AI开始任务,在做任务的过程中,上下文窗口达到了设定的阈值,希望AI可以先保存任务状态然后执行/compact,执行完之后继续任务。在这个过程中,如果我们想介入或者停止任务则输入某个设定的指令,比如stop去停止任务。每个子任务完成后,AI会自动更新任务status,以上的每个一个节点跟我们的工作场景高度切合,只不过以前这些都是通过“人”来做,但是现在,我们可以通过AI 来实现。简而言之,session_protocol 就是为了解决这两个问题:让 AI 主动监控自己的状态,在合适的时机踩刹车,同时把进度持久化到文件,让跨会话衔接变成一句话的事。
内容摘要:
本文介绍了一个名为session_protocol的ClaudeCode技能插件,旨在解决AI长会话中上下文窗口达到上限时的"失忆"问题。该协议通过四文件(CLAUDE.md、project-status.md等)和八关键词(start/done/save等)构建闭环工作流,实现任务进度持久化和跨会话衔接。核心设计包括三维阈值系统(ctx%/5h%/7d%)实时监控会话状态,以及AI主动与用户手动结合的混合控制模式(分三阶段渐进使用)。协议通过/compact压缩旧消息、自动保存进度及熔断机制,确保任务连续性。文章详细说明了安装配置、典型工作流程及常见问题,强调其"让AI自我约束"的设计哲学,最终实现用户只需关注任务起止,中间流程由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 个关键词和用户沟通节奏。
2.1 八个关键词是这套协议的"用户接口"
| 关键词 | 触发条件 | 作用 |
|--------|----------|------|
| start | 新会话开始 | 读 project-status.md,恢复上次进度,开始下一项待办 |
| done | 子任务完成 | 总结改动文件 + 更新进度文件 + 三维阈值自检 |
| save | /compact 前 | 把进度写入文件,防止压缩后丢失上下文 |
| resume | /compact 之后 | 重读 project-status.md + CLAUDE.md,恢复记忆 |
| continue | 其他打断后 | 不读任何文件,从内存里的待办直接继续 |
| status | 任何时候 | 查进度,不推进任何任务 |
| stop | 需要介入 | 退出自动流程,进入人工对话模式 |
| finish | 会话结束 | 会话级封存:备注归档 + 优先级重排 + 会话日期戳 |
2.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 小时窗口自然重置后再继续。
3.1 阈值自检为什么挂在 done 节?
这套自检逻辑被"钉"在 done 关键词上,而不是每个指令都自检一遍:
done 是 AI 工作流中最天然的停顿点——子任务刚完成,刚好产生了一轮增量,是读状态栏、决定是否继续的最佳时机。在每个指令都复制一份自检逻辑,反而会变成冗余噪音,也违反了 continue 设计为"轻量切回执行模式"的初衷。
四、两个开关 × 三个档位:找到适合自己的节奏
session_protocol 的自动化程度由两个正交开关控制,很多人在这里产生混淆,这里单独说清楚。
4.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 的改动在当前会话内不可感知)。
4.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 无关。
4.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。
五、快速上手:从安装到第一个 start
5.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)参考 docs/usage_guide.md,约 5 分钟完成。确认底部出现上面那行数字后,再继续装 skill。
5.2 安装 skill
将仓库 clone 到 Claude Code 的 plugins 目录:
macOS / Linux:
cd ~/.claude/plugins
git clone https://github.com/Filomenaxie/session-protocol-skill.git session_protocol
Windows:
cd %USERPROFILE%\.claude\plugins
git clone https://github.com/Filomenaxie/session-protocol-skill.git session_protocol
然后重启 Claude Code。注意:仅 cd 到新目录或新开会话不算重启,必须完全退出后重新启动。
5.3 在目标项目里初始化
cd 到你想管理的项目根目录,输入:
/session_protocol
Claude 会问 3 项基本信息(项目路径、项目名、一句话描述),然后自动扫描现有文件、提取技术栈,再问里程碑风格(M0/M1 阶段型 or H1/H2 功能型)和项目硬约束,最后生成 4 个文件。
5.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 ← 打算 compact
Claude: 进度已存档
You: [改主意了] 先看下 todolist
Claude: [展示 todolist]
You: resume ← ❌ 错!上下文还完整,应该用 continue
Claude: [重读 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_protocol Claude 没反应?
→ 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),形成一个足够实用的软护栏。如果未来有强合规或大批量自动化需求,可以叠加 L3(Hooks 硬拦截),现有协议不需要重写——L3 是叠加,不是替换。
用 1-2 天把 8 个关键词手动敲一遍(阶段 1),然后永久部署 AI 主动版规则(阶段 2)——从那以后,大部分时候你只需要说 start 开始工作,说"今天先这样"收尾,AI 自己管剩下的事。
Hey🌺我是一只肥罗,坚持做一些有意思的事情 「愿始于我,但不止于我」 🍻研究+码字+反复修正不易,路过的朋友麻烦点赞关注~