1. 为什么用 Claude Code 接 GLM-5.2 做五子棋
五子棋这个题目看起来简单,但要让 AI 真正做出一个能对弈、会判断胜负、落子还有点策略的程序,其实是个典型的长程任务:先规划模块,再写棋盘渲染,接着实现胜负判定,最后补上 AI 落子逻辑,中间还得自己跑一遍验证。这种活儿最怕模型上下文一长就忘事,前一步定好的规则写到后面就变了。
Claude Code 是个 Agent 形态的编程工具,一个任务会连续发几十次请求,对底层模型的上下文长度和工具调用能力要求都不低。GLM-5.2 的 1024k 上下文加上 Agentic 工程能力,正好适合这种"规划→编码→自检→优化"的闭环。而要让 Claude Code 稳定连上 GLM-5.2,中间需要一个 Anthropic 协议兼容的通道,TaoToken 就是干这个的:一个统一 Key,Anthropic 兼容端点,Claude Code 填几个环境变量就能直连,不用自己搭翻译层。
这篇就按实际落地的顺序走一遍:先把 TaoToken 的 Key 和通道配好,再给 Claude Code 一份可复制的 settings.json,然后让 GLM-5.2 生成五子棋的核心代码骨架,最后跑一次对局验证。适合已经装好 Node.js 和 Git、想用 Claude Code 接国产模型做点实际项目的人。
2. TaoToken 前置:拿 Key 和确认通道
在动手写五子棋之前,先把通道打通。TaoToken 的定位是统一 API 网关,一个 Key 可以调多家模型,对 Claude Code 来说最关键的是它提供 Anthropic 兼容端点,也就是/v1/messages加x-api-key这套协议,Claude Code 原生就认这个,不需要额外装 claude-code-router 之类的中间件。
第一步是拿 Key。打开 TaoToken 控制台,登录后进 API Keys 页面创建一个新 Key,复制出来先存好,后面配置要用。控制台地址是 https://taotoken.net/console ,API Keys 页面在 https://taotoken.net/api-keys 。
第二步确认模型名。TaoToken 的模型列表里 GLM 系列是可直接调用的,Claude Code 配置时把模型名填成对应的 GLM-5.2 标识即可。如果你不确定当前可用的模型名,可以在模型对话页面先发一条测试消息确认通道正常,地址是 https://taotoken.net/models 。
注意:Key 只在创建时完整显示一次,关掉页面就看不到了,建议创建后立刻存到本地密码管理器或者临时文件里,配完再删。
拿到 Key 之后,Claude Code 这边需要设置三个环境变量:ANTHROPIC_BASE_URL指向 TaoToken 的 Anthropic 兼容端点,ANTHROPIC_API_KEY填刚创建的 Key,ANTHROPIC_MODEL填 GLM-5.2 的模型标识。这三个值可以直接写进 settings.json,也可以用环境变量注入,下面两种方式都给出来。
3. 可复制配置:settings.json 与五子棋代码骨架
3.1 settings.json 配置片段
Claude Code 的配置文件在用户目录下的.claude/settings.json,Windows 是C:\Users\你的用户名\.claude\settings.json,macOS 和 Linux 是~/.claude/settings.json。如果文件不存在就新建一个,内容如下:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "glm-5.2" } }把sk-你的TaoToken密钥换成第 2 步拿到的真实 Key。ANTHROPIC_BASE_URL填 TaoToken 的 API 地址,注意这里不带任何查询参数,就是干净的https://taotoken.net/api。ANTHROPIC_MODEL填 GLM-5.2 对应的模型标识,如果 TaoToken 控制台里显示的模型名带前缀,以控制台为准。
如果你不想把 Key 写死在文件里,也可以用环境变量方式,在终端里执行:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的TaoToken密钥" export ANTHROPIC_MODEL="glm-5.2"Windows PowerShell 用$env:ANTHROPIC_BASE_URL="https://taotoken.net/api"这种写法。环境变量的优先级高于 settings.json,适合临时切换。
配好之后验证一下 Claude Code 能不能连上:
claude --version claude -p "回复一句:通道正常"如果第二条命令能返回一句正常的中文回复,说明 Key 和通道都通了。如果报 401 就是 Key 不对,报 404 大概率是 BASE_URL 写错了,检查有没有多写斜杠或者路径。
3.2 让 GLM-5.2 生成五子棋代码
通道通了之后,在空目录里启动 Claude Code,给它一句话提示词。这句话里要埋验收标准,不然生成的 AI 落子会很随意:
mkdir gomoku && cd gomoku claude进入交互后输入:
创建一个智能五子棋游戏,让玩家与能够进行策略性落子并准确判断胜负的算法对战。 要求:棋盘用 Canvas 渲染,胜负判定覆盖横竖撇捺四个方向,AI 落子要有评估函数不能随机下,最后能双击 html 直接玩。这句话里"策略性落子""准确判断胜负""四个方向""双击 html 直接玩"就是硬约束。GLM-5.2 会先列步骤再写代码,下面是我实测下来它生成的核心逻辑骨架,你可以对照检查它有没有漏东西。
棋盘和胜负判定的核心部分大致是这样:
const SIZE = 15; const board = Array.from({ length: SIZE }, () => Array(SIZE).fill(0)); // 0 空 1 黑 2 白 function checkWin(x, y, player) { const dirs = [[1, 0], [0, 1], [1, 1], [1, -1]]; for (const [dx, dy] of dirs) { let count = 1; for (const sign of [1, -1]) { let nx = x + dx * sign, ny = y + dy * sign; while (nx >= 0 && nx < SIZE && ny >= 0 && ny < SIZE && board[nx][ny] === player) { count++; nx += dx * sign; ny += dy * sign; } } if (count >= 5) return true; } return false; }AI 落子用简单的评分函数,对每个空位算进攻分和防守分,取最高分的位置:
function evaluatePoint(x, y, player) { const dirs = [[1, 0], [0, 1], [1, 1], [1, -1]]; let score = 0; for (const [dx, dy] of dirs) { let count = 1; for (const sign of [1, -1]) { let nx = x + dx * sign, ny = y + dy * sign; while (nx >= 0 && nx < SIZE && ny >= 0 && ny < SIZE && board[nx][ny] === player) { count++; nx += dx * sign; ny += dy * sign; } } if (count >= 5) score += 100000; else if (count === 4) score += 1000; else if (count === 3) score += 100; else if (count === 2) score += 10; } return score; } function aiMove() { let best = { x: -1, y: -1, score: -1 }; for (let i = 0; i < SIZE; i++) { for (let j = 0; j < SIZE; j++) { if (board[i][j] !== 0) continue; const attack = evaluatePoint(i, j, 2); const defend = evaluatePoint(i, j, 1); const total = attack * 1.1 + defend; if (total > best.score) best = { x: i, y: j, score: total }; } } return best; }这段逻辑的关键点是attack * 1.1 + defend,进攻权重略高于防守,这样 AI 不会一味堵你,也会主动连自己的子。如果 GLM-5.2 生成的版本里 AI 只会防守或者随机下,就是评估函数没写对,可以让它重写这一块。
4. 验证请求与成功结果
代码生成完之后,先做语法检查,再实际跑一局。语法检查在项目目录里执行:
node --check game.js没有输出就是通过。如果有报错,把报错信息贴回 Claude Code,让它自己修,不用你手动改。
然后打开生成的index.html,双击就能在浏览器里玩。实际对局验证按这个流程走:
第一步,你执黑先下天元位置,看 AI 是否在附近落子而不是下到角落。如果 AI 第一手就下到边角,说明评估函数里对已有棋子的邻域权重没处理好。
第二步,你连下三子形成活三,看 AI 是否在两端堵你。如果它没堵,说明防守分计算有问题。
第三步,你故意做一个冲四,看 AI 是否优先堵而不是自己去连。这一步能验证进攻和防守的权重比例是否合理。
第四步,你连成五子,看胜负判定是否弹出胜利提示。如果没弹,检查checkWin的四个方向是不是都覆盖了,尤其是[1, -1]这个撇方向容易漏。
实测下来,GLM-5.2 生成的版本一般能在前三步就表现正常,偶尔会在撇方向判定上出问题,让它补一下就行。整个对局跑通,说明从 TaoToken 配置到 Claude Code 调用 GLM-5.2 再到代码落地的链路是完整的。
5. 本篇常见错排查
配置和运行过程中容易踩的坑集中在这几个地方。
401 未授权:Key 填错或者 Key 被删了。回 TaoToken 控制台确认 Key 还在,重新复制一次。注意 Key 前面有没有多余空格。
404 找不到路径:ANTHROPIC_BASE_URL写错了。正确值是https://taotoken.net/api,不要写成https://taotoken.net/api/v1或者带斜杠结尾。Claude Code 会自己在后面拼/v1/messages。
模型名不识别:ANTHROPIC_MODEL填的标识和 TaoToken 控制台里的不一致。去模型列表页面确认 GLM-5.2 的准确标识,复制过来。
Claude Code 启动报 Node 版本低:Claude Code 要求 Node.js 18 以上,用node -v确认,低了就去官网下 LTS 版本覆盖安装。
AI 落子随机:不是通道问题,是生成的评估函数没写好。让 Claude Code 重写aiMove函数,明确要求"对每个空位计算进攻分和防守分,取加权最高分"。
胜负判定漏方向:最常见的是撇方向[1, -1]没覆盖。让 Claude Code 检查checkWin的dirs数组是不是四个方向都在。
页面打开空白:Canvas 尺寸或者初始化逻辑有问题。按 F12 看控制台报错,把报错贴回 Claude Code。
提示:如果排查过程中需要确认是通道问题还是代码问题,可以先用模型对话页面发一条消息测试,地址是 https://taotoken.net/models 。通道正常就说明问题在代码侧。
6. 继续往下走
五子棋跑通之后,这套配置可以直接复用到其他长程任务上。Claude Code 的 settings.json 配一次就行,后面换项目不用重配。如果你想在多个模型之间对比效果,改ANTHROPIC_MODEL一个字段就能切换,TaoToken 的统一 Key 不用重新申请。
对于需要长期跑编码任务或者搭 Agent 的场景,可以看一下 Coding Plan,地址是 https://taotoken.net/coding-plan ,按量计费加上缓存命中,长任务下成本比单次调用可控。接入文档在 https://taotoken.net/doc ,里面有 Anthropic 兼容端点的详细说明和更多配置示例。
如果只是想先验证模型能力,不急着配 Claude Code,可以直接在模型对话页面试,地址是 https://taotoken.net/models ,发一句五子棋的提示词看它生成的代码质量,再决定要不要接到本地工具链里。