文档与源码一致性审计¶
2026-10-08 按《文档与源码一致性审计规范》执行:以源码为真相核对全部文档面, 三类差异(①文档超前于码 / ②码超前于文档 / ③描述不符)逐条给出
file:line证据。 修法仅动文档,不改代码(禁反向改码)。后续新增功能须回写本文档对应行。
1. 审计范围与方法¶
文档面共 14 个:README.md、docs/{index,mission,mission-excerpt,mvp-issues,positioning,solution-structure,troubleshooting,configuration,master-plan,acceptance-checklist}.md、docs/acceptance-{B705-L0-behavior,B803-e2e-walkthrough}.md、docs/rfc/RFC-001-technical-design.md,另核对 mkdocs.yml 导航。(2026-10-11 增量复核起,configuration.md、master-plan.md、acceptance-checklist.md 三页纳入范围;F-01~34 基线审计时它们尚未存在或未被纳入。)
方法:抽可验证技术主张逐条对码取证(组件类型字符串、接口签名、配置键、文件名、包引用、窗口形态、刷新周期);空 grep 结论先验证路径存在(如 ls src/)再判「不存在」。mission-excerpt.md(原始方案存档)与两份 acceptance(带日期的验收记录)按历史文献处理,只核对其中仍然活着的代码引用。
2. 审计表¶
2.1 P0(会直接导致按文档写出错误配置/错误实现)¶
| ID | 文档页 | 主张 | 源码证据 | 类别 | 严重度 | 修法 |
|---|---|---|---|---|---|---|
| F-01 | RFC §4.2 | widgets.json 示例组件 config 键为 "repository" |
src/Beacon.Connections/GitHubPullRequestsProvider.cs:21 RequireConfig(widget, "repo");GitHubActionsProvider.cs:25-27 读 repo/workflow/branch |
③不符 | P0 | 示例键改 repo |
| F-02 | RFC §4.2 | pins.json 为平铺结构(monitor/anchor 直接在 tile 上),anchor 取值 bottom-right |
src/Beacon.Core/Models/AppConfig.cs:40-48 PinTile{WidgetId, Layout} 嵌套;PinLayout.cs:14-32(含 FloatingX/Y);src/Beacon.Core/Json/BeaconJson.cs:31 枚举 camelCase 序列化(实为 bottomRight) |
③不符 | P0 | 示例改嵌套 layout{...},anchor 改 bottomRight,补 floatingX/floatingY |
2.2 ① 文档超前于码(文档已写、代码未实现)¶
| ID | 文档页 | 主张 | 源码证据 | 严重度 | 修法 |
|---|---|---|---|---|---|
| F-03 | RFC §9.1 | 存储含 notifications.json(近期通知+已读,滚动 200 条落盘) |
src/Beacon.Storage/JsonConfigurationStore.cs:39-42 仅管 config/connections/widgets/pins 四文件;src 全域 notifications.json 零命中;通知中心为会话内视图 |
P1 | 标「未实现落盘(会话内)」 |
| F-04 | mission.md | 配置目录含 workflows.json |
src 零命中;Workflow 引擎任务书自列「MVP 不做」 | P1 | 注明未实现 |
| F-05 | positioning.md §3 | Generic HTTP Provider = YAML provider DSL(mapping + actions.retry) |
实际落地为 JSON 配置的 http.status(src/Beacon.Connections/HttpStatusProvider.cs:10,点路径+词表映射);无 YAML 解析、无 per-provider actions |
P1 | 改口径为已落地 http.status;DSL/actions 标「计划中」 |
| F-06 | positioning.md §4 | UsageMetric 模型(name/current/limit/window/…) |
src 全域 UsageMetric 零命中;实际由 WidgetState 承载 |
P2 | 标「概念设计,未落地独立类型」 |
| F-07 | solution-structure §3.3 | WebhookAction.cs(webhook POST + secret 签名) |
已实现(2026-10-09,3760f57):src/Beacon.Actions/WebhookExecutor.cs——HMAC-SHA256 签名头 + credentialRef 密钥 fail closed;目录树已改 5 文件 |
P1 | 已收口 |
| F-08 | solution-structure §3.4 | CredentialManagerSecretStore.cs(备选实现画入目录树) |
src/Beacon.Storage/ 仅 5 文件,无此文件 |
P2 | 移出目录树,注释保留备选说明 |
2.3 ② 码超前于文档(代码已实现、文档未记或口径相反)¶
| ID | 文档页 | 主张 | 源码证据 | 严重度 | 修法 |
|---|---|---|---|---|---|
| F-09 | RFC §6.2.3/§6.2.4/§10 | 「每显示器一个宿主窗口」「不做每个 pinned widget 一个 HWND」 | 独立悬浮框形态已落地:src/Beacon.App/App.xaml.cs:157-169 按 PinDisplayMode 分支;src/Beacon.App/Windows/FloatingTileWindow.cs:14-19 每钉选组件一窗;src/Beacon.Core/Models/AppConfig.cs PinDisplayMode(panel 默认/floating) |
P1 | RFC 补两形态口径(panel 默认单宿主 / floating 每组件一窗) |
| F-10 | RFC §7.1 | Machine 5–30s「二期」、Agent 5–15s「二期」 | src/Beacon.Core/Models/RefreshTiers.cs:28-29 两级已实现(15s / 10s) |
P2 | 备注改「已实现」 |
| F-11 | solution-structure §1/§3.2 | Connections = GitHub/ + Rest/ 两个子目录(GitHub / Rest) | 实际平铺 16 文件,无子目录;含 GitHub 6 文件 + HTTP 3 文件 + BigModel/Claude/DeepSeek/Kimi 各 2 文件(ls src/Beacon.Connections/) |
P1 | 重画目录树为真实结构 |
| F-12 | mvp-issues B-701 | L0 仅「单窗口多 tile 宿主」一形态 | 独立悬浮框扩展已落地(FloatingTileWindow.cs;commit 0182b57);positioning §8 已记,issue 未回写 |
P2 | B-701 补扩展记录 |
2.4 ③ 描述不符(两边都有但口径不一致)¶
| ID | 文档页 | 主张 | 源码证据 | 严重度 | 修法 |
|---|---|---|---|---|---|
| F-13 | RFC §1 | 平台 Windows 10 1903+ | src/Beacon.App/Beacon.App.csproj TargetPlatformMinVersion=10.0.17763.0(1809);README「1809+」 |
P1 | RFC 改 1809+ |
| F-14 | RFC §10 | System Tray 用 H.NotifyIcon.WinUI(备选 Win32 自封装) | src/Beacon.App/Services/TrayIconService.cs:9 「Win32 Shell_NotifyIcon 自实现,不引第三方托盘库」 |
P1 | 改自实现口径 |
| F-15 | RFC §10 | Toast 用 CommunityToolkit Notifications(AUMID 快捷方式手动注册) | Directory.Packages.props Microsoft.Toolkit.Uwp.Notifications 7.1.3;ToastNotificationService.cs:4,12-13 ToastNotificationManagerCompat 首发自动创建/修复快捷方式 |
P2 | 改包名与 AUMID 自愈口径 |
| F-16 | RFC §5 | 接口签名:Task<ConnectionHealth> TestAsync(c, ct)、Task<WidgetState> GetStateAsync(w, conn, ct)、ISecretStore.GetAsync → Task<string>、连接类型注释含 "rest" |
src/Beacon.Core/Abstractions/IConnectionProvider.cs:16,25(ConnectionHealthState、多 ConnectionConfig 参数、WidgetState?);ISecretStore.cs:7(string?);实际连接类型 github/http/bigmodel/claude/kimi/deepseek |
P2 | 摘要块对齐实际签名 |
| F-17 | RFC §8 | 通知规则示例为 when{...}/then{...}/dockColor 嵌套,cooldown PT10M |
src/Beacon.Core/Models/NotificationModels.cs:4-16 实为扁平:id/widgetType/widgetId/severityAtLeast/severityAtMost/toast/sound/cooldown(TimeSpan);无 dockColor 字段;BeaconJson 无 TimeSpan 自定义转换器(非 PT10M 格式) |
P1 | 示例改实际扁平结构与字段名 |
| F-18 | RFC §9.1 | cache\{connId}\*.json |
src/Beacon.Storage/JsonCacheStore.cs:76 固定 states.json |
P2 | 改具体文件名 |
| F-19 | RFC §4.3 | WidgetState 字段清单缺 widgetType/connectionId |
src/Beacon.Core/Models/WidgetState.cs:7-8 |
P2 | 补两字段 |
| F-20 | index.md | 「35 个 MVP Issue」 | grep -c '^### ' docs/mvp-issues.md = 43;README 亦写 43 |
P1 | 35→43 |
| F-21 | index.md | 路线 M4 🔨、M5 ⬜ | README 路线:M4 ✅、M5 🔨(代码级完成,余 B-803/B-804 真机验收) | P1 | 对齐 README |
| F-22 | index.md / mkdocs.yml | 文档导航缺 positioning / troubleshooting / acceptance 两篇 | mkdocs.yml:32-40 nav 已含 positioning/troubleshooting,缺 acceptance 与审计文档;index.md 导航表同样缺 |
P2 | 两处导航补全 |
| F-23 | mvp-issues B-101 | 「H.NotifyIcon 托盘图标」「二次启动唤起既有实例」 | TrayIconService.cs:9 Win32 自实现;App.xaml.cs:101-109 二次启动实际为既有实例弹气泡提示(非唤出面板) |
P1 | 改实现口径 |
| F-24 | mvp-issues B-804 | 「self-contained 单 exe 发布(win-x64)」 | 实际发布形态:Inno Setup x86_64 setup.exe + 便携 zip(packaging/beacon.iss:20;README 下载节) |
P1 | 改发布口径 |
| F-25 | solution-structure §3.5 | App 含 Controls/、ViewModels/、Notifications/ToastService.cs、Themes/;四个 Window 均带 .xaml |
目录不存在(ls src/Beacon.App/);实际仅 CapsuleWindow.xaml/QuickPanelWindow.xaml 两个 xaml,其余纯代码;Toast 在 Services/ToastNotificationService.cs;缺 Infrastructure/(MonitorService/NativeMethods/Win32MessageWindow)与 Services/ToastNotificationService、TopmostGuard、FileLoggerProvider、CrashLog、BeaconRuntime、ShellStateStore、UiDispatcher、HotkeyService、StartupService、MotionEngine、UiPalette、SingleInstanceGuard 及 Windows/FloatingTileWindow.cs |
P1 | 重画目录树为真实结构 |
| F-26 | solution-structure §3.1 | Core 含 Time/IClock.cs;Models 含 ActionConfig/ActionResult/NotificationRecord/NotificationRule 独立文件 |
IClock 实在 Abstractions/(8 文件含 INotificationSink);无 Time/;Models 12 文件为 ActionModels.cs/NotificationModels.cs 合并命名 + ConnectionHealthState/RefreshTiers;另有 Events/Events.cs、Json/BeaconJson.cs;Services 9 文件含 PaletteResolver/PinLayoutMath/TemplateRenderer/WidgetHost |
P1 | 重画目录树 |
| F-27 | solution-structure §4 | NuGet 表列 CommunityToolkit.WinUI.*(控件/动画) |
Directory.Packages.props 零命中,未引用 |
P1 | 删该行 |
| F-28 | solution-structure §4/§6 | 「UI = MVVM(CommunityToolkit.Mvvm),View 不写业务;状态一律来自 ViewModel 订阅」 | src/tests 全域 ObservableObject/RelayCommand 零命中;包在 Beacon.App.csproj:33 引用但未使用;实际代码建 UI + code-behind |
P1 | 改实际形态口径 |
| F-29 | solution-structure §6 | 配置 JSON 用 System.Text.Json + source-gen converter | src/Beacon.Core/Json/BeaconJson.cs 为手工 JsonSerializerOptions+converter;全域无 JsonSerializerContext |
P2 | 去 source-gen 表述 |
| F-30 | solution-structure §2 | Core「只引用 BCL/扩展/MVVM 工具库」 | src/Beacon.Core/Beacon.Core.csproj 仅 Microsoft.Extensions.Logging.Abstractions |
P2 | 改准确表述 |
| F-31 | solution-structure 头部 | 「当前仓库工作环境为 Linux——本阶段只产出文档,不建工程」 | 工程已建成:5 src 项目 + 4 测试项目、285 测试、M1-M4 已交付 | P1 | 删过时说明,改现状 |
| F-32 | positioning.md §6 | 「Usage / Machine Provider、Generic HTTP——新增,M5 收口后并入」 | positioning §8 已记录 Generic HTTP/BigModel/Claude/Kimi/DeepSeek 落地(同文档内部自相矛盾) | P2 | §6 行改「Status/Usage 已落地,Machine 未实现」 |
| F-33 | RFC §6.2.3 | 拖动「吸附到四边与相邻 tile」 | src/Beacon.App/Windows/PinnedHostWindow.cs:219 仅 SnapDips 四边吸附;无相邻 tile 吸附逻辑 |
P2 | 删「相邻 tile」表述 |
| F-34 | RFC §3 架构图 | 「MVVM / Event Bus」「Connections: GitHub / Rest」「Actions: Http/Command/Url/Webhook」 | MVVM 全域零使用(同 F-28);实际六类连接无 Rest(同 F-11);Actions 无 Webhook(同 F-07,2026-10-09 已收口);L1 胶囊另在 §6.1/§6.3 被写成「宿主窗口内的 tile」,实际为独立 CapsuleWindow(src/Beacon.App/Windows/CapsuleWindow.cs:18) |
P1 | 架构图与 §6.1/§6.3 一并改实际口径 |
3. 结论与 P0 清单¶
- ① 文档超前于码:6 条(F-03~08);② 码超前于文档:4 条(F-09~12);③ 描述不符:24 条(F-01/02、F-13~34)。合计 34 条。
- 核对为一致、无需修改的主张:README 全部(下载形态/安装路径/热键/自启默认/1809+/codecov/nightly 凌晨发布)、troubleshooting 全部(日志文件名/崩溃日志/安装路径)、solution-structure §3.6 测试描述(coverlet+Codecov 属实)、RFC §9.2 密钥约束与 §8 默认规则存在性、acceptance 两篇的代码引用。
- P0 清单(2 条):
- F-01:RFC widgets.json 示例键
repository≠ 实际repo——按文档写组件必失败; - F-02:RFC pins.json 平铺示例 ≠ 实际
{widgetId, layout{...}}嵌套 + camelCase 枚举——按文档读写 pins.json 必错。 - 修复原则:以源码为真相只改文档;「文档超前」的条目标注「未实现/计划中」而非删除设计意图;本次未发现需要反向改码的条目。
- 2026-10-10 复核:34 条修法已全部回写对应文档(逐条对码抽验;F-03 因
notifications.json于 2026-10-09 落盘直接按实现记,超出原「标未实现」修法;F-07 同日已收口)。上表 34 条 F 编号与本结论计数已对齐(此前结论漏计 F-32~34,index.md「30 条」一并修正)。
4. 2026-10-11 增量复核¶
背景:
master-plan.md于 2026-10-11 定为设计基线(commit 09a4b9b)后做文档面巡检。 本节 F 编号接续基线表;「修法」列 = 本次实际改动(全部当轮收口)。
| ID | 文档页 | 主张 | 源码证据 | 修法 |
|---|---|---|---|---|
| F-35 | mkdocs.yml nav | 导航缺「配置项参考」(configuration.md 存在且 index/README 均有链接,nav 独缺) |
grep -n configuration mkdocs.yml 仅命中 docs 正文引用 |
nav 于「故障排查」后补一行(已修) |
| F-36 | README.md 配置参考行 | 「12 connection types」 | ConnectionType => 实为 13(github/http/bigmodel/ark/claude/kimi/deepseek/mimo/codex/copilot/opencode/qwen/moonshot);moonshot 于 4c3ecb2 落地 |
12→13(已修) |
| F-37 | index.md 配置项参考行 | 「12 类连接的端点/凭据/额度口径」 | 同 F-36 | 12→13(已修) |
| F-38 | index.md 文档导航表 | 缺 master-plan.md 行(09a4b9b 只补了 README 表与 mkdocs nav,漏了本表) |
表中无该行 | RFC 行后补一行(已修) |
| F-39 | configuration.md | 连接类型表与额度口径表均缺 moonshot 行(13 类只写了 12 类) | MoonshotBalanceProvider.cs:146 "moonshot";端点 api.moonshot.cn/v1/users/me/balance;判级 warn_below(20)/error_below(5) |
两表各补一行(已修) |
| F-40 | solution-structure §1 / §3.2 | §3.2 标「23 文件」且目录树缺 Qwen/Moonshot 两块;§1 总览列 9 家厂商缺 Copilot/OpenCode/百炼/Moonshot;WidgetValueHint 注「九家 payload 键」已不止九家 | ls src/Beacon.Connections/*.cs = 25 文件;QwenUsageProvider.cs、MoonshotBalanceProvider.cs 在树中无条目;WidgetValueHint.cs 另接 copilot/opencode 等 |
§3.2 改 25 文件 + 补两块目录条目;§1 总览补全 13 家;「九家」改「各家」(已修) |
| F-41 | positioning §8 L0 拍板 | 数值类悬浮「默认关(2026-10-08 修正)……开关关=悬浮形态等效面板」 | 2026-10-11 用户令推翻(fac860c 改码 + configuration.md 同步);AppConfig.cs:25 NumericFloatingEnabled = true;positioning.md 当时漏改 |
拍板句改「默认开,2026-10-11 用户令」,删除一次性迁移表述(已修) |
| F-42 | positioning §8 调研结论 | Moonshot 开放平台余额列「暂缓接入——端点已确认,后续按 deepseek 同构接入」 | 已落地(4c3ecb2,2026-10-10):MoonshotBalanceProvider.cs,§8 无该家条目 |
调研结论划线收口;§8 补「第十一家」条目(已修) |
- 本节 8 条全部为「码超前于文档 / 导航缺页 / 拍板漏同步」类,均当轮收口,无遗留。基线 34 条 + 增量 8 条 = 42 条。
- 复核中核实为一致的主张:index/README「43 个 MVP Issue」(
grep -c '^### B-'= 43)、kimi行与 Moonshot 开放平台两套账号的表述(configuration.md:104)、positioning「第九/第十家」序数与落地顺序自洽(OpenCode 第九、千问第十,MiMo/Codex 属前九家)。
2026-10-11 第二增量(solution-structure 数字口径)¶
| ID | 文档页 | 主张 | 源码证据 | 修法 |
|---|---|---|---|---|
| F-43 | solution-structure §3.1/§3.5/§3.6 | Services 树只画 12 文件(实际 17,缺 WidgetTypeNames/QuickPanelSections/DpiLayoutMath/ContrastMath/HighContrastPalette);Windows「7 文件」实际 10(8 .cs+2 .xaml,缺 ThemeColors.cs);Services/ 缺 AppIcon.cs;测试「474 个(C 249/Core 170/Act 27/Sto 28)」 | ls 实际:Core Services 17、Windows 10、App Services 14(含 AppIcon);dotnet test 四项目 = 685(Connections 371 / Core 256 / Actions 27 / Storage 31) |
目录树补 5+1 条目并加计数、Windows 7→10、测试数改 685 且分项对齐(已修) |
- 本条当轮收口;
ls src/Beacon.Core/Models|wc -l= 13、Abstractions 8、Connections 25、Actions 5、Storage 6、App Infrastructure 3/Services 14 与文档一致;.github/workflows/三 yml 属实。累计 42 + 1 = 43 条。
2026-10-11 第三增量(troubleshooting 排障路径)¶
| ID | 文档页 | 主张 | 源码证据 | 修法 |
|---|---|---|---|---|
| F-44 | troubleshooting 版本行 | 「nightly 形如 0.0.20261009+<commit短sha>」 |
daily-build.yml:50 $version = Get-Date -Format "yyyy.M.d";:51 -p:Version=$version "-p:InformationalVersion=$version+$env:GITHUB_SHA";beacon.iss:4 注明 0.0.yyyyMMdd 会触发 CS7034 |
改 2026.10.9+<完整 commit sha> 并注明旧形态废弃原因(已修) |
| F-45 | troubleshooting 组件不出数 跳① | 关键词含 已添加并上板拉取中 |
src 全域零命中;实际只有 SettingsWindow.cs:949 一键示例:组件 {Id} 已创建并钉选(连接 …,端点 …) |
删掉不存在的关键词(已修) |
- 复核为一致:日志路径
%AppData%\Beacon\logs\beacon-YYYYMMDD.log与crash-*.log、跳②组件注册已重建并立即拉取 {N} 个、跳③Widget {id} refreshed ok / refresh failed、tile 首态「加载中…」字面、%LOCALAPPDATA%\Beacon(beacon.issDefaultDirName={localappdata}\Beacon+PrivilegesRequired=lowest)、ChineseSimplified.isl、config 目录config.json/connections.json布局、SHA256SUMS与visual-evidenceartifact 名。累计 43 + 2 = 45 条。
2026-10-11 第四增量(master-plan 未审章节)¶
| ID | 文档页 | 主张 | 源码证据 | 修法 |
|---|---|---|---|---|
| F-46 | master-plan §5.4(§11.1 同项) | Activity/Fingerprint 领域模型(含指纹去重、事件合并),§11.1 把它列为单测覆盖项 |
src 全域 Activity/Fingerprint 零命中;实际为 NotificationRecord(notifications.json + read 态,滚动 200 条)+ NotificationEngine 阈值跨越/时间冷却去重 + RecentEvent(QuickPanelWindow.cs:18 会话内 record,无持久化) |
§5.4 补「落地状态」注记:三段现有机制承载语义,指纹去重/事件合并未实现待排期(已修) |
| F-47 | master-plan §8 | 逻辑文件名 cache.json / history.json |
实际划分不同:config/connections/widgets/pins/actions.json + notifications.json(无 history 对应)+ cache\{connId}\states.json(分目录)+ secrets.bin;方案自身已许「不必强行改名」 |
§8 补「落地状态」注记列实际文件集与 .corrupt 留档机制(已修) |
| F-48 | master-plan §10 | 「关于」含开源许可证、检查更新/项目主页入口;「退出行为」列在通用设置 | SettingsWindow 关于区仅版本行(BuildAboutSection)+ 日志位置提示(:634);许可证与主页入口零命中;退出仅托盘 Exit | §10 补「落地状态」注记:已落地/挂起/未做三类分别标明,退出在托盘不在设置页(已修) |
- 复核为一致:§6.2「必须实现」八项全落地(取消/并发去重/退避/超时/ETag/限额感知/恢复刷新/离线缓存——RefreshScheduler、GitHubApiClient、JsonCacheStore、ff8208a);「初始建议」数字与 §12 性能目标均自我声明非承诺,与 RefreshTiers 七档、未测量口径不冲突;§8 损坏提示(
*.corrupt+LoadErrors)与「无效配置不阻断启动」属实;连接 13 类(GitHub + HTTP 通用 + 11 家 AI 额度)计数核对无误。累计 45 + 3 = 48 条。
2026-10-11 第五增量(positioning 落地清单)¶
| ID | 文档页 | 主张 | 源码证据 | 修法 |
|---|---|---|---|---|
| F-49 | positioning §6 对应表 | Usage Provider 已落地清单止于 opencode.usage(11 项) | QwenUsageProvider.cs(qwen.usage,2026-10-09)、MoonshotBalanceProvider.cs(moonshot.balance,2026-10-10)已落地,清单漏后两家 |
已落地清单补 qwen.usage / moonshot.balance(已修) |
- 复核为一致:§3
http.status/http.quota配置键逐一比对 HttpStatusProvider/HttpQuotaProvider 字段描述符(status_path/summary_path/url_path/success_values/warning_values/error_values、total_path/used_path/remaining_path/reset_path)全部属实;YAML DSL 标注「计划中」与 F-05 修法一致;§4 UsageMetric 状态行与 F-06 一致;§6 Machine Provider「未实现」与冻结记录一致;§7 排期约定与 mission.md 冻结记录互证。累计 48 + 1 = 49 条。
2026-10-11 第六增量(真实抓包驱动的口径修正)¶
| 编号 | 位置 | 文档/代码原主张 | 实况 | 处置 |
|---|---|---|---|---|
| F-50 | configuration.md §各家额度口径 kimi 行、§各类型凭据与端点 kimi 行;positioning §8 kimi 条目 | 数据源「GET usages(社区实现交叉验证)」,响应按顶层 usage+limits[](数字值)描述 | 2026-10-11 用户实抓真实响应:usages[](scope=FEATURE_CODING)+totalQuota+字符串数值,与文档/旧解析假设不符(ReadDouble 只认 Number → 全 null → 显示错) |
解析器双形兼容重写 + HttpEndpoint 加 http_method/http_body(批3-补29),文档改按真实形状并明示 Cookie 凭据模型(粘贴 + DPAPI 回放,不做扫码登录)(已修) |
| F-51 | positioning §8 mimo 条目「官方无额度接口(7 端点全 404)」;MiMoUsageProvider 控制台解析防御键名 | 表述读作「小米无任何额度口」;控制台解析假设 percent 为 0-100/防御键名 | 2026-10-11 用户实抓控制台 tokenPlan/usage 真身:monthUsage/usage 块 + items[],percent 是 0-1 比例(7 端点 404 系推理域 API,控制台域例外);旧解析遇真身返回 null → Degraded | 文档限定「推理域 404」口径 + 控制台档真实形状优先解析 + referer 头(批3-补30)(已修) |
| F-53 | positioning §6 Machine Provider 行「未实现」、README/index/solution-structure/master-plan §10(14 类口径) | 本机资源/网络未落地 | 2026-10-11 用户拍板「本机资源 和本机网络 都可以搞」:machine.net 已落地(IP/↑↓速率/累计流量,零凭据零网络,只读本机不涉冻结的远程 Machines 管理) | 计数 14→15、树补 MachineNetProvider、positioning §6 行改口径、master-plan §10 落地状态(已修) |
| F-52 | mission 冻结记录、master-plan §10 落地状态/§13、README/index/solution-structure(13 类口径) | Jenkins 归「第二阶段/后续可选,挂起等真实地址」 | 2026-10-11 用户拍板:Jenkins 是开源软件,标准 JSON API 任意实例通用,地址只是配置值(非卡点);jenkins.build + jenkins 连接已落地(批3-补31) | 计数 13→14、目录树补 Jenkins、master-plan §10 落地状态与 §13 落地注、mission 冻结记录移出 Jenkins、positioning §6/§8 补条目(已修) |
- 复核为一致:F-50/F-51 修复同步核对 solution-structure §3.2「Kimi 1 文件」「MiMo 1 文件」不变(解析重写均在同文件内)、README「13 connection types」不变(类型未新增)。累计 49 + 4 = 53 条。
2026-10-11 第七增量(machine.git 落地)¶
| 编号 | 位置 | 文档/代码原主张 | 实况 | 处置 |
|---|---|---|---|---|
| F-54 | solution-structure(27 文件/748 测试;MachineNetProvider 树条目误挂「Jenkins 1 文件」组)、configuration.md machine 行(仅 machine.net)、positioning §6/§8(本机仅网络) | Git 仓库状态未落地;目录树分组错位 | 2026-10-11 用户拍板「git 都搞」:machine.git 已落地(每仓库一张卡 ↑↓·改·stash,git CLI 只读零凭据零网络,behind>0 亮黄,前 5 条变更预览进 L3) | 计数 27→28 文件、748→766 测试、树自组「Machine 2 文件」、configuration/positioning 补 machine.git 口径;MiMo 控制台 Cookie 整行粘贴容错同步落地(批3-补34,配置页补「整行也行」)(已修) |
- 复核为一致:machine.git 与 machine.net 同挂 machine 连接(连接类型仍 15 类,README 计数不变);GitWorkspaceProvider 同文件多类与 Jenkins/Machine 先例一致。累计 53 + 1 = 54 条。
2026-10-11 第八增量(Herald 接入)¶
| 编号 | 位置 | 文档/代码原主张 | 实况 | 处置 |
|---|---|---|---|---|
| F-55 | README/index/solution-structure/master-plan(15 类口径)、configuration.md(无 herald 行) | Herald 未接入 | 2026-10-11 用户拍板:herald 连接 + herald.incidents/herald.feed 已落地(事件台账 open 亮黄 critical 亮红;RSS 未读基线,私密 token 走 DPAPI;deliveries 暂缓) | 计数 15→16、29 文件/787 测试、两表加行、positioning §8 条目;顺带修 GitWorkspaceProviderTests Windows 清理只读对象(已修) |
- 复核为一致:herald 属新增连接类型(第 16 类);RFC1123Z 剥星期名解析兼容 globalization-invariant(探针实证)。累计 54 + 1 = 55 条。
2026-10-11 第九增量(machine.local 落地)¶
| 编号 | 位置 | 文档/代码原主张 | 实况 | 处置 |
|---|---|---|---|---|
| F-56 | solution-structure(29 文件/787 测试;Machine 2 文件)、configuration.md machine 行(仅 net/git)、positioning §6/§8(本机仅网络+Git) | 本机资源(CPU/内存/磁盘)未落地 | 批3-补32 拍板回执「本机的cpu 内存 磁盘空间 这个倒是一个低成本的显示」收尾:machine.local 已落地(CPU tick 差分同速率口径;Linux /proc + Windows API 注入抽象;三项阈值默认 90 超线亮黄,按四舍五入显示值比线) | 计数 29→30 文件、787→801 测试、Machine 3 文件、configuration/positioning 补口径;顺带修 index.md 审计条数(23 实为 22,55−34=21+1)(已修) |
- 复核为一致:连接类型仍 16 类(machine.local 复用 machine 连接);Beacon.App 侧注册两处(BeaconRuntime/SettingsWindow 文案)待 windows-latest CI 构建实证。累计 55 + 1 = 56 条。
2026-10-11 第十增量(herald.deliveries 落地)¶
| 编号 | 位置 | 文档/代码原主张 | 实况 | 处置 |
|---|---|---|---|---|
| F-57 | positioning §8(deliveries 暂缓)、configuration.md herald 行(两卡)、solution-structure(801 测试) | 投递失败卡未落地(批3-补35 暂缓项) | 2026-10-11 续批拍板:herald.deliveries 已落地(logs?status=failed 取数面实证;failed 即黄不升红——dead 在日志层写 failed 不可分;shadow 被过滤排除) | solution-structure 801→807 测试/herald 树行补三卡、configuration/positioning 补口径;mvp-issues 批3-补37 + 装机行 65 条(已修) |
- 复核为一致:herald 单文件多类先例不变(HeraldProvider.cs 仍 1 文件 4 类);连接类型仍 16 类。累计 56 + 1 = 57 条。
2026-10-11 第十一增量(MiMo 401 明示 + 排障条目)¶
| 编号 | 位置 | 文档/代码原主张 | 实况 | 处置 |
|---|---|---|---|---|
| F-58 | troubleshooting.md 全文 | 排障手册无 MiMo 条目(17 行全为安装/启动/白板/日志) | 2026-10-11 用户实踩「小米的还是不行」:胶囊 Offline 横幅为聚合告警(含 Degraded 401),真因在 tile 失败原因行;额度卡登录态过期是常态,Key 与 Cookie 是两条凭据链 | 新增「小米 MiMo 卡显示 Offline / 不出数?」段(离线横幅口径 + 三种常见坑:Cookie 失效重录指引 / 只填 Key 不够 / litellm 档默认空与 no_db_connection 归属网关侧)(已修) |
- 复核为一致:configuration.md 已记 litellm_spend_url/litellm_key_ref 两键语义;solution-structure 828 测试为 2026-10-11 单测复点口径。累计 57 + 1 = 58 条。
2026-10-14 第十二增量(增量复核:SenseNova 文档面补缺 + 计数漂移)¶
| 编号 | 位置 | 文档/代码原主张 | 实况 | 处置 |
|---|---|---|---|---|
| F-59 | configuration.md(三处无 sensenova 行)、positioning §1 表与 §8(13 类,无商汤)、solution-structure(Connections 33 文件、树无 SenseNovaUsageProvider、16 类)、master-plan 落地状态(11 家 AI / 16 类)、index.md(16 类连接) | SenseNova(商汤)在用户文档面完全缺席 | SenseNovaUsageProvider.cs 1 文件 3 类(2026-10-13 用户令):sensenova.tokenplan 控制台池级 Token Plan 额度(多池 × 5h/7d,最差池的最差窗判级 + 赠额到期预警),走 HttpEndpoint.FetchAsync 统一 HTTP 通道(Bearer 控制台 JWT,默认 platform.sensenova.cn/lite/console/v1/tokenplan/pool-usage) |
configuration.md 补三行(凭据与端点 / 通用通道键列表 / 额度口径)+ 多窗口额度展示段补 sensenova 形态;positioning §1 表 +1、§8 增「第十二家」条目;solution-structure 33→35 文件 + 树补行 + 16→17 类;master-plan 11→12 家 / 16→17 类;index.md 16→17 类 |
| F-60 | solution-structure(Core Services 19 文件;4 项目共 991 测试 = Connections 599 / Core 334 / Actions 27 / Storage 31) | 计数落后于码 | Services 实为 20 文件(DebugInjection.cs 新增,BEACON_DEBUG_SEVERITY 注入门控);2026-10-14 本地门禁实测 4 项目共 1057(Connections 652 / Core 347 / Actions 27 / Storage 31) |
计数更正;Services 树补 DebugInjection.cs 行(debug 门控,仅 CI 场景 V 与装机演练用,不进用户配置文档) |
- 复核为一致:
store-submission.md的 SignPath 主张(secrets 名SIGNPATH_API_TOKEN/SIGNPATH_ORGANIZATION_ID、project-slug: beacon、signing-policy-slug: beacon、artifact-configuration-slug可选、signed/优先、fail closed 口径、README「Code signing policy」段)与daily-build.yml逐项吻合;MSIX 两轮 dry run 38230149697 + 38233094172 均 success,msix-pack.ps1与msix-dry-run.yml在场,appxmanifest占位Beacon.CuiHairu/CN=cuihairu与文档一致;master-plan「指纹级去重未实现」仍成立(QuickPanelWindow仅Insert(0)+ 上限 50);Actions 5 文件、Storage 6 文件、App 树(Services 15 / Windows 10 / Infrastructure 3)与实况一致。mvp-issues.md 无 SenseNova 批次记录——不补造批号,以本审计增量留痕。累计 58 + 2 = 60 条。