MaaEnd 终末地小助手:基于视觉 AI 的「明日方舟:终末地」自动化工具
This report summarizes scanner evidence for MaaEnd/MaaEnd, a C++ project with 4,301 GitHub stars. SynthScan examined 537,028 lines of code across 1856 source files, recording 547 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 1.3 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 386 finding(s).
Are imports declared and package/API names verified? 8 finding(s).
Are wrappers, guards, and repeated structures necessary? 342 finding(s).
Which changes need focused human review? 547 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 547 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/add_node_defaults.py | 225 | def count_nodes_missing_fields(text: str) -> int: | CODE |
| LOW | tools/essence_filter/test_extract_skill_pools.py | 17 | def test_jsonc_matcher_config(self): | CODE |
| LOW | tools/essence_filter/test_extract_skill_pools.py | 34 | def test_missing_file_returns_default(self): | CODE |
| LOW | tools/essence_filter/test_build_autoessence_tasks.py | 41 | def test_resolves_by_level_id(self): | STRING |
| LOW | tools/essence_filter/test_build_autoessence_tasks.py | 49 | def test_missing_key_reports_level_id(self): | STRING |
| LOW | tools/essence_filter/test_build_autoessence_tasks.py | 62 | def test_dedupes_pool_languages(self): | STRING |
| LOW | tools/essence_filter/test_build_autoessence_tasks.py | 76 | def test_ultimate_uses_interface_text(self): | STRING |
| LOW | tools/essence_filter/test_build_autoessence_tasks.py | 85 | def test_arts_intensity_keeps_ui_aliases(self): | STRING |
| LOW | tools/essence_filter/test_build_autoessence_tasks.py | 97 | def test_keeps_five_and_six_star_sorted(self): | STRING |
| LOW | tools/essence_filter/test_build_autoessence_tasks.py | 111 | def test_icon_path_uses_item_id(self): | STRING |
| LOW | tools/essence_filter/test_build_autoessence_tasks.py | 117 | def test_strip_choose_location(self): | STRING |
| LOW | tools/essence_filter/test_build_autoessence_tasks.py | 152 | def test_sync_teleport_reset_list_covers_every_location(self): | STRING |
| LOW | tools/setup/setup_workspace.py | 409 | def _update_component_version( | CODE |
| LOW | tools/setup/setup_workspace.py | 1102 | def _find_cpp_algo_artifact_in_runs( | CODE |
| LOW | tools/setup/setup_workspace.py | 1276 | def _search_cpp_algo_by_commit( | CODE |
| LOW | tools/setup/cli_support.py | 28 | def _enable_windows_virtual_terminal() -> bool: | CODE |
| LOW⚡ | tools/icon_recognition/test_icon_recognition_tools.py | 416 | def test_icon_png_requires_square_power_of_two_dimensions(self) -> None: | CODE |
| LOW⚡ | tools/icon_recognition/test_icon_recognition_tools.py | 424 | def test_clean_text_replaces_controls_and_compresses_space(self) -> None: | CODE |
| LOW⚡ | tools/icon_recognition/test_icon_recognition_tools.py | 430 | def test_identifier_rejects_path_and_control_characters(self) -> None: | CODE |
| LOW⚡ | tools/icon_recognition/test_icon_recognition_tools.py | 436 | def test_data_sources_are_local_zmdmap_files(self) -> None: | CODE |
| LOW⚡ | tools/icon_recognition/test_icon_recognition_tools.py | 446 | def test_load_tables_reads_the_given_data_dir(self) -> None: | CODE |
| LOW⚡ | tools/icon_recognition/test_icon_recognition_tools.py | 455 | def test_icon_url_has_no_rarity_segment_and_uses_raw_suffix(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 65 | def test_publish_defaults_use_tool_cache_and_public_assets(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 73 | def test_ui_icon_exclude_rules_filter_weapon_rarity(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 151 | def test_ui_icon_exclude_rules_validate_without_matching_catalog_items(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 196 | def test_relocate_rarity_changed_icon_preserves_metadata(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 216 | def test_fixed_publish_updates_only_fixed_catalog_and_locale_entries(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 285 | def test_expected_merge_replaces_old_image_cases_and_keeps_all_reported_rois(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 347 | def test_expected_merge_rejects_object_roi(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 376 | def test_expected_merge_naturally_sorts_numbered_images(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 478 | def test_big_icon_ids_validate_duplicates(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 486 | def test_big_image_publish_keeps_base_and_removes_stale_variants(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 510 | def test_catalog_applies_currency_types_to_actual_item_ids(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 534 | def test_catalog_excludes_empty_icon_id_before_identifier_validation(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 550 | def test_catalog_includes_new_source_items_without_frozen_allowlist(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 570 | def test_catalog_preserves_item_sort_ids(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 585 | def test_catalog_order_does_not_depend_on_source_order(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 601 | def test_write_catalog_order_does_not_depend_on_mapping_order(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 610 | def test_region_restricted_is_optional_and_only_true_is_published(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 642 | def test_region_restricted_rejects_non_boolean_values(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 656 | def test_publish_takes_catalog_name_and_locales_from_source_names(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 739 | def test_sync_published_images_copies_missing_target(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 758 | def test_sync_published_images_preserves_removed_icon_used_by_catalog(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 776 | def test_sync_published_images_preserves_removed_icon_used_by_fluid_catalog(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 805 | def test_sync_published_images_copies_fluid_icon_for_composite_catalog(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 849 | def test_prepare_item_map_accepts_isolate_category_types(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 869 | def test_prepare_item_map_filters_explicit_normal_product_blacklist(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 908 | def test_item_blacklist_filters_simulated_producers_from_cached_map(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 934 | def test_prepare_item_map_does_not_filter_by_localized_name_prefix(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 952 | def test_fixed_items_carry_five_language_names(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 994 | def test_localization_uses_uppercase_weapon_name_keys(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 1010 | def test_locale_map_uses_verified_path_and_uppercase_weapon_keys(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 1022 | def test_localization_uses_the_source_names_map(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 1028 | def test_localization_names_the_composite_container_and_content(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 1054 | def test_locale_update_removes_stale_icon_recognition_names(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 1079 | def test_locale_update_accepts_jsonc_comments(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 1106 | def test_locale_update_preserves_jsonc_when_values_are_unchanged(self) -> None: | CODE |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 1125 | def test_fixed_items_accept_jsonc_comments(self) -> None: | STRING |
| LOW | tools/icon_recognition/test_icon_recognition_tools.py | 1155 | def test_locale_update_keeps_item_keys_in_one_stable_group(self) -> None: | STRING |
| LOW | tools/icon_recognition/download.py | 175 | def _require_optional_boolean( | CODE |
| 129 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/zmdmap/datasets/delivery_jobs.py | 104 | # ── 可装箱物品 ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/delivery_jobs.py | 115 | # ── 仓储节点 ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/delivery_jobs.py | 168 | # ── 地区 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/delivery_jobs.py | 178 | # ── 物品 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/sell_product.py | 27 | # ── 干员 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/sell_product.py | 52 | # ── 据点 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/sell_product.py | 108 | # ── 物品 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/delivery_destinations.py | 163 | # ── 仓储节点 ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/delivery_destinations.py | 195 | # ── 送货目的地 ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/lua.py | 19 | # ── 注释与长括号 ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/lua.py | 72 | # ── 常量与模板 ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/lua.py | 114 | # ── FOV ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/provider.py | 37 | # ── 表与 Lua ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/provider.py | 51 | # ── 资源 ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/provider.py | 92 | # ── prefab 查找 ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/layout.py | 104 | # ── 查找 ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/layout.py | 179 | # ── RectTransform 布局 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/layout.py | 254 | # ── 地区设置与挂载点 ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/layout.py | 302 | # ── 拼链 ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/unity.py | 36 | # ── 引用与取值 ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/unity.py | 85 | # ── 节点模型 ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/unity.py | 150 | # ── 新包导出形态 ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/unity.py | 218 | # ── 动画:只取入场状态需要的终值 ─────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/generator.py | 56 | # ── 快照 ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/generator.py | 84 | # ── 相机与面板 ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/generator.py | 163 | # ── 关卡按钮 ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/generator.py | 278 | # ── 写入变换与入场动画 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/generator.py | 363 | # ── 生成 ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/geometry.py | 28 | # ── 四元数 / 4x4 矩阵 ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/geometry.py | 129 | # ── 投影 ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/datasets/region3d/geometry.py | 145 | # ── 凸多边形运算 ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/config.py | 29 | # ── 路径与仓库布局 ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/config.py | 67 | # ── 语言 key 映射 ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/config.py | 97 | # ── 发布渠道 ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/game_data.py | 97 | # ── 世界坐标 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/game_data.py | 105 | # ── 关卡归属 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 52 | # ── 物品 ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 138 | # ── 能量淤积点 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 179 | # ── 武器与技能 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 230 | # ── 环境监测 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 262 | # ── 干员与据点 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 337 | # ── 地图标记与关卡地图 ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 405 | # ── 采集物与关卡 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 448 | # ── 送货目的地 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 569 | # ── 运送委托 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 639 | # ── 干员培养 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 694 | # ── 奖励与商店 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tools/zmdmap/utils/tables.py | 809 | # ── 读取 ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/create-release-branch.yml | 22 | # ── RC 发布:创建 release/vX.Y 分支 ───────────────────────────── | COMMENT |
| MEDIUM | .github/workflows/create-release-branch.yml | 92 | # ── Stable .0 发布:清理旧 release 分支 ──────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/pipeline-generate/EnvironmentMonitoring/README.md | 41 | "Id": "MyObservationPoint", | COMMENT |
| LOW | tools/icon_recognition/blacklist.json | 21 | // 实验息壤瓶 | COMMENT |
| LOW | tools/MapNavigator/main.py | 1 | # /// script | COMMENT |
| LOW | tools/MapNavigator/web/serve.py | 1 | # /// script | COMMENT |
| LOW | agent/go-service/autofight/endaxistimeline.go | 141 | "comboSkill": 43, | COMMENT |
| LOW | agent/go-service/autofight/endaxistimeline.go | 161 | // t.SetTimelineCode(code) | COMMENT |
| LOW | agent/go-service/autofight/endaxistimeline.go | 441 | // - skipComboCooldown:为 true 时跳过全员连携就绪检测,轴完立刻尝试匹配下一 scenario。 | COMMENT |
| LOW | agent/go-service/common/listcomplete/recognition.go | 21 | var _ maa.CustomRecognitionRunner = &Recognition{} | COMMENT |
| LOW | agent/go-service/bettersliding/types.go | 61 | // BetterSlidingAction handles slider-based quantity selection UIs. | COMMENT |
| LOW | agent/go-service/bettersliding/types.go | 81 | // - CenterPointOffset: click offset from slider handle center; default [-10, 0] on desktop | COMMENT |
| LOW | agent/go-service/bettersliding/handlers.go | 1181 | // 返回本次实际使用的目标数量及其判定结果。 | COMMENT |
| LOW | agent/go-service/ims/add_item_data.go | 21 | var _ maa.CustomActionRunner = &AddItemData{} | COMMENT |
| LOW | agent/go-service/ims/add_item_data.go | 41 | // If IMS has never been initialized (hasData=false), recognition still runs and | COMMENT |
| LOW | agent/go-service/ims/sync_item_data.go | 41 | // - these keys always join region rebuild when page_dedup=false (miss → drop). | COMMENT |
| LOW | agent/go-service/trialofswordmancy/recognition.go | 21 | // 每步只做稳定识别(remainDeck OCR),手牌由缓存的 Deck 反推;完整识别(remainDeck + Hand 模板匹配) | COMMENT |
| LOW | agent/go-service/trialofswordmancy/roundstate.go | 1 | package trialofswordmancy | COMMENT |
| LOW | agent/go-service/trialofswordmancy/roundstate.go | 101 | } | COMMENT |
| LOW | agent/go-service/trialofswordmancy/solver/types.go | 1 | // Package solver 实现选剑演武(Trial of Swordmancy)的精确 MDP 求解器。 | COMMENT |
| LOW | …t/go-service/outposttrading/internal/ocrmatch/match.go | 1 | // Package ocrmatch 提供 OutpostTrading 各领域共享的严格规范化 OCR 匹配。 | COMMENT |
| LOW | agent/go-service/automission/missions.go | 201 | // | COMMENT |
| LOW | agent/go-service/pkg/parentwatch/parentwatch.go | 1 | // Package parentwatch 在后台监视父进程存活情况:父进程一旦退出立即结束当前进程。 | COMMENT |
| LOW | agent/cpp-algo/source/utils.h | 1 | #pragma once | COMMENT |
| LOW | agent/cpp-algo/source/main.cpp | 1 | #include <filesystem> | COMMENT |
| LOW | agent/cpp-algo/source/Test/test.cpp | 1 | #include "test.h" | COMMENT |
| LOW | agent/cpp-algo/source/Test/test.cpp | 21 | // WebView2 view; | COMMENT |
| LOW | agent/cpp-algo/source/MapLocator/MapLocateAction.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | agent/cpp-algo/source/MapLocator/MapLocator.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | …p-algo/source/MapLocator/CameraOrientationPreprocess.h | 21 | // 观测条带在小地图内双线性采样、越界取边缘;参考条带按资产坐标采样、越界取 0, | COMMENT |
| LOW | …-algo/source/MapLocator/CameraOrientationPredictor.cpp | 1 | #include "CameraOrientationPredictor.h" | COMMENT |
| LOW | …pp-algo/source/MapLocator/CameraOrientationPredictor.h | 1 | #pragma once | COMMENT |
| LOW | …pp-algo/source/MapLocator/CameraOrientationPredictor.h | 21 | // 预处理(极坐标几何、参考采样与条带域合成)由 BuildOrientationStrips 执行: | COMMENT |
| LOW | …nt/cpp-algo/source/RealTimeTask/RealTimeTaskAction.cpp | 1 | #include "RealTimeTaskAction.h" | COMMENT |
| LOW | agent/cpp-algo/source/Navmesh/BaseNavPlanner.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | agent/cpp-algo/source/Navmesh/BaseNavReader.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | agent/cpp-algo/source/Navmesh/RecastNavFieldsIO.h | 1 | #pragma once | COMMENT |
| LOW | agent/cpp-algo/source/Navmesh/RecastNavRoute.h | 1 | #pragma once | COMMENT |
| LOW | agent/cpp-algo/source/Navmesh/OccluderPack.cpp | 1 | #include "OccluderPack.h" | COMMENT |
| LOW | agent/cpp-algo/source/Navmesh/RecastNavZone.h | 1 | #pragma once | COMMENT |
| LOW | agent/cpp-algo/source/Navmesh/RecastNavGrid.cpp | 1 | #include "RecastNavGrid.h" | COMMENT |
| LOW | agent/cpp-algo/source/Navmesh/RecastNavRoute.cpp | 1 | #include "RecastNavRoute.h" | COMMENT |
| LOW | agent/cpp-algo/source/Navmesh/RecastNavGrid.h | 1 | #pragma once | COMMENT |
| LOW | …/source/IconRecognition/IconRecognitionRecognition.cpp | 1 | #include "IconRecognitionRecognition.h" | COMMENT |
| LOW | …ent/cpp-algo/source/IconRecognition/IconRecognizer.cpp | 1 | #include "IconRecognizer.h" | COMMENT |
| LOW | …ource/IconRecognition/test/test_custom_recognition.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | …p-algo/source/IconRecognition/test/test_manual_cli.cpp | 1 | #include "manual_runner_config.h" | COMMENT |
| LOW | …lgo/source/IconRecognition/test/test_debug_capture.cpp | 1 | #include <algorithm> | COMMENT |
| LOW | …/source/IconRecognition/test/test_small_algorithms.cpp | 1 | #ifdef ICON_RECOGNITION_TEST_MAIN | COMMENT |
| LOW | …pp-algo/source/IconRecognition/test/test_full_diff.cpp | 1 | #define NOMINMAX | COMMENT |
| LOW | …cpp-algo/source/IconRecognition/detail/GridAnchors.cpp | 1 | #include "GridAnchors.h" | COMMENT |
| LOW | …pp-algo/source/IconRecognition/detail/GridProfiles.cpp | 1 | #include "GridProfiles.h" | COMMENT |
| LOW | …pp-algo/source/IconRecognition/detail/GridDetector.cpp | 1 | #include "GridDetector.h" | COMMENT |
| LOW | agent/cpp-algo/source/Common/notice.cpp | 1 | #include "notice.h" | COMMENT |
| LOW | agent/cpp-algo/source/Common/FramelessWindow.h | 1 | #pragma once | COMMENT |
| LOW | agent/cpp-algo/source/Common/FramelessWindow.h | 61 | // = 1.0 时不开 layered(省一份合成开销)。整个窗口(含 WebView2 等子控件)一同透明。 | COMMENT |
| LOW | agent/cpp-algo/source/Common/SystemMonitor.cpp | 1 | #include "SystemMonitor.h" | COMMENT |
| LOW | agent/cpp-algo/source/Common/CrashHandler.cpp | 1 | #include "CrashHandler.h" | COMMENT |
| LOW | agent/cpp-algo/source/Common/WebView2.cpp | 61 | // CreateCoreWebView2EnvironmentWithOptions parameters."),于是 cpp-algo 与 | COMMENT |
| LOW | agent/cpp-algo/source/Common/ParentProcessWatcher.h | 1 | #pragma once | COMMENT |
| LOW | agent/cpp-algo/source/Common/ParentProcessWatcher.cpp | 1 | #include "ParentProcessWatcher.h" | COMMENT |
| LOW | agent/cpp-algo/source/Common/WebView2.h | 1 | #pragma once | COMMENT |
| 66 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/validate_schema.py | 137 | except Exception: | CODE |
| LOW | tools/validate_schema.py | 168 | except Exception as e: | CODE |
| LOW | tools/validate_schema.py | 293 | except Exception as e: | CODE |
| LOW | tools/build_android_agents.py | 449 | except Exception: | CODE |
| LOW | tools/check_maautils_sync.py | 308 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 275 | except Exception as exc: | CODE |
| LOW | tools/setup/setup_workspace.py | 341 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 356 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 368 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 713 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 776 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 829 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 881 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 916 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 1144 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 1179 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 1216 | except Exception: | CODE |
| LOW | tools/setup/setup_workspace.py | 1239 | except Exception: | CODE |
| LOW | tools/setup/setup_workspace.py | 1268 | except Exception: | CODE |
| LOW | tools/setup/setup_workspace.py | 1356 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 1383 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 1418 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 1447 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 1680 | except Exception: | CODE |
| LOW | tools/setup/setup_workspace.py | 1707 | except Exception as e: | CODE |
| LOW | tools/setup/setup_workspace.py | 1820 | except Exception as e: | CODE |
| LOW | tools/setup/cli_support.py | 62 | except Exception: | CODE |
| LOW | tools/setup/cli_support.py | 209 | except Exception as e: | CODE |
| LOW | tools/setup/cli_support.py | 217 | except Exception: | CODE |
| LOW | tools/icon_recognition/download.py | 634 | except Exception as error: | CODE |
| LOW | tools/i18n/sync_ocr_expected.py | 1170 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/connectors.py | 103 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/connectors.py | 134 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/connectors.py | 178 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/connectors.py | 258 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/connectors.py | 455 | except Exception: | CODE |
| LOW | tools/MapNavigator/agent_session.py | 99 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/settings_store.py | 57 | except Exception: | CODE |
| LOW | tools/MapNavigator/key_listener.py | 70 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/key_listener.py | 86 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/key_listener.py | 122 | except Exception: | CODE |
| LOW | tools/MapNavigator/navtest_service.py | 256 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/navtest_service.py | 273 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/navtest_service.py | 411 | except Exception as exc: | CODE |
| MEDIUM | tools/MapNavigator/navtest_service.py | 412 | print(f"Error in navtest session: {exc}") | CODE |
| MEDIUM | tools/MapNavigator/navtest_service.py | 364 | def _run(self) -> None: | CODE |
| MEDIUM | tools/MapNavigator/runtime.py | 98 | print(f"Error loading Maa runtime: {exc}") | CODE |
| LOW⚡ | tools/MapNavigator/recording_service.py | 177 | except Exception as exc: | CODE |
| MEDIUM⚡ | tools/MapNavigator/recording_service.py | 178 | print(f"Error in recording cycle: {exc}") | CODE |
| MEDIUM | tools/MapNavigator/recording_service.py | 144 | def _run(self) -> None: | CODE |
| LOW | tools/MapNavigator/worker_runner.py | 197 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/worker_runner.py | 201 | except Exception: | CODE |
| LOW | tools/MapNavigator/navmesh_backend.py | 138 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/navmesh_backend.py | 206 | except Exception: | CODE |
| LOW | tools/MapNavigator/clipboard.py | 19 | except Exception: | CODE |
| LOW | tools/MapNavigator/clipboard.py | 31 | except Exception as exc: | CODE |
| MEDIUM | tools/MapNavigator/web/serve.py | 390 | def _compute() -> dict[str, Any]: | CODE |
| MEDIUM | tools/MapNavigator/web/serve.py | 1253 | def read_client() -> None: | CODE |
| LOW | tools/MapNavigator/web/serve.py | 137 | except Exception as exc: | CODE |
| LOW | tools/MapNavigator/web/serve.py | 194 | except Exception: | CODE |
| 22 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/validate_schema.py | 137 | except Exception: | CODE |
| HIGH | tools/check_maautils_sync.py | 68 | except OSError: | CODE |
| HIGH | tools/cleanup_caches.py | 42 | except OSError: | CODE |
| HIGH | tools/setup/setup_workspace.py | 1680 | except Exception: | CODE |
| HIGH | tools/setup/build_and_install.py | 167 | except FileNotFoundError: | CODE |
| HIGH | tools/setup/build_and_install.py | 505 | except FileNotFoundError: | CODE |
| HIGH | tools/icon_recognition/ui_icons/generate.py | 332 | except OSError: | CODE |
| HIGH | tools/MapNavigator/key_listener.py | 142 | except AttributeError: | CODE |
| HIGH | tools/MapNavigator/key_listener.py | 149 | except AttributeError: | CODE |
| HIGH | tools/MapNavigator/model.py | 365 | except (TypeError, ValueError): | CODE |
| HIGH | tools/MapNavigator/worker_runner.py | 83 | except OSError: | CODE |
| HIGH | tools/MapNavigator/worker_runner.py | 201 | except Exception: | CODE |
| HIGH | tools/MapNavigator/clipboard.py | 19 | except Exception: | CODE |
| HIGH | tools/MapNavigator/web/serve.py | 1277 | except WebSocketDisconnect: | CODE |
| HIGH | tools/MapNavigator/web/serve.py | 1268 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/validate_schema.py | 25 | CODE | |
| LOW | tools/validate_schema.py | 143 | CODE | |
| LOW | tools/validate_schema.py | 226 | CODE | |
| LOW | tools/build_android_agents.py | 456 | CODE | |
| LOW | tools/check_maautils_sync.py | 240 | CODE | |
| LOW | tools/merge_pipeline.py | 10 | CODE | |
| LOW | tools/merge_pipeline.py | 18 | CODE | |
| LOW | tools/add_node_defaults.py | 59 | CODE | |
| LOW | tools/add_node_defaults.py | 125 | CODE | |
| LOW | tools/essence_filter/extract_skill_pools.py | 50 | CODE | |
| LOW | tools/essence_filter/extract_skill_pools.py | 98 | CODE | |
| LOW | tools/essence_filter/build_autoessence_tasks.py | 398 | CODE | |
| LOW | tools/essence_filter/build_locations.py | 94 | CODE | |
| LOW | tools/optimize_templates/optimize_templates.py | 63 | CODE | |
| LOW | tools/setup/dep_3rdparty.py | 102 | CODE | |
| LOW | tools/setup/setup_workspace.py | 294 | CODE | |
| LOW | tools/setup/setup_workspace.py | 560 | CODE | |
| LOW | tools/setup/setup_workspace.py | 718 | CODE | |
| LOW | tools/setup/setup_workspace.py | 834 | CODE | |
| LOW | tools/setup/setup_workspace.py | 1315 | CODE | |
| LOW | tools/setup/setup_workspace.py | 1573 | CODE | |
| LOW | tools/setup/build_and_install.py | 182 | CODE | |
| LOW | tools/setup/build_and_install.py | 353 | CODE | |
| LOW | tools/setup/build_and_install.py | 512 | CODE | |
| LOW | tools/icon_recognition/download.py | 612 | CODE | |
| LOW | tools/icon_recognition/publish.py | 138 | CODE | |
| LOW | tools/icon_recognition/ui_icons/generate.py | 263 | CODE | |
| LOW | tools/zmdmap/datasets/teleport_anchors.py | 53 | CODE | |
| LOW | tools/zmdmap/datasets/sell_product.py | 15 | CODE | |
| LOW | tools/zmdmap/datasets/stock_staple.py | 49 | CODE | |
| LOW | tools/zmdmap/datasets/region3d/lua.py | 32 | CODE | |
| LOW | tools/zmdmap/datasets/region3d/lua.py | 141 | CODE | |
| LOW | tools/zmdmap/datasets/region3d/provider.py | 101 | CODE | |
| LOW | tools/zmdmap/datasets/region3d/generator.py | 126 | CODE | |
| LOW | tools/zmdmap/datasets/region3d/generator.py | 191 | CODE | |
| LOW | tools/zmdmap/datasets/region3d/generator.py | 302 | CODE | |
| LOW | tools/i18n/sync_ocr_expected.py | 523 | CODE | |
| LOW | tools/i18n/sync_ocr_expected.py | 555 | CODE | |
| LOW | tools/i18n/sync_ocr_expected.py | 603 | CODE | |
| LOW | tools/i18n/sync_ocr_expected.py | 660 | CODE | |
| LOW | tools/i18n/sync_ocr_expected.py | 746 | CODE | |
| LOW | tools/i18n/sync_ocr_expected.py | 872 | CODE | |
| LOW | tools/i18n/sync_ocr_expected.py | 1110 | CODE | |
| LOW | tools/i18n/sync_ocr_expected.py | 111 | CODE | |
| LOW | tools/i18n/sync_ocr_expected.py | 135 | CODE | |
| LOW | tools/AutoCollectRoute/route_builder.py | 106 | CODE | |
| LOW | tools/AutoCollectRoute/route_reader.py | 115 | CODE | |
| LOW | tools/MapNavigator/connectors.py | 503 | CODE | |
| LOW | tools/MapNavigator/navtest_service.py | 166 | CODE | |
| LOW | tools/MapNavigator/json_import.py | 254 | CODE | |
| LOW | tools/MapNavigator/json_import.py | 821 | CODE | |
| LOW | tools/MapNavigator/json_import.py | 867 | CODE | |
| LOW | tools/MapNavigator/model.py | 338 | CODE | |
| LOW | tools/MapNavigator/worker_runner.py | 128 | CODE | |
| LOW | tools/MapNavigator/navmesh_backend.py | 121 | CODE | |
| LOW | tools/MapNavigator/navmesh_backend.py | 270 | CODE | |
| LOW | tools/MapNavigator/web/serve.py | 452 | CODE | |
| LOW | tools/MapNavigator/web/serve.py | 658 | CODE | |
| LOW | tools/MapNavigator/web/serve.py | 878 | CODE | |
| LOW | tools/MapNavigator/web/serve.py | 1192 | CODE | |
| 5 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/setup/build_and_install.py | 405 | f'call "{vcvarsall}" {msvc_arch} >nul && set', | CODE |
| HIGH | tools/zmdmap/utils/tables.py | 11 | - **缺字段与 ``null`` 都要能读**。游戏表里 ``{"id": …, "text": null}`` 很常见,所以每个字段都有默认值, | STRING |
| HIGH | tools/zmdmap/utils/tables.py | 24 | """表里的文本引用:``{"id": 123, "text": null}``;``text`` 是上游偶尔内联的中文。""" | STRING |
| HIGH | tools/MapNavigator/web/serve.py | 1297 | "assert_target": {"zone_id":…, "target":[x,y,w,h]} | null}。 | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tools/MapNavigator/test_recording_service.py | 67 | service._session.open.call_args.kwargs.get("resource_dirs"), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/en_us/developers/super-basic-introduction.md | 429 | ### Step 0: Tell Git Who You Are (One-Time Setup) | COMMENT |
| LOW | docs/en_us/developers/super-basic-introduction.md | 464 | ### Step 1: Create a Branch | COMMENT |
| LOW | docs/en_us/developers/super-basic-introduction.md | 475 | ### Step 2: Make the Changes — Write a Node + Make a Template | COMMENT |
| LOW | docs/en_us/developers/super-basic-introduction.md | 482 | ### Step 3: Commit — Save | COMMENT |
| LOW | docs/en_us/developers/super-basic-introduction.md | 494 | ### Step 4: Push — Upload to GitHub | COMMENT |
| LOW | docs/en_us/developers/super-basic-introduction.md | 523 | ### Step 5: Open PR (On the Webpage) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/essence_filter/build_locations.py | 78 | def _update_data_version(config_path: Path, synced_at: str) -> None: | CODE |
| LOW | tools/setup/setup_workspace.py | 391 | def _update_versions(install_root: Path, values: dict[str, str | None]) -> None: | CODE |
| LOW | tools/zmdmap/__init__.py | 19 | __all__ = ["payload_of", "read_payload"] | CODE |
| LOW | tools/MapNavigator/model.py | 226 | def set_point_actions(point: PathPoint, actions: list[int]) -> None: | CODE |
| LOW | tools/MapNavigator/model.py | 232 | def set_manual_point_actions(point: PathPoint, actions: list[int]) -> None: | CODE |
| LOW⚡ | tools/MapNavigator/recording_service.py | 187 | def _update_live_position(self, position: LivePosition) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/validate_schema.py | 13 | CODE | |
| LOW | tools/zmdmap/__init__.py | 17 | CODE | |
| LOW | tools/zmdmap/__init__.py | 17 | CODE |