Repository navigation
Conversation
…ne + uv 原版 Dockerfile.hermes 從 raw.githubusercontent.com 抓 install.sh, 在共用 CI runner 上頻繁 429 導致 smoke test 失敗(PR openabdev#1523 移除的原因)。 改為三段式 multi-stage build: - hermes-deps stage: git clone hermes-agent repo + uv sync(繞過 rate limit) - 支援 HERMES_PROFILE build arg: minimal(~250MB)/ full(~900MB) - minimal 不裝 ffmpeg / gh CLI,靠 Hermes 的 lazy_deps.py 按需安裝 - 清除 .git / uv cache 縮小映像 Refs: #2 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JgBFWacVJ5qgABzqoXs1gA
- uv image 從 :latest 改為 pin 到 0.12.13(供應鏈可重現) - runtime stage 的 uv 改從 hermes-deps stage COPY(同一版本) - 頂部註解修正 429 範圍:只有 Docker build 那行 curl 是 429 殘留, nightly resolver 早就改用認證 GitHub Contents API 了 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JgBFWacVJ5qgABzqoXs1gA
依語言慣例(code comment 一律繁體中文台灣用語),將所有英文 註解改為繁體中文,識別符與指令維持英文原形。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JgBFWacVJ5qgABzqoXs1gA
修復清單(2 Critical + 3 Important): - hermes-deps stage 加裝 git ca-certificates(slim 映像不含 git) - HERMES_PROFILE 預設改為 full(向下相容原版行為) - 移除註解中的舊端點 hostname(AC-1 grep 零出現) - 加入 HERMES_PROFILE 值驗證(typo 中斷建置而非靜默降級) - full profile 加裝 nodejs npm(向下相容 install.sh 行為) - symlink 建立前驗證目標檔案存在 - 移除 uv sync 的不必要 2>&1 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0116kULeLsY8vn9eonV267Qp
Codex re-review 發現 COPY --from=ghcr.io/astral-sh/uv:${UV_VERSION} 的
ARG 插值在部分 Docker 版本不支援。改用 FROM ... AS uv 具名 stage,
所有 COPY --from=uv 都引用同一個釘選版本,可攜性更好。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0116kULeLsY8vn9eonV267Qp
Owner
Author
Final Aggregated Review — PR #3 (Re-review Round 1)Modegroup-review (2/3 voices active; Gemini voice failed) Contract compliance
Blocking set: EMPTY所有 R1 的 2 Critical + 3 Important 已修復並驗證:
Deferred for lack of evidence (not blocking)
Actionable NIT (deferred — never blocks)None remaining after fixes. Voices unavailable
|
Owner
Author
Final Aggregated Review — PR #3 (Re-review Round 2 — final)Modegroup-review (2/3 voices active: Claude + Codex; Gemini unavailable — 2 consecutive Stage 1 failures) Contract compliance
Blocking set: EMPTYRound 1 findings(3 Critical + 4 Important,全部已修復):
Round 2 findings(1 Critical,已修復):
Actionable NIT (deferred — never blocks)
Voices unavailable
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
重寫
Dockerfile.hermes,修正 Docker build 階段從raw.githubusercontent.com抓 install.sh導致的 429 rate limit 問題(PR openabdev#1523 移除 Hermes 的直接原因)。
改為三段式 multi-stage build:
git clone(Git smart HTTP,不同 rate limit pool)+uv sync --lockedghcr.io/astral-sh/uv:0.12.13COPY(GHCR CDN,版本釘選)額外改進:
HERMES_PROFILEbuild arg:minimal(~250MB)/full(~900MB)tools/lazy_deps.py按需安裝.git/ uv cache 縮小映像uv.lock的 per-package SHA256 hash 承擔Refs: #2
Review Contract
Goal
消除 Docker build 階段對
raw.githubusercontent.com的未認證存取(唯一的 429 殘留來源),讓 Hermes 映像在共用 CI runner 上可靠建置。
Non-goals
Accepted Residual Risks
失敗模式:
git cloneGitHub 在極端情況下可能暫時不可用影響:build 失敗(與原版 curl 429 相同類型)
接受邊界:GitHub 全站級中斷,非 rate limit
緩解:Docker layer cache 在 commit 不變時不重新 clone
偵測/恢復:build 失敗有明確錯誤訊息
Accepted by: howie
失敗模式:
uv sync --locked需要存取 PyPI 下載套件影響:build 失敗
接受邊界:PyPI 可用性通常 >99.9%,且有 CDN
緩解:Docker layer cache;
--locked確保可重現偵測/恢復:uv 有明確錯誤訊息
Accepted by: howie
Acceptance Criteria
raw.githubusercontent.com(grep 確認零出現)HERMES_PROFILE=minimal不安裝 ffmpeg、Node.js、gh CLIHERMES_PROFILE=full安裝 ffmpeg + gh CLI(向下相容原版行為):latest)uv.lock的 SHA256 hash 承擔(--lockedflag)git clone後git fetch --depth 1 origin <commit>+git checkout FETCH_HEADFollow-ups
🤖 Generated with Claude Code
https://claude.ai/code/session_0116kULeLsY8vn9eonV267Qp