跳到內容

設定

所有設定都存放在專案根目錄的 .env 檔案中。此檔案已加入 gitignore — 永遠不會被提交。

容器支援兩種互斥的驗證模式(依優先順序排列):

  • LiteLLM 代理 — 設定 LITELLM_BASE_URLLITELLM_API_KEY 以透過 LiteLLM 代理路由(見下方)。
  • OAuth 模式 — 僅設定 CLAUDE_CODE_OAUTH_TOKEN(見下方)。

請勿混合使用模式 — 僅使用其中一種。

變數說明範例
CLAUDE_CODE_OAUTH_TOKEN來自 Claude Max 訂閱的 OAuth 權杖sk-ant-oat01-...

設定後,Claude Code 會直接使用 OAuth 向 Anthropic 進行驗證 — 無需 API 金鑰或代理。您可以從 Claude Code 設定或 Anthropic 主控台 取得權杖。

如果您的 LiteLLM(或其他)代理已支援原生 Anthropic Messages API — 包括 web_search、串流及工具使用 — 請將 LITELLM_BASE_URL 設定為代理網域。容器會自動衍生提供者特定的 URL:

  • Anthropic 端點 → ${LITELLM_BASE_URL}/anthropic(Claude Code 使用)
  • OpenAI 相容端點 → ${LITELLM_BASE_URL}/openai/v1
變數說明範例
LITELLM_BASE_URL您的 LiteLLM 代理網域(不含路徑後綴)https://litellm.example.com
LITELLM_API_KEY代理驗證用的 API 金鑰your-api-key 或預設為 litellm-proxy

使用者只需設定網域 — 提供者路徑後綴會自動附加。 在執行時,進入點會從 LITELLM_API_KEY 衍生出 ANTHROPIC_API_KEY,讓 Claude Code 能使用代理憑證,而無需額外的使用者面向變數。

在此模式下,模型名稱不會被重新對應。Claude Code 會發送其標準模型識別碼(例如 claude-sonnet-4-6),由 LiteLLM 將其路由至您設定的後端。

預設情況下,Node.js 會驗證所有 HTTPS 連線的 TLS 憑證。如果您的上游 API 提供者使用自簽憑證(常見於內部 Open WebUI 或 LiteLLM 代理),您可以在 .env 檔案中新增以下設定來停用驗證:

NODE_TLS_REJECT_UNAUTHORIZED=0

這在正式環境中不建議使用。僅在您信任容器與 API 端點之間的網路路徑時才設定此項。

除了 Claude Code 之外,容器還包含多個 AI 程式撰寫代理:

代理指令提供者
CodexcodexOpenAI 相容
Pipi多提供者(在執行時設定)
Oh-My-Piomp多提供者(在執行時設定)

Pi 和 Oh-My-Pi 以全域 npm 套件安裝。Codex 是獨立的二進位檔,會在執行時自動更新。

容器執行虛擬顯示堆疊,用於觀看及操作有視窗的瀏覽器。請參閱遠端顯示 (noVNC) 了解連線說明及環境變數(ENABLE_VNCVNC_RESOLUTIONDISPLAYNOVNC_HOST_PORT)。

容器包含預先設定的 Chrome DevTools MCP 伺服器,用於無頭瀏覽器自動化。Claude Code 可以瀏覽網頁、截取螢幕擷圖及檢查 DOM,無需任何額外設定。詳情請參閱 Chrome DevTools MCP

變數說明設定方式
GIT_AUTHOR_NAMEgit 提交的名稱git config user.name
GIT_AUTHOR_EMAILgit 提交的電子郵件git config user.email

如果主機上已設定 git,可自動填入兩個值:

Terminal window
echo "GIT_AUTHOR_EMAIL=$(git config user.email)" >> .env
echo "GIT_AUTHOR_NAME=\"$(git config user.name)\"" >> .env
變數說明設定方式
SSH_PRIVATE_KEYBase64 編碼的私鑰base64 < ~/.ssh/id_ed25519
變數說明設定方式
GH_TOKEN用於 gh CLI 和 HTTPS git 的 GitHub 個人存取權杖gh auth token(如果本機已安裝 gh

.env 中設定了 GH_TOKEN 時,gh CLI 會自動驗證 — 無需執行 gh auth login。進入點也會執行 gh auth setup-git,這會設定 git 憑證助手,讓 HTTPS 的 git clonegit push 無需 SSH 金鑰即可運作。

如果主機上已安裝並驗證 gh,可直接擷取權杖:

Terminal window
echo "GH_TOKEN=$(gh auth token)" >> .env

否則,請建立個人存取權杖並手動新增。細粒度權杖(建議使用)和傳統權杖均可使用。細粒度權杖可讓您將存取範圍限定至特定儲存庫。傳統權杖需要 repo 範圍才能存取私有儲存庫。

若要在容器內驗證身份驗證:

Terminal window
gh auth status

每個語言執行環境、CLI 和工具都在映像建置時直接安裝於 Dockerfile 中。預建映像會在每次推送至 main 時發布至 ghcr.io/f5-sales-demo/devcontainer:latest,因此大多數使用者無需在本機建置。

執行 docker compose up -d 會自動拉取預建映像。若要在自訂 Dockerfile 後於本機建置,請明確指定建置檔案:

Terminal window
docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build

詳情請參閱本機開發

Dockerfile 使用針對 Docker 層級快取最佳化的兩階段建置。請參閱本機開發 — 兩階段建置架構了解完整的層級分解及建置快取詳情。

容器包含內建設定,防止 Claude Code 混淆工具名稱。工具感知安裝在兩個記憶層級,以實現縱深防禦:

  • 受管原則 (/etc/claude-code/CLAUDE.md) — 在 Docker 建置時安裝。這是 Claude Code 記憶階層中最高優先級的層級,即使工作目錄中存在大型專案 CLAUDE.md,也會始終載入。
  • 使用者記憶 (~/.claude/CLAUDE.md) — 在首次啟動時由進入點建立。提供備份層級及使用者可見、可自訂的副本。

Claude Code 從多個記憶層級載入指令(由高到低優先順序):

  1. 受管原則 (/etc/claude-code/) — 始終載入,無法排除
  2. 專案記憶 (./CLAUDE.md) — 依專案目錄載入
  3. 使用者記憶 (~/.claude/CLAUDE.md) — 全域載入,適用於所有工作階段
  4. 本機記憶 (./CLAUDE.local.md) — 個人的專案級覆寫

若沒有受管原則層級,使用者記憶中的工具感知在與大型專案級 CLAUDE.md 競爭時可能被降低優先順序,導致 Claude 失去對其 PascalCase 工具名稱的感知。受管層級保證工具感知始終以最高優先順序載入。

執行內建自我測試以驗證設定:

Terminal window
claude-self-test

這會檢查所有設定檔是否就位且包含預期的工具參考。

若要將工具新增至映像,請編輯 Dockerfile 並在本機重新建置。請參閱本機開發 — 新增工具了解如何新增 APT 套件、npm 工具、pip 工具及二進位檔下載。

擴充功能在 .devcontainer/devcontainer.jsoncustomizations.vscode.extensions 下設定,在 VS Code 中開啟時會自動安裝。

所有資料存放在具名磁碟區中 — 不掛載主機目錄:

磁碟區掛載點內容
workspace/workspace您複製的儲存庫和專案檔案
home/home/vscodeShell 歷史紀錄、工具設定、快取、SSH 金鑰

兩者在容器重新啟動和重建後均會保留。執行 docker compose pull 以在重新啟動前取得最新的預建映像。

操作資料
docker compose down保留
docker compose down -v刪除
主機容器服務
127.0.0.1:${NOVNC_HOST_PORT:-6080}6080noVNC 遠端顯示(僅限 localhost,可透過 NOVNC_HOST_PORT 覆寫)

連接埠繫結至 127.0.0.1,因此只能從您的機器存取,無法從網路存取。