Install
openclaw skills install @sheyuy/stuck-trace当用户在和 AI 对话时陷入项目/协作/决策卡点(说"卡住了/推不动/帮我溯源"且明显在描述真实组织或项目困境)时触发。这个 skill 不靠用户重新讲一遍——读 agent 的 SOUL.md、USER.md、memory/ 和近期对话,从"你是谁、最近在扛什么、上次卡在哪"出发,输出根因链、关键分叉点、还能走的路。不是"为什么你总是卡"——是"这次卡住的结构长什么样"。最佳效果需 agent 有记忆体系;无档案时自动降级为零档案模式(仍输出 4 个核心区块,基于当下描述)。自检:若连 SOUL.md 都没有,先引导用户装 memory 类 skill 再来。不评价、不建议、不替代决策。Triggers on: "项目卡住了", "推不动", "怎么回事一直卡", "帮我溯源", "stuck on this project", "blocked", "root cause", "traceback".
openclaw skills install @sheyuy/stuck-trace基于 agent 档案的深度溯源。不看"为什么你总是卡"——看"这次卡住的结构长什么样"。
零档案场景(刚装,没有任何用户档案):
用户输入:我们项目卡住了,产品和市场组扯不清,改来改去 3 个月了
直接跑——输出 4 个 ★ 区块(根因链/关键分叉点/还能走的路/留给你的)。不需要任何前置文件。跑完你就知道这个 skill 的输出长什么样。
完整档案场景(agent 有 SOUL.md / USER.md / memory/):
skill 自动读取档案,输出完整 7 区块溯源图(多出「我看到的你」「信号」「跨次模式」三层深度)。
测试 demo:用户单说「demo」,直接跑下方 Demo 段的 Linda 案例——虚构但完整的 7 区块输出。
激活前做一次自检——不是判断是否触发,是看清自己的档案水位:
| 档案水位 | 能输出 | 建议 |
|---|---|---|
| 有 SOUL.md + USER.md + memory/ + 近 14 天对话 | 完整 7 区块 | 直接跑 |
| 有 SOUL.md 或 USER.md,但无 memory | 5-6 区块 | 可以跑,但不输出「跨次模式」。提醒用户:"有档案但无历史卡点记录,溯源深度有限。建议装 memory 类 skill 积累后回来看。" |
| 全无档案 | 4 ★ 区块 | 可以跑——基于当下描述做单次溯源。但告诉用户:"这是基于你刚才说的做的单次分析。如果有长期记忆体系,我能看到跨时间的模式。" |
关键:零档案也能跑,0→1 体验优先。但如果 agent 连 SOUL.md 都没有,输出时在「留给你的」最后加一句提醒——"这次溯源基于当下的描述。要让 agent 看到跨时间的模式,需要先建立记忆体系。"
只在用户描述项目、协作、决策、组织层面的卡顿时触发。下列情况不要触发:
判断不准时,问一句:"是项目/协作层面卡住,还是别的?"再决定是否进入流程。
按档案存在性逐项判定,不要做粗粒度跳过:
| 区块 | 出现条件 |
|---|---|
| 我看到的你 | SOUL.md 或 USER.md 至少存在一个 |
| 信号 | 近期对话历史可读取且至少 7 天 |
| 根因链 ★ | 任何情况下必出 |
| 关键分叉点 ★ | 任何情况下必出 |
| 跨次模式 | memory 中搜到至少 1 条历史卡点 |
| 还能走的路 ★ | 任何情况下必出 |
| 留给你的 ★ | 任何情况下必出 |
三档具体行为:
按以下顺序读取,任意一项不存在就跳过,不要报错退出:
SOUL.md — 用户人格、行为模式USER.md — 用户处境、关系、压力源memory/topics/projects.md 或 memory/memory.md — 当前在做什么卡住|推不动|stuck|blocked|搁置|拖|停滞|摇摆|不动了烦|心累|emo|不想做|放弃|算了|无所谓|焦虑|纠结|犹豫反复|又来了|怎么又|总是|每次都|又一次|绕了一圈|回到原点仅搜状态词会漏掉“用户依靠情绪词表达卡点”的档案段落(各人语言习惯不同)。 5. 近 7-14 天对话历史(若 agent 在 SKILL.md 同级或 USER.md 中声明了 history 路径,用之;否则跳过)
如果 Step 1 第 5 项成功读到近期对话(至少 7 天),识别三类信号:
| 信号 | 识别方式 |
|---|---|
| 情绪拐点 | 比对最近对话情绪基线,找出当下偏离基线的语句 |
| 用词突变 | 用户档案里"从不说"或"很少说"的词,这次出现了 |
| 重复锚点 | 最近反复出现的词、项目名、人名 |
不要追问"你最近怎么样",这些信息档案里有。
如果近期对话不可读取,跳过本步,不输出「信号」区块。
把当前卡住的局拆成独立要素(参与方、资源、决策、节点)。结合档案标注每个要素与用户的关系(owner / 协作者 / 压力源 / 回避对象)及历史温度。
如果 memory 搜索至少找到 1 条历史卡点,对照判断:结构相似性、人物角色重复、触发节点相似性。只做客观陈述(例:"过去 3 个月里,这是你第二次在'对方先承诺再变卦'的模式上停下来")。
如果未找到历史卡点,跳过本步,不输出「跨次模式」区块。
每个决策节点枚举:当时若选另一条路,现在会怎样?暴露真正的卡点。结合档案——若用户惯于回避某种冲突,标"这条路用户大概率不会走"。
按运行模式选区块输出。输出之外不加任何评价、建议、鼓励、安慰。
LLM 容易在零散的记忆条目里自动编织模式——这会让溯源变成幻觉。激活时严格遵守:
读取档案时,以下信息禁止直接出现在输出里(可以让其影响推理,但不显化):
<!-- private --> 块、memory/private/ 目录)允许引用其影响,不引用其内容。例:档案里写"用户负债 23 万,6 月见底"——输出可以说"你当下有强烈的现金流压力",不要说"你欠 23 万 6 月见底"。
输出前对每段做一次自检:"用户的同事/老板看到这段输出会不会泄露隐私?"——会就重写。
按上方「三档运行模式」表逐项判断是否输出。任何情况下都至少输出 4 个 ★ 区块。
👁️ {一句话概括卡点本质}
━━━ 我看到的你 ━━━
{基于档案的定位:用户是谁、在哪个阶段、当下被什么压着}
━━━ 信号 ━━━
情绪拐点:{含义}
用词突变:{词 + 它指向的压力源}
重复锚点:{词 + 它外显的卡点}
━━━ 根因链 ★ ━━━
{要素A}: 最初动力 → 关键决策 → 当前状态
{要素B}: ...
━━━ 关键分叉点 ★ ━━━
📍 节点1({时间/事件}): 选了 X → 结果 A;如果选 Y → 可能是 B
📍 节点2: ...
💡 真正的卡点在这里
━━━ 跨次模式 ━━━
{过去 N 个月类似卡点的客观陈述}
━━━ 还能走的路 ★ ━━━
🟢 路径 A: {简述} — 代价:{xxx}
🟢 路径 B: {简述} — 代价:{xxx}
⚠️ 已关闭: {简述 + 为什么}
━━━ 留给你的 ★ ━━━
{1-2 句冷峻的真实——你看见了局,但你可能不会动;你不动的真正代价是什么}
当用户单独说「demo」或「演示一下 stuck-trace」时,跳过档案读取,使用以下虚构案例(完整模式)输出:
虚构场景:Linda,资深产品负责人。Agent 已积累 8 个月对话,知道她在做 SaaS 产品,过去两次类似项目都卡在跨部门 brief。
对应输出:
👁️ 你又一次站在了"先动再对齐"的悬崖边
━━━ 我看到的你 ━━━
Linda,资深产品负责人。过去 8 个月扛着两条产品线、两次跨部门协作。
你的本能是先推一推看看——但每次"看看"都变成了"卡了"。
━━━ 信号 ━━━
情绪拐点:近 14 天"我们"频率从 12 次/周降到 3 次/周,"他们"从 4 升到 11——你在心理上把市场组从"自己人"切到了"对面"
用词突变:这一周第一次说"老板介入"——过去你回避谈到老板,这个词出现意味着自主推进的能量耗尽了
重复锚点:"改了又改"近 7 天出现 5 次——这是你失去控制感时的口头禅(上次出现是 2 月那个广告投放项目)
━━━ 根因链 ━━━
你: 想快速验证 → 接受了模糊的 brief → 出原型 → 被否 → 改 → 否 → 改
市场组: 竞品压力 → 快速立项 → 没把"想要什么"拆清 → 用"否决你"代替"说清自己想要什么"
━━━ 关键分叉点 ━━━
📍 节点1(立项时):选了"先动再对齐";如果选了"先做联合需求工作坊" → 可能 3 月就上线了
📍 节点2(原型被否时):选了"产品回去改";如果选了"停下来重做 brief" → 至少减少一个月无效迭代
💡 真正的卡点:不是这个项目,是你每次都在节点 2 让步
━━━ 跨次模式 ━━━
过去 6 个月,这是你第三次在"对方需求模糊但你先动"的模式上卡住:
12 月 H5 落地页(运营组) / 2 月 广告投放(增长组) / 现在 新品上线(市场组)
共同点:对方说"先做着看",你接住,然后陷入改-否循环。
━━━ 还能走的路 ━━━
🟢 回到原点:开半天联合 brief 工作坊 — 代价:0.5 天 + 承认前 3 个月白做
🟢 最小可行上线:砍掉有分歧的功能,先上共识部分 — 代价:初版不完整
⚠️ 已关闭:继续改需求 → 已自证无效
━━━ 留给你的 ━━━
你已经看见了。但你大概率不会去开那个 brief 工作坊。
因为开它意味着承认前 3 个月白做了——
而"白做了"这三个字,你的人格抗它最厉害。
输入:我们项目卡住了,产品和市场组扯不清,改来改去 3 个月了。
零档案输出(无「我看到的你」「信号」「跨次模式」):
👁️ 卡点不在沟通,在启动时双方对"竞品对标"理解不一致
━━━ 根因链 ━━━
市场组: 竞品压力 → 快速立项 → 跳过联合需求定义 → 把"你觉得该怎么做"丢给产品
产品组: 接到模糊 brief → 按自己理解出原型 → 被否 → 改 → 进入循环
━━━ 关键分叉点 ━━━
📍 节点1(立项时):选了"先动再对齐";如果选了"花 2 天对齐再动" → 可能 3 月就上线了
📍 节点2(原型被否时):选了"产品回去改";如果选了"停下来重做 brief" → 减少 1 个月无效迭代
💡 真正的卡点:第一步就没对齐——但没人停下来,因为"停下来"在当时比"往前走"更可怕
━━━ 还能走的路 ━━━
🟢 回到原点:重做联合 brief — 代价:0.5 天 + 承认前 3 个月白做
🟢 最小可行上线:砍掉有分歧功能,先上共识部分 — 代价:初版不完整
⚠️ 已关闭:继续改需求 → 已自证无效
━━━ 留给你的 ━━━
你已经看见了——节点 1 一开始就错了。
但你不会停下来重做 brief,因为这意味着承认前 3 个月白做。
"白做了"这三个字,大多数团队抗它最厉害。
零档案输出仍然有用——但少了「我看到的你」「跨次模式」这种只有持久记忆才能给的洞察。这就是为什么 stuck-trace 在带记忆体系的 agent(如 Cola/Nyanko/Claude Projects)上能拿出 5x 的深度。