c2638668e3
leo 2026-08-20:「同一個 plugin 你用,薄殼也用,保證兩邊同步」
「我要你幫雲端做薄殼,永遠都有問題,你要做的就是這組設定
你自己可以 dogfooding」
搬進來:41 支 hook(51 條註冊)/7 支 command/2 支 skill/23 支腳本。
不搬 .env、wiki、docs——那些是知識不是環境。
51 條 hook 路徑全部從 $CLAUDE_PROJECT_DIR/.claude/hooks/ 改成 ${CLAUDE_PLUGIN_ROOT}/hooks/,
零漏網。那正是薄殼一直壞掉的根:雲端 cwd 不是真身,寫死路徑就斷。
尚未驗證:Claude Code 能不能從私有 Gitea repo 裝 marketplace(要憑證)。
下一步就是在本機實際裝一次,通了才動雲端 bootstrap.sh。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
52 lines
2.3 KiB
Bash
Executable File
52 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
||
# gitea-arm-status.sh — 列出目前還「活著」的 ARM 待核請求(純讀、不打網路、不消耗任何東西)
|
||
#
|
||
# 🔴 為什麼存在(2026-08-13 實撞):
|
||
# 總管在測試 gitea-arm 機制時,為了重置測試狀態隨手 `rm -rf .claude/gitea-arm`,
|
||
# 把剛請 leo 處理的那筆真請求也一起清掉了——leo 差點拿一組已經失效的代碼去回覆。
|
||
# **叫人做事然後把前提刪掉,浪費的是他的注意力**,而那正是這整套系統最該省的東西。
|
||
#
|
||
# ⇒ 規約:**發出請求後,不准動該請求的狀態檔**
|
||
# (不 `rm -rf .claude/gitea-arm/`、不手動刪 `pending/*.json`、不改內容)。
|
||
# 讓它自然被 `scripts/gitea-arm-check.sh` 消耗,或自然過期。
|
||
# 真的要清「已知作廢」的單一 nonce,也只刪那一個檔,不要整個目錄清空。
|
||
#
|
||
# ⇒ 這支的存在本身就是防呆:**清東西前先看看有沒有還活著的請求**,
|
||
# 別在不知道自己清了什麼的狀態下動那個目錄。
|
||
set -uo pipefail
|
||
|
||
SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
|
||
# shellcheck source=lib/gitea-arm-common.sh
|
||
. "$SCRIPT_DIR/lib/gitea-arm-common.sh"
|
||
|
||
STATE_DIR=$(gitea_arm_state_dir)
|
||
PENDING_DIR="$STATE_DIR/pending"
|
||
NOW=$(date +%s)
|
||
|
||
shopt -s nullglob
|
||
PENDING_FILES=("$PENDING_DIR"/*.json)
|
||
shopt -u nullglob
|
||
|
||
if [ "${#PENDING_FILES[@]}" -eq 0 ]; then
|
||
echo "(沒有待核請求,這個目錄現在動它是安全的)"
|
||
exit 0
|
||
fi
|
||
|
||
echo "🔴 下面這些請求還活著——動 .claude/gitea-arm/ 之前先看這份清單:"
|
||
echo ""
|
||
for PF in "${PENDING_FILES[@]}"; do
|
||
NONCE=$(jq -r '.nonce // "?"' "$PF" 2>/dev/null)
|
||
MISSION=$(jq -r '.mission // "?"' "$PF" 2>/dev/null)
|
||
ISSUE=$(jq -r '.issue // "?"' "$PF" 2>/dev/null)
|
||
EXPIRES_AT=$(jq -r '.expires_at // 0' "$PF" 2>/dev/null)
|
||
case "$EXPIRES_AT" in ''|*[!0-9]*) EXPIRES_AT=0;; esac
|
||
EXPIRES_HUMAN=$(date -r "$EXPIRES_AT" '+%Y-%m-%d %H:%M:%S' 2>/dev/null || date -d "@$EXPIRES_AT" '+%Y-%m-%d %H:%M:%S' 2>/dev/null || echo "?")
|
||
if [ "$NOW" -ge "$EXPIRES_AT" ]; then
|
||
STATUS="⌛ 已過期(下次 check 會自動清掉,不必手動動它)"
|
||
else
|
||
STATUS="⏳ 還在等 Leo 回覆($EXPIRES_HUMAN 前有效)"
|
||
fi
|
||
echo " $NONCE(#$ISSUE)— $MISSION"
|
||
echo " $STATUS"
|
||
done
|