--- title: 待办任务 type: curated permalink: main/projects/4111f53b-afa5-48e1-aaf8-d70a7edc0638/curated/待办任务 stable_id: ed4e1e4a-0844-4747-a777-1d540dd4291d scope: project project_id: 4111f53b-afa5-48e1-aaf8-d70a7edc0638 workspace_type: development usage_profile_id: null preference_context: development document_type: tasks revision: 1 source_memory_ids: [] source_checkpoint_ids: - c3d57a20-2881-4db2-ba98-572d030532ee source_file_ids: [] source_git_commit: null source_git_commits: [] source_agent_sync_ids: [] model_connection: Sub2API model_name: git-restore source_count: 18 source_revisions: memory:04dc843d-8bfe-4dd6-b5ab-09d2efa10d21: '1' memory:3c6217f5-07df-4a9d-b174-e77d114006ce: '1' memory:540030dc-d7ee-4e6e-a202-c0648ceca8f9: '1' memory:b0969eb6-5402-4fb1-8419-d349d2579e2e: '1' memory:4764ab1e-2b3e-477b-937c-1dd60ebf7ecc: '1' memory:4fcb8138-eb99-4843-a905-60c6862a4672: '1' memory:5e0fa990-763d-4497-a002-dd9d053d3b70: '1' memory:949cae49-4854-482f-a1ec-94997642a35c: '1' memory:f35ad4ea-f1fa-4c2e-9627-3f9b6b49ab1a: '1' source_dispositions: processed: 18 unchanged: 0 unsupported: 0 skipped: 0 cited_source_ids: - curated_baseline:ed4e1e4a-0844-4747-a777-1d540dd4291d - memory:f35ad4ea-f1fa-4c2e-9627-3f9b6b49ab1a - global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5 - global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d - global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823 - global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e - memory:4fcb8138-eb99-4843-a905-60c6862a4672 - memory:5e0fa990-763d-4497-a002-dd9d053d3b70 - memory:949cae49-4854-482f-a1ec-94997642a35c - memory:04dc843d-8bfe-4dd6-b5ab-09d2efa10d21 - memory:3c6217f5-07df-4a9d-b174-e77d114006ce - memory:540030dc-d7ee-4e6e-a202-c0648ceca8f9 - memory:b0969eb6-5402-4fb1-8419-d349d2579e2e - memory:4764ab1e-2b3e-477b-937c-1dd60ebf7ecc job_cited_source_ids: - curated_baseline:ed4e1e4a-0844-4747-a777-1d540dd4291d conflicts: [] supersedes: [] preferences: [] source_cursor: 362 source_hash: 2b09adcf963685730bb83e7b36c24f968972959d0170de3bc9aeb89af274e36a prompt_version: 2026-08-12.3 schema_version: '3' curation_job_id: null created_at: '2026-08-31T15:07:17.042126+00:00' updated_at: '2026-09-23T14:52:56.697567+00:00' tags: - development restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2 --- # 待办任务 – Age of Empires III EditTools ## 1. 搭建 Tauri 项目骨架 - 初始化 Tauri 2 项目,配置 Rust + Vue 3 + TypeScript。 - 实现安装根目录检查与 Fixed WebView2 Runtime 校验,缺失时报错并终止构建。 - 将 `vendor/webview2` 设为 Runtime 存放目录。 ## 2. 实现 Snapshot / Backup 服务 - 设计快照元数据结构(ID、时间、路径/版本、文件清单、状态、大小、SHA‑256、备注、结果)。 - 后端:创建、列出、加载检查、回退、删除快照。 - GUI 页面:列表展示、详细信息、操作按钮(创建、回退、删除),回退前自动创建安全快照,使用原子文件替换,若失败可恢复且不触碰未列入变更清单的文件。 - 存储位置:编辑器安装目录下的 `snapshots/`(或等价目录)。 ## 3. BAR / XML 只读解析器 - 使用已收集的 **Resource‑Manager** 或 **AOE3NativeED**,从本机 `Data.bar` 提取真实数据(`proto/techtree/civs` 等)。 - 实现数据模型(国家、单位、建筑、科技)并提供搜索与表单化展示的 API(JSON/TS 类型定义)。 ## 4. 配置驱动的修改器(核心编辑器) - 基于解析器模型,设计表单编辑与差异预览界面。 - 实现配置文件(JSON/YAML) → Mod/补丁 的生成流程。 - 支持回滚:生成的 Mod 必须能够通过快照回退功能恢复原始数据。 ## 5. 导出与本地部署流程 - 实现导出功能,将编辑后的数据打包为符合 AoE3 DE 要求的 Mod 包。 - 编写使用手册,说明手动复制至其他机器的步骤(项目不实现局域网分发)。 ## 6. 测试与验证 - 为每个新功能编写单元/集成测试,重点验证: - 快照创建的文件清单与 SHA‑256 正确。 - 回退后文件恢复到快照前状态。 - 解析器能够正确读取当前游戏版本的所有国家/单位/建筑/科技。 - 生成的 Mod 能被游戏识别并加载,无崩溃。 - 坚持 KISS & YAGNI,只实现必要的验证逻辑。 ## 7. 文档与记忆更新 - 完成后遵循全局记忆与 Git 工作流: 1) 更新 `aidocs/project_context.md`(最新优先、秒级时间戳)。 2) 使用 `type: 中文一句话描述` 格式提交代码。 3) 除非明确需求,不进行 push。