Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
150 commits
Select commit Hold shift + click to select a range
3dce225
feat(combat): 解析并保存舰队预设配置
ShiinaKuroko Aug 1, 2026
5f95716
docs(feat): 整理本地功能记录
ShiinaKuroko Aug 1, 2026
b26ba19
docs(feat): 将个人功能记录迁出仓库
ShiinaKuroko Aug 1, 2026
b3f413c
feat: 统一 YAML 舰队规则与换船识别机制
ShiinaKuroko Aug 2, 2026
851c245
fix(ci): 修复格式检查与跨平台配置测试
ShiinaKuroko Aug 2, 2026
100906a
feat: 完成智能舰队选择与任务接口兼容
ShiinaKuroko Aug 4, 2026
204fa2b
feat: improve smart fleet selection and OCR reliability
Aug 4, 2026
e81f86b
fix: complete backend runtime contract remediation
Aug 4, 2026
b9f6fb9
fix: preserve fleet and rule compatibility contracts
Aug 4, 2026
b5b8e63
fix: validate rule actions and preserve ship type aliases
Aug 4, 2026
c4f9dfe
test(server): cover fleet selection runner call chain
Aug 4, 2026
abe7c2f
fix: validate combat rules and cover full fleet flow
Aug 4, 2026
c97d14a
fix: preserve fleet OCR and runner compatibility
Aug 4, 2026
c17c78d
test: lock fleet compatibility regressions
Aug 4, 2026
a7ddb62
docs: define fork branch and backup policy
Aug 4, 2026
1ca9a42
docs: require ShiinaKuroko as local publish branch
Aug 4, 2026
761143f
fix: satisfy PR lint checks
Aug 4, 2026
b0f473f
docs(fleet): document primary-first smart fleet flow
Aug 4, 2026
d9f0c21
docs: 记录 GitHub 代理推送路径
ShiinaKuroko Aug 4, 2026
1fc5391
docs: 调整 GitHub 代理使用规则
ShiinaKuroko Aug 4, 2026
c74d8c5
Merge remote-tracking branch 'upstream/main' into ShiinaKuroko
ShiinaKuroko Aug 5, 2026
982d50c
fix: add isolated single-card ship type OCR path
ShiinaKuroko Aug 5, 2026
7db92e1
merge: add isolated single-card ship type OCR path
ShiinaKuroko Aug 5, 2026
8def315
chore: pre-commit 自动修复文件末尾换行
ShiinaKuroko Aug 5, 2026
b85bd03
feat(vision): 接入 RapidOCR 增强船只识别引擎 (默认关闭)
ShiinaKuroko Aug 5, 2026
5fd7304
fix(battle): 智能换船死循环与首次快照舰种识别
ShiinaKuroko Aug 5, 2026
211d84f
feat(combat): 规则对象级 relaxed 宽松校验 (缺省严格)
ShiinaKuroko Aug 5, 2026
32b5cb2
feat(startup): 每日弹窗常驻处理与 5.6.0 签名校准
ShiinaKuroko Aug 5, 2026
4f82f6e
docs: 新增主流手游自动化 OCR/图像识别方案调研报告
Aug 6, 2026
725607d
feat(tools): 新增换船 e2e 调试工具 (主页→出征→编队→换船→主页),支持 --config 加载不同 yaml,含 a…
Aug 6, 2026
cffe505
fix(ocr): bind ship attributes by card position
ShiinaKuroko Aug 7, 2026
8559ec7
fix(ocr): calibrate preparation level regions
ShiinaKuroko Aug 7, 2026
1617f0b
feat(ocr): add FastOCR enhanced ship recognition
ShiinaKuroko Aug 7, 2026
5987a39
fix(data): sync ship names with GUI library
ShiinaKuroko Aug 7, 2026
da596d9
fix(ocr): narrow ship type recognition regions
ShiinaKuroko Aug 7, 2026
7557d46
fix(ocr): calibrate ship pool type recognition
ShiinaKuroko Aug 7, 2026
e0ea01c
refactor(ui): remove unused ship selection shortcut
ShiinaKuroko Aug 8, 2026
ac351ad
fix(ocr): improve ship pool level recognition
ShiinaKuroko Aug 8, 2026
4cafe64
fix(ui): validate ship pool candidates by card
ShiinaKuroko Aug 8, 2026
d67142e
refactor(ui): remove unused ship level list reader
ShiinaKuroko Aug 8, 2026
855ae60
feat(tools): add OCR crop collector
ShiinaKuroko Aug 8, 2026
5d8e595
fix(fleet-change): retry invalid preparation OCR fields
ShiinaKuroko Aug 8, 2026
26bebe8
fix(fleet-change): handle unresolved primary slots
ShiinaKuroko Aug 8, 2026
92c2744
refactor(fleet-change): remove unreachable helpers
ShiinaKuroko Aug 8, 2026
e1b4b85
refactor(fleet-change): extract target planning
ShiinaKuroko Aug 8, 2026
4700d6e
refactor(fleet-change): extract fleet alignment
ShiinaKuroko Aug 8, 2026
5451a73
docs(fleet-change): update mixin structure
ShiinaKuroko Aug 8, 2026
a46726c
refactor(fleet-change): extract rule validation
ShiinaKuroko Aug 8, 2026
c65a7f9
refactor(fleet-change): extract ship selection
ShiinaKuroko Aug 8, 2026
e187fbb
fix(fleet-change): skip redundant OCR before reorder
ShiinaKuroko Aug 8, 2026
89b2258
fix(fleet-change): clarify unresolved primary error
ShiinaKuroko Aug 8, 2026
e476a50
fix(fleet-change): preserve locked members before reorder
ShiinaKuroko Aug 8, 2026
22305a5
fix(fleet-change): preserve names during final verification
ShiinaKuroko Aug 8, 2026
de2187d
fix(logging): use logs as default directory
ShiinaKuroko Aug 8, 2026
04942e8
fix(ocr): use recognition-only for cropped text
ShiinaKuroko Aug 8, 2026
3195808
fix(data): correct Selfridge ship name
ShiinaKuroko Aug 8, 2026
00b0c5b
refactor(ui): remove shadowed fleet change module
ShiinaKuroko Aug 8, 2026
803a910
refactor(logging): 优化准备页换船与 OCR 日志
ShiinaKuroko Aug 8, 2026
35eda39
fix(server): 应用计划节点覆盖配置
ShiinaKuroko Aug 8, 2026
2f56314
fix(combat): 修复首节点未应用自定义阵型
ShiinaKuroko Aug 8, 2026
b331ce3
test(server): cover node action overrides
ShiinaKuroko Aug 9, 2026
32e6f06
fix(logging): use local time for log directories
ShiinaKuroko Aug 9, 2026
b94cdd5
Revert "fix(logging): use local time for log directories"
ShiinaKuroko Aug 9, 2026
eccba7d
fix: preserve node overrides when defaults change
Aug 10, 2026
5d5dbd4
docs: add fleet member validation plan
Aug 10, 2026
31dc72c
fix(server): preserve campaign completion semantics
Aug 10, 2026
15c7aa9
fix(server): normalize legacy detour SL overrides
Aug 11, 2026
a8d338e
docs(agent): align backend development governance
ShiinaKuroko Aug 11, 2026
77f34b7
test(config): isolate dock destroy defaults from host OS
ShiinaKuroko Aug 11, 2026
a0e0c0b
docs: protect user-reserved local branches
ShiinaKuroko Aug 11, 2026
8aaca08
refactor(vision): 页面识别模板化体系与均匀蒙版浮层检测
YaoerWu Aug 15, 2026
0cdb88e
feat(ui): UIStack 导航栈 + 候选剪枝, BATTLE_PREP 划出导航域
YaoerWu Aug 15, 2026
ebc9caa
fix(combat): 实机问题修复: 战果页验证式关闭/回退正向验证/次数用尽主动回退
YaoerWu Aug 15, 2026
8e3909f
feat(event): 活动页识别换锚点 (出击按钮/难度图标/标题兜底) + 浮层态治理
YaoerWu Aug 15, 2026
1774c8b
fix(combat): 战果页关闭改到达验证 + 战役次数用尽探测降级
YaoerWu Aug 15, 2026
b4e679c
feat(combat): 经验结算子页注册为 EXP_SETTLEMENT 状态
YaoerWu Aug 15, 2026
0a545e3
refactor(event): go_back 改纯模板驱动, 删除 vision/overlay.py 双帧浮层检测
YaoerWu Aug 15, 2026
024e782
fix: 修正提督信息关闭坐标
YaoerWu Aug 15, 2026
e5aaee5
perf(combat): 战果/经验页快速点击穿行, 转移图按真实流转纯化
YaoerWu Aug 15, 2026
103b618
feat(combat): 战果结算快慢双模式 (collect_result_info)
YaoerWu Aug 15, 2026
f7b4eb1
fix(ui): 侧边栏注册为覆盖型页面, 修复与主页面识别冲突的死循环
YaoerWu Aug 16, 2026
08d6007
fix(combat): 船坞满弹窗直达解装, 不再绕主菜单导航
YaoerWu Aug 16, 2026
7c001ef
fix(combat): 弹窗直达解装后复用 destroy_ships, 结束回主页面
YaoerWu Aug 16, 2026
21f068d
fix(scheduler): 战斗数计数根治 — 解装轮不翻 flag, 触发器支持战果条件计数
YaoerWu Aug 16, 2026
4305651
fix(normal_fight): 修复战斗成功后跳过检查逻辑,确保中途异常恢复完整检查
YaoerWu Aug 16, 2026
32060d0
merge: integrate ShiinaKuroko/fix-ui (智能换船重构 + RapidOCR + server 修复) …
YaoerWu Aug 17, 2026
0595993
merge: integrate PR #2 (智能换船重构 + RapidOCR + server 修复) into fix-ui
Aug 19, 2026
da6e94f
merge: integrate fix-ui (PR #2 智能换船重构 + RapidOCR + server 修复) into Sh…
Aug 19, 2026
ab6024a
docs(agents): add backup retention policy (keep latest 2 on push)
Aug 19, 2026
7ec26af
fix(server): push INFO+ logs to GUI via WebSocket sink
ShiinaKuroko Aug 23, 2026
275a252
fix(ops): 修复演习任务页面识别失败后无法恢复的问题
ShiinaKuroko Aug 24, 2026
b326b68
fix(ui): 主页面识别增加像素签名兜底, 修复远端环境模板得分 0.945 < 0.95 阈值导致识别失败
ShiinaKuroko Aug 24, 2026
96f4817
fix(ui): 章节导航增加2秒硬等待, 战利品OCR与YAML stop_max_loot联动
ShiinaKuroko Aug 26, 2026
e1119ba
fix(combat): 掉落识别增加0.8秒硬等待, 修复GET_SHIP页面动画未渲染完导致OCR全部未识别
ShiinaKuroko Aug 26, 2026
a3c7280
fix(combat): RESULT/GET_SHIP页面OCR前统一1.5秒硬等待
ShiinaKuroko Aug 26, 2026
b166872
fix(context): 每日计数器日志从DEBUG改为INFO, 使GUI可通过WebSocket看到计数器更新
ShiinaKuroko Aug 26, 2026
d4e564b
fix: 恢复动态章节导航+始终采集战果+全切FastOCR
ShiinaKuroko Aug 26, 2026
1d0895e
fix: 恢复 GUI 统计通道 — WebSocket 白名单 sink + 结果序列化防写空
ShiinaKuroko Aug 26, 2026
973deb6
fix(launcher): gui runtime contract compatible when cfg.ocr lacks enh…
ShiinaKuroko Aug 26, 2026
a55877a
fix(nav): 章节导航死循环修复 — 侧边栏高亮连续段检测 + 边界滑动兜底
ShiinaKuroko Aug 26, 2026
4424cc6
fix(nav): 补 SIDEBAR_SCAN_Y_RANGE import 修 NameError
ShiinaKuroko Aug 26, 2026
8814e38
fix(map): 修复章节导航死循环/跳错章(侧边栏高亮定位+单步跳转+OCR回检)
ShiinaKuroko Aug 26, 2026
8a6552e
refactor(map): 拆分 sortie.py 计数器逻辑至 sortie_counters.py
ShiinaKuroko Aug 26, 2026
855228a
fix(combat): 掉落页穿透跳过时兜底捕获掉落
ShiinaKuroko Aug 27, 2026
4a1809a
fix(server): restore GUI combat log forwarding
ShiinaKuroko Aug 27, 2026
2081ad2
chore(agents): link project worktree protocol
ShiinaKuroko Aug 27, 2026
9ee8170
fix(runtime): harden lifecycle and task boundaries
ShiinaKuroko Aug 27, 2026
3db2586
fix(combat): retry ship-drop OCR after fast-path miss
ShiinaKuroko Aug 28, 2026
e895288
fix(server): isolate websocket streams
ShiinaKuroko Aug 28, 2026
70a24df
fix(combat): wait for confirmed result-page state
ShiinaKuroko Aug 28, 2026
98788b9
fix(combat): retry drop OCR before dismissing page
ShiinaKuroko Aug 28, 2026
21d8e1d
fix(repair): sync known ship damage state
ShiinaKuroko Aug 28, 2026
dc2a651
refactor(context): reuse ship damage sync
ShiinaKuroko Aug 28, 2026
90d4eb6
refactor(context): reuse damage sync before combat
ShiinaKuroko Aug 28, 2026
ccb8d89
refactor: remove unused backend remnants
ShiinaKuroko Aug 28, 2026
5f0e7ab
refactor(server): simplify result serialization
ShiinaKuroko Aug 28, 2026
d83cb33
refactor(server): share task start response
ShiinaKuroko Aug 28, 2026
3fd9f5c
refactor(server): share context guard
ShiinaKuroko Aug 28, 2026
f698e88
refactor(server): share websocket loop
ShiinaKuroko Aug 28, 2026
735da09
refactor(combat): remove unused vessel tuple
ShiinaKuroko Aug 28, 2026
4fe2f41
refactor(server): remove unused response models
ShiinaKuroko Aug 28, 2026
18bd006
refactor(ui): remove unused decisive helpers
ShiinaKuroko Aug 28, 2026
4a2e53a
refactor(ui): remove unused map constants
ShiinaKuroko Aug 28, 2026
ef855ca
fix(runtime): harden lifecycle and task boundaries
ShiinaKuroko Aug 28, 2026
10ab679
Merge remote-tracking branch 'origin/ShiinaKuroko' into ShiinaKuroko
ShiinaKuroko Aug 28, 2026
a475b4a
Merge branch 'codex/20260828-autowsgr-review-a7f2' into ShiinaKuroko
ShiinaKuroko Aug 28, 2026
0577f15
fix(decisive): wait for map overlay to settle
ShiinaKuroko Sep 6, 2026
c5a464c
fix(combat): accept flexible enemy rule conditions
ShiinaKuroko Sep 7, 2026
e6d9fee
fix(navigation): add mode-specific bath routes
ShiinaKuroko Sep 7, 2026
450c88a
fix(repair): navigate to bath for manual repairs
ShiinaKuroko Sep 7, 2026
7443018
fix(repair): terminate task after manual bath dispatch
ShiinaKuroko Sep 7, 2026
cce7121
merge: add manual bath repair flow
ShiinaKuroko Sep 7, 2026
02ce4ed
fix: default to full battle result collection
ShiinaKuroko Sep 8, 2026
9b000b4
fix(repair): unify task-level repair handling
ShiinaKuroko Sep 8, 2026
bc24d5e
feat(debug): bundle standalone debug toolkit
ShiinaKuroko Sep 8, 2026
1d7fca7
fix(map): navigate sortie chapters through fixed OCR slots
ShiinaKuroko Sep 8, 2026
cdc987e
test(map): add navigation stress case
ShiinaKuroko Sep 8, 2026
2d51e04
Merge branch 'codex/20260908-autowsgr-shiinakuroko-6a2d' into ShiinaK…
ShiinaKuroko Sep 8, 2026
e143a4e
Merge remote-tracking branch 'origin/ShiinaKuroko' into ShiinaKuroko
ShiinaKuroko Sep 8, 2026
7bd0ece
fix(decisive): gate entry and reset actions by recognition
ShiinaKuroko Sep 7, 2026
024ac39
docs: record decisive debug checkpoint
ShiinaKuroko Sep 7, 2026
fdb1f8e
docs: record baseline synchronization
ShiinaKuroko Sep 8, 2026
c55f994
fix(decisive): recognize map after preparation return
ShiinaKuroko Sep 8, 2026
332c30a
docs(decisive): record recovery-chain verification
ShiinaKuroko Sep 8, 2026
9596446
feat(decisive): drive routes from map data
ShiinaKuroko Sep 8, 2026
e2ed376
fix(decisive): stabilize battle flow and E2E recovery
ShiinaKuroko Sep 9, 2026
d3c1dd0
fix(decisive): stabilize fleet and stage recovery
ShiinaKuroko Sep 12, 2026
68bc60d
Merge decisive battle stabilization
ShiinaKuroko Sep 12, 2026
5258efd
docs(decisive): record stabilization checkpoint
ShiinaKuroko Sep 12, 2026
f5ecd0d
Merge decisive checkpoint documentation
ShiinaKuroko Sep 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/skills
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,22 @@ Cargo.lock
# Agent temporary files
.tmp/

# Agent debug toolkit keeps empty output directories but ignores generated files.
!tools/debug_toolkit/
!tools/debug_toolkit/result/
!tools/debug_toolkit/result/logs/
!tools/debug_toolkit/result/logs/.gitkeep
!tools/debug_toolkit/result/screenshot/
!tools/debug_toolkit/result/screenshot/.gitkeep
!tools/debug_toolkit/result/ocr/
!tools/debug_toolkit/result/ocr/.gitkeep
tools/debug_toolkit/result/logs/*
!tools/debug_toolkit/result/logs/.gitkeep
tools/debug_toolkit/result/screenshot/*
!tools/debug_toolkit/result/screenshot/.gitkeep
tools/debug_toolkit/result/ocr/*
!tools/debug_toolkit/result/ocr/.gitkeep

# MCP / Jupyter 测试产物
test_*.ipynb
*_test.ipynb
Expand Down
193 changes: 156 additions & 37 deletions AGENTS.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion CLAUDE.md
6 changes: 4 additions & 2 deletions autowsgr/combat/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
fleet_slot_from_api,
resolve_fleet_selection,
)
from .history import CombatEvent, CombatHistory, CombatResult, FightResult
from .history import CombatEvent, CombatHistory, CombatResult, FightResult, grade_condition_met
from .node_tracker import MapNodeData, NodeTracker
from .plan import CombatMode, CombatPlan, NodeDecision
from .plan import CombatMode, CombatPlan, GradeCondition, NodeDecision
from .recognition import (
SHIP_DROP_PAGE_SIGNATURE,
ShipDropResult,
Expand All @@ -38,6 +38,7 @@
'FleetPreset',
'FleetSelectionSource',
'FleetSlotRule',
'GradeCondition',
'MapNodeData',
'NodeDecision',
'NodeTracker',
Expand All @@ -47,6 +48,7 @@
'ShipDropResult',
'ShipSelector',
'fleet_slot_from_api',
'grade_condition_met',
'recognize_enemy_formation',
'recognize_ship_drop',
'resolve_fleet_selection',
Expand Down
21 changes: 11 additions & 10 deletions autowsgr/combat/actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,6 @@ class Coords:
# ═══════════════════════════════════════════════════════════════════════════════


def click_start_march(device: AndroidController) -> None:
"""点击出征按钮。"""
device.click(*Coords.START_MARCH)


def click_retreat(device: AndroidController) -> None:
"""点击撤退按钮(索敌成功界面)。"""
device.click(*Coords.RETREAT)
Expand Down Expand Up @@ -319,11 +314,17 @@ def get_ship_drop(device: AndroidController, ocr: OCREngine) -> str | None:
掉落的舰船名称,或 ``None`` 如果未获取到。
"""

screen = device.screenshot()
result = recognize_ship_drop(screen, ocr)
if result.ship_name:
_log.info('[Combat] 掉落识别: {} ({})', result.ship_name, result.ship_type or '未知')
return result.ship_name
# 页面动画可能让首帧尚未完成; 保留有限重试后再交给调用方点击离开。
for attempt in range(5):
if attempt:
time.sleep(0.5)
screen = device.screenshot()
result = recognize_ship_drop(screen, ocr)
if result.ship_name:
_log.info('[Combat] 掉落识别: {} ({})', result.ship_name, result.ship_type or '未知')
return result.ship_name
_log.debug('[Combat] 掉落 OCR 第 {}/5 次未识别', attempt + 1)
return None


# ═══════════════════════════════════════════════════════════════════════════════
Expand Down
3 changes: 0 additions & 3 deletions autowsgr/combat/fleet.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,6 @@
from autowsgr.combat.plan import CombatPlan


NATIVE_FLEET_VESSEL_TYPES = tuple(vessel_type.native for vessel_type in FLEET_VESSEL_TYPES)
"""由公共 native 契约提供的普通舰种。"""

_NATIVE_CODE_TO_SHIP_TYPE: Mapping[str, ShipType] = MappingProxyType(
{
'cv': ShipType.CV,
Expand Down
Loading