Claude Codesession_protocolSkill会话管理

我做了一个自动版持久性会话skill:session_protocol

本文介绍了一个名为session_protocol的Claude Code技能插件,旨在解决AI长会话中上下文窗口达到上限时的"失忆"问题。该协议通过四文件(CLAUDE.md、project-status.md等)和八关键词(start/done/save等)构建闭环工作流,实现任务进度持久化和跨会话衔接。核心设计包括三维阈值系统(ctx%/5h%/7d%)实时监控会话状态,以及AI主动与用户手动结合的混合控制模式(分三阶段渐进使用)。

我做了一个自动版持久性会话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🌺我是一只肥罗,坚持做一些有意思的事情 「愿始于我,但不止于我」 🍻研究+码字+反复修正不易,路过的朋友麻烦点赞关注~