Lizzie 训练系统方案

目标不是把棋手训练成“看答案的人”,而是训练他在鼠标悬浮比较中,理解自己想下的点与系统点在局部作用、全局价值、紧要程度、攻防属性、次序与时机上的差异,并逐渐形成职业化的落子思考框架。

任意点悬浮比较 系统点对照 反事实分析 时机演变 职业思考框架

一、产品目标与训练逻辑

核心目标

  • 训练棋手比较“我的点”和“系统点”为什么不同。
  • 训练的是目的感、急所感、大局感、次序感、时机感,不是死记推荐手。
  • 让棋手理解“5 步前不重要,5 步后变重要”的原因。

核心对比对象

  • 我的点 vs 系统 1 选
  • 我的点 vs 对手若抢此点
  • 当前局面 vs 3/5 手前同一点

展示原则

  • 不做单一总分,避免误导成“哪个数字更大”。
  • 优先显示“最大差异解释”,再显示维度细节。
  • 局部作用不等于最佳点;紧要程度和全局价值必须并列出现。
最关键的修正句式:不是比较哪个点局部变化最大,而是比较两个点的目的、价值、紧要性、攻防属性与时机为什么不同。

二、职业棋手落子前的 8 维系统性思考

维度 职业问题 训练系统要教会用户什么 建议展示语义
落子目的 这手是围地、取势、攻击、安定、消减、侵消,还是先手便宜? 先明确“为什么下”,再看“下得值不值”。 补强 / 攻击 / 大场 / 消减 / 官子 / 先手便宜
局部作用 这手在附近到底做成了什么? 解释本地压缩、稳定、扩张、净空等结果。 压缩 / 稳定 / 扩张 / 变化有限
全局价值 这手是不是整盘最值? 理解“局部热闹”和“全盘值钱”不是一回事。 全局收益高 / 中 / 低
紧要程度 我不下、对手下了会不会很亏? 理解急所本质是“机会损失”,不是“自己变化大”。 急所 / 较急 / 可缓 / 双方争点
攻防属性 这手是在进攻、防守,还是攻守兼备? 理解这手是压对方,还是补自己,还是两边兼顾。 进攻 / 防守 / 攻守兼备 / 大场优先
次序与先手 现在下和以后下差多少?能否逼应? 理解同一手的价值往往取决于先后手。 带先手 / 次序敏感 / 可后延
可替代性 这是不是唯一要点? 理解有些是唯一急所,有些只是同类候选之一。 唯一 / 候选较多 / 同类可替代
时机状态 为什么 5 手前不重要,现在变重要? 训练局势演变、薄味暴露、目标迁移的时机感。 由缓转急 / 持续重要 / 价值下降

三、推荐的交互与解释结构

悬浮任意点

  • 鼠标放到任意交叉点,显示该点分析卡片。
  • 若该点不是系统 1 选,同时显示系统 1 选对照卡片。
  • 顶部优先显示一句“最大差异解释”。

建议卡片结构

  • 落子目的
  • 局部作用
  • 全局价值
  • 紧要程度
  • 攻防属性
  • 次序与先手
  • 可替代性
  • 时机状态

最重要的对比句式

  • 你的点局部更强,但系统点更急。
  • 你的点补得更厚,但系统点抢占大场。
  • 这个点 5 手前可缓,现在因薄味暴露转急。

四、现有 Lizzie / KataGo 数据能支撑什么

维度 现有可用数据 能否直接做 说明
落子目的 ownership 变化形态、PVscoreMean、区域位置 可做弱版 先做规则归类;强版需要引入对手应手后结果。
局部作用 BoardData.estimateArray + MoveData.movesEstimateArray 现在能做 当前推荐点子效已具备这条数据链。
全局价值 scoreMeanwinrate、候选点排名差 现在能做 建议以 scoreMean 为主,winrate 为辅。
紧要程度 候选点差值可做近似 需新增链路 真正关键是“我不下、对手下”的反事实分析。
攻防属性 ownership 前后差、局部稳定性变化 现在能做初版 可拆成“己方稳定提升 / 对方潜力压缩”。
次序与先手 PVpvVisits、排名变化、历史节点 可做弱版 要做强版仍需要候选点后续应手分析。
可替代性 前几推荐点 scoreMean 差距、候选点聚类 现在能做 可以先做“唯一 / 接近 / 同类”的分级。
时机状态 历史节点已有 bestMovesestimateArrayscoreMean 可做部分 完整版本需支持同一点跨历史节点回查。

五、当前代码中的关键数据与入口

用途 代码位置 含义
主棋盘悬浮坐标入口 src/main/java/featurecat/lizzie/gui/LizzieFrame.java:6632 鼠标移动后转换为棋盘坐标的入口。
当前仅推荐点可触发子效 src/main/java/featurecat/lizzie/gui/LizzieFrame.java:6656 只匹配 bestMoves,非推荐点不会进入子效链路。
子效更新入口 src/main/java/featurecat/lizzie/gui/LizzieFrame.java:6686 命中推荐点后调用 updateSubEffectForHoveredMove
当前局面 ownership src/main/java/featurecat/lizzie/rules/BoardData.java:55 当前节点全盘 ownership 数组。
推荐点落子后 ownership src/main/java/featurecat/lizzie/analysis/MoveData.java:34 仅推荐点有 movesEstimateArray
KataGo 输出开关 src/main/java/featurecat/lizzie/analysis/Leelaz.java:2833 通过 ownership truemovesOwnership truepvVisits true 向 KataGo 请求数据。
历史节点链 src/main/java/featurecat/lizzie/rules/BoardHistoryNode.java:12 支持前后节点对比,是时机状态的基础。
关键事实:当前“子效”只能用于推荐点,不是因为算法不能算,而是因为非推荐点没有落子后 ownership 输入。要支持任意点悬浮,必须新增“任意点请求 KataGo 分析并缓存结果”的链路。

六、推荐的技术路线图

  1. 任意点悬浮分析最小版
    新增任意点请求链路与缓存;鼠标悬浮任意交叉点时,取回该点的落子后 ownership,先支持“局部作用 + 全局价值 + 攻防属性初版”。
  2. 对照卡片版
    同时显示“我的点”和“系统 1 选”两张卡片,并生成一句最大差异解释;加入可替代性判断。
  3. 紧要程度版
    增加“如果我不下、对手抢此点”的反事实分析链路,把急所概念真正纳入系统,而不是继续用局部变化近似急所。
  4. 时机与历史演变版
    支持同一点在 3 手前、5 手前、当前的对比,输出“由缓转急 / 持续重要 / 价值下降”等状态。
  5. 训练模式完善版
    增加“先隐藏系统点、用户先判断、再揭晓对比”的训练流程,让棋手先思考再验证,而不是直接看答案。

七、文案与解释模板建议

标准卡片文案

  • 落子目的:补强并抢先手
  • 局部作用:中等,稳定己方明显
  • 全局价值:高
  • 紧要程度:急所;若被对手先占损失大
  • 攻防属性:攻守兼备
  • 次序与先手:现在下值钱,后手补效率下降
  • 可替代性:低
  • 时机状态:由缓转急

最大差异解释模板

  • 你的点局部更强,但系统点更急。
  • 你的点补得更厚,但系统点全局更大。
  • 你的点是进攻手,系统点是攻守兼备的先手点。
  • 这个点 5 手前可缓,现在因对方薄味暴露而转急。

误读规避

  • 局部作用强,不代表这手就是最佳点。
  • 全局价值高,不代表本地变化一定明显。
  • 急所本质是“被抢损失大”,不是“自己下了变化最大”。