推理记录本与自动辅助插件模块

07/033 浏览综合
本文档总结本轮围绕《八卦玄机》推理记录本、自动标记、自动填槽、破译判定与 UI 时序稳定性的设计。该模块建议作为独立插件接入主游戏,名称暂定为:推理记录本与自动辅助插件。
模块定位 推理记录本与自动辅助插件负责玩家本地推理体验,不改变服务端权威规则,不替玩家直接完成完整求解。
它的核心目标是:
记录问答线索。 帮玩家自动做确定性标记。 保持玩家正在操作的推理面板不被网络事件打断。 降低移动端误触和重复手工记录成本。 在破译时确保数字和黑白颜色都被正确校验。 该模块属于本地辅助层,和多人同步状态解耦。
插件边界 负责内容 推理记录本开关状态。 排除板红叉状态。 对手命盘候选槽。 自动填入确定位置。 自动排除不存在数字。 连号关系视觉提示。 同色相邻视觉提示。 破译提交时的颜色完整性检查。 网络快照刷新后的 UI 状态恢复。 不负责内容 服务端发牌。 问题卡答案权威计算。 房间创建、加入、重连。 完整自动求解器。 自动生成唯一答案。 插件内部结构建议 text
复制 推理记录本与自动辅助插件 ├─ 记录本界面子模块 ├─ 排除板子模块 ├─ 候选命盘子模块 ├─ 问答解析子模块 ├─ 自动填槽子模块 ├─ 约束标记子模块 ├─ 破译校验子模块 └─ UI 状态保持子模块 记录本界面子模块 记录本分为左右两部分。
text
复制 左页:问答记录 右页:推理候选 右页继续拆为:
text
复制 推理候选 ├─ 排除板 └─ 对手命盘候选 移动端适配原则 白/黑候选按钮需要足够间距,避免数字挨得太近。 候选按钮点击热区要优先于视觉紧凑度。 绿色槽固定宽度,不允许因为文本从 _ 变为 1?、黑2 后撑大。 记录本打开后,网络事件不能自动关闭记录本。 排除板子模块 排除板用于标记对手不可能拥有的牌。
开局自动排除 如果玩家自己手里有某张牌,则该牌对应颜色对手不可能拥有。
例如:
我方手牌:黑8 则系统自动标记:
黑8 红叉 问答自动排除 如果玩家询问某个数字的位置,对方回答“没有”,则说明对手没有该数字的任何颜色。
例如:
text
复制 8在哪? → 对手答:没有 有没有8? → 对手答:没有 8有吗? → 对手答:没有 艮/离在哪?选择 8 → 对手答:没有 系统自动标记:
text
复制 白8 红叉 黑8 红叉 同时清除对手命盘候选槽中已经填写的所有 8。
特殊数字 5 数字 5 在当前视觉和逻辑中作为中宫处理,不按普通白/黑排除按钮操作。若未来需要支持“无 5”推理,应单独设计中宫排除状态。
候选命盘子模块 候选命盘以 5 行 × 5 列绿色槽表示玩家记录的可能结果。
固定宽度设计 绿色槽必须固定宽度:
text
复制 width / minWidth / maxWidth 一致 height / minHeight / maxHeight 一致 这样文本变化不会导致槽位变宽。
显示内容示例:
text
复制 _ 未填写 1? 数字确定,颜色未确定 白1 数字和颜色推断为白 黑1 数字和颜色推断为黑 中5 中宫 自动填入确定位置 如果位置类问答能确定数字所在位置,则自动填入所有候选行对应列。
例如:
太极在哪里? → 对手答:第1位 自动填入:
第1列全部填 0 如果颜色可以通过排除板推断,则显示为:
白0 / 黑0 / 中5 如果颜色暂不能确定,则显示:
0? 多位置答案 如果答案包含多个位置,必须全部处理。
例如:
中宫在哪里? → 对手答:第1位、第2位 系统应自动填入:
text
复制 第1列全部填 5 第2列全部填 5 不能只填第一个位置。
问答解析子模块 问答解析模块只解析玩家自己发起的问题。
可识别格式包括:
text
复制 [我问] 太极在哪里? → 对手答:第1位 [我问] 8在哪? → 对手答:没有 [我问] 连号在哪? → 对手答:第1-2位、第2-3位 [我问] 同色相邻? → 对手答:第1-2位、第4-5位 本地 AI 模式下也支持原始日志格式:
S1:太极在哪里? → 阿墨答:第1位 解析原则 只处理当前玩家主动问出的线索。 不处理对手问出的线索,避免把“你答”误当成对手命盘线索。 不处理共享题的自动填槽,除非未来设计专门的共享题约束解析。 每条日志只处理一次,避免网络快照重复刷新导致重复写入。 自动填槽子模块 自动填槽只处理确定性强的位置类线索。
自动填槽触发条件 位置类问题 + 答案中含有“第N位” 例如:
text
复制 0在哪? → 对手答:第1位 艮/离在哪?选择 8 → 对手答:第4位 中宫在哪里? → 对手答:第1位、第2位 自动填槽行为 text
复制
  1. 解析问题中的目标数字。
  2. 解析答案中的全部位置。
  3. 将候选命盘所有行的对应列填为该数字。
  4. 颜色显示交给现有颜色推断逻辑。 自动排除行为 位置类问题 + 答案为“没有” 系统应:
text
复制
  1. 自动排除白色该数字。
  2. 自动排除黑色该数字。
  3. 清除候选槽中该数字。 约束标记子模块 约束标记只做视觉提示,不做完整求解。
连号关系 问题示例:
连号在哪? → 对手答:第1-2位、第2-3位 表示:
text
复制 第1位和第2位数字连续 第2位和第3位数字连续 视觉提示:
[槽1] [槽2] [槽3] 同色相邻关系 问题示例:
同色相邻? → 对手答:第1-2位、第4-5位 表示:
text
复制 第1位和第2位颜色相同 第4位和第5位颜色相同 视觉提示:
[槽1] ◆ [槽2] [槽4] ◆ [槽5] 多约束叠加 如果同一对槽同时存在连号和同色相邻关系,则显示:
◆ 约束生命周期 同一局内约束累加。 重新开局清空全部约束。 换房间清空全部约束。 网络快照刷新不清空约束。 破译校验子模块 破译必须校验数字和颜色。
错误示例 如果真实对手命盘是:
白0 白1 玩家误判为:
黑0 白1 虽然数字和相同,但颜色错误,必须判定失败。
提交内容 客户端提交破译时必须提交:
text
复制 Guess1 = 数字 Guess1Color = white / black / middle ... Guess5 Guess5Color 不能只提交数字。
服务端判定 服务端逐位比较:
text
复制 数字一致 颜色一致 两者都一致才算破译成功。
未确定颜色时禁止提交 如果某个槽显示:
0? 说明颜色未确定,应阻止提交并提示:
第N位还不能确定黑白颜色,不能提交破译。 问题卡耗尽规则 问题卡公开区与牌堆关系:
问题牌堆 + 可见问题卡 + 弃牌堆 = 问题卡总数 当玩家使用一张问题卡:
text
复制
  1. 该问题进入弃牌堆。
  2. 如果牌堆还有牌,抽一张补到原位置。
  3. 如果牌堆为空,原位置变为空白禁用卡槽。 空白卡槽要求:
保留原位置。 不显示文字。 不显示“卦签已尽 / 无可补牌”。 不可点击。 不可被确认提问。 这样可以避免牌堆耗尽后重复使用旧问题卡,导致弃牌堆超过问题卡总数。
UI 状态保持子模块 网络事件不应该打断玩家本地推理操作。
问题现象 以下事件都会触发 UI 重建:
text
复制 对手确认提问 对手发送聊天 服务端发送 GameSnapshot 如果记录本打开状态只存在于 UI 节点本身,重建后会默认关闭。
设计原则 本地 UI 状态应独立保存:
lua
复制 recordOpen_ = false chatOpen_ = false decipherOpen_ = false 网络事件刷新 UI 后应恢复这些状态。
行为规则 对手提问后,记录本保持打开。 对手聊天后,记录本保持打开。 玩家主动点“聊天”,可以关闭记录本和破译面板。 玩家主动点“记录”,可以关闭聊天和破译面板。 玩家主动点“破译”,记录本保持打开,方便参考线索。 返回主菜单、离开房间、换局时清理临时面板状态。 多人同步原则 推理记录本中的以下内容属于本地辅助状态:
text
复制 排除板 候选命盘 自动标记 连号/同色约束 记录本开关状态 它们默认不上传服务端,不同步给对手。
服务端只负责:
text
复制 发牌 问题卡 回合 问答日志 破译结果 胜负判定 这样可以避免一个玩家的推理过程泄露给另一个玩家。
后续可扩展方向 自动约束列表 未来可以在记录本右页增加“约束区”:
text
复制 连号:1-3 同色:4-5 总和:17 最大最小差:6 当前版本先不显示约束列表,只显示槽间视觉提示。
候选组合过滤器 未来可以根据全部线索生成可能命盘组合:
text
复制 剩余可能:12 种 第2位必为 1 第4位可能是 6/7/8 该功能属于高级自动求解器,当前版本暂不实现。
移动端全屏记录本 移动端可进一步优化为记录本全屏模式:
text
复制 问答记录 排除板 候选命盘 约束提示 减少手牌区和聊天区对记录本空间的挤压。
推荐插件接口 lua
复制 ReasoningAssistantPlugin = { Init(context), ResetRound(), OnQuestionLog(log), ApplyAutoFill(log), ApplyAutoEliminate(log), ApplyRelationMarks(log), GetCandidateState(), GetConstraintState(), ValidateDecipherDraft(draft), } 当前实现优先级 已落地优先级:
text
复制
  1. 固定候选槽宽度。
  2. 白/黑候选按钮间距和尺寸优化。
  3. 位置类问答自动填槽。
  4. “没有”答案自动排除。
  5. 连号关系视觉链条。
  6. 同色相邻视觉标记。
  7. 问题卡耗尽后空白禁用卡槽。
  8. 破译数字 + 颜色双重判定。
  9. 网络刷新后保持记录本打开状态。 暂不实现:
text
复制
  1. 完整自动求解器。
  2. 右侧文字约束列表。
  3. 共享题自动组合推理。
  4. 候选组合数量统计。
3