Skip to content

Releases: ziyouzhiyi666888/PE_SmartFixer

长期记忆与多阶段自适应风险熔断版 1.1

Choose a tag to compare

@ziyouzhiyi666888 ziyouzhiyi666888 released this 08 Oct 11:25

🧠 v1.1 — 长期记忆与多阶段自适应风险熔断版

核心升级:从"一次性修复工具"进化为带记忆的自适应修复系统。
全部新增代码仅依赖 Go 标准库,零第三方依赖,编译体积基本不变(amd64 4.93 MB)


🆕 新增:硬盘黑匣子长期记忆

  • 每轮修复落地后在目标盘写入 X:\Windows\pe_fix_memory.json:
    {"last_repair_time":"YYYY-MM-DD HH:MM:SS","diagnose_count":X,"last_action":"REG|a;REG|b"}
  • 原子写入(先写 .tmp 再改名,断电不会产生半截文件)
  • 多机隔离:记录随目标硬盘走,不污染 PE 自身与其他机器
  • BOM 容忍:记事本编辑过也不会被误判损坏
  • 精确去重:按分号逐条比对,修复了子串误判会漏记工单的隐患

🚨 新增:多阶段自适应风险熔断

  • 24 小时主动防御:超时判定上轮已修复成功 → 自动销毁记忆、回归初诊
  • 3 次连续失败本地硬熔断:24h 内 diagnose_count >= 3 → 本地直接拦截,完全不发起网络请求(省 Token),主界面血红色高危提示并锁定"开始诊断"
  • 时钟错乱保守处理:主板电池失效导致时间跳到未来时,按未过期处理,绝不放行

🔄 新增:非对称事务前置回滚

  • 启动阶段自动解析历史 REG|服务名 工单,自动 reg load → 路径改写 → reg import → reg unload,把上次改错的启动键值复原
  • ⚠️ 修正了原方案的关键缺陷:备份 .reg 内是在线路径 HKLM\SYSTEM\...,直接导入只会改到 PE 自身的注册表;本版通过挂载点路径改写(SYSTEM → SysTemp)才真正落盘目标系统。改写失败则中止回滚,绝不静默写错注册表
  • 非阻塞设计:回滚结果并入主界面提示,不用模态弹窗阻塞启动

🧠 新增:内存级负向强约束提示词

  • 绝不改写静态 config.json,运行时动态判定历史失败工单
  • 在 systemPrompt 末尾追加"历史重症监护记录",强制 AI 全量封印失败路径、推翻旧假设、更换思维维度

🛡️ 新增:四层安全白名单(防御 AI 给出错误指令)

防线 作用 拦截示例
指令格式校验 REG|服务名(≤2 段)/ FILE|文件名|相对路径(必须 3 段) REG|a|b
服务名白名单 仅允许字母、数字、_、.、- REG|svc&calc(命令注入)
文件名白名单 禁止 \ / : * ? " < > | FILE|a/b.sys|drivers
路径穿越防御 目标必须锁定在 X:\Windows\ 内 FILE|x|..\..\..\Users

解析层 + 执行层双重校验,即使绕过第一层也会在创建目录/写文件前被拦下。


🔧 问题修复

🔴 严重:32 位版在 64 位 Windows 上完全不可用

  • 现象:386 版启动后主窗口不出现,只弹"未识别到系统盘"
  • 根因:WOW64 文件系统重定向 —— 32 位进程访问 C:\Windows\System32 会被透明映射到 C:\Windows\SysWOW64,而 SysWOW64\config\SYSTEM 根本不存在
  • 危害:① 找不到系统盘导致所有修复功能失效;② 修复 System32 下文件会写错到 SysWOW64
  • 修复:启动时调用 Wow64DisableWow64FsRedirection() 关闭重定向

🔧 AI 返回 JSON 含 Windows 路径导致解析失败

  • 现象:解析 AI 药方失败: invalid character 'D' in string escape code
  • 根因:AI 返回 "SYSTEM32\DRIVERS",\D 不是合法 JSON 转义
  • 修复:解析前自动修复非法转义(幂等,\n/\uXXXX 等合法转义不受影响)

🔧 输入框提示文字点击后不消失

  • 标准 Edit 控件不支持 EM_SETCUEBANNER 水印(需 comctl32 v6 manifest)
  • 修复:改为"获得焦点清空 / 失焦且为空时恢复",并修正"提示文字不算用户输入"

🔧 AI 收到空文本误报"没有输入任何内容"

  • 根因:原逻辑先插入状态消息、再读取输入,导致用户输入被挤到后面且被清洗逻辑删除
  • 修复:改为先读输入、再插状态消息;长度改用 GetWindowTextLengthW;清洗逻辑补上未闭合标记过滤

🔧 注册表备份失败仍继续修改(数据安全隐患)

  • 备份 .reg 写入失败时立即中止修改,绝不出现"改坏了却没有备份依据"

✨ 工程增强

  • 备份失败原因中文化:自动识别权限不足/磁盘只读/疑似坏道/盘符未挂载等 9 类,直接给出中文处置建议
  • 全链路超时控制:注册表命令 5 秒、HTTP 10 秒、云端下载前 DNS 预检 1 秒
  • 消除数据竞争:globalAIResult 改用 atomic.Pointer
  • 代码质量:全项目 gofmt 规范化、go vet 零告警、71 个自动化测试(8 个测试文件,纯逻辑函数覆盖率 100%)

📦 本包内容

PE_SmartFixer_amd64.exe   64位主程序(推荐)
PE_SmartFixer_386.exe     32位主程序(已修复 WOW64 缺陷)
config.json               配置文件(需填入你的百炼 API Key)
README.txt                图文使用说明(含 v1.1 熔断机制详解)

SHA256(PE_SmartFixer_Release_v1.1.zip):
649B09BE07BD1BA14260A1B8E0F0D22BF2E1A8FD55A329A242B158F6F3A4EC3E


📋 已知限制

  • CRITICAL 等级由"强制熔断"调整为"人工确认后可执行"(保留高危警告与 AI 建议动作展示)
  • WMP 协议(见 WMP_SPEC_ZH.md)暂无参考实现,本项目未提供 stdin/stdout JSON-RPC 接口与 wmp_manifest.json
  • 恰好 24 小时的历史记录:因进程启动耗时会判定为略超 24h → 回归初诊(阈值语义为 > 24h)
  • 注册表修复必须在 PE 环境执行;正常 Windows 下会提示"挂载注册表失败:客户端没有所需的特权"(预期现象)

🙏 反馈

如发现问题欢迎提交 Issue。特别需要社区协助实测的场景:

  • 真实 PE 环境下的注册表挂载/回滚
  • 不同精简版 PE 的兼容性(尤其 32 位版本)
  • 熔断机制在多台机器间的隔离行为

基于 AI 多模态视觉的 Windows PE 智能维护工具1.0

Choose a tag to compare

@ziyouzhiyi666888 ziyouzhiyi666888 released this 20 Aug 14:09
efcd96b
Update README to remove download links

Removed download links from the README file.