Communityコーディング&開発github.com

maybe-im-smart — 保留目标,换个地方找做法

卡在“同一任务反复迭代仍不收敛”时的定向破局:这个 skill 不提供更好的主意,而是换一个找做法的地方;另一半是审计已有的跨域对应关系(判结构,不判真值)。适用于卡住了/死循环/僵局/死锁/破局/走不通/想不出下一步/deadlock/stuck/blocked;也用于自查。

maybe-im-smart — 保留目标,换个地方找做法 とは?

这个 AI 智能体技能(skill)旨在解决开发者在迭代任务中反复尝试却无法收敛的僵局。它不是一个提供灵感的头脑风暴工具,而是一个结构化的破局流程。技能的核心是:当遇到“下一步看不见”(而非只是困难)且缺失的是“行动”(而非事实或约束)时,引导你系统性地在别的领域或本领域未被走过的分支中寻找已有的实践做法。它包含“记录门”和“落地门”两重关卡,确保检索到的做法能真正映射回本领域并转化为可执行的下一步动作。此外,另一个关键功能是“审计”:对于已有的跨域类比,它只检查其结构自洽性,不判断类比的真假。支持平台包括 Claude Code 等 AI 智能体工具,通过分析对话中的卡点模式(如用户反复问同一问题、AI 反复让用户选择)自动触发,并执行“分解-检索-落地”三步流程。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/benbird316/maybe-im-smart/tree/HEAD

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

maybe-im-smart — 保留目标,换个地方找做法 は何をしますか?

输出是一个动作——执行者、本周的第一步、如何判断它有效。不是一个想法。

准则:加载后,是否继续

仅在命中 description 中的触发条件时加载。加载后,通过第一道门:下一步必须看不见——困难不算,只有无候选才算。然后通过第二道门:缺失什么——只有第一类走此流程:

缺失什么去哪里边界
缺失动作(该做什么)此流程仅此类需要换个地方找做法
缺失事实(是什么)查证让用户回答 AI 自己能查的事实,浪费用户时间
缺失约束(什么不能动)问,且问准确只问“什么不能动”;问“怎么做”就把行动空间交还给了用户

其他几种情况不属于此。下一步已知但不想做 = 执行问题。技术意义上的死锁(线程互相等待、工具调用循环、重试风暴)= 需要修复的 bug,不是“用户反复问 AI,AI 反复问用户”的来回往复;那种来回往复属于“问答来回 ≥3 轮”类别。没有卡点的主题头脑风暴 = 直接问想法。润色和解释 = 没有要切换的检索领域。

另一半是审计,跳过上述判断和声明。 若要判断一个已有的跨域对应关系的结构自洽性(在它进入推理链之前,或在其机制搬回领域 A 之前),直接阅读 references/audit.md;只判断结构,不判断类比真假。

自查:不必等用户开口

外部事件信号可以从记录中计数。以下信号仅限 AI 侧,只有 AI 能承认它们:

  • AI 当前回复的实质动作是让用户在候选里挑选(要求选择,而非事实)
  • AI 准备提出的候选中,没有一条是用户没提过的

如果两者之一成立,就算作卡住,此时不需要满足“下一步看不见”和“缺失的是动作”这两道门。

当判断成立时,声明触发条件,让用户可以拒绝或降级:

<那一项证据> — 用 maybe-im-smart 跑一轮,分三步:分解、检索、落地(references/probe.md)。

从 description 中命中的条目或 AI 承认的那句话里逐字复制<那一项证据>,不要改写为摘要。

如果不成立,一个字也不要说。

1. 分类任务类型

类型卡点的形状示例
检测必须发现某事物存在与否;遗漏或误报评审仍有遗漏
阻断必须阻止某事发生同一事件重复发生
分配有限资源分配到多个需求日程冲突、预算拆分
协调多方的行动必须保持一致交接失真、跨团队一致
时序顺序或节奏出错依赖颠倒、反馈延迟
连续性系统不能在扰动下崩溃容量耗尽、关键人员离职
决策信息不完整时仍需下结论在证据不足时是否发布

如果都没有,自己命名一个。 这个表格只为了逼出“这个问题的形状是什么”。

2. 分解:四列

列问什么示例(代码评审遗漏缺陷)
keep 保留什么现在是什么在维持它运行?动了它一切塌掉合并前的独立判断
block 阻断什么哪个失败正在发生?有判断但不起作用
stuck 卡在哪里一句话“想要 X,但缺少 Y”提高检测率,但加人反而降低
constraints 什么不能动写出实际被撞到的那个约束不能增加人员;不能延长排期

除四列外,保留领域 A 的操作表 ops_A — 名称: 输入 → 输出,对象用其真实名称。落地门用它来检查 subject(在领域 A 里吗?)和 action(旧动作改名了?)。

分解失败 = 卡点还没定位到;回去定位。如果 stuck 不能写成“想要 X,但缺少 Y”,就不要继续。

3. 去提示语重述

重复问两个问题直到两者都失败:这个名称是否暗示了用途?能否进一步分解?方法、标准和示例:见 references/probe.md 的第一部分。

产出:

  • 一个中性重述(≤40 字符,不包含本领域的领域特定术语)
  • 3-5 个搜索词(中性名词或动词)

搜索词中包含本领域术语意味着这一步还没做完。 将这些术语列入 domain_terms;工具通过子串匹配来阻断。

4. 检索(2a 方向生成 → 2b 对一手来源的验证 → 2c 缺口填补)

先扫描本领域,然后离开它。 2a 的第一步。

这里的“来源”不是指“另一个领域”。 来源有两个粒度:

什么变了来源是机制
分支切换领域 A 内的另一个分支替换主线的前提,不是映射
跨域切换另一个领域结构映射 φ: A→B

两种“另一分支”,都算: 一种是被同行挤掉的(过去做过,后来被放弃);一种是从未被当作方法使用过——本领域中已存在的东西(文档标准中的必填字段、已有的索引结构、另一个团队用的粗糙变通方案),只是没人把它应用到这个问题上。第二种不是发明:它必须已存在于本领域;只是位置变了。

b_domain 记录实际来源:对于分支切换,写领域 A 的名称加上分支名称;对于跨域切换,写那个领域。只有可命名的具体来源才算。

“本领域已穷尽”是不可判定的;不要判断它。 检查两个表,每种一条记录:

扫描什么如何扫描记录什么
共享前提见下方“如何打破前提”,五步一个前提 + 一个拒绝该前提的实践,或“本领域无此实践”
未走的分支问两种。① 本领域曾经的主流实践现在被遗弃了——是被反驳了,还是仅仅过时了?② 为何本领域已存在的某个东西从未被用作方法?分支名称 + 未走的原因;如果没有,写“本领域无此分支”

如何打破前提——扫描“共享前提”表。五步,一步不能少:

  1. 把失败的路径放在一起;把它们的共享前提写成一句能否定的话——如果不能否定,前提还没说清楚。
  2. 把它拆成能逐个否定的子句。
  3. 对每个子句:本领域有没有不把它当作前提的实践?如果有,填进去;该子句扫描完成。
  4. 凡是回答“没有”的子句,就是离开的方向。
  5. 用这个子句的否定作为搜索词。不是学科名称——学科名称只会返回该学科的关键词论文,搜索会直接循环回起点。

confidence 在打破前提时不计算。

只有当两个表都回答“无”时,才允许离开。“空”意味着无反例实践,不是没有文字。 一行写着“本领域无此实践”也算空。

分支切换不仅仅是重新思考。 一个标准:新分支不包含失败路径的共享前提。更多努力、更细粒度、在同一个前提下调整参数,只会把主线推得更远。无法命名:分支还没找到。

两个表扫描的是主线没有走过的地方,不是主线本身。 开放性问题同样对待:避开本领域的陈词滥调,而不是避开本领域本身。

本领域条目以与跨域条目相同的地位进入 recall:structure 写明“哪个本领域分支,现在走哪一条”。离开是通过第三步的两个输出确认的:restated 中零个领域 A 术语(工具不检查——自己数)和 terms 中没有 domain_terms 中的词(工具会阻断)。工具不检查两个表。

三个子步骤都属于第二阶段,在同一轮中按顺序执行。不要把它们合并成一个查询——合并在 2c 会变成 2a 的延续。

步骤动作输出硬格式能证明什么
2a 方向生成从参数化记忆中:实践可能在哪儿(先本领域未走的分支)一个方向 + “那里可能有什么”origin: "recall",confidence,视角 operator;3-6 条,≥2 个视角;status 始终为 unverified仅“见过这个区域”,不代表实践确实在那里
2b 对一手来源的验证对照外部一手来源检查每条:那个实践存在吗?verified / refuted / unverified(检查了但无法确定,保持 unverified)verified 必须带出处;refuted 必须带修正将猜测转化为可引用的事实
2c 缺口填补更改搜索词再搜,针对 2a 从未想到的方向新来源origin: "search" 和每条 status;每条结果记录 query越过训练数据边界

2c 返回与 2a 相同的实践(相同领域、相同实践)= 这一步没有离开;那是延续,不是缺口的填补。同一领域中的另一个实践算——但“其他”必须进入 structure,否则无法与记录中的 2a 条目区分,工具也无法判断重复。工具不检查这一点;自己数。

提示和顺序,见 references/probe.md。不要计算召回准确率:2a 给出方向,不是命题。

四种构架视角(用于 2a 方向生成,在落地门重新对照候选)

在 2a 中,给每个方向标记一个视角;3-6 条覆盖 ≥2 个。 四个条目来自同一个视角,就是一个类比复制四份,对错都在一起——在 2a 检查发散性,而不是最后的落地门。

视角问的是“在哪里”,不是“多远”。答案可以是本领域的另一个分支,也可以是另一个领域。

构架视角用它问什么
function(功能)动词(检测 / 缓冲 / 限流 / 校准)在哪个领域是标准组件?
conflict(矛盾)谁把“想要 X,同时又不要 X”当作日常工作?
scale(尺度)低一级(单个事件)和高一级(组织、生态系统)的领域如何做同样的事?
failure(失败)哪个领域有书面的事故档案来处理这种失败?

5. 反向翻译:落地为本领域行动

反向翻译源侧的每个实践;舍弃不可译的。

先写 why;如果写不出就舍弃条目。 不是在其他列之后追加——到那时已决定保留,写的只是为它找到的辩护。why 是进场门:A 侧引用 decompose.stuck 的原话;B 侧说明在那个领域什么起作用。仅 B 侧(“那个领域这样做很好”)是空转;仅 A 侧只是重述卡点;两者对不上 = 不可译。

对于 evidence,选择:来源实践的出处,或 inferred。标记 inferred 允许;把推断当作出处写则不允许。它管辖事实(实践在那里存在);why 管辖对应关系(与领域 A 卡点位置相同?)。

工具只检查 why 非空;无法判断它是否先于其他列写的。 软性,像 2c 的自查:阻断明显未完成的。

6. 两道门和命令

python3 scripts/maybe_smart.py --recall decompose.json           # 记录门
python3 scripts/maybe_smart.py --check cands.json decompose.json # 落地门
python3 scripts/maybe_smart.py analogy.json                      # 审计(可选)

--quiet 是输出开关,不是模式位:默认打印完整报告;带上它只输出结果行(PASS / FAIL;--check 处理一对并打印一行)。退出码:0 通过 / 1 阻止 / 2 输入错误。

记录门:task_type 非空且全部四列存在;restated ≤40 字符;terms ≥3 且不包含 domain_terms 中的词(如果 domain_terms 未列出,此门无法检查,视为未通过);每条 recall 条目的 b_domain 非空;≥3 条 recall 条目;相同来源、相同实践不重复(一个分支下的两个不同实践算两条);status 只接受 verified / refuted / unverified;verified 带 source,refuted 带 correction;至少 1 条 origin 为 search 且记录了 query 的条目。

関連スキル