{"id":24879264,"url":"https://github.com/f-shake/archivemaster","last_synced_at":"2026-04-04T10:36:14.408Z","repository":{"id":249509604,"uuid":"831694832","full_name":"f-shake/ArchiveMaster","owner":"f-shake","description":"一套协助用户对文件进行处理、管理、备份、同步的工具集；A toolkit designed to assist users in processing, managing, backing up, and synchronizing files.","archived":false,"fork":false,"pushed_at":"2025-07-19T13:18:21.000Z","size":3359,"stargazers_count":107,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-19T17:38:43.011Z","etag":null,"topics":["archive","avalonia","directory","file","management"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/f-shake.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-07-21T10:56:54.000Z","updated_at":"2025-07-19T13:18:25.000Z","dependencies_parsed_at":"2024-09-09T02:27:10.137Z","dependency_job_id":"f1b9e3a6-a1ef-404a-9155-1d700e54041a","html_url":"https://github.com/f-shake/ArchiveMaster","commit_stats":{"total_commits":78,"total_committers":1,"mean_commits":78.0,"dds":0.0,"last_synced_commit":"5b520cdb464296589ac5db23b2ec6a23ce550ced"},"previous_names":["autodotua/archivemaster","f-shake/archivemaster"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/f-shake/ArchiveMaster","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f-shake%2FArchiveMaster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f-shake%2FArchiveMaster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f-shake%2FArchiveMaster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f-shake%2FArchiveMaster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/f-shake","download_url":"https://codeload.github.com/f-shake/ArchiveMaster/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f-shake%2FArchiveMaster/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267803245,"owners_count":24146517,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archive","avalonia","directory","file","management"],"created_at":"2025-02-01T10:15:20.316Z","updated_at":"2026-04-04T10:36:14.399Z","avatar_url":"https://github.com/f-shake.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 简介\n\n这是一套协助用户对文件进行处理、管理、备份、同步的工具集。\n\n在开始这个项目之前的许多年，我已经陆续写了很多的用于备份、同步、管理文件或照片的软件，包括：\n\n- [文件自动备份系统](https://github.com/autodotua/FileBackuper_New)\n- 文件批量操作\n- [异地备份离线同步](https://github.com/autodotua/OffsiteBackupOfflineSync)\n- [照片瘦身工具](https://github.com/autodotua/PhotoSlimming)\n- [照片归档工具](https://github.com/autodotua/PhotoArchivingTools)\n- [光盘归档工具](https://github.com/autodotua/DiscArchivingTool)\n- 控制台小程序集\n- 文件归位器\n- 文件夹加密\n\n这些工具功能各异，界面各不相同，技术水平差异很大，操作方式也不尽相同。因此，我希望通过本项目，把这些工具进行整合，使用跨平台的[Avalonia](https://github.com/AvaloniaUI/Avalonia)技术承载GUI。\n\n# 截图\n\n## 主界面\n\n![主界面](imgs/主界面.png)\n\n## 文件目录工具\n\n| 文件加密解密                                            | 目录结构同步                                            | 目录结构克隆                                            |\n| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |\n| ![1.文件加密解密](imgs/文件目录工具/1.文件加密解密.png) | ![2.目录结构同步](imgs/文件目录工具/2.目录结构同步.png) | ![3.目录结构克隆](imgs/文件目录工具/3.目录结构克隆.png) |\n\n| 批量重命名                                          | 重复文件清理                                            | 按时间段分类                                              |\n| --------------------------------------------------- | ------------------------------------------------------- | ----------------------------------------------------------- |\n| ![4.批量重命名](imgs/文件目录工具/4.批量重命名.png) | ![5.重复文件清理](imgs/文件目录工具/5.重复文件清理.png) | ![6.按时间段分类](imgs/文件目录工具/6.按时间段分类.png) |\n\n| 附属文件清理                                            | 批量命令行执行                                              | 硬链接去重                                          | 文件筛选操作                                              |\n| ------------------------------------------------------- | ----------------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------------- |\n| ![7.附属文件清理](imgs/文件目录工具/7.附属文件清理.png) | ![8.批量命令行执行](imgs/文件目录工具/8.批量命令行执行.png) | ![9.硬链接去重](imgs/文件目录工具/9.硬链接去重.png) | ![10.文件筛选操作](imgs/文件目录工具/10.文件筛选操作.png) |\n\n## 文本工具\n\n| 文本智能生成（AI）                                  | 文本简单加密                                    | 文档智能搜索（AI）                                  |\n| --------------------------------------------------- | ------------------------------------------- | --------------------------------------------------- |\n| ![1.文本智能生成](imgs/文本工具/1.文本智能生成.png) | ![2.文本混淆](imgs/文本工具/2.文本混淆.png) | ![3.文档智能搜索](imgs/文本工具/3.文档智能搜索.png) |\n\n| 错别字检查（AI）                                | 编码识别与转换                                          | 逐行智能转换（AI）                                  |\n| ----------------------------------------------- | ------------------------------------------------------- | --------------------------------------------------- |\n| ![4.错别字检查](imgs/文本工具/4.错别字检查.png) | ![5.编码识别与转换](imgs/文本工具/5.编码识别与转换.png) | ![6.逐行智能转换](imgs/文本工具/6.逐行智能转换.png) |\n\n\n\n## 照片工具\n\n| 修复照片修改时间                                            | 照片瘦身                                            | 照片地理信息写入                                            | 照片位置分类                                        |\n| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | --------------------------------------------------- |\n| ![1.修复照片修改时间](imgs/照片工具/1.修复照片修改时间.png) | ![2.照片瘦身](imgs/照片工具/2.照片瘦身.png) | ![3.照片地理信息写入](imgs/照片工具/3.照片地理信息写入.png) | ![4.照片位置分类](imgs/照片工具/4.照片位置分类.png) |\n\n## 异地备份\n\n| 制作异地快照                                        | 本地生成补丁                                        | 异地同步                                    |\n| --------------------------------------------------- | --------------------------------------------------- | ------------------------------------------- |\n| ![1.制作异地快照](imgs/异地备份/1.制作异地快照.png) | ![2.本地生成补丁](imgs/异地备份/2.本地生成补丁.png) | ![3.异地同步](imgs/异地备份/3.异地同步.png) |\n\n## 动态固存备份\n\n| 打包和备份                                          | 重建和恢复                                          | 包信息和验证                                            |\n| --------------------------------------------------- | --------------------------------------------------- | ------------------------------------------------------- |\n| ![1.打包和备份](imgs/动态固存备份/1.打包和备份.png) | ![2.重建和恢复](imgs/动态固存备份/2.重建和恢复.png) | ![3.包信息和验证](imgs/动态固存备份/3.包信息和验证.png) |\n\n## 实时备份服务\n\n| 备份任务配置                                            | 备份管理中心                                            |\n| ------------------------------------------------------- | ------------------------------------------------------- |\n| ![1.备份任务配置](imgs/实时备份服务/1.备份任务配置.png) | ![2.备份管理中心](imgs/实时备份服务/2.备份管理中心.png) |\n\n# 工具和帮助\n\n[基本使用帮助](./helps/basic.md)\n\n## 文件目录工具（`FileTools`）\n\n一套用来解决文件、目录（特别是图像文件）在预处理、整理、存档、浏览等环节存在问题的自动化工具\n\n[文件目录工具帮助](./helps/files.md)\n\n| 工具名       | 用途                                                         | 期望解决的问题                                               | 原项目                                                                            |\n|-----------| ------------------------------------------------------------ | ------------------------------------------------------------ |--------------------------------------------------------------------------------|\n| 按时间段分类\u003cbr /\u003e`TimeClassify` | 识别目录中相同时间段的文件，将它们移动到相同的新目录中       | 例如对于航拍照片，多次起飞的照片和视频会混在一起。通过该工具，可以通过拍摄时间来自动将不同航次的照片和视频进行归类。 | [照片归档工具](https://github.com/autodotua/PhotoArchivingTools)                     |\n| 附属文件清理\u003cbr /\u003e`TwinFileCleaner` | 自动清理与主文件同名的关联文件。例如，当目录中存在.dng文件时，自动删除同名但不同后缀的.jpg等关联文件。 | 当拍摄了RAW+JPG格式的照片时，若决定处理RAW文件，那么JPG格式是多余的，需要删除。 | [照片归档工具](https://github.com/autodotua/PhotoArchivingTools)                     |\n| 文件加密解密\u003cbr /\u003e`Encryptor` | 使用AES加密方法，对文件进行加密或解密 | 需要对一个文件夹内的文件和子文件进行加密，并需要保留目录结构，需要加密文件名、文件夹名或目录结构。 | [照片归档工具](https://github.com/autodotua/PhotoArchivingTools)\u003cbr /\u003e文件夹加密          |\n| 目录结构同步\u003cbr /\u003e`DirStructureSync` | 以一个目录为模板，将另一个目录中的文件同步到与模板内相同文件一直的位置 | 有两份初始状态一样的目录，其中一份中的某些文件进行了移动等操作，希望能够让另一份也同步应用更改，避免不必要的复制操作。 | [异地备份离线同步](https://github.com/autodotua/OffsiteBackupOfflineSync)\u003cbr /\u003e控制台小程序集 |\n| 目录结构克隆\u003cbr /\u003e`DirStructureClone` | 以一个目录为模板，生成一个新的目录，目录中文件与模板一致，但大小为0 | 需要保存一个目录的结构，但是不需要了解文件的内容，只是想用尽可能小的容量存储文件树状结构。 | [异地备份离线同步](https://github.com/autodotua/OffsiteBackupOfflineSync)\u003cbr /\u003e文件归位器   |\n| 批量重命名\u003cbr /\u003e`Rename` | 批量对一个目录中的文件或文件夹按规则进行重命名操作 | 需要对一个目录中的文件按一定规则进行重命名。 | 文件批量操作                                                                         |\n| 重复文件清理\u003cbr /\u003e`DuplicateFileCleanup` | 清理一个目录内的重复文件，或已包含在另一个目录中的相同文件 | 一些相同的文件散落在各个地方，为了节省空间，需要删除一部分 | 控制台小程序集                                                                        |\n| 批量命令行执行\u003cbr /\u003e`BatchCommandLine` | 以文件或目录为元素，批量执行命令行 | 有一个能够传入参数的可执行文件，需要将某个目录下的所有子目录或文件作为参数，传入可执行文件并运行，每个子目录或文件作为参数运行一次。例如需要对指定目录下筛选后的文件分别压缩。 |                                                                                |\n| 硬链接去重\u003cbr /\u003e`LinkDeduplication` | 将一个目录中二进制相同的文件指向同一个硬盘物理地址，即硬链接，以减少磁盘占用 | 加入一个目录中有很多完全相同的文件，用这个工具可以大幅减少占用空间 |                                                                                |\n| 文件筛选操作\u003cbr /\u003e`FileFilterOperation` | 对筛选后的文件进行复制、移动、删除操作 | 需要对某个目录中的一部分文件提取（复制、移动）到另一个位置，以及按规则删除文件或其他操作 | 文件批量操作                                                                         |\n\n## 文本工具（TextTools）\n\n[文本工具帮助](./helps/text.md)\n\n| 工具名                                  | 用途                                                         | 期望解决的问题                                               | 调用AI | 原项目                                                    |\n| --------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------ | --------------------------------------------------------- |\n| 文本智能生成\u003cbr /\u003e`TextRewriter`        | 使用AI对文本进行表达优化、结构调整、内容转换、文本评价等     | 提高文本处理效率和质量，满足多样化文本生成与优化需求         | √      |                                                           |\n| 文本混淆\u003cbr /\u003e`TextEncryption`          | 使用替换式密码的方式混淆文本，实现防君子不防小人的文本加密   | 保护敏感信息，实现轻量级可逆文本安全混淆                     |        | [文本加密工具](https://github.com/f-shake/TextEncryption) |\n| 文档智能搜索\u003cbr /\u003e`SmartDocSearch`      | 从多个文档中搜索关键词，并通过AI进行总结归纳                 | 提升文档信息检索效率，快速定位关键内容并自动生成摘要         | √      |                                                           |\n| 错别字检查\u003cbr /\u003e`TypoChecker`           | 使用AI检查文本是否存在错别字                                 | 自动检测和修正文本错误，提高文本准确性和可读性               | √      | [错别字检查工具](https://github.com/f-shake/TypoChecker)  |\n| 编码识别与转换\u003cbr /\u003e`EncodingConverter` | 识别文本文件的编码，并可以转换为指定编码                     | 对一系列文本文件需要确定编码，或统一为指定编码格式           |        |                                                           |\n| 逐行智能转换\u003cbr /\u003e`LineByLineProcessor` | 针对每行文本调用AI进行独立转换，可用于分类、判断或文本改写等任务 | 针对大量需要基于语义进行非程序化判断的文本行，实现智能化逐行处理。它能够理解每行文本的深层含义，完成分类、判断、信息提取等复杂任务。 | √      |                                                           |\n| AI服务提供商\u003cbr /\u003e`AiProviders`         | 配置AI服务提供商                                             | 统一管理AI服务配置                                           |        |                                                           |\n\n## 照片工具（PhotoTools）\n\n[照片工具帮助](./helps/photos.md)\n\n| 工具名           | 用途                                                         | 期望解决的问题                                               | 原项目                                                       |\n| ---------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |\n| 修复照片修改时间\u003cbr /\u003e`RepairModifiedTime` | 寻找EXIF信息中的拍摄时间与照片修改时间不同的文件，将修改时间更新闻EXIF时间 | 对照片进行处理后，文件修改时间会更新，不利于部分软件的照片排序，需要从EXIF中读取实际拍摄时间，对文件修改时间进行更新。 | [照片归档工具](https://github.com/autodotua/PhotoArchivingTools)\u003cbr /\u003e控制台小程序集 |\n| 照片瘦身\u003cbr /\u003e`PhotoSlimming` | 复制或压缩照片，用于生成更小的照片集副本                     | 需要将硬盘中整理后的部分照片复制到手机中以便随时查看，但可能存在文件过大放不进手机、只需要部分目录中的文件、只需要部分类型文件等需求。 | [照片归档工具](https://github.com/autodotua/PhotoArchivingTools)\u003cbr /\u003e[照片瘦身工具](https://github.com/autodotua/PhotoSlimming) |\n| 照片地理信息写入\u003cbr /\u003e`PhotoGeoTagging` | 将GPX轨迹中的GPS位置信息，根据拍摄时间自动匹配并写入照片Exif | 相机拍摄的照片，不包含地理信息，无法根据位置查找照片。使用该工具，可以将拍摄时在相关工具记录的GPX轨迹中找到拍摄时间所在的位置，并写入照片元数据中。 |                                                              |\n| 照片位置分类\u003cbr /\u003e`PhotoGeoSorter` | 根据照片EXIF信息中的地理位置，以及用于提供分类标准的矢量数据，将照片移动到不同的目录 | 有大量的照片，这些照片由手机或其他能够定位的设备拍摄，并写入了位置信息。希望将这些数据 |                                                              |\n\n## 异地备份（`OfflineSync`）\n\n在无法通过网络或实地全量同步的情况下，使用增量同步的方式，利用小容量设备完成异地和本地磁盘的数据同步\n\n[异地备份工具帮助](./helps/offline.md)\n\n| 工具名                    | 用途                                     | 原项目                                                       |\n| ------------------------- | ---------------------------------------- | ------------------------------------------------------------ |\n| 制作异地快照\u003cbr /\u003e`Step1` | 在异地计算机创建所需要的目录快照         | [异地备份离线同步](https://github.com/autodotua/PhotoArchivingTools) |\n| 本地生成补丁\u003cbr /\u003e`Step2` | 在本地计算机生成与异地的差异文件的补丁包 | [异地备份离线同步](https://github.com/autodotua/OffsiteBackupOfflineSync) |\n| 异地同步\u003cbr /\u003e`Step3`     | 在异地应用补丁包，实现数据同步           | [异地备份离线同步](https://github.com/autodotua/OffsiteBackupOfflineSync) |\n\n## 动态固存备份（`WriteOnceArchive`）\n\n将动态更新目录中的定期文件备份到多个容量有限、写入后不可修改介质（如光盘、一次性磁带）\n\n[动态固存备份帮助](./helps/writeOnce.md)\n\n| 工具名 | 用途                                         | 原项目                                                       |\n| ------ | -------------------------------------------- | ------------------------------------------------------------ |\n| 打包\u003cbr /\u003e`Packing` | 扫描文件特征，制作文件归档包                 | [光盘归档工具](https://github.com/autodotua/DiscArchivingTool) |\n| 重建\u003cbr /\u003e`Rebuild` | 从文件归档包重建目录结构，或验证文件完整性 | [光盘归档工具](https://github.com/autodotua/DiscArchivingTool) |\n| 包信息和验证\u003cbr /\u003e`Verify` | 查看备份介质中文件包的信息，验证文件完整性 | [光盘归档工具](https://github.com/autodotua/DiscArchivingTool) |\n\n## 文件备份服务（`FileBackupper`）\n\n将目录中的文件定时或实时备份到另一个位置，支持全量备份或增量备份\n\n[自动备份服务帮助](./helps/backup.md)\n\n| 工具名       | 用途                                                         | 原项目                                                       |\n| ------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |\n| 备份任务配置 | 对备份任务进行新增、删除、修改配置                           | [文件自动备份系统](https://github.com/autodotua/FileBackuper_New) |\n| 备份管理中心 | 查看备份任务的信息、进行手动备份，查看快照、快照文件、日志等 | [文件自动备份系统](https://github.com/autodotua/FileBackuper_New) |\n\n下一步计划：增加`FileWatcher`备份、删除日志\n\n# 开发\n\n## 架构\n\n### 解决方案结构\n\n解决方案主要结构为项目框架-模块的形式，各模块名称均为`ArchiveMaster.Module.*`，独立编译成dll，然后由`ArchiveMaster.UI`进行反射调用。这样做的目的是后续可以开放接口，不改动原始程序而进行开发，灵活加载新模块。\n\n| 项目名称                 | 类型     | 描述                                                         | 依赖                 |\n| ------------------------ | -------- | ------------------------------------------------------------ | -------------------- |\n| `ArchiveMaster.Core`     | 依赖编译 | 同时被`.UI`和`.Module.*`调用，包含一些基础的接口、基类、配置约定等 | `FzLib`              |\n| `ArchiveMaster.UI`       | 依赖编译 | 界面管理程序                                                 | `ArchiveMaster.Core` |\n| `ArchiveMaster.UI.*`     | 启动模块 | 具体平台的启动器                                             | `ArchiveMaster.UI`   |\n| `ArchiveMaster.Module.*` | 独立编译 | 每个模块在界面上显示为一个组别，同一类的工具放在同一个模块中 | `ArchiveMaster.Core` |\n\n### 项目内部结构\n\n除了`ArchiveMaster.UI.*`外，其余项目结构基本一致。本解决方案的主要结构是总（公共方法、接口、定义）-分（功能模块）-总（UI启动器）\n\n| 项目名称                | 描述                                                         |\n| ----------------------- | ------------------------------------------------------------ |\n| `Assets`                | 图标等素材文件，作为`AvaloniaResource`                       |\n| `Configs`               | 工具的配置文件                                               |\n| `Converters`            | 用于XAML的值转换器                                           |\n| `Enums`                 | 枚举类型                                                     |\n| `Services`              | 各工具~~~~的执行逻辑代码，每个`Service`拥有一个`ConfigBase`的属性。 |\n| `ViewModels`            | 视图模型，连接`Views`、`Configs`和`Services`。               |\n| `ViewModels.FileSystem` | 用于表达文件或目录信息的类，继承自`SimpleFileInfo`。         |\n| `Views`                 | UI视图界面。本软件实现了完全的MVVM。除`UI`项目外，`Views`中仅包含界面，不包含逻辑。 |\n\n## 构建\n\n1. `git clone https://github.com/f-shake/ArchiveMaster.git`，将源代码下载至本地。\n2. 编辑`Directory.Build.props`：\n   1. 将`UseLocalFzLib`设置为`false`。\n   2. 调整`OutputDir`，或将`SpecialOutputDir`设置为`false`。\n3. 执行`build.ps1`PowerShell脚本，或在IDE中重新生成解决方案。`build.ps1`提供若干开关，可组合使用：\n\n   | 参数              | 说明                |\n   | --------------- | ----------------- |\n   | `-w`            | Windows (win-x64) |\n   | `-l`            | Linux (linux-x64) |\n   | `-m`            | macOS (osx-x64)   |\n   | `-all`          | 所有平台              |\n   | `-s`            | 自包含发布             |\n   | `-c`            | 单文件压缩（仅自包含）       |\n   | `-noSingleFile` | 禁用单文件发布           |\n\n\n## 模块\n\n### 新增模块\n\n一个模块表现为一个`dll`。步骤如下：\n\n1. 创建一个项目（或复制已有项目并清空），名称前缀约定为`ArchiveMaster.Module.`，`TargetFramework`为`net10.0`，`RootNamespace`为`ArchiveMaster`\n2. 新增并实现一个或多个工具\n3. 新建一个类，实现`IModuleInfo`，声明模块基本信息\n\n### 新增工具\n\n一个工具，在界面上表现为主页上的一个标签页，在实现中表现为一组同前缀的View、ViewModel、Service、Config组成的类的集合。一般来说，步骤如下：\n\n1. 创建一个配置类，继承并实现`ConfigBase`，用于保存配置\n2. 创建一个服务类，继承并实现`ServiceBase`，用于工具的具体逻辑实现。大多数工具可以分为初始化和执行两步，这类工具可以继承并实现`TwoStepServiceBase`，实现`InitializeAsync`和`ExecuteAsync`时，应确保不会占用长期主线程。\n3. 创建一个视图模型类，继承并实现`ViewModelBase`，用于页面的模型。大多数工具可以分为初始化和执行两步，这类工具可以继承并实现`TwoStepViewModelBase`。\n4. 创建一个视图类，继承`PanelBase`，用于页面的模型。大多数工具可以分为初始化和执行两步，这类工具可以继承`TwoStepViewModelBase`。\n5. 在实现`IModuleInfo`的类中更新工具相关信息\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff-shake%2Farchivemaster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ff-shake%2Farchivemaster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff-shake%2Farchivemaster/lists"}