Community程式設計與開發github.com

benbird316/maybe-im-smart

卡在「同一個任務反覆迭代仍不收斂」時的定向破局工具:不提供更好的點子,而是換個找解方的方向;另一半是審計既有跨域對應關係(判斷結構,不判斷真值)。適用於卡住/死循環/僵局/死鎖/破局/走不通/想不出下一步/deadlock/stuck/blocked;也用於自查。

maybe-im-smart 是什麼?

此工具專為 AI 代理開發者與使用者設計,用於解決任務反覆迭代卻無法收斂的困境。它能自動識別卡點(如:同一路徑退回兩次、修改三輪後下一步仍只是上一輪失敗的直接後果、同一目標問答超過三輪仍未達成、AI 的回覆實際上是讓使用者在候選項中挑選、或 AI 準備提出的候選選項沒有一個是使用者未提過的),並提供結構化的破局框架。支援多種平台(如 Claude Code、Cursor、Codex),其運作方式包括:先進行任務類型分類(偵測、阻斷、分配、協調、時序、持續性、決策),再透過四欄分解(保持、阻擋、卡點、約束)定位問題本質,接著進行去線索引發的重新陳述、跨域或域內分支檢索,最後將找到的實踐反向轉譯回原域的行動步驟。此工具也包含審計功能,用於判斷既有跨域類比結構的自洽性,但不判斷類比的真假(真假需要領域證據)。使用者需要透過 Python 腳本來執行紀錄閘門與落地閘門檢查。

相容平台~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 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

maybe-im-smart — 保持目標,換個地方找既有做法

輸出是一個行動——行動者、本週第一步、如何知道它有效。不是一個點子。

判準:一旦載入,是否繼續

僅在 description 中的觸發條件命中時載入。載入後,通過第一道閘門:下一步必須是看不見的——困難不算,只有沒有候選項才算。然後是第二道閘門:缺少的是什麼——只有第一個類別才適用此程序:

缺少什麼去哪裡找邊界
缺少行動(該做什麼)本程序只有此類別需要去別處找做法
缺少事實(它是什麼)查詢它詢問使用者 AI 可以查詢的事實,等於浪費使用者時間
缺少限制(什麼不能動)問,而且要精確地問只問「什麼不能動」;問「怎麼做」等於把行動空間還回去

其他幾種情況不屬於此處。下一步已知而只是不想做 = 執行問題。技術上的死鎖(執行緒互相等待、工具呼叫迴圈、重試風暴)= 需要修復的錯誤,不是「使用者反覆問 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 — name: input → output,物件使用真實名稱。落地閘門使用它來檢查 subject(在域 A 中?)和 action(重新命名的舊行動?)。

分解失敗 = 卡點尚未定位;回頭定位。如果 stuck 無法寫成「想要 X,但缺少 Y」,就不要繼續前進。

3. 去線索引發的重新陳述

重複問兩個問題直到兩者都失敗:這個名稱是否暗示了用途?它能否進一步分解?方法、標準和範例:請參閱 references/probe.md 的第一階段。

產出:

  • 一個中性重新陳述(≤40 個字元,不包含原域的任何領域專有名詞)
  • 3–5 個搜尋詞(中性的名詞或動詞)

搜尋詞中出現原域的領域專有名詞,表示這一步沒有完成。 將那些詞列出在 domain_terms 中;工具會根據子字串比對來阻擋。

4. 檢索(2a 方向生成 → 2b 對主要來源驗證 → 2c 缺口填補)

先掃描原域,然後離開它。 這是 2a 的第一件事。

這裡的「來源」不是指「另一個領域」。 來源有兩種粒度:

什麼被改變來源是機制
分支切換原域內的另一個分支取代主線的前提,不是映射
跨域切換另一個領域結構映射 φ: A→B

兩種「另一個分支」都算: 一種是被同儕排擠的(曾經做過,後來被放棄);另一種是從未被當作方法使用的——原域中已經存在的東西(文件標準中的必填欄位、現有的索引結構、其他團隊使用的粗略權宜之計),只是沒有人把它應用在這個問題上。第二種不是發明:它必須已經存在於原域;只是它的位置改變了。

b_domain 記錄實際來源:如果是分支切換,寫原域名稱加上分支名稱;如果是跨域切換,寫那個領域的名稱。只有可以指名道姓的具體來源才算數。

「原域已窮盡」是不可判定的;不要判斷它。 檢查兩個表格,各一個記錄:

掃描什麼如何掃描記錄什麼
共享前提見下面「如何打破前提」的五個步驟一個前提 + 一個拒絕該前提的做法,或是「原域內無此做法」
未採取的分支詢問兩種分支。① 原域曾經的主流做法現在被放棄了——它是被否證了,還是只是過時了?② 原域中已經存在的東西,為什麼從未被當作方法使用?分支名稱 + 未採取的原因;如果沒有,則寫「原域內無此分支」

如何打破前提——「共享前提」表格的掃描方法。五個步驟,一個都不能跳過:

  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。不要計算 recall 的準確率: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 管轄的是對應關係(與原域卡點處於同一位置嗎?)。

工具只檢查 why 是否為非空;它無法分辨 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。

落地閘門,七項檢查:

  1. 六個欄位非空:operator / action / subject / first_step / observable / why
  2. ≥2 個框架鏡頭;operator 只接受中文文字 功能 / 矛盾 / 尺度 / 失敗(function / conflict / scale / failure);任何其他值皆不符合規定
  3. …(原文截斷)

相關技能