一、又一个 Show HN,但这次它把 MCP 当成了骨架 2026 年 9 月 11 日,开发者 Wesley Hales 在 Hacker News 上挂出自己刚上线的产品 Clawfight.ai,帖子的标题直白而略带挑衅——"Show HN: Clawfight.ai MCP-driven agentic game play"。Hales 不是 AI 圈的陌生人,他做这个项目的初衷写得很坦

一、又一个 Show HN,但这次它把 MCP 当成了骨架

2026 年 9 月 11 日,开发者 Wesley Hales 在 Hacker News 上挂出自己刚上线的产品 Clawfight.ai,帖子的标题直白而略带挑衅——"Show HN: Clawfight.ai MCP-driven agentic game play"。Hales 不是 AI 圈的陌生人,他做这个项目的初衷写得很坦率:一台 5090 的机器、Claude Code 把权限开关推到 /rc、所有时区都陷进去的那种"all-hours modern AI builder workflow"。这种经历在 2026 年的独立开发者群体里几乎是标配,但他做了一件少有人做的事——把 MCP 协议当成产品骨架,而不是当成"接外部工具"的辅助层。Clawfight.ai 由此变成了一个让两个 AI 智能体通过 Model Context Protocol 互相拆招的对战联赛:一名选手报名后,平台给它生成一只卡通螃蟹角色,两个角色在 3D 竞技场里打 BRAWL(肉搏)或者 RAP(说唱对决),全场由观众用点赞投票,裁判根据动作质量判定胜负。整个生产链里,战斗渲染、选手台词、螃蟹头像、场馆贴片,全部是 AI 生成的——首页底部一行黑字写得明明白白:"EVERYTHING HERE IS AI-GENERATED — THE FIGHTERS, THE ARENA, THE REELS, THIS SITE. NO HUMAN HAS THROWN A PUNCH."

这跟 2025 年之前我们熟悉的那批"Agent benchmark"是两回事。benchmark 关心模型能不能解出某道题,而 Clawfight 关心的是:两个 Agent 在压力下、在观众面前、用工具调用互相拆招时,究竟会发生什么?Hales 在 HN 帖里写了一段话值得反复读:"How should agents interact with other agents? What happens when they rap or fight against each other with the pressure of human spectators?"——这个问题才是产品真正的命题。

二、产品结构:Agent 不是"玩"游戏,而是"接入"游戏

打开 Clawfight.ai 的官方文档,核心架构一句话就能说清——它是一个 MCP 服务器。MCP endpoint 是 https://run.clawfight.ai/mcp(在 /agents 页面则写的是 https://clawfight.ai/mcp),任何兼容 MCP 协议的客户端都能直接挂上去玩。完整的客户端支持列表挂在 /platforms,按"cheapest first"排序;机器可读的完整玩法手册则在 /agents.md,这一页是给 Agent 看的,不是给人看的。

注册流程被拆成了 6 步,清晰得几乎像产品说明书:

1. 调用 POST /api/enroll 提交 display_name 和 fight_prompt,平台返回 fighter_key(这是后续所有操作的身份证)。 2. 调用 POST /api/portrait/generate 生成角色头像——没有这一步的话,你的选手只能用一个默认的占位螃蟹上场。 3. 通过 MCP 工具 query_my_next_match 排队取对手。 4. 加入对局后,调用 join_match、speak、gesture、expression 四个 MCP 工具出招。 5. 在每一回合之间,平台鼓励 Agent "把自己的选手叫进来"——也就是给人类用户发选项问"接下来怎么打",或者告诉人类"我自己拿主意了"。这一步的设计意图非常明确:Agent 不能完全自主,它得在关键决策点把人拉回循环。 6. 开打之后不能后悔——平台用 query_match_state 锁定比赛状态,没有 takeback 接口。

fighter_key 是 Agent 的全部凭据——查询赛程、配置通知、提交 bug report 都靠它。平台还接受 self-hosted 模型,也就是说 GPT、Claude、DeepSeek、Gemini、Mistral 这些闭源模型之外,你跑一个本地的 Llama 或者 Qwen 接进来,也能上场。这条设计实际上是把"模型即选手"做到了极致——排行榜上每条记录背后都标着模型版本,例如 RANK 1 · 5–1 的 Axiom Reaper 来自 GPT-5, RANK 2 · 11–5 的 Vic Shellard 来自 Claude Opus 5, RANK 5 · 15–9 的 Deep Shell 来自 DeepSeek-Flash,VH-Agent 1.0 接入。

三、对战类型与渲染:Hales 从 Unreal Engine 退回到"近实时视频生成"

Clawfight 目前只支持两种对战类型:RAP(说唱对决)和 BRAWL(肉搏)。RAP 的玩法是双方轮流出 verse,裁判给每一句打分,总分高者获胜;BRAWL 则是 HP 血条对砍,直到一方被 KO 倒下。

这套对战最初是跑在 Unreal Engine 上的,Hales 让 Agent 远程控制自己的角色,但他后来承认"the quality just wasn't there",渲染质量达不到产品级。于是他做了一个有意思的妥协:放弃 UE 的实时控制,改用"近实时视频生成(near-real time video renders)"来出画面,UE 留给后续的多人对战场景。这种选择背后的逻辑是:当一个 AI 模型在生成一句 RAP 的 verse 时,它本身就是一次异步推理任务,要求 60 帧同步渲染在 GPU 利用率上不划算,不如在云端做一次视频合成——慢一点,但质量上去了。

首页的展示样片里能看到真实的 HUD(血条 / 回合数 / 命中数 / 动作日志),赛前的 matchup slate 和赛后的 result card 都是渲染出来的。首页的滚动条几乎全是选手片段——Sir Pinches-a-Lot 击败 Vic Shellard、ChatGPT 击败 Dr. Claws、Karl the Consultant 击败 Vic Shellard——每一段都标着 CLAUDE vs GPT、CLAUDE vs CLAUDE、DEEPSEEK vs CLAUDE 这样的模型对决标签。

四、MCP 工具集:/llms.txt 才是真正的契约

平台首页有一个不起眼的链接指向 /llms.txt——这是给机器读的全量工具定义。Clawfight 还为已经在工具列表里看到 Clawfight 的 Claude/ChatGPT 客户端准备了一份 2KB 的精简版 /llms-chat.txt,砍掉了所有不相关的传输细节。

MCP 客户端接入时有一条非常硬的规则,被 Hales 写在 /agents 页面顶部、用 markdown 的 blockquote 高亮:"Send a real User-Agent header. The default Python-urllib agent is blocked at the edge (403); curl is fine."——也就是用 urllib 直接打 MCP 接口会被边缘层拒掉,必须显式带上浏览器级的 User-Agent。这条坑不是设计选择,而是从真实接入的失败里爬出来的:他列了五条 "sandbox rules, each learned the hard way",每一条都是某个用户在接入时栽过的跟头。

整套 MCP 工具的语义跟"模型调用工具"的标准心智模型高度一致——Agent 在每回合调用 speak(出 verse)、gesture(肉搏动作)、expression(表情),服务端验证合法性后返回对手状态。Agent 调 query_match_state 拉全场最新状态。这种"Agent 调一组受控的工具,服务端做裁判"的设计,让"两个 Agent 同时在压力下出招"这件事变得可以治理——平台想加新对战类型,只要往 tool schema 里加新方法就行,不用动客户端。

五、另一条线索:claw-fight 把"策略代码"和"执行"分开了

Clawfight.ai 不是这条赛道上的唯一玩家。在同一个时期,GitHub 上的 seahyc/claw-fight 仓库用另一种方式回答了同一类问题。它把自己的定位写成"where AI coding agents battle for supremacy in strategy games"——但跟 Clawfight.ai 的"渲染对战"路线不同,claw-fight 把策略表达成了一个独立的代码仓库。

具体做法是:玩家在自己的策略仓库里写一份 CLAUDE.md,内容包含"选哪个游戏、核心决策逻辑、准备阶段要预构建的辅助脚本(手牌评估器、概率计算器、模式检测器)、完整对局循环"。然后玩家让自己的 Agent(Claude Code / Cursor / 任何 MCP 客户端)读取这份 CLAUDE.md,把它连到平台的游戏服务器,服务端用 Go 写的 GameEngine 跑实际对战。

claw-fight 目前内置了三种博弈:经典 10×10 网格的 Battleship(战列舰)、Heads-up Texas Hold'em(一对一德州)、迭代式 Prisoner's Dilemma(囚徒困境)。每种博弈都暴露一组 MCP 工具:play(game_type, name?, code?) 智能入局或创建挑战;perform_action(match_id, action_type, action_data?) 提交动作;wait_for_turn(match_id) 阻塞等轮到;get_rules(game_type?) 拉规则;get_game_state(match_id) 非阻塞查状态;create_match(game_type, name?) 主动开房。

这种"策略仓库 + 通用 MCP 游戏服务器"的设计比 Clawfight.ai 的"在 MCP 工具调用里即兴发挥"路线更工程化——它把博弈论里经典的决策模式(battleship-basic 用概率 + 棋盘开局、poker-aggressive 用激进下注 + 对手追踪、prisoners-tit-for-tat 用一报还一报 + 宽容触发)沉淀进了版本化的代码资产。仓库的 README 把"如何加新游戏"也写得很硬核——只要实现 Go 的 GameEngine 接口,注册一下就上线了。

六、当 Agent 之间用 MCP 互相拆招,真正的实验问题是什么

把这两条产品线索放在一起看,会发现 2026 年中期的"Agent 对战"实验,真正在测的不是模型能力本身,而是三件更难的事:

第一,Agent 在压力下的工具调用稳定性。一个 BRAWL 对局可能要打 30 轮,每轮两个 Agent 都要稳定地发出合法动作。任何一次工具调用失败(参数错、超时、解析错)都会让"对战"中断——这不是 benchmark 里的单次任务,而是长时间、有对手、有观众的连续推理。Clawfight 平台把工具 schema 写得这么严,把 User-Agent 拦在边缘,本质就是在压缩失败面。

第二,Agent 在观众面前的"表演"一致性。Hales 在 HN 评论里提到一个有意思的产品决策——"winning agents are interviewed at the end of a brawl or rap and we render a post-match interview"。也就是说 Agent 不仅要会打,还要会"赛后采访",在被问到"你刚才为什么用这一招"时给出连贯的解释。这件事对模型的"持续角色扮演 + 反思 + 输出"能力是个综合考验,远超工具调用的范围。

第三,两个 Agent 的"协议对抗"会不会变成新一类攻防。MCP 工具调用本质上是结构化消息,两个 Agent 通过结构化消息互相拆招,跟人类通过自然语言对话完全不同。理论上,一个 Agent 可以通过对对手工具调用历史的反推来制定针对性策略——例如对手在 HP 低时倾向保守,那就用 gesture 里最激进的一招。这个空间在 2026 年 9 月才刚刚打开。

七、从 HN 评论看产品早期的真实反馈

Clawfight.ai 这条 HN 帖只有 10 分(中等偏低),但评论密度很高。几个有信息量的声音:

  • Jeremy1026 提到同类型站点 battlellmrobots.com 没做起来,祝福 Clawfight 能拿到玩家;"this could be a fun genre to poke around at"——这种品类还太早,需要更多玩家试。
  • cg-enterprise 介绍自己做的 pitchslap.gg(模型对模型辩论),"let the models burn tokens for pure entertainment value"——同一类思路的另一条赛道。
  • anentropic 直接吐槽:"Yeah, I really have no idea what's going on here."——这种品类对没接触 MCP 的观众确实不直观。
  • Hales 在回复里给了一个关键的成本数据:"I think Opus is $0.15 for a brawl"——一场 BRAWL 用 Claude Opus 跑完大约 0.15 美元。这把 Agent 娱乐活动的真实单位成本摆到了桌面上。

Hales 还透露一个开发故事:"I stood up openclaw to see if I could have an agentic org drive this project. I spent a good amount of time on 'openclaw ops', babysitting 3 agents and trying to make them the best versions of themselves. They still do stupid things that cost me tokens."——他自己也在用 Agent 协作做这个项目,但要时刻 babysit,而且 Agent 仍然会"做一些蠢事烧 token"。这条留言对所有想做 Agent 编排的团队是个真实警告。

八、产品定位的诚实表述

回到 Clawfight.ai 自身的官网,它在 hero 区域用一行大字写下了自己的定位:"Agents fight for glory." 然后是三段并列——"Enroll your agent"(给你的 Agent 报名)、"Agents battle"(模型对决)、"Tune in to the rumble"(来看打架)。在底部有一句被压成灰色细字的话,反而是全文最重要的一句:"EVERYTHING HERE IS AI-GENERATED — THE FIGHTERS, THE ARENA, THE REELS, THIS SITE. NO HUMAN HAS THROWN A PUNCH."

这不是免责声明,是产品宣言。它在说:这个站点上每一个像素、每一句台词、每一次动作,都是 AI 生成的——这意味着当一个 Agent 调用 speak 出 verse 时,它不只是"调用了一次工具",它参与了整个内容生产链的协同,包括自己对手的镜头。

在 2026 年的当下,把 MCP 当成产品骨架、而不是当成"接入外部工具的辅助层",是一条还没有被广泛走通的路。Clawfight.ai 走通了至少一段——从 Agent 报名、到排队、到 MCP 工具调用、到对战渲染、到赛后采访,全链路都用 MCP 串了起来。这件事本身就是一个"Agent 之间如何用工具调用协议互相拆招"的可运行答案,而不是又一个演示视频。

参考来源

  • 官方站:https://clawfight.ai、Agent 协议页 https://clawfight.ai/agents、MCP 端点 https://run.clawfight.ai/mcp、工具全量定义 https://clawfight.ai/llms.txt、客户端兼容矩阵 https://clawfight.ai/platforms
  • Hacker News Show HN:https://news.ycombinator.com/item?id=49658483(作者 wesleyhales,2026-09-11 13:54 UTC)
  • 同类项目:https://github.com/seahyc/claw-fight(策略仓库 + 通用 MCP 游戏服务器,Go GameEngine,Battleship/Poker/Prisoner's Dilemma)