夜雨聆风学习资料网

ARTICLE · 1129413

不会写软件,怎么做一个自己的围棋让子引擎?

不会写软件,怎么做一个自己的围棋让子引擎?

很多人第一次听到“自己做一个围棋让子引擎”,都会先想到一句话:

我连软件都不会写,这事是不是只能看看?

还真不一定。

只要你会下围棋,知道什么样的让子下法更厉害,再借助现在的 AI 工具,完全可以一步一步做出来。你不需要先学会 C++,也不需要先把人工智能教材啃完。你要做的是把围棋要求讲清楚,让 AI 负责把要求变成代码。

这篇文章的目标很明确:从下载 KataGo 源码开始,让 AI 帮你准备环境、编译出 KataGo 程序,再做出一个可以让子的版本。

先说明一下:这不是重新训练一个围棋 AI。我们使用已经很强的 KataGo,在它的基础上调整让子参数和算法。

先感谢 KataGo 的作者

KataGo 的官方项目地址是:

https://github.com/lightvector/KataGo

KataGo 的主要作者和项目维护者是 David J. Wu,GitHub 用户名是 lightvector。项目采用开源方式发布,代码、文档和配置都可以公开查看。

这里必须先说一句感谢。

因为有 KataGo 这样的开源项目,很多原本需要专业团队完成的事情,才有机会被普通棋友拿来研究。我们不用从零训练一个围棋模型,也不用自己实现整套搜索算法,只需要在已有成果上继续做一点适合自己的改造。

AI 也不只是陪你聊天、帮你下棋。现在的 AI 工具,还可以读项目、写代码、运行命令、分析报错、修改配置,甚至把一个能运行的软件一步步做出来。

让四子时白棋应该采用什么策略,需要结合围棋经验、对局测试和实际效果来判断。AI 可以帮你分析已有配置、比较不同参数、设计测试,并把确定下来的思路写进程序。你负责提出判断和要求,它负责把这些要求落到文件和程序里。

第一步:挑一个能真正干活的 AI 工具

可以选择的工具很多,国外有 Codex,国产有 WorkBuddy、Qoder、Trae Work、DSh、ZCode、Kimi 等。

前面列出的这些工具,都可以完成这三件事:

1.读取文件;

2.运行终端命令;

3.根据报错继续修改。

不同工具的界面、权限和操作方式可能不一样。安装后做一次简单检查,是为了确认你当前使用的版本已经开启了文件和终端能力,而不是为了给这些工具排高低。

安装好以后,可以用一个很小的任务测试它:

请打开终端,告诉我当前系统版本和当前工作目录。然后检查 Git 和 CMake 是否已经安装,只做检查,不要修改文件。请把实际执行结果发给我。

它能正常返回检查结果,就说明基本可以开始。此时还没有下载 KataGo 源码,不需要打开什么项目目录。

如果你有选择困难症,不想花时间比较,我建议先安装腾讯的 WorkBuddy。它有赠送的免费积分,也可以通过邀请好友、完成任务等方式获得积分,适合先把这次 KataGo 实践做起来。等以后对模型能力、代码修改范围或终端自动化有更高要求,再去体验和对比其他 AI 工具也不迟。

安装好工具后,选择目录 D:\workspace\KataGo 创建一个项目。项目创建完成后,后面的所有对话都基于这个项目进行,让 AI 能持续读取同一批文件、运行同一个终端环境。

第二步:让 AI 下载 KataGo 源码

现在回到刚才创建的 D:\workspace\KataGo 项目,在这个项目对话里把官方仓库地址交给 AI:

请在当前项目目录 D:\workspace\KataGo 中获取 KataGo 官方源码:https://github.com/lightvector/KataGo.git请完成以下工作:1. 先列出当前目录内容;2. 如果只有项目配置文件,保留这些文件,并用不会覆盖它们的方式获取源码;3. 如果发现与源码同名的文件,先告诉我情况,不要擅自覆盖;4. 记录当前分支、版本和提交号;5. 阅读 README.md 和 Compiling.md;6. 告诉我 Windows 编译 KataGo 需要哪些工具;7. 先不要修改源码,也不要凭空生成文件。

如果电脑没有 Git,可以让 AI 先检查并说明安装方法。不要直接让它猜一个下载地址,也不要看到命令执行失败后仍然说“源码已经下载完成”。

下载结束后,再让 AI 做一次目录确认:

请检查 KataGo 源码是否完整。重点确认 README.md、Compiling.md、cpp、configs、python 等目录或文件是否存在。如果缺少内容,请告诉我缺少什么,不要继续编译。

这一步完成后,AI 应该能说清楚:源码放在哪里、当前版本是什么、后面需要哪些依赖。

第三步:让 AI 根据源码准备环境

不要把一张网上的安装清单原封不动地装进电脑。KataGo 源码和你的电脑,才是判断环境的依据。

把下面的提示词发给 AI:

请根据当前 KataGo 源码中的 README.md 和 Compiling.md,检查我的 Windows 编译环境。请检查:1. Visual Studio 或其他 C++ 编译器;2. CMake;3. Git;4. Python(如果当前构建或测试需要);5. 显卡型号和驱动;6. 可用的 KataGo 后端,例如 CPU、OpenCL、CUDA 或 TensorRT。要求:- 先检查,不要直接安装一堆软件;- 将结果分成“已具备”“缺少”“本次不需要”;- 每安装一个依赖前,说明它是做什么的;- 优先选择最容易编译和测试的方案;- 如果没有合适显卡,给出 CPU 方案;- 所有步骤都要在当前项目目录下验证。

一般来说,只想把 KataGo 编译出来,重点是 C++ 编译器和 CMake。想使用 GPU,再根据显卡选择后端。没有 NVIDIA 显卡,就不要让 AI 盲目安装 CUDA;没有 GPU,也可以先用 CPU 把流程跑通。

你还可以让 AI 把环境检查结果写成文件:

请把刚才的环境检查结果保存为 docs/environment-check.md。记录电脑配置、已安装工具、缺少的工具、选择的 KataGo 后端,以及以后重新搭建环境时需要执行的命令。

这样以后换电脑,或者项目交给别人,都会方便很多。

第四步:让 AI 编译出一个 KataGo 程序

环境准备好以后,再开始编译。把任务拆成“小步测试”,不要一句话让 AI 同时编译、下载模型、连接棋盘软件。

可以这样发:

请根据 KataGo 官方编译说明,先生成 Windows Release 构建目录。使用当前电脑已经确认可用的编译器和后端。不要覆盖源码,不要修改上游文件,除非编译确实需要。执行构建并记录完整命令和输出。

如果 CMake 配置成功,再让它编译:

请继续编译 KataGo 的 Release 版本。编译失败时:1. 保留完整错误日志;2. 解释错误属于依赖、编译器、路径还是源码问题;3. 只修复当前问题;4. 修复后重新执行同一项测试。编译成功后告诉我生成的 katago.exe 的准确路径。

编译完成不等于程序可用。接着做三个最小测试:

请测试刚刚生成的 KataGo 程序:1. 运行 katago version;2. 运行一次 benchmark,确认后端可以工作;3. 使用 GTP 模式加载模型,发送 protocol_version、boardsize 19、   clear_board 和 genmove b;4. 检查是否返回合法坐标;5. 将测试结果保存到 logs/build-and-gtp-test.txt。

第一次用 OpenCL 或 GPU 后端时,初始化可能需要一点时间。AI 如果提示“第一次运行正在调优”,先等它完成,不要立刻中断。

到这里,你应该已经拥有一个真正能运行的 katago.exe。如果程序能返回一手合法棋,不要急着继续改。先把这次成功的命令、模型路径和配置文件保存下来。

第五步:把自己的让子思路告诉 AI

前面的 KataGo 程序已经可以运行,接下来才开始做让子引擎。

这一步最重要的工作,不是先写代码,而是把你的围棋思路告诉 AI。你可以参考这篇文章中的调整:

最新让子版本的几个调整

文章里的思路可以用围棋语言概括成几件事。

让子越多,白棋越主动,但不能无限变得冒险

给不同的让子数设置不同的 PDA,让白棋随着让子增加,逐步提高主动进攻的倾向。比如让两子、三子、四子时逐级增加;让到五子以后逐渐封顶,避免让子太多时白棋为了“搅局”而无谓冒险。

参考文章给出了一组可作为起点的数值:让二子 3.0、让三子 5.5、让四子 8.0、让五子 10.0、让六子 10.5、让七子 11.0、让八子及以上 12.0。实际使用时仍然要通过对局校准,不要把这些数值当成固定答案。

复杂战斗时,白棋要先稳住判断

高 PDA 的白棋容易在大规模对杀、劫争、薄棋和缠绕局面里下得过于冒险。因此,让 AI 同时计算一份 PDA=0 的无偏评估,用它观察局面到底有多不稳定。

当无偏评估显示局面波动很大时,临时降低实际 PDA,并增加搜索量。这样白棋仍然保持主动,但不会只因为策略偏好而冲进看不清的战斗。

参考实现使用 EvenScoreStdev >= 20 作为高波动信号,将实际 PDA 限制为 min(原 PDA, 5),同时把搜索量加倍。这个阈值和倍数可以交给 AI 做成配置项,方便以后校准。

只有确认真的领先,白棋才可以快下

让子局里,带 PDA 的胜率和目差会受到策略偏好影响,不能直接用来判断白棋是否已经稳胜。快下应该参考无偏评估中的真实目差,落后、均势或局面波动大时,仍然正常计算。

开局增加变化,但不强行追求新奇

让子棋如果每次都走同样的小目、低夹或固定定式,黑棋很快就能提前准备。可以把三三、目外、高目、五五、超高目、挂角和侵扰等候选加入开局候选池,再交给搜索结果筛选。

这些只是候选,不是强制落子。目标是让白棋开局更灵活,同时保持基本棋理。

不采用效果不好的开局评分调整

如果某种开局动态提高 ScoreUtilityFactor 后,导致棋局越来越保守,就不要为了“抢角”保留它。开局变化交给候选池和搜索来处理,避免额外的评分偏置影响中后盘。

把这些思路告诉 AI 时,可以直接使用下面的提示词:

请在当前 KataGo 项目中实现一个围棋让子引擎。参考思路文章:https://mp.weixin.qq.com/s/qyhWoz-r5c__7_U9Dy0rJg我的目标是:人类执黑,KataGo 执白。让子越多,白棋越主动,但在复杂战斗中不能因为 PDA 过高而无谓冒险。请根据下面的思路设计和实现:1. 为不同让子数量设置递进的 PDA。可先使用:2 子 3.0、3 子 5.5、4 子 8.0、5 子 10.0、6 子 10.5、7 子 11.0、8 子及以上 12.0,并做成可校准配置;2. PDA 在让子较多时逐渐封顶,避免无限提高;3. 同时计算 PDA=0 的无偏评估,用于判断真实目差和局面波动;4. 在复杂对杀、劫争、薄棋和缠绕局面中,当 `EvenScoreStdev >= 20` 时,将实际 PDA 限制为 `min(原 PDA, 5)`,并把搜索量加倍;5. 只有无偏评估中的 `EvenScoreLead` 确认白棋真正领先时,才允许缩短思考时间;6. 落后、均势或局面波动较大时,保持正常搜索;7. 增加开局候选的多样性,包括不同空角、三三、目外、高目、五五、超高目和合理挂角;8. 开局候选只能参与加权和搜索,不能强制落子;9. 不使用会导致棋局越来越保守的动态 ScoreUtilityFactor 调整;10. 保留普通 KataGo 模式,不要破坏原有 GTP 功能。请先阅读源码和配置,给出设计方案、参数位置、文件修改清单和测试方案。确认方案后再修改代码。

这段提示词里,围棋判断由你给出,AI 负责把它拆成参数、配置和程序逻辑。以后你有新的让子想法,也可以继续按同样方式告诉 AI,让它修改、测试,再和实际对局效果比较。

修改完成后,再让 AI 做验证:

请不要只说明代码已经完成。请实际启动程序,测试不同让子设置,检查棋盘状态、GTP 通信、复杂局面下的 PDA 调整、开局候选多样性和连续落子是否正常。把执行过的命令、测试结果和仍然存在的问题列出来。

最后,怎样判断真的做成了

不要听 AI 说“已完成”就结束。用下面这份清单验收:

•能从源码成功生成 katago.exe;

•katago version 能返回版本信息;

•GTP 模式能加载模型并返回合法落点;

•普通模式和让子模式都能正常启动;

•不同让子设置下,棋盘上的棋子位置正确;

•让子后白棋能正常接着落子;

•可以通过围棋软件连续下一盘;

•关闭程序后,日志能说明使用的模型、配置和让子数量;

•原来的普通 KataGo 模式没有被破坏。

如果某一项失败,把失败时的完整命令、日志和项目状态交给 AI。不要只说“还是不行”,也不要让 AI 在没有日志的情况下猜答案。

这套方法的核心很简单:围棋问题由你定义,软件问题由 AI 拆解;每次只完成一个能验证的小目标。

KataGo 已经替我们完成了最难的那一大段工作。我们要做的,是在开源成果上加一个自己真正用得上的入口:让几子、怎么下、如何陪练,都由自己决定。

相关学习资料