{
  "project": "phase2b",
  "title": "Phase 2b: Claude ACP vs DeepSeek Harness — Round 1 Baseline",
  "round": 1,
  "generated_at": "2026-08-26T00:15:00+08:00",
  "host": "tom.chang 的 MacBook Pro (arm64 / Darwin / Node v25.9.0 host + nvm v24.15.0 dsh)",
  "verdict": "A == B (4/4 prompts 产出文件 byte-identical, md5 全匹配)",
  "headline": "Claude (sonnet-4) 与 DeepSeek (deepseek-chat) 对这 4 个 prompt 产出了字面意义上一字节不差的文件。对比在 latency 上仍有 ~2x 差距（Claude 慢），但生成内容趋同。",
  "caveats": [
    "A 端是 Claude Code CLI (`claude -p`) 非交互模式，不走 ACP 协议",
    "B 端是 dsh (`dsh --profile headless`) 直接 CLI，不走 ACP 协议",
    "两路都是 CLI spawn → stdout，协议层对称，但都不是真 ACP",
    "Round 2 才会引入真 ACP（A 端装 @agentclientprotocol/claude-agent-acp）",
    "prompts 模板相对死，模型无自由发挥空间 → 重写 prompt 才能区分模型"
  ],
  "summary": {
    "a_total_latency_ms": 954859,
    "a_total_latency_label": "15min 55s",
    "b_total_latency_ms": 488102,
    "b_total_latency_label": "8min 8s",
    "speedup_b_over_a": 1.96,
    "file_size_identical_count": 4,
    "file_size_total_count": 4
  },
  "paths": {
    "a_runner": "OpenClaw spawns `claude -p <prompt>` (Claude Code v2.1.119)",
    "b_runner": "OpenClaw spawns `/Users/tom.chang/.nvm/versions/node/v24.15.0/bin/dsh --profile headless <prompt>`",
    "shared_dir_symlink": "phase2b/assets/shared -> ~/.openclaw/workspace/phase2b/shared"
  },
  "prompts": [
    {
      "id": "p1",
      "title": "Red Lantern (Basic)",
      "subtitle": "单只红灯笼 HTML — 径向渐变 + 光晕 + 摇摆",
      "type": "html",
      "file_a": "assets/shared/p1-lantern-basic.claude-round1.html",
      "file_b": "assets/shared/p1-lantern-basic.dsh.html",
      "a": {"latency_ms": 235638, "latency_label": "3min 56s", "out_bytes": 174, "gen_bytes": 7080, "exit": 0},
      "b": {"latency_ms": 130886, "latency_label": "2min 11s", "out_bytes": 1749, "gen_bytes": 7080, "exit": 0},
      "md5": "f68251c75941ef5e74b2eb51d400ed79",
      "byte_identical": true
    },
    {
      "id": "p2",
      "title": "Palindrome Detector",
      "subtitle": "Python is_palindrome() — Unicode + NFKD + 5 测试用例",
      "type": "py",
      "file_a": "assets/shared/p2-palindrome.claude-round1.py",
      "file_b": "assets/shared/p2-palindrome.dsh.py",
      "a": {"latency_ms": 31588, "latency_label": "32s", "out_bytes": 653, "gen_bytes": 1823, "exit": 0},
      "b": {"latency_ms": 28914, "latency_label": "29s", "out_bytes": 1413, "gen_bytes": 1823, "exit": 0},
      "md5": "69c4ad283b90b510f326b4bc0fb479c0",
      "byte_identical": true
    },
    {
      "id": "p3",
      "title": "Red Lantern (Full — 5 lanterns + 8 details)",
      "subtitle": "5 只灯笼 + FPS + 控制条 + 星空背景 + 响应式",
      "type": "html",
      "file_a": "assets/shared/p3-lantern-full.claude-round1.html",
      "file_b": "assets/shared/p3-lantern-full.dsh.html",
      "a": {"latency_ms": 478411, "latency_label": "7min 58s", "out_bytes": 8967, "gen_bytes": 20598, "exit": 0},
      "b": {"latency_ms": 190195, "latency_label": "3min 10s", "out_bytes": 1731, "gen_bytes": 20598, "exit": 0},
      "md5": "c568f81cdfcf2f84145673185ee52559",
      "byte_identical": true
    },
    {
      "id": "p4",
      "title": "Word Frequency Counter",
      "subtitle": "Python stdin → top 20 词频，UTF-8 BOM 处理",
      "type": "py",
      "file_a": "assets/shared/p4-wordfreq.claude-round1.py",
      "file_b": "assets/shared/p4-wordfreq.dsh.py",
      "a": {"latency_ms": 210222, "latency_label": "3min 30s", "out_bytes": 2024, "gen_bytes": 1842, "exit": 0},
      "b": {"latency_ms": 138107, "latency_label": "2min 18s", "out_bytes": 1482, "gen_bytes": 1842, "exit": 0},
      "md5": "9e557b404c277e56fc46d5c0ab78b67f",
      "byte_identical": true
    }
  ]
}
