intent-anchor
Intent Anchor — 意图溯源仪式
核心原则
在需要锚定时,你必须知道:是我在 harness 工具,还是工具在 harness 我?
这个 skill 的目的不是增加流程负担,而是在确实需要时完成一次最小可行的意识锚定。
第一性原理
P1 — 意图守恒:每个动作都有上下文,但不是每次都要显式追问。上下文足够明确时,可以直接执行。
P2 — 最小锚定:溯源仪式必须轻量,能在 2 分钟内完成。它是起飞前检查单,不是论文。
P3 — Done 优先:在开始之前,必须知道"完成"长什么样。若用户已经给出明确目标,可直接从请求中提取 done state。
P4 — 漂移可见:必须提前定义"漂移信号",让偏离变得可被感知,而不是事后才意识到。
P5 — 路径不是背景邀请:用户给出文件路径、函数名、报错、命令或明确改动点时,不要顺着这些线索反问"背后更大的故事"。除非更大背景会实质改变方案,否则按独立任务处理。
触发闸门
只有满足以下任一条件时,才进入溯源仪式:
- 用户明确要求梳理目标、背景、方向、优先级
- 请求本身明显模糊,且缺少背景会导致方案分叉
- 任务跨多个阶段或角色,done state 无法从字面稳定推断
- 用户要求 re-anchor、重锚、重新对齐
以下情况默认不触发:
- 用户给出明确文件路径、函数名、命令或报错,并要求具体修改/分析
- 用户的目标已经可从一句指令直接判断
- 任务是低风险、可逆、局部性的执行请求
如果不触发:将 horizon 记为 独立任务,直接执行;不要补问背景。
溯源仪式流程
当触发闸门命中时,按顺序完成以下三层对话。能从用户原话提取的内容先提取,不要机械追问。
层 1 — 故事背景(Horizon)
仅当更大背景会影响方案时提问;否则直接记为 独立任务。
提问模板:
"这个任务背后有更大的故事吗?它服务于什么目标或阶段?
(如果没有,说「独立任务」就好,这同样是有效的回答。)"
等待回答。接受任何形式,包括模糊的回答。不要因为用户给了路径就追问这一层。
记录为 horizon。
层 2 — 会话终态(Done State)
如果用户请求已经明确给出结果,可直接提取,不必提问。只有 done state 仍不清楚时才问:
"这个 session 结束时,你希望看到什么? 不是步骤,是结果。用一句话描述「完成了」的状态。"
等待回答。如果用户描述的是步骤,温和地引导:
"你描述的是过程,我需要的是——做完之后,你看到了什么,或者可以做什么了?"
记录为 done_state。
层 3 — 漂移信号(Drift Signals)
默认由 AI 内部生成,不必每次展示。只有在任务跨度大、方向容易变、或用户明确想要协作契约时才拿出来确认。
需要确认时,向用户提议:
"根据你的任务,我推测以下情况出现时代表发生了漂移,需要暂停检查:
- 修改范围扩大到原始 done_state 之外
- 下一步变得不清晰,开始等待对方提示
- 忘记了这个 session 原本要做什么
- 开始做某事但不确定它是否服务于 done_state
有需要增删的吗?"
最终确认后,记录为 drift_signals。
生成会话契约
仪式完成后,生成如下格式的会话契约(Session Contract),放在会话上下文最顶端。
默认不把整张契约原样贴给用户;只在用户要求、任务复杂、或需要重新对齐时展示摘要。
╔══════════════════════════════════════════════╗
║ SESSION CONTRACT ║
╠══════════════════════════════════════════════╣
║ Horizon │ {horizon} ║
║ Done State │ {done_state} ║
╠══════════════════════════════════════════════╣
║ DRIFT SIGNALS ║
║ • {drift_signal_1} ║
║ • {drift_signal_2} ║
║ • ... ║
╠══════════════════════════════════════════════╣
║ Anchored at: {timestamp} ║
╚══════════════════════════════════════════════╝
然后立即进入任务,不需要再次确认。
仪式期间的规则
- 不要机械走流程:未触发闸门时,不要为了完成仪式而提问
- 不要主动跳层:一旦进入仪式,不能因为前一个答案"暗示"了下一层就跳过提问
- 不要帮用户回答:尤其是 horizon 层,空白比猜测更诚实
- 不要进行超过 3 轮的追问:用户答案模糊没关系,记录模糊答案,继续前进
- 不要把仪式变成讨论:如果用户开始展开谈论,温和地说"我记下来了,我们把它放进 horizon,然后继续往下"
- 不要因路径而追问背景:
src/foo.ts、某个报错、某段函数名,都不是追问"更大背景"的理由
漂移检测(进行中)
当 session 进行中,如果检测到以下任一情况,主动暂停并提醒:
- 用户的新指令超出了
done_state的范围 - 连续 3 个回合没有明确推进
done_state - 用户说出"等等"、"其实"、"先做这个"等方向切换词
暂停提醒格式:
"⚓ 漂移检测:当前动作可能超出了契约范围。
契约 Done State:{done_state}
当前动作:{current_action}
选择:[A] 继续,这在范围内 [B] 更新契约 [C] 暂停,重新锚定"
快速重锚(Re-anchor)
如果用户说「我迷失了」、「重锚」、「re-anchor」、「我们在做什么」,立即执行:
- 显示当前会话契约
- 问:「Done State 还有效吗?」
- 如果有效 → 显示最近 3 步,问「我们在正轨上吗?」
- 如果无效 → 重新走完溯源仪式(从层 1 开始)
风格适配
此 skill 不预设任何个人或企业风格。以下元素由用户塑造,不由 skill 强加:
- 命名风格(horizon 的命名,done state 的颗粒度)
- 漂移信号的具体内容
- 契约的详细程度
skill 只保证结构,不规定内容。
参考文件
references/examples.md— 不同任务类型的示例契约(样本参考,不是模板)
More from songlairui/agent-monad
agent-init
Monad unit (η): 扫描当前项目状态,生成标准化 .agent-monad/ 上下文胶囊,使任何 AI Agent 都能无损接管。无论项目之前是否被 Agent 接管过、被哪个 Agent 接管过,都能归一化。当用户说 'init'、'接管这个项目'、'开始'、'onboard'、'新项目',或首次在项目中使用 Agent 时触发。
6agent-merge
Monad join (μ): 当多个 Agent 并行处理同一项目的不同部分后,合并它们的上下文胶囊为统一状态。当用户说 'merge'、'合并'、'汇总进度'、'合并分支',或多个 Agent 的 .agent-monad/ 需要协调时触发。
6agent-bridge
Monad bind (>>=): 从当前 Agent 的工作中提取意图和进度,更新 .agent-monad/ 上下文胶囊,使下一个 Agent 能无缝接续。当用户要切换 Agent、结束当前会话、或说 'bridge'、'交接'、'切换到 X'、'保存进度'、'我要换个工具' 时触发。
6reading-breath
为中文文本注入“呼吸感”。当用户提供密集、压抑、缺乏起伏的长文,或要求“润色”、“优化表达”、“提升阅读体验”时,必须使用此技能。它通过识别逻辑层级,通过“语义呼吸”和“密度波”消除阅读疲劳。严禁强行制造索引或分段,旨在让文字在最自然的状态下被顺滑吸收。
5sancai-zhen
三才阵入口。当用户开始任务、播种想法、遭遇阻碍时,AI 内部路由到正确阵位。路由是 AI 的内部行为,不对用户暴露。交互频率由置信度决定——清晰的指令直接执行,模糊的起点自然追问更多。
3harness-graph
从任意种子点出发,建立并累积 harness 全景图。当用户说「播种」「我在想」「这件事是关于」「帮我理清」「新种子」「seed」「我现在脑子里有个点」,或者在 session 开始时有模糊想法还未展开,立即触发此 skill。它将任意入口扩展为图结构,并以项目(工作)或事项(生活)为关联锚点,跨 session 累积生长。
3