Skip to content

v0.1.27 · 手数分支树(回看能试下 / 分支存进棋谱 / 树面板 / 提升主变 / 删除分支)+ 讲解与界面修复

Choose a tag to compare

@Rapace7 Rapace7 released this 13 Oct 14:42
· 29 commits to main since this release

手数分支树(回看能试下 · 分支存进棋谱 · 水平分叉树面板 · 提升主变/删除分支);讲解重写;棋手名能存进棋谱;棋谱库能“覆盖”

下载(页面最下面的 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

更新到新版本

把新包解压到原来那个文件夹、覆盖同名文件就行 —— 棋谱和设置不会丢。

  1. 打开软件 → 左上角「帮助」,记下当前版本号
  2. 到这个页面看最上面那条是不是更新了
  3. 关掉软件(重要:程序开着文件被占用,覆盖会失败或只覆盖一半)
  4. 下载新的 RapaceGo.zip → 解压到你现在用的那个文件夹 → 问是否覆盖时选「替换」
  5. 重新双击 RapaceGo.exe

为什么不会丢东西:包里只有程序本体,records/(你的棋谱和讲解)、settings.json
(引擎路径)、KataGo/、LoGos/(引擎与模型)都不在包里,所以原样保留。

保险做法:更新前把 records 文件夹复制一份到别处 —— 那是唯一丢了找不回来的东西。

⚠️ 引擎要自己准备一次(包里不含)

下载包里只有软件本体(约 570KB 的代码 + Electron 运行时),两个引擎是别人的项目:

① KataGo(必需,不装就没有 AI 下棋和数据分析)

② 讲解模型(可选,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 不行 —— 压缩工具没有「合并分卷」功能。

⚠️ 合并后务必核对:应该是 4,683,071,328 字节(约 4.36 GB)。
不对就是没下全,删掉重下。核对完可以把三个 .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 版。
⚠️ 官方主包不含 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