Skip to content

Releases: aEboli/Office-helper

v0.10.3.17 草稿预览与模型能力适配

Choose a tag to compare

@aEboli aEboli released this 27 Sep 17:56

v0.10.3.17 草稿预览与模型能力适配

本版本把 Word/WPS Writer 的生成式写入改为先预览、再确认,并补充模型不支持原生工具调用时的协议回退。

Word 草稿预览

  • 起草、续写和生成式改写先生成侧栏草稿,生成和调整阶段不修改当前文档。
  • 草稿使用受限的语义结构,可预览标题、分级标题、段落、项目符号、编号列表、表格、引用以及加粗/斜体文字。
  • 预览提供沿用文档、简洁、商务和报告四种版式,可继续通过自然语言调整内容与设计。
  • 用户确认插入或替换后,系统重新核对文档身份、Story 和选区,再按现有审批、保护检查和读回规则执行。
  • 丢弃草稿不改文档;结构化写入只有在快照能完整恢复时才提供撤销,不能完整恢复时会明确显示不可撤销。

模型能力适配

  • 自动记录当前连接与模型的工具协议能力,服务商拒绝工具字段时在同一步切换到文本指令协议。
  • 模型回复明确表示不支持工具或函数调用时,也会切换到文本指令协议;普通安全拒绝不会误触发。
  • DeepSeek Flash/V4 Flash 变体在自动模式下首轮直接使用文本指令协议,手动选择原生函数调用仍保持优先。
  • 文本协议继续复用原生工具的审批、参数校验、操作卡片和撤销边界。

安装与验证

Windows 用户下载 ChatSheet-v0.10.3.17-win.zip 和同名 .sha256 文件,先校验 SHA-256,再解压运行 install.bat。覆盖升级前请保存工作并完全退出 Excel、Word 和 WPS。

本次发布已完成:

  • dotnet build ChatSheet.sln --configuration Release --nologo:通过,0 个警告,0 个错误。
  • openspec validate model-capability-fallback --strict --no-interactive 与 openspec validate word-draft-design-preview --strict --no-interactive:通过。
  • 网页回归 37/37、Word 工具回归 66/66、Excel/工具完整回归 783/783、可靠性回归 26/26:通过。
  • git diff --check、中文 UTF-8 替换字符检查、发布包内清单和 ZIP sidecar 哈希校验:通过。

本次未重复执行 Microsoft Word/WPS Writer 桌面宿主 COM 冒烟;宿主级行为仍以目标机器上的诊断和小范围手工验收为准。

v0.10.3.16 Word 写入与格式规范

Choose a tag to compare

@aEboli aEboli released this 26 Sep 17:56

v0.10.3.16 Word 写入与格式规范

本版本完善 Word/WPS Writer 的文档起草、选区改写和格式处理,并更新 Office-helper 仓库与 Windows 发布文档。

Word 文档写入

  • 起草内容写入当前插入光标;明确选区改写时替换该范围。非空选区、Story 或段落目标不明确时先询问,避免误改全文或其他文档区域。
  • Word 发送请求会等待整轮文档操作结束,面板在操作完成前保持繁忙状态,并显示完成或停止结果。
  • 写入后读取文档结果进行核对。段落格式工具支持按字符数设置首行缩进,并读回检查实际值;只有能创建可靠快照时才提供撤销。
  • 审批模式可在设置中选择全自动、逐项审批或每轮审批;结构性修改仍按工具风险单独处理。

按点名格式排版

格式约定只在用户明确指定文种、版式或标准后触发。仅凭中文或英文内容不能推断版式;原文档结构会保留,格式变体不明确时先澄清。

  • 中文一般书信可按常见惯例将称呼顶格、正文首行缩进两字,并把祝颂语、署名和日期放在文末;落款通常靠右。一般书信通常不另加居中标题。这是惯例,不是统一强制标准。
  • 英文商务信函 full block 通常各部分左对齐,正文不缩进并以空行分段;modified block 会把日期及结尾敬语、署名移到页面中部附近,正文仍左对齐且不缩进。
  • 中英文称呼与开场遵循各自语境。中文“您好”“冒昧打扰”等表达不逐词翻译成英文;具体标点和机构要求以用户点名的地区、组织或标准为准。
  • 只格式化本轮新增或用户明确指定的段落。标题居中、二级标题/标签位置和落款对齐等细节仅在被点名格式要求时应用,不凭语言或文风自行补加。

安装与验证

Windows 用户下载 ChatSheet-v0.10.3.16-win.zip 和同名 .sha256 文件,先校验 SHA-256,再解压运行 install.bat。安装器会更新 Excel/WPS 表格与 Word/WPS Writer 加载项;覆盖安装前请保存工作并退出 Office/WPS 宿主。

本版本发行验证包含 Release 构建、Word 工具和格式回归、Web 测试、OpenSpec 严格校验、包内 SHA-256 清单与 ZIP sidecar 校验。Microsoft Word/WPS Writer 的桌面加载仍需在目标宿主版本中确认;发行包不承诺所有宿主功能完全一致。

本机 Microsoft Word 与 WPS Writer 的 COM 文档工具冒烟测试均通过,覆盖文档读取、选区替换并读回、快照撤销、光标插入及撤销。加载项功能区仍需重启宿主后在实际 UI 中确认。

参考资料

v0.10.3.15 Office-helper Word support

Choose a tag to compare

@aEboli aEboli released this 25 Sep 22:37

v0.10.3.15 Office-helper 文档支持与代理页面

  • Excel/WPS 表格与 Microsoft Word/WPS Writer 入口统一显示为 Office-helper;保留既有 ChatSheet Excel ProgID、CLSID 和设置目录,兼容已有安装。
  • 新增独立 Word 加载项,支持读取文档结构与明确目标,并对文本、段落、表格等提供文档工具。修改后回读结果;只有能建立可靠快照时才提供撤销。
  • 安装器同时注册表格和文档加载项,处理 Word/WPS Writer 的宿主登记、WPS 白名单与禁用项;Windows ZIP 包含 Word 加载项程序集。
  • 新增独立“代理”页面,位于应用栏“设置”之后、主题切换之前。支持直连、系统代理、HTTP、HTTPS、SOCKS5、多套配置、连接测试和失败后切换。
  • 代理用户名和密码按配置保存;密码通过 Windows DPAPI 保护。模型目录、测试请求和后续对话使用当前代理配置。
  • Word 面板复用现有模型与 WorkBuddy 接入,并保留 Word 文档目标、审批和工具边界。

验证与边界

Release 构建通过(0 警告、0 错误);网页回归 37/37、Word 工具测试 49/49、WorkBuddy 测试与可靠性回归通过。Windows ZIP 的 SHA-256 与 sidecar 一致,包内包含 Word 加载项和 Web 面板入口。

本次发布没有执行新的 Microsoft Word/WPS Writer 桌面宿主加载冒烟。两种宿主的可用成员仍取决于安装版本;未能可靠验证或撤销的操作会返回具体状态,不承诺所有宿主功能完全一致。

ChatSheet v0.10.3.14

Choose a tag to compare

@aEboli aEboli released this 20 Sep 17:56

v0.10.3.14 表格工具开放

  • 默认自动执行表格修改,仍可主动切换逐项或每轮审批。
  • 工具步数默认 0,表示持续执行直到完成或停止;连续八次相同失败会停止无进展重试。
  • 解除原有 5000 格操作拒绝。读取每页 5000 格,通过 next_offset 连续获取;写入自动分块并返回部分失败进度。撤销快照预算独立,不以没有快照阻断修改。
  • 新增 excel_object,支持当前工作簿对象的属性读取、设置和方法调用。行列、筛选、边框、条件格式、验证规则、命名区域、图表、透视表、冻结及页面设置无需为每个成员单独注册工具。
  • get_workbook_info 返回宿主版本、对象工具入口与操作类别;具体宿主成员是否支持以实际执行和读回为准。
  • 多区域格式等宿主支持的操作可以通过对象入口执行;原有矩阵工具仍要求连续区域,避免首区域之外的数据被静默遗漏。

验证及边界

Excel 16 和本机 WPS 均使用独立临时工作簿验证。覆盖数据写入读回、筛选、边框、数据验证、条件格式、命名区域、行隐藏、单元格插入、冻结、页面方向、透视表创建和字段设置,以及分页边界与分块中断。

本机 Excel 的 Range.Copy 返回宿主错误,独立 COM 调用也复现;WPS 同场景复制成功。因此不能将本版本描述为所有 Excel/WPS 功能已经逐项验证。工具调用失败会显示具体宿主错误,不伪装成功。

通用对象操作不提供自动撤销;大范围操作能否撤销取决于快照预算。保留工作簿绑定、用户停止、参数合法性和宿主保护状态。通用入口不提供文件系统、应用程序全局、宏或网络访问。

ChatSheet v0.10.3.13

Choose a tag to compare

@aEboli aEboli released this 20 Sep 08:26

ChatSheet v0.10.3.13

这是一次面向 WorkBuddy 国际版模型目录一致性的补丁发布。核心修复是让 ChatSheet 以官方桌面端的产品上下文启动 ACP,从同一个官方来源读取模型,而不是只看到 4 个基础档位。

用户可见改进

  • WorkBuddy 国际版从桌面端启动 ACP 时继承 CODEBUDDY_HOST=workbuddy-desktop。
  • 同时传入 WorkBuddyAI 当前产品快照,桌面端和 ChatSheet 现在共享完整的 cli 模型目录。
  • 0.00x 免费模型、完整倍率、模型名称和能力信息由官方 ACP 返回,ChatSheet 不硬编码模型名单。
  • WPS 直接启动和 WMI 代理启动使用相同的产品上下文,避免两个渠道显示不同模型。
  • 独立 CodeBuddy CLI 继续使用自己的 .codebuddy 配置,不会混入 WorkBuddyAI 桌面目录。
  • README、安装指南和发行包链接统一更新到 v0.10.3.13。

验证结果

  • Release 构建:0 个警告,0 个错误。
  • WorkBuddy 账户/路径回归:全部通过。
  • 国际版实机 ACP:返回 21 个模型,其中 20 个带倍率、3 个为 0.00x。
  • ACP 会话实际接受全部 21 个模型的 session/set_model。
  • OpenSpec 严格校验:通过。
  • 安装包与 Release 构建产物使用相同 SHA-256。

安装

下载 ChatSheet-v0.10.3.13-win.zip 与 .sha256 文件,先核对 ZIP 哈希,再完整解压并运行根目录的 install.bat。升级前请保存并完全退出 Excel/WPS。

ChatSheet v0.10.3.12:完整可靠性审查与 WorkBuddy 登录修复

Choose a tag to compare

@aEboli aEboli released this 20 Sep 05:32

ChatSheet v0.10.3.12

这是一次面向整个项目的可靠性审查版本,重点修复 WorkBuddy 账号生命周期、表格工具边界、异步取消、面板安全和本地存储的一致性问题。

用户可见改进

  • 点击切换账号时不再把 WorkBuddy 官方桌面端或国际版客户端一起注销;登录返回后面板会重新读取登录态和模型,不再停留在旧状态。
  • 登录入口只会拉起需要的窗口,重复初始化和重复探测会被合并;账号管理后的状态刷新有超时、取消和焦点冷却。
  • 停止任务、关闭面板或切换工作簿后,迟到的审批、网络流和 UI 回调都会被丢弃,不会继续写入错误工作簿。
  • WebView2 顶层导航仅允许 https://chatsheet.local/...,外部、file:、data: 和 about:blank 导航会被拦截。

表格与数据安全

  • 工具范围计数改用 long,完整工作表尺寸不再发生整数溢出。
  • 明确拒绝不连续区域,避免只按第一个 Area 执行写入、格式或清除。
  • create_table 和 create_chart 增加范围上限;审批、执行、撤销和恢复绑定原工作簿。
  • 设置、DPAPI 密钥和常用模型名单使用原子写入;模型名单增加跨进程互斥保护,异常中断不会清空旧文件。
  • SSE 处理 BOM、没有末尾换行的事件、取消时的尾帧和网络挂起,取消请求可以及时结束。

验证结果

  • Release 构建:通过,0 个警告,0 个错误。
  • 全量工具回归:765 通过,0 失败。
  • 可靠性回归:26 通过,0 失败。
  • 网页、设置页、Ribbon、WorkBuddy 登录模拟和 WorkBuddy UI 回归:全部通过。
  • 真实 WebView2 面板安全测试和真实 Excel 宿主加载验证:通过。
  • Excel/WPS x86、x64 COM 注册和运行时自检:通过。
  • OpenSpec 严格校验:15 项通过,0 失败。

安装包

Windows 预构建包包含预注册脚本、安装菜单、离线安装说明和包内 SHA-256 清单。下载 ZIP 后请先使用同目录的 .sha256 文件核对整体哈希,再完整解压并运行 install.bat。升级前保存并完全退出 Excel/WPS,安装完成后重启宿主。

完整安装步骤见 Windows 发行包安装指南。

ChatSheet v0.10.0

Choose a tag to compare

@aEboli aEboli released this 09 Sep 08:12

ChatSheet v0.10.0

模型列头的**「测试」点下去先问测到什么程度为止**:找到 1 个能用的就停、找到 2 个能用的就停、全部测试。选中一档才发请求。

此前点它就把整份目录扫完——一个模型一条计费请求,网关动辄返回几十个 ID,于是一次点击就是几十条请求、要等好一阵。而多数时候想知道的只是「有没有一两个能用的」。

发行资产

文件 用途
ChatSheet-v0.10.0-win.zip Windows 预构建安装包;内含加载项、依赖、安装脚本、双击入口、安装说明、发行说明和包内 SHA-256 清单
ChatSheet-v0.10.0-win.zip.sha256 ZIP 整体 SHA-256 校验文件

完整安装、校验、升级和卸载步骤见 Windows 发行包安装说明。

三档范围,每档说清代价

菜单在列头下方展开,三档都写出了两个数字:

  • 上界一律是目录条数(几十个模型就是几十条)。带目标那两档也一样——目录里能用的不足目标数时会全部测完。把上界写成目标数是不诚实的,那会让你按 2 条去估几十条的账。
  • 下界是三档真正不同的地方。 并发是 5,达标那一刻已经发出去的收不回来,所以「找 1 个就停」最少也是 5 条,不是 1 条。省下的量级是 40 → 5~6。

只有「能用」算达标。被限流的记为「未确认」——那是花了钱没拿到答案,不算找到了一个能用的,运行会继续。

达标只停止派发,不取消

已经发出去的请求(最多 4 条)照常跑完并记下判定。钱已经付了,取消它们既拿不回钱也拿不到答案,那几行还会停在灰色再也不更新。

三种结局分得开

跑动中按钮显示「停止 1/2 可用」——分母是目标数。用目录条数当分母的话,一次「找 1 个就停」会显示「停止 3/40」,读起来是「还要跑 37 个」,而它随后就停了,看起来像断了。

跑完之后列表上方留一句,三种情形各有各的说法:

  • 达标:找到几个、发了几条、剩下几个没测;
  • 你按了停止:发了几条,已测出的都保留着;
  • 整份目录都测完了。目标没达成时会明说「只找到 1 个能用的(想找 2 个)」——那时你选的是省钱的档、付的是全款,不说出来界面上看不出这件事。

顺带修的两处

对话进行中点「测试」此前没有任何反应。 加载项在对话进行中会拒绝测试,而那条拒绝只写进日志。现在按钮先禁掉并在悬停里说明原因。

停止之后进度会凭空复活。 中止批量时有几个探测仍在飞,它们迟到的回报会把已经收尾的进度重新置上,列头按钮回到「停止 n/总」——而后端已经没有批量在跑,再点它没有任何效果,关面板也不清。

升级须知

无需改配置,设置、密钥、常用名单与面板宽度都保持原样。覆盖安装前请完全退出 Excel。

打开后在模型选择器里点一下「测试」:应该出现三档,而不是直接开跑。

验证

  • BulkTestTests 新增四组:达标后实发恰好等于并发数、已派发的都拿到判定、闸门到整批结束才放开、限流不算达标(跑到底)、目标达不到时跑满全程且不谎报、目标为 0 与负数都全量。判据是服务端服务了几个连接——回调次数说明不了有没有省钱,而省钱是这个功能的全部理由。
  • model-test-all.test.mjs 60 → 81 条:原先「点一下就发请求」那一整段改写成「开菜单、选一档」,新增三档的上界/下界/提前结束条件、分母是目标数、三种结局各自的说法、迟到推送不复活、对话在飞时禁用并说明。
  • PaneHarness --picker:菜单三档都在浮层裁剪框内、各有真实高度、至少露两档、装不下时可滚、展开后列表仍有可用高度、列头仍不溢出、两套主题各用自己的背景色。跑了 300×560、360×340、420×760、480×760 四种尺寸。
  • 变异九次(C# 三次、面板四次、CSS 两次)。其中三次初次不红,暴露出断言太松、时序太齐、以及读到了输出目录里的旧副本,都已修正。
  • 全套:ToolTests 717、网页 964、--picker / --motion / --shake / --theme 全绿,dotnet build -c Release 0 警告 0 错误。

未验证

未做目视确认。 环境读不了图片,菜单三档的字号、间距与那句结局说明读起来顺不顺只有人眼能判断;上面的尺寸都是按几何关系定的,不是看出来的。

真机上「找 1 个就停」的实际耗时与省下的条数也没在真实网关上跑过——测试用的是进程内的 HTTP 服务。

ChatSheet v0.9.1 功能区选项卡回来了

Choose a tag to compare

@aEboli aEboli released this 08 Sep 08:07

ChatSheet v0.9.1

v0.9.0 装上之后 ChatSheet 选项卡整块消失。 这是个补丁。覆盖安装后请完全退出再打开 Excel,选项卡应重新出现,四个按钮都在。

发行资产

文件 用途
ChatSheet-v0.9.1-win.zip Windows 预构建安装包
ChatSheet-v0.9.1-win.zip.sha256 ZIP 整体 SHA-256 校验文件

完整安装步骤见 Windows 发行包安装说明。

选项卡为什么会消失

撤销按钮同时写了静态的 label="撤销" 和动态的 getLabel="OnGetRibbonUndoLabel"。这两个在 Office CustomUI 里互斥。校验失败时 Excel 不报任何错:把整份功能区 XML 丢掉,选项卡连同设置、诊断、适配、撤销一起不见。唯一能看见的痕迹是日志里少了「功能区已加载」那一行——GetCustomUI 被调用了,OnRibbonLoad 却没有。

v0.9.0 的加载项本身是装上的(DLL 在、LoadBehavior=3、没有进禁用黑名单),坏的只是这份 XML。

改动

去掉静态 label,文字一律由 getLabel 给。没有可撤的操作时仍显示「撤销」(灰的),重叠时改叫「仍然撤销」。

静态测试加了一条:任何控件不得同时写静态属性与对应的 get 回调。把 label 加回去会失败 1 条。这是唯一能在编译期拦住这件事的办法——Office 自己校验失败时一声不吭。

升级须知

无需改配置。覆盖安装前请完全退出 Excel。打开后请到 ChatSheet 选项卡确认四个按钮都在。

验证

  • ribbon-fit-shortcut.test.mjs 54 条,新增互斥断言;变异(把 label 加回去)挂 1 条。
  • dotnet build -c Release 0 警告。

ChatSheet v0.9.0 功能区点一下就能排好当前表

Choose a tag to compare

@aEboli aEboli released this 08 Sep 07:35

ChatSheet v0.9.0

ChatSheet 功能区多了一段快捷区:点「适配当前表」直接排好眼前这张表,不必打开面板;旁边的「撤销」只撤你在功能区点出来的改动。设置、诊断、适配、撤销四个按钮都有独立图标和悬停说明。

此前「适配」只能从右侧面板底部找。只想整理当前工作表时,必须先打开面板再找按钮;点完还要把面板关回去。功能区已经有「设置」和「诊断」,却没有图标,三个大按钮扫过去分不出彼此。

发行资产

文件 用途
ChatSheet-v0.9.0-win.zip Windows 预构建安装包;内含加载项、依赖、安装脚本、双击入口、安装说明、发行说明和包内 SHA-256 清单
ChatSheet-v0.9.0-win.zip.sha256 ZIP 整体 SHA-256 校验文件

完整安装、校验、升级和卸载步骤见 Windows 发行包安装说明。

功能区点一下就能排好当前表

「适配当前表」跟在「设置」「诊断」后面,中间有一条分隔,标明此后是快捷功能区。点下去:

  • 不打开面板,不切页,不弹对话框;
  • 按面板记住的水平对齐(默认居中)整理已用范围,并自动调整行高列宽;
  • 表就在眼前,排没排好一眼能看见。

面板里原来的适配按钮还在,对齐方式仍从那里换。功能区走的是同一条链路:同一张操作卡片、同一条撤销记录。之后打开面板,对话流里能看到这次适配,带来源标记。

冷启动时页面还没加载完,这次点击会排队,最多等 10 秒;超时放弃并记日志,不会留到下次导航时突然排一次表。

旁边的撤销只撤功能区点过的

COM 写入会清空 Excel 自己的撤销栈,Ctrl+Z 拿不回来。快捷区的意义是不打开面板,撤销却要打开面板找卡片,那前一半就白省了。

所以功能区末尾加了一个「撤销」:

  • 只撤你在功能区点出来的操作,面板里点的、模型改的都不碰——那两类在对话流里各有卡片和审批记录;
  • 没有可撤的操作时按钮是灰的;
  • 这次撤销会盖掉之后某次尚未撤销的改动时,第一次不执行,按钮改叫「仍然撤销」,再点一次才撤——静默盖掉别人的改动是不行的。

底层仍是面板卡片上的同一个撤销按钮,不另写一套还原。

四个按钮都有图标和悬停说明

设置是齿轮,诊断是脉搏线,适配是四角撑开,撤销是朝左的弯箭头。与面板 Logo 同一近黑线条。每个按钮一个独立的图标回调:读错一个名字不会把四个按钮一起变成空白。

悬停能读到各自在做什么。撤销按钮的说明会写出即将撤掉哪一步;没有可撤的操作时说明为什么是灰的。

升级须知

无需改配置,设置、密钥、常用名单与面板宽度都保持原样。覆盖安装前请完全退出 Excel。

打开 Excel 后请到 ChatSheet 选项卡看一眼:设置 / 诊断 / 适配当前表 / 撤销 四个按钮都应有图标。「适配当前表」点下去面板不应弹出来。

验证

  • 面板单测:既有套件全绿;新增 ribbon-icons.test.mjs 29 条(像素:有内容、形状可辨、墨色正确、撤销箭头朝左)、ribbon-fit-shortcut.test.mjs 53 条(顺序、独立图标回调、静默、有界重试、撤销只认功能区标记)、ribbon-undo.test.mjs 31 条(面板点的不计入、撤销点中功能区那张卡、重叠要二次确认、正忙不重复投递)。
  • 图标断言变异:诊断图标换成全透明挂 4 条;齿轮换成实心圆饼挂 2 条。
  • dotnet build -c Release:0 警告 0 错误。
  • 目视:设置 / 诊断 / 适配三枚图标已在本机 Excel 功能区确认可辨认。

未验证

功能区撤销按钮的真机点击、以及「适配当前表」在本机 Excel 上的静默路径,开发过程中未用脚本跑通端到端(安装目录曾被覆盖,但撤销按钮是之后才加上的)。请覆盖安装后按「升级须知」目视确认。

ChatSheet v0.8.1

Choose a tag to compare

@aEboli aEboli released this 05 Sep 06:42

ChatSheet v0.8.1

批量探测模型时,探完一个那一行就当场变绿或变红,而正在探的那几行都有扫光。

这是个补丁版。v0.7.0 做过一遍「点了之后有没有反应」,v0.7.1 给批量测试补上扫光,
但批量探测这件事本身还剩两个缺口:名单批量确认从来没有边跑边上色,而扫光落错了行。

发行资产

文件 用途
ChatSheet-v0.8.1-win.zip Windows 预构建安装包;内含加载项、依赖、安装脚本、双击入口、安装说明、发行说明和包内 SHA-256 清单
ChatSheet-v0.8.1-win.zip.sha256 ZIP 整体 SHA-256 校验文件

完整安装、校验、升级和卸载步骤见 Windows 发行包安装说明。

名单批量确认从来没有边跑边上色

列头「确认」跑的是名单里的模型,一个一个来。此前它每个模型只推一条进度,而且推在
探测之前——那条消息里没有判定,因为判定还没出来。探完之后什么都不推。

于是整批跑完之前,一行都不会变色。颜色要等整批结束时由回复一次性补上,而名单十几个
模型就是十几次往返。中途整列都是「未确认」,看起来就是点了没反应。

列头另一个按钮「测试」(跑整份目录)一直是每探完一个就带着判定推一次的。所以这不是
设计取舍,是这条路漏了。现在补齐:探完就推,服务端点名说没这个模型的那种失败也算
一条判定,照样推。

扫光此前永远落在一行已经上了色的行上

「测试」并发 5,同一时刻在飞的是五个模型。而面板只用一个字段记「正在测哪一个」,
那个字段只能由推送来填,推送又只在探完之后发——所以它装的永远是刚探完的那一个。

结果是扫光落在一行刚刚变绿或变红的行上:已经有结论了却还挂着「正在测」的高光,
而真正在飞的五个一个都没标。两个互相矛盾的标记压在同一行,读不出这一行到底测完了没有。

现在探测层多了一个「开始探」的回调,在模型真的拿到并发槽位之后才响——不能提前到入队时,
排在后面等槽位的还没开始发请求,提前标上等于说假话。面板据此把「正在探」从一个字段
改成一个集合,并发 5 就是 5 行同时扫。

用户中途点停止时,已经在飞的那几个不会再收到「探完」的消息,因此清空进度时把集合一并
清掉——否则批量早停了,列表里还有几行一直扫下去。

限流不再把测出来的结论抹成灰

这一条没在报告里,是修上面两条时发现的两侧不一致。

加载项侧记判定时遇「未确认」直接跳过——限流一类是花了钱没拿到答案,不是证据,不该抹掉
上一次的结论。面板侧却照写。后果看得见:上次测出能用的模型这次被限流,行上的绿当场消失,
而整批结束时权威快照仍说「能用」,绿又回来。

一行在批量途中掉了色又找回来,比从头到尾不变色更难读。面板侧现在与加载项侧同一条规则。

颜色规则一行没改

v0.6.0 起「能用」显绿、「不可用」显红的规则、两套主题各自的调色板变量,都已经在位。
这一版缺的从来不是颜色,是把行送进那两条规则的那一步。所以升级后看到的绿和红,与
逐个点「试一下」时看到的是同一对颜色。

升级须知

无需改配置,设置、密钥、常用名单与面板宽度都保持原样。覆盖安装前请完全退出 Excel。

验证

  • 面板单测 810 条(新增 model-probe.test.mjs 的「批量确认边跑边上色」一节、
    model-test-all.test.mjs 的「并发在飞的那几行都被标出来」一节、model-favorites.test.mjs
    锁住「未确认」不覆盖已有判定)。
  • 变异验证:五处修复各故意改坏一次,分别红 3 / 1 / 2 / 4 / 1 条。第一版的批量确认
    测试是假绿——复用了前一节已经探出结论的模型,删掉修复照样通过;改成在一个从未确认过
    任何模型的连接上跑。
  • ChatSheet.ToolTests 702 条:新增一条起真实 HTTP 服务跑真实批量探测的用例,
    盯住「同时在飞的峰值等于并发数而不是模型总数」。onStart 提前回调不报错、不变慢,
    只会把标记变成噪音,只有这条拦得住。
  • PaneHarness --picker 76 条(真实 WebView2,走真实推送路径,读 getComputedStyle
    的实际值):判不可用的名字与状态点都是 rgb(242, 139, 130)、判未确认是
    rgb(230, 232, 234) 且行上没有结论 class、红之后再推「未确认」红不退、两行同时在飞
    各挂一个运行中的 ::after 动画、探完的那行收掉而另一行仍在扫、批量结束后全收掉。
  • --motion / --theme 全绿。装好后安装目录下的 web 资产与源码逐字节相同。

未验证

未做目视确认。 开发环境读不了图片,五行同时扫是否显得吵、绿与红在实际列表里是否一眼
分得开,只有人眼能判断。参数与颜色都沿用既有调色板,没有新增视觉常量。