- 桌面应用
- RPA
- 计算机视觉
【免费下载链接】ZenlessZoneZero-OneDragon
绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄
导读:本文围绕开源仓库 ZenlessZoneZero-OneDragon 的 docs/game/screens/README.md(画面描述索引)展开。该索引按
screen_name组织「1 篇文档 ↔ 1 个screen_info画面」的知识库,是自动化的"眼睛":从登录页到大世界、从战斗画面到各种非战斗 App,每个可识别画面都有对应的描述文档与assets/game_data/screen_info/<name>.yml配置文件。读完本文,你将掌握:画面索引的组织方式与双向引用规范、36 个已登记画面的分类与建档状态、非战斗 App 的三种建档路线,以及如何用 MCP 工具(增改/删除画面区域、OCR 快照复核)为缺口画面补档的完整实操流程。
一、画面描述索引是什么:自动化的"视觉地图"
在绝区零一条龙(ZenlessZoneZero-OneDragon)这类全自动脚本项目中,AI 或脚本要能"看懂"游戏画面,才能决定下一步操作。这一能力建立在screen_info 画面模型之上:每个可识别画面对应一份 YAML 配置(assets/game_data/screen_info/ 目录下,如 menu.yml、大世界、战斗画面),而 docs/game/screens/README.md 就是这个模型的人类可读索引。
索引的定位规则只有一句话:按screen_name组织,每篇文档 ↔ 一个assets/game_data/screen_info/<name>.yml。这里的关键是screen_name(中文名,如「菜单」「大世界-普通」「打开游戏」),而不是底层的screen_id(英文标识,如menu、common_screen)。这个约定在 docs/game/README.md 的「记录规范」中被再次强调——关联键一律使用screen_info.screen_name(中文),非screen_id。之所以这样约定,是因为文档面向本地 AI 与开发者阅读,中文画面名更直观,且能与gameplay_name形成跨文档的双向引用。
1.1 双向引用规范:screens ↔ gameplay
docs/game/目录下有两类领域知识文档(docs/game/README.md):
screens/— 画面描述,1 篇 md ↔ 1 个画面,对齐assets/game_data/screen_info/<name>.yml;gameplay/— 玩法,描述跨画面的机制与系统。
两者通过 frontmatter 建立双向引用:
screens/*.md的 frontmatter 带appears_in(本画面出现在哪些玩法,用gameplay_name);gameplay/*.md的 frontmatter 带involves_screens(本玩法经过哪些画面,用screen_name)。
以 大世界.md 为例,其 frontmatter 为:
screen_name: 大世界 appears_in: [登录游戏] last_updated: 2026-07-06 source_image: screens/大世界/普通.webp除了appears_in,frontmatter 还会记录last_updated(核对日期)和source_image(当前基线截图)。规范明确要求:正文绝不写死截图 ID,因为.debug/images/下的截图文件名是一次性捕获 ID、易失;变更复核走方法(重新截图 →analyze_screen→ 与 OCR 快照 diff → 更新last_updated/source_image),归档测试则使用可读名的 webp 版本(方法论见 docs/develop/zzz/screenshot_archive.md)。
1.2 识别快照:每篇画面文档的"体检报告"
每篇画面文档都要求保存一份analyze_screen快照,包含三部分:
- 匹配画面:
screen_name+is_precise(是否精准命中); - 匹配 area 表:取自
screens[].areas,包含 area_name、类型(text|template)、文本或template_id、conf(置信度)、位置(x,y,w×h,基于 1080p 游戏空间坐标pc_rect); - 全量 OCR 文本(
ocr_texts)。
大世界.md 的识别快照展示了这一格式:
- 匹配画面: 大世界-普通 (is_precise=True ✓) - 匹配 area: | area | 类型 | conf | 位置 (x,y,w×h) | |---|---|---|---| | 按钮-信息 | template | 0.991 | 1738,928,78×78 | | 预备编队 | template | 0.990 | 1321,51,90×44 | | 快捷手册 | template | 0.968 | 1531,60,48×43 |一个值得注意的细节:MCP 的ocr_texts保持全量(area 维护的文字可能不全),所以文字 area 在「匹配 area 表」和「全量 OCR 文本」两边都出现属正常现象,并非重复维护。
二、36 个画面条目全景:screen_name / 文件 / 简介总表
索引正文是一张按screen_name排列的登记表。下表完整继承了原索引的全部 36 个条目(含末尾补充的「预备编队」),并补注了各自的建档状态(已建模 / 已建档 / screen_info 缺口 / 待补),便于读者快速定位哪些画面"能用"、哪些"待补"。
| screen_name | 文件 | 简介 | 状态 |
|---|---|---|---|
| 菜单 | menu.md | 游戏主菜单 | 已建模(menu.yml) |
| 米哈游启动页 | 米哈游启动页.md | 打开游戏首个画面(品牌/合规) | screen_info 缺口 |
| 警告:游戏前详阅 | 警告_游戏前详阅.md | 登录前的光敏性癫痫警告页 | screen_info 缺口 |
| 绝区零标题页 | 绝区零标题页.md | 游戏 logo 展示页 | screen_info 缺口 |
| 打开游戏 | 打开游戏.md | 登录页(自动/手动登录多子态:验证码/账号密码/扫码/选区服) | 已建模 |
| 加载画面 | 加载画面.md | 通用加载画面(lore 轮换) | screen_info 缺口 |
| 大世界 | 大世界.md | Overworld 主画面(活动入口/任务/快捷键) | 已建模(is_precise) |
| 战斗画面 | 战斗画面.md | 战斗实动作界面;战斗态稳定锚点=攻击按钮模板(id_mark 无,框架走is_normal_attack_btn_available);子态:默认/精英(BOSS血条)/限时(倒计时)/战斗结果 | 已建模 |
| 实战模拟室 | 实战模拟室.md | 养成材料副本(快捷手册-训练入口);副本选择/出战/战斗结束-获得奖励(获得弹窗)子态;战斗结束按玩法分(战斗中归战斗画面;防卫战=挑战结果/实战模拟室=获得弹窗,各玩法各 screen) | 已建模 |
| 式舆防卫战 | 式舆防卫战.md | 周期战斗玩法(快捷手册-作战入口);选关主界面(前哨档案+节点01-05+剧变节点进度)+弱点/编队/战斗/领奖多子态;剧变节点进度 OCR 连写(3/5→315,issue #2510) | 已建模 |
| 迷失之地 | 迷失之地.md | lost_void 零号空洞战斗肉鸽(层间移动重 app);已实拍 5 选择/结算画面(通用选择/武备选择/挑战结果/路径迭换/抽奖机),其余 9 画面(大世界/入口系列/战线肃清/矩阵行动/特遣调查/邦布商店/战斗失败)待补;✅通用选择按钮-确定宽 rect(940px)曾致 ppocrv6 漏检 + ppocrv5 误判「以太稳定」卡死,已收紧 rect+提 lcs 修复(ppocrv6 恢复) | 部分实拍 |
| 快捷手册 | 快捷手册.md | 玩法总入口(大世界右上);5 TAB(目标/日常/训练/作战/战术),各玩法卡片「前往」传送;TransportByCompendium经此 | 已建模 |
| 邮件 | 邮件.md | 每日领取邮件附件(菜单→邮件);列表态 + 确认弹窗子态已建档 | 已建档 |
| 菜单-更多功能 | 菜单-更多功能.md | 菜单点「更多」;功能入口枢纽(预备编队/兑换码/登出) | 已建模 |
| 兑换码输入 | 兑换码输入.md | 兑换码输入框(菜单-更多功能→兑换码) | screen_info 缺口;结果弹窗待补 |
| 仓库-驱动仓库 | 仓库-驱动仓库.md | 仓库音擎 TAB-驱动盘;驱动盘管理 | 已建模,识别模糊 |
| 仓库-驱动仓库-驱动盘拆解 | 驱动盘拆解.md | 驱动盘拆解(快速选择/拆解);默认态误匹配快捷手册;拆解确认待补 | 已建模 |
| 快捷手册-日常 | 快捷手册-日常.md | 手册日常 tab(今日活跃度奖励);领取弹窗待补(活跃度已满) | 已建模 |
| 丽都城募 | 丽都城募.md | 大月卡(菜单→丽都城募);5 tab,成长任务/等级回馈领奖 | 已建模 |
| 报刊亭 | 报刊亭.md | scratch_card 场景(F 交互进);报刊亭场景+刮态;嗷呜对话/确认待补 | 已建档(刮刮卡) |
| 地图 | 地图.md | 网格/列表传送视图(MapTransport用);底部传送点列表+确认弹窗;选传送点/传送确认弹窗子态已建 | 已建模 |
| 3D地图 | 3D地图.md | 立体城市俯视(world_patrol/锄大地用);区域/子区域/筛选/图标/前往;无确认弹窗;子态待补截图 | 已建模 |
| 卦象集录 | 卦象集录.md | trigrams_collection(澄辉坪阿朔交互);主界面+今日已领取已建档;滑动获取卦象/领奖确认待补 | 已建档 |
| 对话 | 对话.md | 通用兜底画面(大世界 NPC/剧情对话,无固定文字特征);有 NPC 名已建档,旁白对话待补 | 已建档(兜底) |
| 随便观 | 随便观.md | suibian_temple 经营玩法;入口(interact 狮耶)+ 9 子画面实拍归档(游历/制造坊/售卖铺/饮茶仙/邦巢/德丰大押/好物铺/自动托管/经营总览);共 7 screen_info(入口+游历/制造坊/售卖铺/饮茶仙/邦巢/德丰大押)、3 画面无(好物铺/自动托管/经营总览)待补 | 部分实拍 |
| 影像店营业 | 影像店营业.md | random_play 录像店经营(无战斗);经营状况/宣传员选择/录像带上架已建档;营业确认弹窗待补 | 已建档 |
| 丽都周纪 | 丽都周纪.md | ridu_weekly 周常 BINGO 积分领奖(无战斗);BINGO 主画面已建档 | 已建档 |
| 咖啡店 | 咖啡店.md | coffee 每日咖啡增益;⚠️边界(核心点咖啡非战斗 + 可选挑战副本含战斗);对话点单-已喝过态已建档 | 已建档(边界 app) |
| 吼吼饼铺 | 吼吼饼铺.md | hou_hou_bakery 每日签到盲盒(无战斗);骨架已建(信息源三层);⚠️Transport 卡 3.0 布亚斯特城区未探索,截图待补 | 骨架已建 |
| 委托助手 | 委托助手.md | commission_assistant 对话/剧情/钓鱼辅助循环器(非固定画面);多态识别已建 doc;⚠️含可选 auto_battle 边界 | 已建档(辅助循环器) |
| 道具处理 | 道具处理.md | 仓库道具处理子界面(合成/分解/摧毁);合成电池玩法经此合成以太电池(60电量+储值电卡+丁尼);合成页+合成确认+获得弹窗三子态 | 已建模 |
| 仓库-材料道具 | 仓库-材料道具.md | 仓库材料道具页;道具处理的另一入口(TAB 音擎/驱动盘);⚠️未 live 实证(代码零引用,纯画面连通图) | 未实证 |
| 恢复电量 | 恢复电量.md | 副本内电量不足弹窗(储蓄/电池/菲林 兑换电量);主弹窗+快捷使用+获得三子态;RestoreChargeop;⚠️菲林来源 config 未支持 | 已建模 |
| 预备编队 | 预备编队.md | 通用画面(多玩法共用预备编队列表);两子态:选择(准备出战,有 SELECT/预备出战)/ 编辑管理(PredefinedTeamChecker,只能编辑);当前命中实战模拟室,无独立 screen_info | 已建模 |
2.1 实战模拟室 vs 防卫战:战斗结束画面按玩法分流
索引中「实战模拟室」条目隐含了一个重要设计原则——战斗结束画面的归属按玩法分流:
- 战斗中画面统一归「战斗画面」;
- 防卫战结束后 → 「挑战结果」画面;
- 实战模拟室结束后 → 「获得奖励」弹窗。
因此每个玩法都有各自的screen,不能共用一个"战斗结束"通用画面。这与 式舆防卫战.md 中「选关主界面 + 弱点/编队/战斗/领奖多子态」的建模方式一致:一个玩法 = 一个 screen_name + 多个子态 area。
2.2 迷失之地的 OCR 修复案例(ppocrv5/v6)
索引中「迷失之地」条目记录了真实的排障案例,值得自动化开发者留意:
✅ 通用选择
按钮-确定宽 rect(940px)曾致 ppocrv6 漏检 + ppocrv5 误判「以太稳定」卡死,已收紧 rect+提 lcs 修复(ppocrv6 恢复)。
这说明:OCR 引擎(ppocrv5 与 ppocrv6)对同一区域的行为可能截然不同——过宽的矩形区域会让新版引擎漏检、旧版引擎误检。修复手段是同时收紧pc_rect并提高 LCS(最长公共子序列,用于文本相似度匹配的lcs_percent)阈值。这也是在 menu.yml 中每个 area 都带有pc_rect+lcs_percent+template_match_threshold的原因。
三、screen_info 配置结构:一个 area 的完整字段
要理解索引文档,必须先能读懂它背后的 YAML。以 menu.yml(screen_id: menu,screen_name: 菜单)为例,一个典型的 area 字段如下:
- area_name: 返回 id_mark: false pc_rect: [82, 13, 150, 90] # 1080p 游戏空间坐标 (x, y, w, h) text: '' lcs_percent: 0.1 # 文本 LCS 相似度阈值 template_sub_dir: menu # 模板子目录(assets/template/ 下) template_id: back # 模板名 template_match_threshold: 0.7 # 模板匹配阈值 color_range: null goto_list: [] # 点击该 area 后的跳转目标 screen_namearea 的类型通过字段组合区分:
- 文字 area(text):靠 OCR 识别
text字段,如「邮件」「仓库」「确认」; - 模板 area(template):靠模板匹配
template_sub_dir+template_id,如「返回」(menu/back)、「关闭」(menu/btn_close); - 跳转 area(goto):
goto_list非空,表示点击后进入的目标画面,如 menu.yml 中:
- area_name: 底部-更多 text: 更多 goto_list: - 菜单-更多功能 # 点击「更多」→ 进入「菜单-更多功能」画面 - area_name: 按钮-返回 id_mark: true # id_mark=true 的画面锚点 template_id: back template_match_threshold: 0.9 goto_list: - 大世界-普通 # 返回 → 大世界-普通另外,screen_id: common_screen、screen_name: 画面-通用(common_screen.yml)是通用兜底画面,包含「左上角-区域」「返回」「关闭」等公共 area。这与 对话.md、加载画面.md 这类"无固定文字特征"的兜底画面(fallback screen)相呼应。
四、非战斗 App 的三种建档路线与跳过原则
索引后半部分「非战斗 app 建档进度」对无战斗玩法的 App 做了分类,是按「操作复杂度」划分的三条建档路线:
4.1 路线一:纯 UI,MCP 可复现
已建档:email(邮件)/redemption_code(兑换码)/drive_disc_dismantle(驱动盘拆解)/engagement_reward(快捷手册-日常)/city_fund(丽都城募)/ridu_weekly(丽都周纪;BINGO 积分领奖)。
这类 App 纯点按 UI 即可走通,对应的 screen_info 已可在 assets/game_data/screen_info/ 中直接查到(如 email.yml、city_fund.yml、ridu_weekly.yml)。
4.2 路线二:move / interact / drag 类
已建档:
scratch_card(报刊亭;刮刮卡;嗷呜对话 / 确认弹窗待补);trigrams_collection(卦象集录;滑动获取卦象 / 领奖确认待补);random_play(影像店营业;Transport POINT_2 + interact 进经营;营业确认弹窗待补);suibian_temple(随便观;入口 interact 狮耶 + 9 子画面实拍归档;3 画面无 screen_info 待补)。
这类 App 需要鼠标拖拽、交互进入等操作,建档时用key_tap+drag+run_operation Transport分解(具体见 onboarding skill 的「截图获取」章节)。
4.3 路线三:通用兜底画面(无固定文字特征)
已建档:对话(NPC 对话;有 NPC 名已建档,旁白待补)、加载画面(通用 lore 轮换)。
这类画面没有稳定的文字特征,只能靠兜底逻辑识别,详见 onboarding skill 的「兜底画面」章节。
4.4 ⚠️ 跳过与不建档
- 跳过(边界 app,不在建档范围):
hou_hou_bakery(吼吼饼铺.md,骨架已建,信息源三层;⚠️Transport 卡 3.0 布亚斯特城区未探索,截图待补);life_on_line(危局:含战斗EnterHddMission+KeySimRunner,非「不含战斗」app);commission_assistant(委托助手.md,辅助循环器多态识别已建 doc;⚠️含可选 auto_battle,边界);coffee(咖啡店.md,已建档非战斗画面;⚠️边界 app,可选挑战副本含战斗)。
- 不建档(无游戏画面):
notify(只发推送通知,汇总 run_record,不截图/不点 UI)。
4.5 缺口画面的补档路径
索引明确给出结论:
跳过的 app 待 MCP 补足
transport/move/drag/键盘注入能力后,或用框架run_standalone_app跑通后沿途截图补。
即:缺口画面的补档依赖两条通道——MCP 的交互能力扩展,或run_standalone_app独立跑通后沿途截图。
五、源码级验证:screen_info 的读写与 MCP 工具
画面索引不只是文档约定,它在后端源码中有完整的落点。以下路径均在 src/zzz_od/backend/ 下可验证。
5.1 screen_loader:get_screen / save_screen
画面模型的读取与回写由上下文对象screen_loader承担。从源码结构看,其核心接口包括:
screen_loader.get_screen(screen_name):按中文screen_name取画面,未找到时 raise;screen_loader.save_screen(screen_info):把修改后的画面写回对应 YAML 并重载。
调用点示例(backend_context.py 的 area 增删逻辑,约 L587-L650):
screen_info = self._ctx.screen_loader.get_screen(screen_name) # 未找到 raise action = screen_info.upsert_area(area) self._ctx.screen_loader.save_screen(screen_info)以及删除路径:
if not screen_info.remove_area_by_name(area_name): ... # 未找到 area 报错 self._ctx.screen_loader.save_screen(screen_info)区域更新语义为:area_name 已存在 → 整体更新;不存在 → 追加,随后写回 YAML 并重载,保证运行时热生效。
5.2 坐标体系:pc_rect 与 1080p 游戏空间
索引文档中的坐标(如大世界的1531,60、1738,928)都基于1080p 游戏空间坐标,与 screen_info 的pc_rect同源。这一点在 backend_context.py 的点击/拖拽工具注释中被反复强调:
- 点击:
点击游戏窗口内指定坐标(1080p 游戏空间,同源 screen_info pc_rect); - 拖拽:
鼠标按住拖拽((x1,y1)→(x2,y2),1080p 游戏坐标,同源 screen_info pc_rect)。
这也解释了 大世界.md 中「PC 端点击需pc_alt=true(Alt 解锁光标)+ 非零press_time(框架默认 0.1)」的原因:绝区零 PC 端锁光标,不按 Alt 直接点击会落空。
5.3 匹配结果语义:is_precise 与候选列表
screens匹配结果在 schemas.py 中的语义为:
画面匹配结果:精准命中 = [1 个 is_precise=True];否则 top_n 个 is_precise=False 候选。决策优先看 screens;需看散落文本再看 ocr_texts。
而 backend_context.py 在识别回写逻辑中有条件判断if write_back and screens and screens[0].is_precise:,即只有精准命中时才考虑回写状态,避免把模糊候选当结论写入。索引文档中「大世界-普通(is_precise=True ✓)」这类标注,正对应此语义。
5.4 MCP 工具:建档/维护画面区域的实操入口
画面索引的建档工作通过 MCP(Model Context Protocol)服务完成,入口在 mcp/app.py。与本文主题直接相关的工具包括:
- 识别画面(决策入口):
analyze_screen相关工具,返回screens(精准命中 1 个is_precise=True;否则 top_n 候选)+ocr_texts;离线校验时从.debug/images/<名字>.png读图、不回写识别状态,用于校验/反哺 screen_info; - 增改画面区域:按
area_name在指定 screen 插入或更新一个 area(写 yml + reload,操作类); - 删除画面区域:按
area_name删除(写 yml + reload,操作类 + 不可逆,需谨慎)。
配合索引正文与每篇画面文档的「识别快照」,即可完成"截图 → analyze_screen → 对照快照 diff → 增改 area → 更新文档 last_updated"的闭环维护流程。
六、实战:如何阅读与使用这份索引
6.1 快速定位一个画面是否可用
- 在 README.md 索引表中按
screen_name(中文)找到对应条目; - 查看「简介」列的建档状态词:已建模(screen_info 完整可用,如 menu.yml)、已建档(画面文档已建但 screen_info 可能不全)、screen_info 缺口(只有文档、无 YAML 配置)、待补(已知缺口);
- 若需在代码/配置中核实,到 assets/game_data/screen_info/ 找
<name>.yml(name 为英文 screen_id),确认screen_name与area_list是否齐全。
6.2 从索引走向画面细节
每个条目链接的画面文档(如 大世界.md、战斗画面.md、式舆防卫战.md)会进一步给出:
- 何时出现(进入路径);
- 识别特征(稳定锚点,模板/文字/位置);
- 可交互元素(每个 area 的坐标与 goto 目标);
- 条件弹窗(模态覆盖,非独立画面);
- 识别快照(匹配画面 + area 表 + OCR 文本)。
6.3 为缺口画面补档(工作流)
针对标记为「screen_info 缺口 / 待补」的画面,按索引第 4.5 节给出的路径操作:
- 优先选择 MCP 具备
transport/move/drag/键盘注入能力后补档; - 或用框架
run_standalone_app跑通对应 App,沿途截图; - 用 MCP
analyze_screen识别截图,对照 docs/game/README.md 的「识别快照」规范(匹配画面 + area 表 + 全量 OCR)记录快照; - 用「增改画面区域」工具写入 area(
area_name已存在则整体更新、不存在则追加,写 yml + reload); - 更新画面文档 frontmatter 的
last_updated/source_image,保持双向引用(appears_in↔involves_screens)一致。
6.4 边界与陷阱
- 不要混淆 screen_name 与 screen_id:文档/索引用中文
screen_name,YAML 文件名与代码中常用英文screen_id; - 兜底画面(对话/加载画面)无固定文字特征,别期待其像大世界那样有精准模板锚点;
- 战斗结束画面按玩法分流,切勿用一个通用「结算」画面覆盖所有玩法;
- OCR 引擎差异(ppocrv5 vs ppocrv6)会导致同一 rect 表现不同,参考迷失之地案例,必要时收紧
pc_rect并调整lcs_percent; - 识别回写仅在 is_precise 时发生(见 5.3 节),模糊匹配不写入状态。
七、结语:从索引到模型的反哺闭环
这份画面索引属于 docs/game/README.md 定义的离线领域知识库——Part A 的analyze运行时并不读取它(运行时解耦),它服务于「自由积累 → 统一分析 → 反哺/重构 screen_info 模型」的演化路径(对应 CLAUDE.local.md 的「增量 → 合并回主 spec」)。因此,索引与其说是"运行文档",不如说是画面模型的增量待办清单 + 验收台账:36 个条目中哪些已建模、哪些已建档、哪些待补,一目了然;每补一个画面,assets/game_data/screen_info/ 就多一份可被 src/zzz_od/backend/ 读取的 YAML,自动化的"眼睛"就更完整一分。对希望为该项目贡献画面建模能力的开发者而言,这份索引就是最佳起点。
- 桌面应用
- RPA
- 计算机视觉
【免费下载链接】ZenlessZoneZero-OneDragon
绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄
相关推荐
绝区零一条龙(ZenlessZoneZero-OneDragon)仓库-材料道具画面解析:screen_info 建模、goto 连通与代码零引用现状
绝区零一条龙(ZenlessZoneZero OneDragon)仓库 材料道具画面解析:screen_info 建模、goto 连通与代码零引用现状 导读 本
桌面应用RPA计算机视觉QMK 固件中的 Atreus62 键盘支持:从键盘配置到构建烧录全指南
QMK 固件中的 Atreus62 键盘支持:从键盘配置到构建烧录全指南 本篇技术指南以 QMK 固件仓库中的 keyboards/atreus62/readm
桌面应用RPA计算机视觉绝区零一条龙:画中画(PiP)模式架构与实现深度解析
绝区零一条龙:画中画(PiP)模式架构与实现深度解析 导读 画中画(Picture in Picture,PiP)模式是「绝区零 一条龙」(ZenlessZon
桌面应用RPA计算机视觉
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考