关于 context-mode
这款 Claude Code Skill 用于减少上下文膨胀,并在会话重置后保留工作进度。它过滤命令输出、维护会话日志,并依据日志继续未完成任务。
主要功能
- 01过滤冗长的命令输出
- 02保留错误、退出状态和末尾内容
- 03维护项目会话日志
- 04记录文件修改、命令和任务状态
- 05重置后依据日志恢复工作
- 06提供 CLAUDE.md 配置说明
适用场景
- 01让长时间编码会话保持聚焦
- 02减少冗长命令占用的上下文
- 03Claude Code 重置后恢复任务
- 04跟踪更改和待办工作
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mohitagw15856/ pm-claude-skills --skill context-mode安装后在 Claude Code 中输入/context-mode确认已加载。
详细介绍
Context Mode 技能
解决导致 Claude Code 会话在不到 30 分钟内结束的两个致命问题:原始命令输出造成的上下文膨胀,以及重置后的记忆丢失。
Context Mode 同时运行三个系统,让会话保持运行:
- 输出过滤 — 在冗长的命令输出进入上下文前将其精简
- 会话日志 — 持续记录所有已发生的事情
- 自动恢复 — 重置后读取日志,并从中断处准确继续
致谢: 灵感来自 Nate Herk 的 YouTube 频道中的一项技能 — 已针对本库进行改编和扩展。
必需输入
无需输入。Context Mode 会在收到命令时激活。
可选:如果用户不想将 session.log 放在项目根目录,可以指定自定义日志文件路径。
Context Mode 的工作方式
第 1 部分 — 输出过滤
问题在于:Claude Code 每次运行命令时,完整的原始输出都会进入上下文窗口。一次 npm install 就可能输出数百行。运行测试套件?可能会输出数千行。不到 30 分钟,上下文就会充斥噪声,Claude 也会重置。
解决方法:在命令输出进入上下文前,将其过滤为仅包含有用摘要。
保留内容:
- stdout 的最后 10 行
- 包含
error、warn、fail、exception、traceback或fatal的所有行(不区分大小写) - 退出代码
- 一句话总结命令的作用及其是否成功
丢弃内容:
- 长篇 stdout 的中间部分(替换为
[... 已截断 N 行输出 ...]) - 进度条、下载指示器、冗长的安装日志
- 重复的相同行(去重)
过滤摘要格式:
COMMAND: [command run]
STATUS: [exit code — success / failed]
SUMMARY: [one sentence: what happened]
ERRORS: [any error/warn lines — or "none"]
TAIL: [last 10 lines of stdout]
第 2 部分 — 会话日志
Claude 会在 [项目根目录]/session.log 中维护一份持续更新的日志文件。每次执行重要操作后都会写入此文件,它是重置后恢复工作的事实依据。
会话日志格式:
SESSION LOG
===========
Started: [timestamp]
Branch: [current git branch]
Directory: [working directory]
FILES EDITED
────────────
[timestamp] [file path] — [one-line description of what changed]
COMMANDS RUN
────────────
[timestamp] [command] — [outcome: success / failed — brief reason]
TASKS IN PROGRESS
─────────────────
[ ] [Task description — what's been done so far and what's left]
[x] [Completed task]
LAST USER PROMPT
────────────────
[The most recent instruction from the user, verbatim]
LAST ACTION TAKEN
─────────────────
[What Claude did last, in one sentence]
日志更新规则:
- 每次编辑文件后,将内容写入
session.log - 每次运行命令后,将内容写入
session.log - 开始、推进或完成任务时,更新“进行中的任务”
- 始终用当前值覆盖“上次用户提示词”和“上次执行的操作”——不要追加,而要替换
第 3 部分 — 重置后恢复
新的 Claude 会话启动时,首先执行以下操作:
- 检查项目根目录中是否存在
session.log - 如果存在,读取并宣布恢复状态:
Resuming session.
Branch: [branch]
Last working on: [last task in progress]
Files edited: [list from session log]
Tasks pending: [incomplete tasks]
Last prompt: "[last user prompt]"
Continuing from where we left off.
- 继续执行下一个合理步骤——不要询问“我该做什么?”——检查任务列表并继续处理
如果 session.log 不存在,则从头开始并初始化日志。
激活响应
用户触发 Context Mode 时,回复:
Context Mode active.
Session log initialised at: [absolute path to session.log]
Output filtering: enabled
Auto-resume: enabled
I'll maintain your session state across resets. Long sessions won't lose context.
然后立即使用当前时间戳、分支和目录初始化 session.log。
输出结构
激活时
Context Mode active.
Session log initialised at: [path]
Output filtering: enabled
Auto-resume: enabled
I'll maintain your session state across resets. Long sessions won't lose context.
执行命令时(过滤后的输出格式)
COMMAND: npm test
STATUS: exit 1 — failed
SUMMARY: 47 tests passed, 3 failed in auth.test.ts
ERRORS: Error: Expected 200, received 401 (line 84)
Error: Token not found in response (line 112)
TAIL:
✓ login with valid credentials (23ms)
✓ logout clears session (11ms)
✗ refresh token after expiry
...
重置/新会话时(恢复公告)
Resuming session.
Branch: feature/auth-refresh
Last working on: Fixing token refresh logic in auth.service.ts
Files edited: src/auth/auth.service.ts, src/auth/auth.test.ts
Tasks pending: [ ] Fix failing test on line 112
[ ] Run full test suite once fix is applied
Last prompt: "The refresh token test is still failing — look at the 401 handling"
Continuing from where we left off.
CLAUDE.md 安装文本
为本次会话激活 Context Mode 后,向用户提供要添加到其 CLAUDE.md 中的准确文本,使其在所有会话中永久生效:
```
## Context Mode
Context Mode is always active in this project.
### Output Filtering
Before any command output enters context, filter it to:
- Last 10 lines of stdout
- Any lines containing: error, warn, fail, exception, traceback, fatal (case-insensitive)
- Exit code
- One-line summary of what the command did
Use this format for filtered output:
COMMAND: [command]
STATUS: [exit code — success/failed]
SUMMARY: [one sentence]
ERRORS: [error lines or "none"]
TAIL: [last 10 lines]
### Session Log
Maintain a running session log at ./session.log. Write to it after every file edit and every command run. Track: files edited, commands run, tasks in progress, last user prompt, last action taken. Format defined in Context Mode skill.
### Auto-Resume
At the start of every new session, check for ./session.log. If it exists, read it and announce the resume state. Continue from the last task in progress without asking for instructions.
```
告诉用户:“将此内容添加到你的 CLAUDE.md 中,Context Mode 就会在此项目中永久生效 — 即使你关闭并重新打开会话也一样。”
质量检查
- 激活时立即初始化
session.log(而不是延后初始化) - 向用户显示的日志路径是绝对路径,而不是相对路径
- 在运行下一条命令时立即应用输出过滤,而不只是宣布会进行过滤
- 过滤后的输出格式包含:命令、状态、摘要、错误和尾部内容——全部五个字段
- 会话日志跟踪全部四类信息:已编辑的文件、已运行的命令、进行中的任务、上一条提示词
- 恢复会话时的提示会读取日志的实际内容,而不是使用通用模板
- 恢复会话时,Claude 会继续工作,不会要求用户提供指示
- 激活后提供了安装 CLAUDE.md 的说明
- 日志更新规则明确:“Last User Prompt”和“Last Action Taken”应替换之前的值,而不是追加
反模式
- 原样记录命令输出,而不是记录经过过滤的摘要(这会抵消节省上下文的效果)
- 恢复会话时使用忽略日志实际内容的通用模板来提示
- 追加“Last User Prompt” / “Last Action Taken”,而不是替换它们(会导致日志膨胀)
- 静默激活而不提供安装 CLAUDE.md 的选项,导致设置无法在不同会话间保留
- 恢复会话时询问用户要做什么,而不是继续进行中的任务
示例触发语句
- “启用上下文模式”
- “为本次会话开启上下文模式”
- “激活长会话模式”
- “我总是丢失上下文——解决这个问题”
- “设置会话日志记录”
- “记录你已完成的工作,这样重置后就能恢复”
- “启用输出过滤以节省上下文”
- “设置自动恢复,这样我们就不会丢失进度”