上下文切换
切出游戏、输入名称、比对结果,再回到现场;查询本身打断了判断。
01 · 概览 / 从产品定义到真实发布
核心识别流程
18.61s → 7.14s
处理耗时降低约 62% · 14 张离线参考图 · 识别数量不变
本案例的截图与复盘依据为 BETA 0.2.2,不代表当前公开版本;历史验证条件在图注中单独标明。
Current state / 版本状态

01 · 问题定义
网站和小程序已经能查价格;真正未被解决的是:玩家必须离开当前操作上下文,才能完成一个需要快速反复发生的价值判断。
我的贡献
我负责围绕局内查价确定产品范围,区分单件即时确认与背包批量整理,定义触发、结果展示和异常规则,并根据计时测试与用户反馈安排迭代。AI 辅助代码实现和调试;需求取舍与验证结论由我判断。
下文分别呈现实际界面、可靠性规则与性能验证记录。
看到物品
记住名称
切换窗口 / 手机
搜索并比价
回到游戏
做出判断
切出游戏、输入名称、比对结果,再回到现场;查询本身打断了判断。
单件查询尚可接受,但背包内物品增加后,重复操作成本快速上升。
市场价格持续变化,熟悉物品也可能因过期记忆产生错误判断。
局内整理、取舍和撤离都发生在有限时间内,结果必须及时出现。
02 · 关键体验与交互
全局快捷键减少操作路径,结果贴近物品位置降低视线往返;单扫和整屏扫描使用不同性能档位,让即时确认与批量判断各自承担合适的等待成本。


提示窗优先策略将识别区域控制在鼠标附近的原生提示文本;失败后才按性能档位回退,避免无意义的全屏 OCR。


批量结果保留与原物品位置的关联,并只显示可靠匹配;整包合计与可选换包建议帮助用户比较,而不是替用户操作。
Decision
Why · 用户的主要任务仍在游戏内,打开主窗口再点击会重新引入上下文切换。
Impact · 单扫 Alt+Q、整屏 Alt+W 均可配置,应用后台运行时仍可触发。
Decision
Why · 价格若只出现在主窗口,用户仍需重新建立结果与物品的对应关系。
Impact · 结果浮层使用屏幕物理坐标定位,并在 WPF 显示层完成 DPI 换算。
Decision
Why · 不同分辨率、界面缩放和性能偏好需要调节,但不应增加每次扫描的步骤。
Impact · 快捷键、识别档位、标签位置、显示阈值和 DPI 适配集中配置。
03 · 可靠性取舍
当前产品已有明确的扫描反馈、空结果、缓存与不可用提示;“部分成功”主要通过只显示可靠项体现,而不是创造一套不存在的独立界面。
| 状态 | 触发条件 | 系统行为 | 界面反馈 | 下一步 |
|---|---|---|---|---|
| 空闲 | 应用就绪 / 上次流程结束 | 等待快捷键;保留当前模式目录 | 主窗口显示“已就绪” | 发起单扫或整屏扫描 |
| 扫描中 | 整屏快捷键 | 关闭旧浮层,锁定重复触发并捕获屏幕 | “正在扫描并读取物价…” | 进入识别处理 |
| 处理中 | 截图完成 | 格线、占用、OCR、匹配与后处理 | 扫描反馈层持续显示 | 输出可靠结果 |
| 部分成功 | 仅部分文字通过阈值 | 保留可靠项,过滤低置信度项 | 仅显示有效价格标签 | 继续判断或重新扫描 |
| 成功 | 匹配结果大于 0 | 计算合计、保存最近扫描并渲染浮层 | 价格标签与扫描摘要 | 自动关闭或再次扫描 |
| 无可靠结果 | OCR / 匹配未达阈值 | 不生成价格标签 | 提示未找到足够可靠的名称 | 调整画面后重试 |
| 离线 / 缓存 | 价格刷新失败且缓存存在 | 继续使用当前模式本地目录 | 显示“正在使用本地缓存” | 继续扫描或稍后刷新 |
| 不可用 | 接口失败且无缓存 | 阻止无数据扫描结果 | 提示接口不可用 | 联网后刷新数据 |
04 · 迭代与决策
完整识别流程的等待时间直接影响局内判断。优化不是凭感觉删步骤,而是先把链路拆开计时,再针对真实瓶颈调整。
Balanced 模式 · 14 张离线参考图 · 识别数量不变
历史离线基准,用于比较同组样本的处理耗时,不代表所有设备或当前公开版本的统一性能。
记录截图、格线检测、占用判断、OCR、匹配与后处理,而不是只比较单次总耗时。
像素处理优化后,等待主要集中在 OCR 推理;强制放大和完整格线增强扩大了未匹配单元的成本。
缓存规范化名称索引、复用编辑距离缓冲,调优 ONNX Runtime,并收敛 OCR 放大与回退策略。
同一组 14 张参考图的识别数量保持不变,避免用漏识别换取更短耗时。
Decision
Decision
Why · 重复单扫不能覆盖背包整理中一次比较多个可见物品的任务。
Impact · 加入动态格线、占用判断、批量 OCR、位置映射和扫描合计。
Decision
Why · 地图导航扩大维护与内容边界,却没有增强价格判断这一核心价值。
Impact · 本地迭代记录 0.12.5:移除地图、定位与相关设置,发布包重新聚焦视觉识别。
05 · 项目结果
公开互动用于证明产品被看见和被讨论,但不等同于用户数、下载量、留存或商业转化。
公开源码与测试版持续发布;从产品定义到测试、打包和迭代完整落地。
Balanced 平均处理耗时降低约 62%,14 张参考图识别数量不变。
LootPilot + ShadePilot 两项公开产品累计点赞 / 收藏 / GitHub Stars。
反馈来源
公开内容平台与用户沟通主要问题
状态、分辨率、窗口与模式切换隐私处理
头像、用户名与时间已匿名化Feedback Loop · 2K / 超宽屏识别框
通过 B 站评论、游戏群与 GitHub Issue 持续收集真实使用问题,将模糊反馈拆成可复现问题、优先级与版本任务,再进入后续迭代。
A1 · 产品目标
同时尽可能减少对当前游戏流程的打断,让信息回到决策发生的位置。
核心目标
结果必须足够及时、足够接近决策现场,并在证据不足时保持克制。
辅助目标
非目标
A2 · 用户场景
三个场景对应三种不同的信息缺口:陌生物品、批量整理,以及已经过期的价格记忆。
遇到不熟悉的物品,用一次全局快捷键完成局部识别与价格确认。
整理多个可见物品时,一次扫描完成格线检测、批量识别与价值对比。
认识物品但不确定当前价格时,以当前模式的价格目录替代过期记忆。
A3 · 核心产品流程
价格目录在启动、模式切换和定时刷新时更新;用户扫描不必等待一次新的网络请求。识别链路只使用当前可用目录,因此联网失败不会自动变成错误价格。
A4 · 功能架构
以下均为 BETA 0.2.2 本地候选代码中的已有能力;换包建议只提供建议,不执行点击、移动或输入。
本地单用户 Windows 应用
A5 · 产品规格
以全背包扫描为例:单物品扫描解决即时查询,但整理背包时,用户需要“一次触发,多物品识别”。规格必须同时定义触发、输入、质量门槛、数据降级和结果生命周期。
用户可在 LootPilot 后台运行时通过全局快捷键发起整屏扫描;处理期间再次触发会被忽略,避免扫描互相覆盖。
关闭旧结果层后捕获当前目标屏幕,并把画面与屏幕物理坐标交给识别流程。
检测仓库、容器与随身区域的格线和占用,再输出文字块、边界框与 OCR 置信度。
规范化 OCR 文本,优先命中已索引名称,再进行相似度匹配;低于阈值的结果直接留空。
从当前模式目录读取跳蚤与商人价格。联网刷新失败时保留本地缓存;没有有效目录时不输出误导价格。
只为可靠匹配项生成与屏幕位置关联的标签和整包摘要;新扫描会清理旧结果,标签按时自动关闭。
产品质量原则
识别成功不等于产品成功。只有 OCR、物品映射与价格目录都满足可靠条件,系统才显示价格。
A6 · 数据模型与能力边界
以下是基于当前代码记录整理的产品层简化数据模型,不是完整数据库结构。字段被压缩到足以解释产品规则的层级。
当前价格目录中的物品记录
idname / short_namewidth / heightflea_pricetrader_price / trader_nameused_in_tasks / used_in_hideouttypes识别与匹配之间的最小信息
raw_textitem?confidencesource_regiontext_block.bounds本地保存的最近整屏扫描摘要
scanned_atgame_modeitem_countflea_totaltrader_total能力边界
LootPilot 当前是本地单用户 Windows 应用,因此不需要角色权限系统。用户能力包括:扫描物品、查看价格、配置设置、管理本地缓存与收藏。只有未来引入账号、同步或社区数据时,才需要设计账号、角色与权限。
A7 · 异常情况
这些情况来自当前实现、变更记录与真实反馈。处理原则保持一致:优先保护判断质量,再恢复功能覆盖。
返回空结果,不创建价格浮层;提示用户调整画面后重试。
只渲染达到匹配阈值的物品,低置信度项主动留空。
结合规范化、目录匹配分数与 OCR 置信度设置质量门槛。
主价格源失败后尝试备用源;仍失败则使用当前模式本地缓存。
明确显示接口不可用,不用其他模式或未知旧数据填充。
忙碌状态直接忽略重复触发,避免多个扫描流程冲突。
区分物理像素与 WPF 坐标,并按屏幕、缩放和 UI 比例换算。
精确格线优先;随身区域使用按分辨率缩放的 OCR 回退策略。
每次扫描前关闭已有结果与反馈层,并通过显示时长自动清理。
不把低质量候选强制映射为物品;接受没有结果。
A8 · 版本演进
时间线只保留改变范围、交互或可靠性的阶段;以下按有依据的产品迭代阶段整理;公开发布与本地验证分别标注。
0.11.0
0.11.2–0.11.3
本地迭代记录 · 0.12.5
本地迭代记录 · 0.12.6–0.12.7
BETA 0.2.0
BETA 0.2.1–0.2.2
下一步:继续提高真实高分辨率覆盖、错误反馈和安装体验;价格历史、分析与反馈闭环仅作为未来能力,不写成当前已实现功能。
A9 · 项目复盘
真正影响使用体验的,是识别、等待、映射、反馈与系统环境能否在同一条路径里共同工作。
识别准确本身不会自动形成可用产品;延迟、映射和反馈同样决定用户是否能完成判断。
技术上正确的结果,如果迫使用户离开主要任务,仍然会在真实场景中失败。
桌面产品必须把 DPI、窗口、快捷键、缓存和第三方数据可用性纳入体验设计。
公开发布暴露了静态原型无法发现的分辨率、状态、安装与模式切换问题。