e255e23f01
查官方文件(code.claude.com/docs/en/cloud-environments 的「What carries over」表)發現:今天裝好的 --scope user 機制很可能不會被雲端 session 讀到 (user-scope enabledPlugins 明文寫「不會帶到雲端」);先前引用的 「Pre-populate plugins for containers」是另一個機制(CLAUDE_CODE_PLUGIN_ SEED_DIR,給自架容器用),不是 claude.ai Cloud environments 產品。 新增 docs/cloud-environment-audit-20260820.md: - Plan A 風險(本機隔離環境重跑一次,貼新鮮輸出佐證腳本本身沒問題) - Plan B(官方文件證實可行:把 ISEP 宣告進連線 repo 自己的 settings.json) - Plan C(今天新查到:claude --cloud 直接從本機 checkout 打包,完全不經 過 GitHub 薄殼,官方文件證實可行) - 舊雲端環境變數逐一比對 credentials-map.md:八個名字(CLOUDFLARE_ACCOUNT_ID 等)確認來自 polaris/mira/.env(leo21c 現役),與 cloud 總管工作無關, 建議排除 - 薄殼/ISEP 共存風險分析(不會打架,除非 bootstrap.sh 重新把 InkStoneCo/ clone 進薄殼workspace) scripts/make-cloud-env.sh:NEEDED 從 1 個擴到 8 個,排除 leo21c 來源的 憑證,加註每個變數的出處依據。 docs/TESTING.md、docs/cloud-setup-script.sh、docs/cloud-session-bootstrap.md: 補上指向審計文件的警示與 Plan B/C 的 fallback 指引。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
49 lines
3.0 KiB
Bash
49 lines
3.0 KiB
Bash
#!/usr/bin/env bash
|
||
# 貼進 code-on-web「Cloud environments → 你的環境 → Setup script」欄位的內容。
|
||
# 不是 ISEP 的一部分(不會被 Claude Code 當 hook/command/skill 掃描),
|
||
# 純粹是給 leo 複製貼上的參考檔,見 docs/cloud-session-bootstrap.md。
|
||
#
|
||
# 前提(要先在同一個 Cloud environment 的 Environment variables 欄位加好):
|
||
# GITEA_TOKEN_CLAUDE_CODE ← 既有機器帳號 token,名字沿用 InkStoneCo#14 已建立的那把,
|
||
# 不要新造一把。值本身不寫在這支腳本或任何檔案裡。
|
||
#
|
||
# 這支腳本做兩件事:
|
||
# 1. 設定 git URL 重寫,讓任何對 git.uncle6.me 的 clone 都能用 GITEA_TOKEN_CLAUDE_CODE 認證
|
||
# (官方文件對「CI/CD 裝私有 marketplace」建議的寫法,見 references 段)。
|
||
# 2. 直接把 ISEP 裝成 user-scope plugin ——不是「複製一份」,是跟本機一樣走
|
||
# `claude plugin marketplace add` + `claude plugin install`,裝的東西
|
||
# 100% 來自 inkstone/ISEP 這個 repo 本身,沒有第二份內容。
|
||
#
|
||
# 何時跑:只在「這個 Cloud environment 第一次開 session」時跑一次,
|
||
# 跑完 Anthropic 會把整個檔案系統拍成快照,之後的 session 直接沿用快照
|
||
# (不重跑,除非改了這支腳本本身、改了 allowed network hosts、或快照滿 7 天過期)。
|
||
# ⇒ 這是唯一會讓「ISEP 改了但雲端還是舊的」重新出現的地方,
|
||
# 緩解法見 docs/cloud-session-bootstrap.md「已知限制」段。
|
||
#
|
||
# 🔴 2026-08-20:查官方文件核實後,這支腳本裝的東西(--scope user)
|
||
# 很可能不會被雲端 session 讀到(官方文件:使用者層級的 enabledPlugins
|
||
# 不會帶到雲端 session)。這支腳本本身沒有 bug(本機隔離環境重跑過,
|
||
# 乾淨成功)——問題是「裝的位置」。貼進 Setup script 欄位後,
|
||
# 第一件事是照 docs/TESTING.md 的 B2 驗 `claude plugin list` 真的看得到
|
||
# isep@inkstone;看不到就改用 docs/cloud-environment-audit-20260820.md
|
||
# 的 Plan B(宣告進連線 repo 自己的 .claude/settings.json)或 Plan C
|
||
# (`claude --cloud` 直接從本機 ISEP/InkStoneCo checkout 打包,完全
|
||
# 不經過這支腳本)。詳細分析見該份審計文件。
|
||
|
||
set -euo pipefail
|
||
|
||
if [ -z "${GITEA_TOKEN_CLAUDE_CODE:-}" ]; then
|
||
echo "❌ 找不到 GITEA_TOKEN_CLAUDE_CODE —— 去 Cloud environment 的 Environment variables 加這個名字" >&2
|
||
exit 1
|
||
fi
|
||
|
||
# 官方文件建議的私有 marketplace 認證寫法:只重寫這個 host 的 URL,不動其他 git 操作。
|
||
git config --global url."https://x-access-token:${GITEA_TOKEN_CLAUDE_CODE}@git.uncle6.me/".insteadOf \
|
||
"https://git.uncle6.me/"
|
||
|
||
# 用乾淨網址(不帶 token)加 marketplace,實際認證交給上面那條 URL 重寫。
|
||
claude plugin marketplace add https://git.uncle6.me/inkstone/ISEP.git --scope user
|
||
claude plugin install isep@inkstone --scope user
|
||
|
||
echo "✅ ISEP 已裝成 user-scope plugin,之後每個 session 啟動時直接生效。"
|