人在現場那一路的根目錄解析帶上文件記載的預設值 #22

Merged
admin merged 1 commits from fix/attended-root-resolve-carries-its-default into develop 2026-09-04 03:54:45 +00:00
Member

摘要

  • 需求描述:人在現場叫用 start 時,技能第 0 步解不出工具根目錄,操作停在那裡。技能本文寫著那一行「涵蓋了文件記載的 ~/.jsc 退讓」——實際上沒有。這張把預設值寫進解析式,讓那句話成立。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
skills/assistant/SKILL.md 四處解析式帶上預設值;改寫「為什麼要帶預設」與「目錄檢查為什麼留著」兩段;實測表加一段說明新寫法為什麼結論相同
references/behaviors.md 事故記述改成過去式
三份 manifest 版號 0.2.0 升到 0.2.1

這一行為什麼是壞的

技能只有一條路讓人在現場的叫用取得根目錄:

readlink -f "$JSC_HOME/current"

旁邊那句話說它「covers the documented ~/.jsc fallback in the same call」。殼並不知道那個變數的文件預設值是什麼。 變數沒設時這一行展開成 /current,不是退讓到家目錄底下,就只是一條錯的路徑。

這台機器從頭到尾沒設過 JSC_HOME,.bashrc 裡也沒有。所以每一次人在現場叫用都停在第 0 步。

守衛擋對了,但指錯方向

第 0 步的第四道檢查抓到了:/current 非空、是絕對路徑、結束碼 0,前三項全過,只有 [ -d ] 攔得住。

但它接著開的藥方是「回報根目錄不見了、叫人跑 jsc-cli:deploy」。實際上根目錄好好的——連結農場十一條齊全。壞的是解析式自己,而報出來的原因指向不相干的地方。

一條不能信的解析式,長得跟一個不存在的根目錄一模一樣。

目錄檢查留著,理由改寫過

帶了預設值之後,變數沒設不再解成 /current。但那道檢查不能拿掉——交出一條看起來合理卻不存在的路徑,成因不只一種:

  • JSC_HOME 指到已經刪掉的目錄
  • 精簡環境裡連 HOME 都沒設
  • 連結農場根本還沒部署

三種都一樣過得了前三道關。本文把這三種寫進去,免得下一輪有人看到「預設值已經涵蓋了」就把檢查刪掉。

兩份文件本來就不一致

references/behaviors.md 的關鍵步驟早就寫著帶預設值的形狀,是技能本文漂走了。而會被執行的是漂走的那一份。

這一次把兩份對齊,並把行為清單裡的事故記述改成過去式——它原本描述的是修好之前的行為,留著會讓下一輪有人照它重寫回錯的形狀。

實測表那一列不動

第四列量的是 readlink -f "$JSC_HOME/current" 被擋下。那是量到的結果,不改寫。

新寫法一樣帶變數,無人值守一樣被擋,所以結論相同。表下面加了一段講明這件事:預設值改的是解析出哪一條路徑,不是誰可以跑它。 無人值守那一輪的根目錄照舊由裝排程的人寫進條目,這一行永遠只走人在現場那一路。

測試結果

三種環境各驗一次:

環境 解出來 [ -d ]
JSC_HOME 沒設 /root/.jsc/current 存在
JSC_HOME 設成正確值 /root/.jsc/current 存在
JSC_HOME 指到不存在的路徑 空 擋下,正確
  • lint-scripts.sh、check-behaviors.sh、ste100-lint.sh 三支都回結束碼 0。
  • check-skill-paths.sh 零缺失。
  • 全文掃過一次,除了實測表那一列,不帶預設值的解析式一處都不剩。

這件事是怎麼被發現的

跑真機的第一次 start 踩到的。那一次的內建項對齊有跑完、種入 16 筆,巡檢因為上一輪還持著鎖而讓開——但在那之前,第 0 步就已經先停過一次了。

前置 Push Request

  • 無
## 摘要 - 需求描述:人在現場叫用 `start` 時,技能第 0 步解不出工具根目錄,操作停在那裡。技能本文寫著那一行「涵蓋了文件記載的 `~/.jsc` 退讓」——實際上沒有。這張把預設值寫進解析式,讓那句話成立。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `skills/assistant/SKILL.md` | 四處解析式帶上預設值;改寫「為什麼要帶預設」與「目錄檢查為什麼留著」兩段;實測表加一段說明新寫法為什麼結論相同 | | `references/behaviors.md` | 事故記述改成過去式 | | 三份 manifest | 版號 0.2.0 升到 0.2.1 | ## 這一行為什麼是壞的 技能只有一條路讓人在現場的叫用取得根目錄: ``` readlink -f "$JSC_HOME/current" ``` 旁邊那句話說它「covers the documented `~/.jsc` fallback in the same call」。**殼並不知道那個變數的文件預設值是什麼。** 變數沒設時這一行展開成 `/current`,不是退讓到家目錄底下,就只是一條錯的路徑。 這台機器從頭到尾沒設過 `JSC_HOME`,`.bashrc` 裡也沒有。所以每一次人在現場叫用都停在第 0 步。 ## 守衛擋對了,但指錯方向 第 0 步的第四道檢查抓到了:`/current` 非空、是絕對路徑、結束碼 0,前三項全過,只有 `[ -d ]` 攔得住。 但它接著開的藥方是「回報根目錄不見了、叫人跑 `jsc-cli:deploy`」。實際上根目錄好好的——連結農場十一條齊全。**壞的是解析式自己,而報出來的原因指向不相干的地方。** 一條不能信的解析式,長得跟一個不存在的根目錄一模一樣。 ## 目錄檢查留著,理由改寫過 帶了預設值之後,變數沒設不再解成 `/current`。但那道檢查不能拿掉——交出一條看起來合理卻不存在的路徑,成因不只一種: - `JSC_HOME` 指到已經刪掉的目錄 - 精簡環境裡連 `HOME` 都沒設 - 連結農場根本還沒部署 三種都一樣過得了前三道關。本文把這三種寫進去,免得下一輪有人看到「預設值已經涵蓋了」就把檢查刪掉。 ## 兩份文件本來就不一致 `references/behaviors.md` 的關鍵步驟**早就寫著帶預設值的形狀**,是技能本文漂走了。而會被執行的是漂走的那一份。 這一次把兩份對齊,並把行為清單裡的事故記述改成過去式——它原本描述的是修好之前的行為,留著會讓下一輪有人照它重寫回錯的形狀。 ## 實測表那一列不動 第四列量的是 `readlink -f "$JSC_HOME/current"` 被擋下。那是量到的結果,不改寫。 新寫法一樣帶變數,無人值守一樣被擋,所以結論相同。表下面加了一段講明這件事:**預設值改的是解析出哪一條路徑,不是誰可以跑它。** 無人值守那一輪的根目錄照舊由裝排程的人寫進條目,這一行永遠只走人在現場那一路。 ## 測試結果 三種環境各驗一次: | 環境 | 解出來 | `[ -d ]` | | --- | --- | --- | | `JSC_HOME` 沒設 | `/root/.jsc/current` | 存在 | | `JSC_HOME` 設成正確值 | `/root/.jsc/current` | 存在 | | `JSC_HOME` 指到不存在的路徑 | 空 | 擋下,正確 | - `lint-scripts.sh`、`check-behaviors.sh`、`ste100-lint.sh` 三支都回結束碼 0。 - `check-skill-paths.sh` 零缺失。 - 全文掃過一次,除了實測表那一列,不帶預設值的解析式一處都不剩。 ## 這件事是怎麼被發現的 跑真機的第一次 `start` 踩到的。那一次的內建項對齊有跑完、種入 16 筆,巡檢因為上一輪還持著鎖而讓開——但在那之前,第 0 步就已經先停過一次了。 ## 前置 Push Request - 無
jiantw83 added 1 commit 2026-09-04 03:53:48 +00:00
技能本文寫著那一行「涵蓋了文件記載的 ~/.jsc 退讓」,實際上沒有。JSC_HOME
沒設時 $JSC_HOME/current 展開成 /current,不是退讓到任何地方——殼並不知道
那個變數的文件預設值是什麼。解析式現在自己帶預設,退讓才真的發生。

這台機器從頭到尾沒設過那個變數,所以每一次人在現場叫用都停在第 0 步,而且
守衛開的藥方指向不相干的地方:它說根目錄不見了、叫人跑部署,但根目錄好好
的,壞的是解析式自己。排程那一路不受影響,條目自己帶著變數值。

目錄檢查留著,理由改寫進本文:解析式交出一條看起來合理卻不存在的路徑,
不是只有變數沒設一種成因——變數指到已經刪掉的目錄、精簡環境裡連家目錄都
沒設、連結農場根本還沒部署,三種都一樣過得了前三道關。

行為清單那一份早就寫對了,是技能本文漂走。這一次把兩份對齊,並把事故記述
改成過去式,免得下一輪有人照著它重寫回錯的形狀。

實測表第四列不動:那是量到的結果,而且新寫法一樣帶變數、無人值守一樣被擋,
另外加一段講明預設值改的是解析出哪條路徑,不是誰可以跑它。

三份 manifest 版號 0.2.0 升到 0.2.1。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
admin merged commit eade09bf62 into develop 2026-09-04 03:54:45 +00:00
admin deleted branch fix/attended-root-resolve-carries-its-default 2026-09-04 03:54:45 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/assist#22