什麼都不設就會動到 leo 的正式實例——預設值指著他的知識庫 #110

Open
opened 2026-08-12 15:18:59 +00:00 by Leo · 1 comment
Owner

症狀

CLI 的全域設定指向 leo21c(leo 唯一一份知識庫的實例):

$ acr whoami
  模式    self-hosted
  帳號    ak_402de…  ← 全域 ~/.arcrun/config.yaml
  連哪台  https://arcrun-cypher-executor.leo21c.workers.dev
  MCP     https://arcrun-mcp.leo21c.workers.dev/mcp

任何人在這台機器上裸跑任何 acr 指令,預設就是動 leo 的正式實例。
沒有任何提示、沒有二次確認。

為什麼這是問題

leo 2026-08-12 定義三台的角色:

youlin    = 測試場(測試在這裡做)
geek6688  = 出貨機/第一個顧客(總管手動更新到最新)
leo21c    = 一般實例,走正規更新管道

測試該打 youlin,而預設卻是 leo21c。

想做對事的人要每次記得帶四個 env(ARCRUN_API_KEYARCRUN_CYPHER_EXECUTOR_URL
ARCRUN_MCP_URLCLOUDFLARE_*),漏一個就掉回全域值——
2026-08-12 總管更新 geek6688 時就差點漏掉 ARCRUN_MCP_URL,那會把 MCP 設定寫到錯的一台。

arcrun-rag CLAUDE.md 白紙黑字:「要看範例或做任何測試 → 只在 youlin」。
規則存在,但預設值指著相反的方向。

要達成什麼

打到 leo 的正式實例要是「刻意的」,不是「什麼都不做的結果」。

不指定做法。方向供評估:預設切成 youlin/打非測試場時要求確認/
whoami 在打正式實例時醒目標示/專案層 .arcrun.yaml 讓不同資料夾自動切。

請自己判斷。 但有一題請回答:預設值該是「最安全的」還是「最常用的」?
(leo 自己用的時候,最常用的就是他自己那台——這兩者在他身上是衝突的。)

怎麼驗才算數

  1. 在沒有任何 env/專案設定的乾淨環境下跑一個會寫入的指令 → 它不會默默打 leo21c
  2. leo 自己要打自己那台時,不能變得很麻煩(他是主要使用者)
  3. whoamiconfig 的輸出要能一眼看出「我現在會動到誰」

紅線

  • 🔴 不准直接改 leo 機器上的 ~/.arcrun/config.yaml(那是他的設定,要他自己改或明確同意)
  • 🔴 不准推 main、不准動 prod

📍 repo:matrix/arcruncli/src/lib/config.tscli/src/commands/whoami.ts
📍 相關:.claude/rules/07-thin-shell.md §4「統一帳號來源」|Arcrun#97(動錯實例的後果)

## 症狀 CLI 的**全域設定指向 leo21c**(leo 唯一一份知識庫的實例): ``` $ acr whoami 模式 self-hosted 帳號 ak_402de… ← 全域 ~/.arcrun/config.yaml 連哪台 https://arcrun-cypher-executor.leo21c.workers.dev MCP https://arcrun-mcp.leo21c.workers.dev/mcp ``` ⇒ **任何人在這台機器上裸跑任何 `acr` 指令,預設就是動 leo 的正式實例。** 沒有任何提示、沒有二次確認。 ## 為什麼這是問題 leo 2026-08-12 定義三台的角色: ``` youlin = 測試場(測試在這裡做) geek6688 = 出貨機/第一個顧客(總管手動更新到最新) leo21c = 一般實例,走正規更新管道 ``` ⇒ **測試該打 youlin,而預設卻是 leo21c。** 想做對事的人要每次記得帶四個 env(`ARCRUN_API_KEY`/`ARCRUN_CYPHER_EXECUTOR_URL`/ `ARCRUN_MCP_URL`/`CLOUDFLARE_*`),**漏一個就掉回全域值**—— 2026-08-12 總管更新 geek6688 時就差點漏掉 `ARCRUN_MCP_URL`,那會把 MCP 設定寫到錯的一台。 而 `arcrun-rag` CLAUDE.md 白紙黑字:「要看範例或做任何測試 → **只在 youlin**」。 **規則存在,但預設值指著相反的方向。** ## 要達成什麼 **打到 leo 的正式實例要是「刻意的」,不是「什麼都不做的結果」。** 不指定做法。方向供評估:預設切成 youlin/打非測試場時要求確認/ `whoami` 在打正式實例時醒目標示/專案層 `.arcrun.yaml` 讓不同資料夾自動切。 **請自己判斷。** 但有一題請回答:**預設值該是「最安全的」還是「最常用的」?** (leo 自己用的時候,最常用的就是他自己那台——這兩者在他身上是衝突的。) ## 怎麼驗才算數 1. 在沒有任何 env/專案設定的乾淨環境下跑一個會寫入的指令 → **它不會默默打 leo21c** 2. leo 自己要打自己那台時,**不能變得很麻煩**(他是主要使用者) 3. `whoami`/`config` 的輸出要能一眼看出「我現在會動到誰」 ## 紅線 - 🔴 不准直接改 leo 機器上的 `~/.arcrun/config.yaml`(那是他的設定,要他自己改或明確同意) - 🔴 不准推 main、不准動 prod 📍 repo:`matrix/arcrun`(`cli/src/lib/config.ts`、`cli/src/commands/whoami.ts`) 📍 相關:`.claude/rules/07-thin-shell.md` §4「統一帳號來源」|`Arcrun#97`(動錯實例的後果)
Author
Owner

📐 收工標準補一條:修完要留一道會擋的閘(leo 2026-08-12 立原則後回頭補)

leo 2026-08-12:「做一個平台要減少 hotfix。

當晚實測:32 個 commit,其中 5 個在修「上一個修法造成的問題」
把那些 hotfix 逐個追根,全部由同兩種缺陷生出來:

  1. 同一個能力有兩份實作 ⇒ 修一次只到一半
  2. 規則存在,但沒有機制驗證有沒有照做 ⇒ 靠人記得,而人不記得

🔴 本票屬於第 ② 類。 對照組:.worker-builds 落後源碼這件事 Arcrun#93 守著
——當晚它擋對三次,每次都攔下一個「會送出舊東西」的出貨。
而本票這件事沒有守門員,所以它發生了,而且沒有任何一步會紅燈。

⇒ 因此本票的收工標準多一條(與原有的驗收並列,不取代)

修掉當下這個 bug 不算完成;要留下一個「下次再犯會被擋住」的機制。

那個機制長什麼樣由你判斷(hook/CI check/測試/管線的一站都可以),但要滿足:

  • 會擋,不是只提醒——當晚另一個教訓:「hook 只提醒不擋 ⇒ 我三次跳過都沒被攔住」
  • 誤攔比漏攔更容易殺死一道閘——被擋得莫名其妙,人就會學會繞過它,那它等於不存在。
    ⇒ 判準要看「這個動作有沒有在做那件事」,不是「字串裡有沒有出現那個詞」。
    (當晚總管修三道閘、製造了 5 次誤攔,全是這個病。)
  • 要能被測試——當晚有一道閘連「讀它自己的原始碼」都擋,導致它無法被驗證。
    迴歸測試寫成獨立檔案再跑,別讓閘擋住自己的測試。

為什麼加這條

不加的話,這張票修完之後,同一個形狀會在下一個沒人守的地方再出現一次——
而我們會再開一張票、再修一次。那就是 hotfix 迴圈,而平台的工作是讓它停下來。

—— [總管]
EOF

## 📐 收工標準補一條:**修完要留一道會擋的閘**(leo 2026-08-12 立原則後回頭補) leo 2026-08-12:「**做一個平台要減少 hotfix。**」 當晚實測:32 個 commit,**其中 5 個在修「上一個修法造成的問題」**。 把那些 hotfix 逐個追根,全部由同兩種缺陷生出來: 1. **同一個能力有兩份實作** ⇒ 修一次只到一半 2. **規則存在,但沒有機制驗證有沒有照做** ⇒ 靠人記得,而人不記得 🔴 **本票屬於第 ② 類。** 對照組:`.worker-builds` 落後源碼這件事**有** `Arcrun#93` 守著 ——當晚它擋對三次,每次都攔下一個「會送出舊東西」的出貨。 而本票這件事**沒有守門員**,所以它發生了,而且沒有任何一步會紅燈。 ### ⇒ 因此本票的收工標準多一條(與原有的驗收並列,不取代) **修掉當下這個 bug 不算完成;要留下一個「下次再犯會被擋住」的機制。** 那個機制長什麼樣由你判斷(hook/CI check/測試/管線的一站都可以),但要滿足: - **會擋,不是只提醒**——當晚另一個教訓:「hook 只提醒不擋 ⇒ 我三次跳過都沒被攔住」 - **誤攔比漏攔更容易殺死一道閘**——被擋得莫名其妙,人就會學會繞過它,那它等於不存在。 ⇒ 判準要看「**這個動作有沒有在做那件事**」,不是「**字串裡有沒有出現那個詞**」。 (當晚總管修三道閘、製造了 5 次誤攔,全是這個病。) - **要能被測試**——當晚有一道閘連「讀它自己的原始碼」都擋,導致它無法被驗證。 迴歸測試寫成獨立檔案再跑,別讓閘擋住自己的測試。 ### 為什麼加這條 不加的話,這張票修完之後,**同一個形狀會在下一個沒人守的地方再出現一次**—— 而我們會再開一張票、再修一次。**那就是 hotfix 迴圈,而平台的工作是讓它停下來。** —— [總管] EOF
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Leo/Arcrun#110