Repository navigation
v0.1.27 · 手数分支树(回看能试下 / 分支存进棋谱 / 树面板 / 提升主变 / 删除分支)+ 讲解与界面修复
手数分支树(回看能试下 · 分支存进棋谱 · 水平分叉树面板 · 提升主变/删除分支);讲解重写;棋手名能存进棋谱;棋谱库能“覆盖”
下载(页面最下面的 Assets,按平台挑一个;这些包都不含引擎):
| 平台 | 文件 |
|---|---|
| Windows | RapaceGo-win.zip |
引擎要自己配(见 README「显卡品牌」那一节)。
想省事?直接下懒人包(自带引擎,解压就能用)
上面那个 zip 不含引擎(KataGo 权重 + LoGos 模型要自己配)。
懒人包把这些全带齐了,解压后双击 RapaceGo.exe 即可,零配置:
👉 夸克网盘 · 玄清围弈懒人包 (提取码
Svze)约 8.5 GB,含:程序本体 + KataGo(N 卡加速版和通用版两套,软件自己按显卡挑)+ LoGos 讲解模型。
下载后解压、双击RapaceGo.exe就能用 —— 不用再去看「显卡品牌」那一节。
展开看这一版改了什么
v0.1.27:手数分支树(回看能试下 · 分支存进棋谱 · 水平分叉树面板 · 提升主变/删除分支);讲解重写;棋手名能存进棋谱;棋谱库能“覆盖”★ 全盘讲解会先问一句了(2026-10-14 补进这一版)
以前点「全盘讲解」,不管这份棋谱算没算过,都要把 KataGo 整盘分析重跑一遍(几分钟)——
可旁边明明就存着 <棋谱名>.review.json(整盘胜率)和 .coach.json(逐手讲解)。
现在按情况先问:
| 情况 | 会发生什么 |
|---|---|
| 已经有整盘胜率记录 | 弹窗告诉你这份记录是干什么的,并推荐「跳过重算」(省下那几分钟);也可以选「重新算一遍」 |
| 还没有任何讲解 | 什么都不问,直接开始 |
| 已经有讲解 | 弹窗问:接着讲没讲过的(推荐)/从头重跑(把已讲的抹掉,从第一手重讲) |
弹窗里会写清楚:整盘胜率是干嘛的(给每一手算胜率、标「这一手亏了多少」、画右边的走势图)、
已经讲过几手、还剩几手。取消随时可以点。
★ 手数分支树(这一版的大功能)
以前这软件只有一条手顺线:回看某一手时想试试别的下法,只能「试下」打个草稿,一退出就没了,
棋谱也存不下来。
现在能真正开分支了:
| 你想做的事 | 怎么做 |
|---|---|
| 在某一手试试别的下法 | 把局面退到那一手,直接落子 —— 自动开一条新分支,原来那条线留着不丢 |
| 在分支之间来回看 | ↑ ↓ |
| 把某条分支变成主线 | 跳到那一手,按 PgUp(原主线整枝还在,随时切回去) |
| 删掉一整条分支 | 按 Delete —— 会先问一次,再按一次才真删;删错了按 Ctrl+Shift+Z 撤销 |
| 一眼看全所有分支 | 手数卡右上角的滑杆切到「树」 |
| 分支存进棋谱 | 导出时自动写成标准变着 (旧线)(新线),别的围棋软件也认 |
| 打开带变着的棋谱 | 直接能看、能切分支;手数列表里标 ⑂1/2 |
树面板长什么样(参照 KaTrain 的「珍珠手串」):
- 黑白棋子连着串起来,主变那条串金色外圈,当前在看的那一手是青色环 + 放大;
- 旁支从母珠上分出一条线垂下来再接进去,行与行之间不会交叉;
- 鼠标悬停出详情:手数 · 黑白 + 坐标 · 这一点共几种走法 · 这一手亏/赚多少胜率 ·
复盘目损 · 此时黑棋胜率 · 有没有讲解; - 右键按住拖动 = 拖动画布(原地右击才弹菜单:提升主变 / 删除分支);
- 珠子上的手数是「12a 式」:分岔后同一支上的手共用字母后缀(12a、13a…),主线不带后缀。
试下(打草稿)不进分支树 —— 它还是「临时摆摆」,退出就干净了,不会在树上留幽灵旁支。
起因:一条讲解 bug,牵出了整块重写
用户实测发现:黑棋第 5 手实际下在 D16,讲解却在讲「如果黑棋下在 D4……」 ——
整段讲的是另一个点。查下去发现不是一个小错,是讲解的输入给错了。
根因:讲解一直拿「这一手之前」的盘面交给模型,却要求它讲「这一手之后」。
在那个盘面上正好轮到刚落子的那一方走 —— 模型看到的是「该我选点了」,
于是本能地退回它最擅长的「列候选点」。D4 就是它列的候选之一。
(顺带排除过一个更可疑的方向:不是坐标系上下颠倒。专门测过 ——
给模型一颗子问「它下在哪」,放 D16 答 D16、放 Q16 答「右上角」、放 C4 答「左下角」,全对。)
一、讲解现在长这样
每一手按 结论 → 道理 → 对照 三段给:
| 段 | 内容 | 谁说了算 |
|---|---|---|
| ① 结论 | 好棋就夸、烂棋就骂(口语,不写棋评八股) | KataGo 的胜率涨跌 |
| ② 道理 | 这一手碰到了谁、对方大概怎么应、好在哪差在哪 | LoGos 讲 |
| ③ 对照 | AI 当时更倾向下哪儿、那手多少胜率、你这一手差了几个点 | KataGo 给的数字 |
好坏一定由 KataGo 说了算,不让模型自己判断。 为什么:实测同一手亏 8.5% 的棋跑两次,
模型一次骂「不太像棋啊」,一次夸「碰得很有想法」—— 它不稳定,而且会自己编胜率
(写出过「这个变化下白棋胜率 71.4%」这种根本没算过的数)。
现在结论由程序写死、模型只负责顺着讲理由。
一之二、讲解不再「瞎编盘面」(本次最重要的一处)
有用户实测发现:某手落在空空如也的角上,讲解却说「这手碰得有点早」
「黑棋在四个角都有子力,白棋的布局明显落后了」—— 全是编的。
根因:一直是让模型自己去读那个 19×19 的数字矩阵,判断"这一手碰到了谁"。
7B 读不准,读不准就凭"棋局感"瞎编。
现在盘面事实全部由程序算好喂进去,模型只负责顺着事实讲道理:
- 挨着谁 —— 四周八格没子,就明说「它既不是碰、也没挨着谁」
- 什么位置 —— 星位(4-4)/ 小目(3-4)/ 三三(3-3)/ 边 / 中腹
(实测它把 3-4 的 D3 说成过「星位」) - 四个角各有几颗子 —— 免得它再说"四个角都有子"
并且加了一条硬规矩:事实说是空的,就不许写「碰」「靠」「挡」「断」。
(光把"它不是碰"写在事实里没用 —— 它照样无视;写成一条独立规矩才管住。)
同一手、同一局面,改前改后:
| 输出 | |
|---|---|
| 改前 | 「白棋这手 D3 碰,明显是针对黑棋在左上小目的布局」 |
| 改后 | 「白棋在左下小目(3-4)落子,这个位置太偏了,既不能有效占角,对黑棋的压迫也不够。黑棋完全可以不理它」 |
还治不好的(7B 的能力边界,如实说明):更细的地方它仍会编 ——
比如事实里写了「左上 黑1白2」,它照样说「黑棋左上两子」。
所以:事实类的信息(坐标/胜负/目损/碰到谁/什么位置)一律由程序给,
一个字都不让模型猜;棋理类的分析交给模型,但别指望它精确。
二、顺手清掉的六类废话
跑完整盘 217 手逐手看,模型翻来覆去就这几种毛病(下面每条都是真实原句):
- 动作旁白:八十多手出现「(对着棋盘沉思片刻)」「(轻笑着摇头)」「(自言自语:…)」
「(用教学语气)」—— 它把讲解写成剧本了 - 自己编的胜率:一律删;要数字由程序在最后补真的
- 推演变化图:「如果选择 D11 粘,预计变化:粘 / 扳 / 扳 / 粘……」这种残渣
- 替对方支招:「现在白棋有几个不错的选点值得考虑:」「白棋现在可以下在 P5 粘住」——
你问的是这一手怎么样,不是教对手下棋 - 数字分点罗列:「1. 白棋下在 J18 粘住」—— 同上,而且把讲解写成条目了
- 「我建议…」:「我建议黑棋立即在 B17 扳一手」—— 评论员不该替谁出主意
顺带修掉的一个真 bug:讲解里出现「7一带」
有用户截图报的:某几手讲解里冒出「7一带已经形成了相当厚实的外势」,完全看不懂。
查出来是我们的清理正则干的 —— 模型用训练数据的记谱法写「X-L17」/「O-L17」,
而我们的清理是把整段抹成空格(当初的理由是"用户看不懂一个字母加横杠接坐标"),
于是「黑棋在 X-L17 一带」变成「黑棋在 一带」,甚至「X-L1 7一带」变成「7一带」。
现在改成只去掉前缀:「X-L17」→「L17」。
—— 用户当初抱怨的只是那个格式看不懂,坐标本身是该留的。
二之二、每手要讲「两三句」,不是只给一句结论
第一轮整盘跑完发现:有些手只剩「这手不行,这手有问题啊。」—— 只有结论,
没有理由,也没说这样下会怎样。
查出来是两层:① 给模型的生成长度太小(340),它写到 460 字左右就被掐断,
原始输出结尾是「这个变化虽然也能吃掉黑」这种半句;② "太短也算合格"的门槛太低,
这种一句结论也被放行了。
现在:生成长度 340 → 520、"讲出东西"的门槛 40 字 → 70 字
(不合格就重讲一遍),并在提示里把必须说到的三点写死:
碰到谁 / 对方大概怎么应 / 为什么好或不好。
三、棋手名能存进棋谱了
原来:打谱时点名字改名,界面上变了、文件里没变,重开还是 PLAYER1 / PLAYER2,
改几次都白改。原因:改名只写进了内存,而唯一会落盘的那条路只在「下完棋点保存」时才走 ——
打谱时根本不会触发。
现在:改完立刻写进棋谱(SGF 的 PB / PW 两项),别的软件也认。
而且只改这两个字段 —— 棋谱里的备注、解说词一字不动。
四、棋谱库
- 做得更大(580 → 880px),棋谱名和备注名完整显示、不再被截成「符…」
- 新增「覆盖」按钮(排在「删除」前面):把当前棋盘上的这一盘棋写进这份棋谱,
替换它原来的内容 —— 改完棋谱不用再「另存成一份新的、再手动删旧的」。
覆盖前会自动留一份.bak备份,能捞回来。 - 覆盖之后这份棋谱的讲解对不上新内容了,要用就重跑一次「全盘讲解」
五、还有两处
- 桌面快捷方式改用中文名「玄清围弈」(和「玄清象棋」「玄清国象」统一);
老版本建的RapaceGo.lnk可以自己删掉 - 左栏比例调整:手数 / 分析讲解 / 推荐落点 = 2.5 : 5 : 2.5
(原来 3:3:4,中间那栏从 30% 提到 50%)—— 复盘时中间才是主角
六、打开棋谱就能看到每手胜率
每手胜率(胜率 / 目差 / 目损)一直存在复盘报告里,但打开棋谱时不读它 ——
手数列表的「涨跌」列和走势图都是空的,非得再点一次「复盘报告」、或者重跑一遍「AI 复盘」。
数据本来就在,只是没人去拿。
现在打开棋谱就自动带出来:涨跌列有数字、走势图有曲线,不用再算一遍。
⚠️ 老棋谱里的讲解会自动作废
讲解是跟在棋谱旁边的(<棋谱名>.coach.json)。这次改了讲法,所以旧讲解
版本对不上一律作废,再点一次「全盘讲解」会按新讲法重讲。
(这是故意的 —— 不然修好了你也看不到新的。)
作废之后棋谱库里会明确标出来:那份棋谱显示「讲解要重讲」而不是「带讲解」,
点开也不会是一片空白让人以为坏了。
关于「三大目录」的分工(维护者备查,也免得自己混)
| 位置 | 是什么 | 里面该有什么 |
|---|---|---|
RapaceGo\(开发目录) |
改代码、跑测试的地方 | 源码 + node_modules + 一堆 _ 开头的开发脚本 |
dist\ |
只放要传 GitHub 的东西 | 只有 RapaceGo.zip(win-unpacked 是中间产物,同步完自动删) |
玄清围弈\ |
本地自用的免解压版(唯一一个) | 可直接双击运行的完整程序 |
桌面 RapaceGo懒人包\ |
给别人下载用的整包(传网盘,不传 GitHub) | 程序 + KataGo + LoGos,解压即用、零配置 |
为什么懒人包不上 GitHub:它 8.2 GB,而 GitHub Release 单个附件上限 2 GB,
且大头(4.4GB 的.gguf模型、296MB 的.bin.gz权重)本身就是压缩格式,
再打 zip 也压不动。GitHub 那份走轻量路线(146MB + 首次运行自动下模型)。
★ 懒人包的目录约定(做包时最容易搞错的一条)
main.js 里打包态的「引擎位置」是和 RapaceGo.exe 平级,不是上一级:
BASE_DIR = IS_PACKAGED ? path.dirname(process.execPath) : __dirname; // 打包后 = exe 目录
const up = IS_PACKAGED ? BASE_DIR : path.join(__dirname, '..'); // 打包后 up 就是 exe 目录本身
katago: path.join(up, 'KataGo', 'engine', 'katago.exe')所以懒人包的布局必须是:
RapaceGo懒人包\
├─ RapaceGo.exe ← 和下面两个目录平级
├─ KataGo\engine\katago.exe + weights\
└─ LoGos\llama-server.exe + *.gguf
别把程序本体再套一层 RapaceGo\ —— 那样软件会去找 懒人包\RapaceGo\KataGo\...,
而文件在 懒人包\KataGo\...,结果引擎永远起不来(实测 settings.check 五项全 false)。
重建懒人包:powershell -File _build_lazy.ps1(已含"删掉 settings.json / records"等铁律)。
下载
只有一个文件:
| 文件 | 大小 | 说明 |
|---|---|---|
RapaceGo.zip |
约 146 MB | 解压一次,之后从文件夹里双击启动 —— 启动最快,也最便携 |
包名固定不带版本号(这样每次下载地址都一样)。要知道自己装的是哪一版:
打开软件 → 左上角「帮助」,标题右边写着版本号。
完全不会用 GitHub 也能装(四步)
① 打开下载页:https://github.com/Rapace7/RapaceGo/releases
② 往下滑,找到最上面那条发布(标题写着版本号和日期,GitHub 的下载文件都放在「发布」里)
③ 那个区块下面有一栏 Assets
⚠️ Assets 不是一个文件夹,是这次发布附带的下载文件清单。
小白最容易在这儿绕晕 —— 你要找的就是这份清单里的文件。
④ 点清单里的 RapaceGo.zip 下载
⚠️ 别下页面最下面的Source code (zip)—— 那是 GitHub 自动生成的源码压缩包,
解压出来不能双击运行
⑤ 下载完右键「全部解压缩」,打开文件夹,双击 RapaceGo.exe —— 软件就起来了。
认准三样东西就行:① 最上面那条发布 → ② 它下面的
Assets清单 → ③ 蓝色的RapaceGo.zip
更新到新版本
把新包解压到原来那个文件夹、覆盖同名文件就行 —— 棋谱和设置不会丢。
- 打开软件 → 左上角「帮助」,记下当前版本号
- 到这个页面看最上面那条是不是更新了
- 关掉软件(重要:程序开着文件被占用,覆盖会失败或只覆盖一半)
- 下载新的
RapaceGo.zip→ 解压到你现在用的那个文件夹 → 问是否覆盖时选「替换」 - 重新双击
RapaceGo.exe
为什么不会丢东西:包里只有程序本体,records/(你的棋谱和讲解)、settings.json
(引擎路径)、KataGo/、LoGos/(引擎与模型)都不在包里,所以原样保留。
保险做法:更新前把
records文件夹复制一份到别处 —— 那是唯一丢了找不回来的东西。
⚠️ 引擎要自己准备一次(包里不含)
下载包里只有软件本体(约 570KB 的代码 + Electron 运行时),两个引擎是别人的项目:
① KataGo(必需,不装就没有 AI 下棋和数据分析)
- 程序:https://github.com/lightvector/KataGo/releases 的 Windows 版
- 权重两个:https://katagotraining.org/ 的
b11c768nbt.bin.gz(算胜率)和
b18c384nbt-humanv0.bin.gz(当对手,文件名带 human 的那个)
② 讲解模型(可选,4.4GB)
解压后的文件夹里有一个 下载讲解模型.bat —— 双击它就行。
它会自动下载、合并模型、装好推理运行时,全程中文提示;
中途断了重新双击会接着下(按精确字节数判断,没下全的续传)。
👉 已经自己下载了那三个 .part 分卷(part01/02/03)?
那就不用管 bat 了 —— 往下翻到 ▶ 点这里展开 那段,一行命令就能合并。
▶ 点这里展开:已经自己下好那三个 .part 分卷了?手动合并也行(不用 bat)
下载 LoGos-7B-Q4_K_M.gguf.part01 / .part02 / .part03 之后,任选一种方式合并成
LoGos-7B-Q4_K_M.gguf(三个文件放在同一个文件夹里):
① 命令提示符一行
copy /b LoGos-7B-Q4_K_M.gguf.part01+LoGos-7B-Q4_K_M.gguf.part02+LoGos-7B-Q4_K_M.gguf.part03 LoGos-7B-Q4_K_M.gguf② PowerShell(流式拷贝,内存占用低)
$out = [System.IO.File]::Create("LoGos-7B-Q4_K_M.gguf")
foreach ($p in "part01","part02","part03") {
$i = [System.IO.File]::OpenRead("LoGos-7B-Q4_K_M.gguf.$p")
$i.CopyTo($out); $i.Close()
}
$out.Close()③ 7-Zip / WinRAR 不行 —— 压缩工具没有「合并分卷」功能。
不对就是没下全,删掉重下。核对完可以把三个 .part 删掉(省 4.4GB)。
然后回软件「设置」→ LoGos 组分别选 llama-server.exe 和合并出来的 .gguf。
为什么要分卷:GitHub 单个文件硬上限 2GB,而这模型 4.4GB —— 平台限制,
不是故意折腾你。三个分卷就是纯二进制切片,合并结果和原文件逐字节一致
(开发时用 sha256 验过)。
合并完还需要推理运行时(llama-server.exe)—— 上面那个 bat 会帮你装。
▶ 点这里展开:完全手动装(不用 bat、不用管分卷)
模型:YichuanMa/LoGos-7B 转的 GGUF Q4_K_M;
运行时:llama.cpp 的 Windows CUDA 版。
cudart-*.zip 放同目录。
装完之后文件夹长什么样
解压出来不止 RapaceGo.exe 一个文件,还有一堆 .dll、.pak、locales\ 之类 ——
那些都是软件自带的运行库(Electron 框架),不用管、也不要删(一共约 368 MB)。
下面把「你加进去的」和「软件自带的」分开写:
RapaceGo/ ← 解压出来的文件夹(名字随便,拷到哪都能用)
│
├─ ★ 你自己准备的 ──────────────────────────
│ ├─ KataGo/ ① 下 KataGo 的 Windows 版解压进来,改名成 KataGo
│ │ ├─ katago.exe
│ │ ├─ …(同目录还有一堆 .dll,一起放着别删)
│ │ └─ weights/ ② 新建这个文件夹,放两个权重
│ │ ├─ b11c768nbt.bin.gz 算胜率 / 推荐点 / 形势
│ │ └─ b18c384nbt-humanv0.bin.gz 当 AI 对手(带 human 的那个)
│ └─ LoGos/ ③ 双击「下载讲解模型.bat」之后自动出现(可选)
│ ├─ llama-server.exe
│ └─ LoGos-7B-Q4_K_M.gguf
│
├─ ★ 软件自带的(别删)─────────────────────
│ ├─ RapaceGo.exe ← 双击这个启动(245 MB,程序+框架都在里面)
│ ├─ 下载讲解模型.bat ← 要讲解功能就双击它(会自动建上面的 LoGos/)
│ ├─ start.bat ← 双击没反应时的备用启动方式
│ ├─ resources/ locales/ ← 程序代码、界面、语言包
│ ├─ *.dll(7 个) ← 图形 / 视频 / 编译器等运行库
│ ├─ *.pak / *.bin / *.dat ← 界面资源
│ └─ LICENSE.electron.txt · LICENSES.chromium.html ← 开源许可声明
│
└─ ★ 自动生成的(随时可删)─────────────────
├─ settings.json ← 你在「设置」里填的引擎路径(**删了要重填**)
├─ records/ ← 你的棋谱 + 复盘报告 + 逐手讲解(**别删**)
└─ userdata/ ← 页面缓存(删了自动重建,不心疼)
一句话:只有
RapaceGo.exe和那一堆自带的 dll/pak 是"程序本体",其余要么是你放进去的引擎、
要么是它自己生成的数据。看不懂的文件不要删 —— 真正该动的只有KataGo/、LoGos/和「设置」。
想彻底卸载:把整个文件夹删掉就行(棋谱想留就先复制records/出来)。
装好后在软件左上角「设置」里指一下路径(选 katago.exe 时它会自动帮你填权重),
再点左上角(顶栏左侧)的引擎灯 →「加载」。
硬件:显存是主要门槛
实测(RTX 4070 Laptop / 8GB,nvidia-smi):
| 组件 | 显存 |
|---|---|
| KataGo 分析引擎 | ≈ 350 MB |
| KataGo 对弈引擎 | ≈ 170 MB |
| LoGos 讲解模型(Q4_K_M) | ≈ 4.9 GB |
| 三个全开 | ≈ 5.5 GB |
6GB 显存的卡能用但别全开;4GB 或核显只能用 KataGo 部分功能。
软件默认一个引擎都不加载,用不到就不占显存。
说明
- 本项目代码 MIT;KataGo MIT;LoGos 授权为「仅研究、非商业」
- 讲解由本地小模型 LoGos 生成,只输出中文(训练数据是中文标注)。
看不懂中文的话:把讲解文字选起来丢进翻译工具就行(软件里允许选中复制)。 - 代码几乎全部由 AI Agent 编写(对话由 DeepSeek V4.1 Flash 驱动),
完整的决策过程见仓库里的开发记录.md