fix(assistant): 讓執行路徑走錯與警示原因都看得見
兩支腳本開跑就檢查自己的執行路徑,監控頁的摘要表與最新一輪那一塊補上 「警示來源」。 兩件都是實測之後補的。用全新的 CLI 行程跑,代理人會把工具路徑解回外掛 快取那一份,不是指定的工作樹那一份。原本的對策只在技能說明書裡寫明禁 止,那是文件約束,擋不住真的走錯的那一輪。權限閘門只放行 current 那一 組確切路徑,走錯就被靜靜擋掉,那一輪不寫心跳,外面只看得到心跳過期。 另一頭,沙箱跑出來的摘要列是「警示、四項全過、待人處理 0」,讀的人看 不出警示哪來。查過不是缺陷:四項來源都讀得到,是讀到的內容有警示。摘 要表的用途本來就是一眼看出從哪一輪開始壞,少了原因那一欄就做不到。 巡檢與排程兩支腳本開跑時先比對自己是不是從 current 底下被叫起來的,不 是就往 stderr 印一行警告,點名實際路徑、應該用的路徑與理由。刻意只警告 不中止:從工作樹直接跑腳本是開發時的正當用法,中止會把那條路擋掉,真 正的失敗本來就發生在權限閘門那裡。摘要表從四欄加到五欄,最新一輪那一 塊也補一列,值取每一處設警示時收下來的短理由,多個用頓號串,沒有就寫 「無」。腳本裡每一處把判定改成警示的地方,一律改走同一支函式順手收下 理由,collect 的輸出多印一行 warn_sources。技能主文、行為清單與監控頁 範本跟著寫明這兩件事。 功能範圍是助理的一輪巡檢與系統排程安裝。
This commit is contained in:
@@ -123,6 +123,22 @@ PERIOD=''
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" 2>/dev/null && pwd)
|
||||
SCRIPT_DIR="${SCRIPT_DIR:-.}"
|
||||
|
||||
# 這支腳本是不是從 $JSC_HOME/current 那一組路徑被叫起來的。不是就大聲警告,但照跑。
|
||||
# 只警告、不中止是刻意的取捨:從工作樹直接跑腳本是開發時的正當用法,中止會把那條路擋掉;
|
||||
# 真正的失敗會發生在權限閘門那裡——閘門只放行 current 那一組確切路徑,用別的路徑那一輪會
|
||||
# 被靜靜擋掉、失敗,而且不會寫心跳,外面只看得到心跳過期。這裡先把話講在前面。
|
||||
warn_if_not_current() {
|
||||
_self="$SCRIPT_DIR/$(basename -- "$0")"
|
||||
_want="$CURRENT/jsc-assist/tools/$(basename -- "$0")"
|
||||
case "$SCRIPT_DIR/" in
|
||||
"$CURRENT"/*) return 0 ;;
|
||||
esac
|
||||
printf '[jsc][助理排程][WARN]:這支腳本是從 %s 跑起來的,不是 %s。權限閘門只放行 current 那一組確切路徑:排程那一輪用別的路徑會被靜靜擋掉,那一輪失敗、不寫心跳,外面只看得到心跳過期。開發時這樣跑沒關係,無人值守那一輪一律走 current。\n' \
|
||||
"$_self" "$_want" >&2
|
||||
return 0
|
||||
}
|
||||
warn_if_not_current
|
||||
|
||||
usage() {
|
||||
cat >&2 <<'EOF'
|
||||
usage: schedule.sh install [patrol|all] [--dry-run] [--cli 代號] [--patrol-cmd 指令] [--period 分鐘]
|
||||
|
||||
Reference in New Issue
Block a user