用途
上下文哨兵是一个手动或由钩子触发的上下文操作器。它不仅做健康检查,而是对整个影响上下文的层面进行完整操作,用于评估当前会话是否出现污染(长对话、话题漂移、陈旧噪声),并采取具体动作。
技能按操作敏感度分为三层:
| 层级 | 示例 | 行为 |
|---|---|---|
| 自动执行 | 写项目记忆、更新 MEMORY.md 索引 | 直接执行,报告路径 |
| 先确认 | 编辑全局 agent 指令、编辑项目 CLAUDE.md、覆盖或删除已有记忆 | 展示 diff,等待 "yes" |
| 仅建议 | /fork、/compact、/btw、新会话 | 打印要粘贴的精确命令 |
/fork 和 /compact 由宿主(harness)拥有,本技能无法调用它们,但可以做其他所有事情。
自动模式(通过插件钩子)
启用 skill-publisher 插件后,UserPromptSubmit 钩子会监控转录体积。超过阈值(40 条以上或 150KB 以上)时,注入一个轻量级的 <auto-context> 提醒。
看到 <auto-context> 时,按上下文状态处理:
- 大部分相关:继续,不作声。
- 有一些陈旧噪声:在心里降低其优先级,继续。
- 大部分不相关:建议 /fork 或 /btw,并给出精确命令。
- 接近容量:建议 /compact 或 /fork,并给出精确命令。
规则:除采取动作外最多一句话;上下文正常就什么都不说;绝不自动 fork/compact(也无法做到,仅宿主可用);除非被问及,不要提及 "AutoContext"。
手动模式(/lov-auto-context [args])
有两种调用形态。
A. 空调用——健康报告 + 机会性记忆写入
/lov-auto-context
- 测量——估算轮次、工具调用、不同话题数。
- 评估——healthy / getting noisy / polluted / critical。
- 扫描近期轮次中未被持久化的反馈/偏好——若用户在本会话早前陈述了应持久化到未来对话的规则或偏好(典型触发短语:"从今以后"、"以后都"、"所有 X 应该 Y"、"别再"、"记住"),且尚未写记忆,则自动执行:写记忆文件 + 更新 MEMORY.md,并报告路径。
- 如需要,建议宿主动作(/fork、/compact、/btw)并给出要粘贴的精确命令。
除采取先确认动作外,保持在 3-5 行内。
B. 带参数——定向上下文操作
/lov-auto-context <自由指令>
解析指令并路由到对应动作类别:
| 指令模式 | 动作 | 敏感度 |
|---|---|---|
| "记到全局 / write to global / 加到全局指令" | 编辑配置的全局指令文件 | 先确认 |
| "记到项目 / 加到项目 CLAUDE.md" | 编辑项目 CLAUDE.md | 先确认 |
| "记住 X / 记到 memory" | 写项目记忆 | 自动执行 |
| "忘掉 X / forget X" | 删除相关记忆文件 + 索引条目 | 先确认 |
| "该分叉了吗 / should I fork" | 评估 + 建议命令 | 仅建议 |
| "压缩一下 / compact" | 建议带精确语法的 /compact | 仅建议 |
各动作的操作方式
写项目记忆(自动执行)
目录:<resolved-agent-home>/projects/<project-slug>/memory/。写入前先从 User Configuration 段解析 <resolved-agent-home>。记忆目录应已存在;不要静默创建新的运行时布局。
步骤:
- 选取文件名:<type>_<topic>.md(例如 feedback_output_paths.md)。
- 使用所要求的前置元数据(name、description、type)写入。
- 对 feedback / project 类型,包含 Why: 和 How to apply: 行。
- 更新 MEMORY.md,添加一行 150 字符以内的指针。
- 报告绝对路径 + 相对路径。
编辑全局 CLAUDE.md(先确认)
目标:<resolved-agent-home>/CLAUDE.md。
步骤:
- 读取文件。
- 为新增内容定位最合适的段落(匹配已有标题如 "输出规范"、"网络 / 代理"、"Debugging Discipline";若无合适段落则创建新段)。
- 以带 -/+ 行的围栏代码块展示拟议 diff。
- 询问:"执行这个修改?(yes/no)"。
- 回复 "yes" → 通过 Edit 应用;其他任何回复 → 中止,可选提供改为保存为项目记忆。
绝不跳过 diff 步骤。CLAUDE.md 是用户编写的权威配置;静默编辑会侵蚀信任。
编辑项目 CLAUDE.md(先确认)
流程与全局相同,但目标是 <cwd>/CLAUDE.md(若不在根目录则向上查找)。同样要求先 diff 后确认。
建议宿主命令(仅建议)
产出用户应粘贴的精确字符串,而不是描述:
上下文被污染——粘贴此内容以分叉: /fork
或: 接近容量——先压缩,再继续: /compact
不要包裹解释。命令本身就是交付物。
本技能不能做的事(如实说明)
- 调用 /fork、/compact、/btw、/clear、新会话——仅宿主可用。
- 编辑其他 agent 的转录。
- 自动安装钩子——请使用 /update-config。
如果用户要求上述任一项,应说明并提供要粘贴的命令。
输出约定
每个写文件的操作必须回显其绝对路径 + 相对路径(遵循项目级 output-paths 规则)。适用于记忆文件、CLAUDE.md 编辑(显示最终路径)及任何派生产物。
用户配置
按以下顺序解析 agent 路径:
- SKILL_AUTO_CONTEXT_AGENT_HOME。
- 共享 profile ${SKILL_PROFILE_PATH:-$HOME/.skill-publisher/skills/profile.json} 的键:agent.home、claude.home 或 runtime.agent_home。
- 向用户询问一次 agent home 目录,并在当前操作中使用该值。
对于其他运行时,显式设置 SKILL_AUTO_CONTEXT_AGENT_HOME 或添加相关 profile 键。
运行时上下文(共享)
运行前读取本 Skill 包的 skill.yaml,由宿主提供 skill-runtime/v1 上下文。字段解析顺序为:当前请求、项目上下文、个人 Preferences、品牌 Profile、通用默认值。
只使用 Manifest 声明的字段;Profile 保存公开品牌事实,Preferences 保存个人工作偏好。
required: true 字段缺失时,按 Manifest 的问题配置向用户提出一个聚焦问题;用户明确同意后再保存回答。
报错提供可复制的 context_id、字段路径与来源,诊断内容避开秘密、完整私人路径和原始配置。
通用反馈闭环
用户在 Skill 驱动任务中提出修改意见时,继续当前产物前必须执行:
- 先判断意见是 task-specific(仅本次)还是 reusable(可跨任务复用)。
- task-specific 只修改当前任务,不改 Skill。
- reusable 先确定作用域:领域规则先更新对应 canonical Skill;适用于所有 Skill 的规则先更新共享规范。
- 完成规则更新、版本、lint 与分发核验后,再把修改应用到当前任务。
reusable 修改会使此前的"确认""继续""发吧"失效;完成当前产物修改和回读后必须停下,等待用户下一步指示,不自动进入发布、提交或其他外部写入。