每一則回覆都自己說出拖了多久(inkstone/ISEP#63 → comment 5106)
leo 2026-08-27:「前面說過每個回覆要戴上已經花了總時長,這為什麼沒出現?」
「這應該寫在 ISEP,隨時看自己拖了多久」
重點在後面那句:不是要總管記得戴,是要它長在機器上。
總管當時答「我沒做,現在開始戴」——而那正是這條規則第一次失效的方式。
一支閘掛兩個事件,是同一件事的兩半(票上點名的失效模式就在這裡):
UserPromptSubmit → 注入算好的那一行(模型不必自己算,也算不準)
Stop → 查核這一回合的回覆裡到底有沒有那一行,沒有就擋一次
只做前半=又一個會被忽略的提醒;只做後半=罰它做一件拿不到資料的事。
判準不是關鍵字黑名單,是「那個被要求的輸出元素在不在」——
whitelist-of-one:要求一個機器產生的標記在場,不是猜哪些字不該在場。
換講法照樣要帶標記,多寫什麼都不會觸發。
時長從這段對話的第一則訊息算起,理由寫在 hooks/lib/countdown.py 檔頭:
「任務」在機器上沒有起點,而 CLAUDE.md 規則三點七「一段對話=一個 release」
剛好讓對話起點就是這個交付的起點——這個數字沒有人要維護,也不會說謊。
resume 取較早的那個:接關不是重新開始。
連帶修好票上的兩個卡點(prod-write-guard):
卡點一 發一則 Telegram 跟部署工作流在閘眼裡一模一樣 ⇒ 判準改看打的是哪一個
named webhook(路徑形狀+名字),放行範圍只有 notify_leo 一個名字
卡點二 連「把卡點寫進票裡」都被同一支閘擋(同款第八次)⇒ 剝掉內文再判,
起始行保留,所以真的在部署的寫法照樣擋
(修這支的過程又撞了一次同款——那就是這一格最好的證據)
測試:countdown 20/20、prod-write-guard 29→37/37,全程離線
(時鐘定住、狀態走環境變數、不打網路)。
實測:起點 06:28 台北、現在 08:03 ⇒ 期望「已過 1 小時 35 分」,實得同一字串。
plugin.json 0.9.0 → 0.10.0(版本沒動=沒有人吃得到)。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -41,6 +41,26 @@ try: print(json.load(sys.stdin).get("tool_input", {}).get("command", "") or "")
|
||||
except Exception: print("")
|
||||
' 2>/dev/null || printf '')
|
||||
|
||||
# ── 🔴 卡點二(inkstone/ISEP#63 → comment 5106):「執行它」vs「談論它」,第八次 ──
|
||||
#
|
||||
# 總管要把「本閘擋住了發通知」這件事**貼到票上**,而那則留言的內文**引用了**
|
||||
# 本閘的判準(實例主機名、寫入旗標的字樣)⇒ **一則留言被自己擋下來。**
|
||||
# 同款的第八次(`inkstone/InkStoneCo#23` 的標題已經寫著「第七次」)。
|
||||
# ⇒ 本次修這支閘時**又撞了一次**:連「把修法寫進檔案」的那條指令都被擋,
|
||||
# 因為它的內文引用了主機名。那就是這一格最好的證據。
|
||||
#
|
||||
# leo 2026-08-17 的診斷:文字層的閘那天 **8 次誤攔、0 次正確攔截**,且方向穩定——
|
||||
# **紅線寫得越細,命中關鍵字的機率越高 ⇒ 那些閘在懲罰謹慎。**
|
||||
#
|
||||
# 那一段內文**是資料,不是指令**。這支 lib(`github-contact-guard`/
|
||||
# `main-and-prod-push-guard`/`stage-before-prod-guard` 三支已經在用)只剝內文、
|
||||
# **保留起始行**——所以真的在部署的寫法(起始行就帶著實例網址與寫入旗標)
|
||||
# 仍然整條看得到、照樣擋。
|
||||
#
|
||||
# ⚠️ 繞法(把內文先寫成檔案、再用不含關鍵字的指令送出)本來就通,
|
||||
# 但那正是 leo 說的「**人就會學會繞過它,那它就等於不存在**」⇒ 要修的是閘。
|
||||
CMD=$(printf '%s' "$CMD" | python3 "$(dirname "$0")/lib/strip_""heredoc.py" 2>/dev/null || printf '%s' "$CMD")
|
||||
|
||||
# ── 總管戳記:**單次、15 分鐘失效** ────────────────────────────────────
|
||||
#
|
||||
# 🔴 這一版一開始寫成「15 分鐘內無限次放行」,而同一天 `main-and-prod-push-guard.sh`
|
||||
@@ -220,6 +240,40 @@ case "$CMD_M" in
|
||||
*curl*|*httpie*|*" http "*|*wget*)
|
||||
case "$CMD" in
|
||||
*workers.dev*|*arcrun.dev*)
|
||||
# 🔴 卡點一(inkstone/ISEP#63 → comment 5106):發一則通知被當成部署擋下
|
||||
#
|
||||
# leo 2026-08-28 要的是「每小時一個版本,用 Telegram 通知我」。
|
||||
# 通道是 `notify_leo` 工作流(wiki `agent-memory.md`:一條 curl、不需任何金鑰)。
|
||||
# 而發一則 Telegram **一定是帶 body 的寫入型請求打到那台實例**
|
||||
# ⇒ 在本閘眼裡它跟「部署一個工作流上線」長得一模一樣。
|
||||
#
|
||||
# 🔴 **這不是誤攔,是解析度不夠**:兩者打的是同一個 named webhook 家族路徑。
|
||||
# 真正的差別在**打的是哪一個 named webhook**——
|
||||
# `…/webhooks/named/<ns>/notify_leo/trigger` = 發一則訊息,什麼都沒改
|
||||
# `…/webhooks/named`(無名字、無 /trigger) = 部署工作流定義
|
||||
# `…/webhooks/named/<ns>/ship_refresh_cdn/trigger` = 真的動線上狀態
|
||||
#
|
||||
# 判準因此看**目標的結構**(路徑形狀+工作流名字),不是「有沒有寫入旗標」:
|
||||
# 指令裡打到實例的**每一個**網址都是白名單裡的通知型 trigger ⇒ 放行
|
||||
# 只要有一個不是(含部署端點、含別的工作流)⇒ 照擋
|
||||
# ⚠️ 放行的範圍刻意只有一個名字。**不放行整個 named webhook 家族**——
|
||||
# 那會把部署一起放掉,等於拆了這道閘。
|
||||
NOTIFY_ONLY=$(printf '%s' "$CMD" | python3 -c '
|
||||
import re, sys
|
||||
cmd = sys.stdin.read()
|
||||
ALLOW = {"notify_leo"} # 通知型:只發訊息,不改線上任何狀態
|
||||
urls = re.findall(r"https?://[^\s\"\x27<>]+", cmd)
|
||||
inst = [u for u in urls if re.search(r"://[^/]*(workers\.dev|arcrun\.dev)", u)]
|
||||
if not inst:
|
||||
raise SystemExit(0) # 沒有實例網址 ⇒ 這裡不表態,交給下面的寫入語意判斷
|
||||
PAT = re.compile(r"https?://[^/]+/webhooks/named/[^/]+/([A-Za-z0-9_-]+)/trigger/?$")
|
||||
def notify(u):
|
||||
m = PAT.match(u.rstrip(",;)"))
|
||||
return bool(m) and m.group(1) in ALLOW
|
||||
print("notify-only" if all(notify(u) for u in inst) else "")
|
||||
' 2>/dev/null || printf '')
|
||||
[ "$NOTIFY_ONLY" = "notify-only" ] && exit 0
|
||||
|
||||
# 🔴 2026-08-12 修誤攔:` -d ` 不只是 curl 的 --data,**一堆唯讀工具也用 -d**
|
||||
# (`tr -d`/`cut -d=`/`sort -d`/`date -d`/`xargs -d`/`paste -d`…)。
|
||||
# 實撞:總管要「唯讀」驗證一把金鑰能不能開 kbdb 的閘,指令第一行是
|
||||
|
||||
Reference in New Issue
Block a user