Paper Illustration Image2
在每個審查者槽位之前,請遵循可選審查者:解析調用 →
.aris/reviewer.json→ Claude Code 預設 (Codex MCP) 並使用reviewer_route.py透過標準的 helper 解析器,保留此槽位的層級、全新上下文、來源/圖片輸入和確定性關卡。 以下 Codex 範例/pins 僅適用於backend=codex;其他路由使用其自身的首次調用/回覆協定。請儲存路由和實際回傳的身份;不可用的選擇為REVIEW_UNAVAILABLE。根據實際的系列/完成度/範圍來分類接受度。將調用審查者/模型/努力覆蓋傳遞給子任務。生成工作者保持不變。
使用 Claude 作為規劃者/審查者 和 本地 Codex app-server MCP 橋接 作為像素渲染器,產生學術級出版品質的論文圖表。
核心設計哲學
┌──────────────────────────────────────────────────────────────────────────┐
│ 多階段迭代工作流程 │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ 使用者請求 │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Claude │ ◄─── 步驟 1: 解析請求,建立初始提示 │
│ │ (規劃者) │ - 提取元件、標籤和資料流向 │
│ │ │ - 撰寫一份論文就緒的圖表簡報 │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │Claude/Codex │ ◄─── 步驟 2: 最佳化佈局描述 │
│ │ 佈局 │ - 精煉元件定位 │
│ │ 審查 │ - 最佳化間距和分組 │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │Claude/Codex │ ◄─── 步驟 3: CVPR/NeurIPS 風格驗證 │
│ │ 風格 │ - 檢查色板、箭頭和標籤標準 │
│ │ 檢查 │ - 在渲染前精煉提示 │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ codex-image2│ ◄─── 步驟 4: 透過橋接進行原生圖片生成 │
│ │ MCP 橋接 │ - 呼叫 generate_start / generate_status │
│ │ + app-server│ - 僅接受原生 imageGeneration 輸出 │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Claude │ ◄─── 步驟 5: 嚴格視覺審查 + 評分 (1-10) │
│ │ (審查者) │ - 驗證邏輯、標籤、箭頭和美觀性 │
│ │ 嚴格! │ - 拒絕不清楚或非論文就緒的圖表 │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ 分數 ≥ 9? ──是──► 接受並輸出 │
│ │ │
│ 否 │
│ │ │
│ ▼ │
│ 產生具體的改善回饋 ──► 迴圈回到步驟 2 │
│ │
└──────────────────────────────────────────────────────────────────────────┘
常數
-
RENDERER =
codex-image2— 透過本地 Codex app-server 暴露的原生圖片生成橋接 -
OPTIONAL_TEXT_CRITIC =
mcp__codex__codex— 可選的純文字第二意見,用於佈局/風格檢查 -
MAX_ITERATIONS = 5 — 最大精煉輪數
-
TARGET_SCORE = 9 — 最低可接受分數 (1-10)
-
OUTPUT_DIR =
figures/ai_generated/— 輸出目錄 -
TEXT_LANGUAGE =
English— 預設圖表文字語言,除非使用者要求其他語言 -
NATIVE_IMAGE_REQUIREMENT =
strict— 僅接受原生imageGeneration輸出;拒絕 Shell/Python 後備方案 -
IMAGE2_HELPER — 標準名稱
paper_illustration_image2.py,根據shared-references/integration-contract.md§2 解析 (策略 A — 技能本地關卡)。階段 3.2 (架構 C) 將標準實作移至skills/paper-illustration-image2/scripts/;tools/paper_illustration_image2.py保留為os.execvshim,以便舊的解析器層級無需重新安裝即可繼續運作。透過以下方式解析:# 第 0 層:自包含 (CC 1.0+ 暴露 $CLAUDE_SKILL_DIR)。 IMAGE2_HELPER="" if [ -n "${CLAUDE_SKILL_DIR:-}" ] && [ -f "$CLAUDE_SKILL_DIR/scripts/paper_illustration_image2.py" ]; then IMAGE2_HELPER="$CLAUDE_SKILL_DIR/scripts/paper_illustration_image2.py" fi # 第 1-4 層:透過 tools/paper_illustration_image2.py 的 shim 進行共享執行時鏈。 if [ -z "$IMAGE2_HELPER" ]; then cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1 if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills.txt ]; then ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true fi if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true fi IMAGE2_HELPER=".aris/tools/paper_illustration_image2.py" [ -f "$IMAGE2_HELPER" ] || IMAGE2_HELPER="tools/paper_illustration_image2.py" [ -f "$IMAGE2_HELPER" ] || { [ -n "${ARIS_REPO:-}" ] && IMAGE2_HELPER="$ARIS_REPO/tools/paper_illustration_image2.py"; } [ -f "$IMAGE2_HELPER" ] || IMAGE2_HELPER="" fi [ -z "$IMAGE2_HELPER" ] && { echo "錯誤:無法解析 paper_illustration_image2.py (第 0 層: $CLAUDE_SKILL_DIR/scripts/;第 1-4 層: .aris/tools/, tools/, $ARIS_REPO/tools/, $ARIS_REPO/tools/ 透過 ~/.aris/repo)。" >&2 echo " /paper-illustration-image2 無法繼續。修正:重新執行 bash tools/install_aris.sh 或 smart_update.sh (重新整理 ~/.aris/repo),或從 $ARIS_REPO/skills/paper-illustration-image2/scripts/ 複製標準腳本。" >&2 exit 1 }以下所有調用都使用
python3 "$IMAGE2_HELPER" <子命令>。
CVPR/ICLR/NeurIPS 頂級會議風格指南
「CVPR 風格」的實際含義:
視覺標準
- 乾淨的白色背景 — 除非極其微妙,否則避免裝飾性圖案或漸層
- 無襯線字體 — Arial、Helvetica 或類似乾淨的論文友善字體
- 柔和色板 — 使用 3-5 種協調色,而非彩虹色
- 友善印刷 — 在灰階下仍須可讀
- 專業邊框 — 細到中等、乾淨且一致
佈局標準
- 水平流向 — 對於流程圖,預設為從左到右
- 清晰分組 — 使用間距或微妙的分組框來區分相關模組
- 一致大小 — 相似元件應具有相似大小
- 平衡留白 — 避免過於擁擠或過於稀疏的佈局
箭頭標準 (最重要)
- 粗線條 — 箭頭在論文縮放後仍須可見
- 清晰箭頭頭 — 大而明確的箭頭頭
- 深色 — 偏好黑色或深灰色箭頭
- 有標籤 — 重要的箭頭應顯示流通過什麼
- 無交叉 — 盡可能重新組織圖表以避免交叉
- 正確方向 — 箭頭必須指向正確的目標
視覺吸引力 (學術專業風格)
目標:既不保守也不花哨,找到平衡點
✅ 應有
- 微妙漸層 — 可接受同色系的溫和漸層
- 圓角 — 現代但不誇張的圓角區塊
- 清晰層次 — 主要模組較大,次要模組較小
- 一致色彩編碼 — 模組類型與顏色之間穩定的對應關係
- 專業排版 — 整潔的標籤,具有可讀的大小層次
❌ 避免
- ❌ 彩虹漸層
- ❌ 沉重陰影
- ❌ 3D 透視效果
- ❌ 發光效果
- ❌ 裝飾性剪貼畫圖示
- ❌ 感覺華而不實而非論文就緒的投影片風格
✓ 理想效果
- 看起來有設計感、專業且立即可讀
- 具有適度的視覺吸引力而不淪為裝飾
- 感覺適合頂級會議論文圖表
- 經得起 PDF 縮放和灰階列印
應避免事項 (關鍵)
- ❌ 細如髮絲的箭頭
- ❌ 無標籤或模糊的連線
- ❌ 微小無法閱讀的文字
- ❌ 無層次的扁平、無聊方塊湯
- ❌ 過度裝飾的圖表,帶有陰影/發光/圖示
- ❌ 錯誤的箭頭方向
範圍
| 圖表類型 | 品質 | 範例 |
|---|---|---|
| 架構圖 | 優秀 | 模型架構、流程圖、編碼器-解碼器 |
| 方法圖 | 優秀 | 概念圖、演算法流程圖 |
| 概念圖 | 良好 | 比較圖、分類樹 |
不適用於: 統計圖 (使用 /paper-figure)、確定性向量拓撲圖 (偏好 /figure-spec)、逼真場景
工作流程:必須執行所有步驟
步驟 0:預飛行檢查
在開始前明確渲染此檢查清單:
📋 paper-illustration-image2 整合檢查清單:
[ ] 1. python3 "$IMAGE2_HELPER" preflight --workspace <cwd> --json-out figures/ai_generated/preflight.json
[ ] 2. 在渲染前確認 preflight JSON 顯示 ok=true
[ ] 3. 透過 mcp__codex-image2__generate_start + generate_status 渲染
[ ] 4. 透過 python3 "$IMAGE2_HELPER" finalize --workspace <cwd> --best-image <best_png> 完成
[ ] 5. 透過 python3 "$IMAGE2_HELPER" verify --workspace <cwd> --json-out figures/ai_generated/verify.json 驗證產出物
- 如果
figures/ai_generated/不存在則建立。 - 確認請求適合像素插圖:
- 架構圖
- 概念方法圖
- 工作流程圖
- 偏好使用英文圖表文字,除非使用者要求其他語言。
- 執行:
python3 "$IMAGE2_HELPER" preflight \
--workspace <cwd> \
--json-out figures/ai_generated/preflight.json
- 如果 preflight 不是
ok=true,則停止並清楚說明。
步驟 1:Claude 規劃圖表
將使用者請求轉換為完全指定的圖片提示。包括:
- 圖表類型
- 確切模組/階段
- 流向
- 要顯示的標籤
- 資料流箭頭
- 風格限制
- 應避免事項
當輸入是方法筆記或論文章節時,在撰寫最終圖片提示前,先將其總結為一個乾淨的圖表簡報。
步驟 2:佈局最佳化
此步驟為必填。在渲染前,將提示精煉為具體的佈局計畫:
- 確切的模組順序
- 間距和分組
- 相對模組顯著性
- 箭頭路徑和可能的衝突點
如果選定的文字審查路由可用,您可以在此要求其提供簡短的佈局批評第二意見,但執行者仍應在沒有外部批評者的情況下完成此步驟。
使用 Codex 佈局批評來找出:
- 遺漏的元件
- 令人困惑的佈局
- 薄弱的流程層次
- 可能的箭頭方向模糊或混亂
步驟 3:風格驗證
此步驟也為必填。在渲染前,根據預期的論文風格檢查提示:
- 色板是否克制且學術
- 箭頭是否粗、深色且可讀
- 標籤是否簡潔且為英文 (除非要求其他語言)
- 圖表在灰階/列印下是否清晰可讀
- 是否沒有發光、彩虹漸層或投影片裝飾混入
如果選定的文字審查路由可用,您可以要求其提供簡短的純文字風格審計,但不要因此阻塞。
步驟 4:透過橋接生成
呼叫 mcp__codex-image2__generate_start,參數如下:
prompt:最終的圖片提示cwd:當前專案根目錄或論文工作區outputPath:figures/ai_generated/figure_v1.pngsystem:簡短的指示,例如學術論文圖表。偏好清晰的英文標籤。timeoutSeconds:受限的渲染超時時間,例如180
然後使用受限等待呼叫 mcp__codex-image2__generate_status,直到:
done=true且status=completed,或done=true且status=failed
如果生成失敗,直接報告橋接錯誤,而不是隱藏它。
步驟 5:審查輸出
使用嚴格的檢查清單審查生成的圖片:
- 所有主要元件是否存在?
- 邏輯流程是否明顯?
- 標籤是否可讀?
- 箭頭方向是否正確?
- 圖表看起來是否像論文就緒,而不是投影片?
從 1 到 10 評分。
步驟 6:必要時精煉
如果分數 < 9,撰寫有針對性的精煉提示:
- 具體說明哪些部分有問題
- 要求特定的修正,而不是要求「改善」
步驟 7:完成
當圖片可接受時:
- 將最佳圖片移動或複製到標準輸出目錄:
python3 "$IMAGE2_HELPER" finalize --workspace <cwd> --best-image <best_png> - 可選地執行驗證工具:
python3 "$IMAGE2_HELPER" verify --workspace <cwd> --json-out figures/ai_generated/verify.json
提示工程
Good Prompt Structure
[Figure type] showing [subject/task].
Components:
- [Component 1]: [description]
- [Component 2]: [description]
...
Flow: [direction and order]
Style: [style constraints]
Labels: [what to label]
Avoid: [what to avoid]
Example
Architecture diagram showing a multi-modal fusion pipeline for sentiment analysis.
Components:
- Text encoder: BERT-based transformer processing input text
- Image encoder: ResNet-50 processing visual input
- Fusion module: Cross-attention mechanism combining modalities
- Classifier: MLP producing final sentiment prediction
Flow: Text → Text Encoder → Fusion; Image → Image Encoder → Fusion → Classifier
Style: CVPR-style with clean white background, thin borders, sans-serif font, subtle blue/gray palette
Labels: Label each encoder output as 'Text Features' / 'Visual Features'; label fusion output as 'Fused Representation'
Avoid: Rainbow colors, heavy shadows, 3D effects, cluttered layout
Prompt要素
| Element | Purpose | Recommendation |
|---|---|---|
| Figure type | 設定期望 | 明確提及 'architecture diagram', 'method figure', 或 'conceptual diagram' |
| Subject | 內容錨點 | 保持簡短但完整;3-10 個單詞 |
| Components | 完整覆蓋 | 為每個元件命名並提供 1 句描述;對齊到輸出 |
| Flow | 連通性 | 用箭頭表示;明確顯示分叉和合併 |
| Style | 視覺遵守 | 總是指定 'CVPR-style' 或 'top-tier conference' 加上 1-2 個具體限制 |
| Labels | 文字輸出 | 指定確切的標籤文字;偏好英文 |
| Avoid | 退步防護 | 包含 2-3 項此類圖表常犯的錯誤 |
常見陷阱
- 跳過預飛行 — 導致失敗時浪費時間;始終執行檢查
- 模糊的提示 — 「一張好圖片」不夠;始終提供完整的結構化提示
- 接受低分 — 始終以 9 分為目標;卡在迭代中的圖表通常只需要 1-2 次明確修正
- 忽略 Style step — 如果跳過步驟 3,生成的圖片很可能需要裝飾性調整
- 混淆 Layout 和 Style — 佈局 = 組件排列;風格 = 視覺呈現。兩者都是必要的
- 薄弱的審查 — 審查時做具體觀察(「第三個方塊上的標籤被截斷」vs「看起來不錯」)
- 向使用者暴露內部錯誤 — 如果橋接失敗,呈現乾淨的錯誤給使用者:
❌ 圖片生成失敗:{簡潔的橋接錯誤}
使用者在最終目錄中看到的內容
figures/ai_generated/
├── figure_v1.png # 第一次嘗試 (如果多次迭代)
├── figure_v2.png # 第二次嘗試 (如果多次迭代)
├── figure_final.png # 最終接受版本
├── preflight.json # 執行的預飛行檢查
└── verify.json # 可選的後續驗證
錯誤處理:中斷與恢復
如果橋接在生成期間失敗 (generate_status 返回 failed):
- 記錄錯誤上下文:
python3 "$IMAGE2_HELPER" log-error --error-context "{錯誤訊息}" - 提示使用者檢查 Codex app-server 日誌或重新啟動橋接。
- 您可以在修正後使用相同的提示和
--resume-from <序號>重試,但不要自動重試。 - 記錄最終結果:resume 成功,resume 失敗,或放棄。
如果預飛行失敗:
- 提供具體的修正建議 (例如「缺少依賴項:ffmpeg。執行:brew install ffmpeg」)。
- 請勿繼續到步驟 1。
安全性考量
- 生成的圖片是純資料檔案;無執行風險。
- 提示可能包含引用資訊;審查提示使用者可能會看到什麼。
- 當提示包含未發表作品的摘要時,請謹慎將輸出顯示給其他人。
常見問題
Q: 為什麼有兩個 paper-illustration 技能?
A: 原始技能使用 mcp__codex__generate 從提示生成嵌入式圖片。此替代方案 (Image2) 使用 mcp__codex-image2 橋接到本機 app-server。輸出通常是不同的——此版本提供更像 GPT 的風格——但如果執行偶爾失敗,它需要更多依賴項和調試。
Q: 我可以混合兩者嗎? A: 同一會話中不建議。選擇一個並堅持使用它。
Q: 我需要什麼依賴項?
A: 工作目錄中的本地 Codex 安裝 + 執行的 app-server,外加 paper_illustration_image2.py helper (透過 IMAGE2_HELPER 解析器自動解析)。
Q: 這適用於非架構圖嗎?
A: 概念圖是好的,比較圖還可以,統計圖 (條形圖/折線圖) 不好。使用 /paper-figure 處理那些。
Q: 為什麼我的圖片包含奇怪的文字? A: 模型有時會將提示文字渲染為圖片中的視覺文字。強調提示中的「清晰英文標籤」並在審查階段拒絕那些圖片通常可以緩解此問題。
Q: 如何使文字變大? A: 在提示中包含「使用大而粗體的標籤,在 A4/Letter 縮放時可讀」。文字大小一致性是模型依賴問題。