Files
ISEP/docs/cloud-setup-script.sh
T
Leo e255e23f01 docs(cloud): 官方文件核實後修正 Plan A 假設+補完整環境變數盤點(InkStoneCo#14)
查官方文件(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>
2026-08-20 22:04:25 +08:00

49 lines
3.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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` 直接從本機 ISEPInkStoneCo 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 啟動時直接生效。"