CHANGELOG · 公开变更日志 · 方法论 & 工程化进展

每一次迭代, 都能回头看见

本文只记录方法论与工程化层级的可外可看的进展。项目内部细节 (具体客户名 / 财务数字 / case_id) 在 docs/internal/ 本地保留, 不入公开 repo (CLAUDE.md §9 confidential)。需要原始 markdown 源? 看 changelog.md

2026-07-25 · RELEASE

v1.20.0接入路径修复与全面文档化 (MCP 反代打通 · 接入总览 · 系统架构图)

一次「盘查 → 发现真问题 → 修 → 补文档 → 上防漂移门」的完整闭环。起点是一个朴素的问题: 「主站 / boss 到底能不能通过命令行访问?」 盘查下来发现: 官方主推的接入路径实际是坏的, 公开 API 文档停在两个月前的无认证时代, 而门槛最低的那条路根本没有文档。本版把这些一次性修完, 并给每处都加上防止再次漂移的自动化门。

① MCP 主协议经反代恒返回 421 —— 修好一条「文档说可用、实际走不通」的路

公开站教用户配一个文件即可接入, 但实测该端点恒定返回 421。逐层定位到根因: MCP SDK 在服务绑定本机时会自动开启 DNS-rebinding 防护, 而它的白名单硬编码只认本机地址 —— 经反向代理进来的请求, Host 头是公网域名, 于是一律被判死。

修法是加白名单, 不是关防护 (关掉等于对任意 Host 敞开):

  • 新增域名白名单配置项; 未配置时行为完全不变, 交回 SDK 默认, 零回归风险
  • 配置后防护保持开启, 白名单 = 本机默认 + 配置的域名 (同时放行带端口写法)
  • 回归测试直接复现现网故障: 不配白名单 → 421; 配了 → 放行; 未列出的域名 → 仍被挡 (白名单不是敞开)
  • 修复后从公网跑通完整 MCP 握手与工具列举, 三个工具全部可用

② 公开 API 文档脱漂 + 接口契约门

公开的集成手册仍写着「默认无认证」, 而实现早已是 Bearer 必填 + fail-close —— 外部集成方照抄示例必然失败。

  • 认证章节重写: 真值表 + 401 与 503 的辨析 (前者是你 token 不对, 后者是服务端没配, 重试永远好不了) + 两套服务 token 不通用的说明
  • 四处客户端示例 (curl / Python / 常驻 runtime / Agent 框架) 全部补上认证头; 端点表补齐遗漏路径并逐条标注是否需认证
  • 接口规格此前是手工快照, 漂了近两个月 (九条路径只剩五条、认证信息全空)。改为从代码自动生成, 并把认证依赖归一成标准的安全方案声明 —— 归一规则纯由代码推导, 不会与实现脱节
  • CI 加一道契约门: 路径集合 / 每个操作是否需认证 / 安全方案在位, 三项与代码不符即红。刻意不做逐字节比对 —— 那会因无关的依赖升级误红, 已用固定依赖版本实测确认

③ 接入总览页 —— 四条路径首次放在一起对比

四条接入路径此前散在三处文档 + 一条零文档, 没有任何一页把它们放一起比较, 新人不知道该走哪条。

  • 决策树: 四张卡对号入座, 不必读完整页
  • 四路对照表: 含「谁跑模型」这一关键列 —— 它决定要不要自备密钥、费用算谁的
  • 两套服务澄清: 判断流水线与元数据服务是两个独立服务, token 不通用 —— 这是最常见的认证失败来源, 此前站上无一处讲清
  • 错误码速查: 按「该谁修」排序, 标明哪些重试无用
  • 排障速查: 把排查过程中真踩到的坑全部收录

④ 体验接口首次文档化

门槛最低、免凭证的那条路此前只在首页前端代码里出现, 靠读代码才能反推。现补齐: 五个端点 + 配额表 (全部从代码读出) + 三格式报告下载 + 公开判例库。并在显著位置写明提交内容会公开保留七天、请勿提交机密 —— 这条此前只活在代码注释里, 访客无从知晓。

⑤ BYOM 一条命令跑完流水线 (两个可下载脚本)

自带模型那条路的真实痛点是整套编排要自己写。给两个可直接下载的单文件脚本 (bash 与 Python), 把「起单 → 跑合成 → 逐评委打分 → 回传 → 聚合出报告」压成一条命令, 模型调用留在使用方自己的进程里

  • Python 版零第三方依赖, 评委并发, 支持两类模型网关; 换供应商只改一个函数
  • 两者都在常见错误码上当场给提示, 不用回来翻文档
  • 端到端验证: 让脚本跑通真实的服务端, 证明协议处理与契约一致 —— 哨兵确实被替换、每位评委独立打分 (提示词里不含他人评语)、宣称零依赖属实

权衡记录: 评估过发布成包的方案, 否决。四条路里三条本就不缺包 (一条 curl / 一个配置文件 / 另一条是不同技术栈且依赖本地数据), 真实收益只在这一条; 而单文件脚本能拿到同样收益, 又避开「公开发布不可撤回」与「与授权使用定位冲突」两个实际风险。

⑥ 系统如何运作 · 五层架构 (网页 + 手册文档)

此前没有任何一处讲清「整个系统怎么运作」—— 有项目进度图、有评委体系图、有方法论页, 唯独缺一张能一眼看懂全局的图。

新增分层架构页 (入口 / 知识 / 流水线 / 产出 / 回路), 用原生样式绘制、不引第三方库。每层配「解决什么问题 / 没有它会怎样 / 关键机制」三栏, 让设计动机可见; 另加「跟一次判断从头走到尾」时间线, 与四条设计取舍问答 (为什么要人工确认闸 / 为什么评委互相保密 / 为什么版本快照不能改 / 为什么知识库不吃判断产出)。手册同步一份文字版便于检索引用。

回路层被刻意画得最醒目 —— 它是最容易被省掉、也最不该省的一层: 没有它, 系统永远在重复同一类错误。

⑦ 顺带修补: 公开层安全闸的扫描面缺口

新增可下载脚本时发现: 公开层预检的文件类型白名单不含脚本类型, 意味着放在公开目录里的脚本完全不在扫描面上。补入后扫描面扩大, 并做负向验证 —— 往示例里塞入敏感内容, 闸门正确拦下。此缺口非本版引入, 只要有人往公开目录放脚本就会中招。

一句话: 从「能不能用命令行访问」这一个问题出发, 修好一条对外宣称可用却实际走不通的接入路径, 补齐两处严重过时与一处完全缺失的文档, 并给每一处都加上防止再次漂移的自动化门 —— 让「文档说的」和「代码做的」不再各走各的。

质量门

全量单测绿 (+44 条新增: MCP 白名单回归 / 接口契约门 / BYOM 端到端 / 页面守卫) · MCP 公网握手与工具列举实测通 · 接口契约门在固定依赖版本下实测通 · check_public_safe (含新扩的扫描面) + redact_check 0 命中 · sitemap 无死链 · handbook 构建通过 · CI unit/preflight/build/CF Pages 全绿
2026-07-22 · RELEASE

v1.19.1周报自省诊断评分稳定性排查 + 边界诚实标注

延续 v1.19.0 的周报自省诊断, 本版收尾「同一份周报为何跑出不同分」的评分稳定性问题, 并给成员一个对工具能力诚实的边界标注。定位不变: 自省式诊断, 评分与等级不作绩效依据。

① 评分漂移排查 + 温度加固

  • 发现同一份周报多次评审分数会漂移 (可跨一个等级)。逐环排查: 先确认多次评审的输入完全一致 (排除输入差异), 再把评委采样温度硬钉为 0 (降随机性; 无视全局温度旋钮, 只作用本场景, 不动其他评审)。
  • 温度钉 0 后复测仍有漂移 → 定位为 LLM 评委在边界分附近的固有噪声 (即便 temperature=0, 推理后端仍非确定), 温度不是唯一因素。这是 LLM-as-judge 的地板, 不是缺陷。

② 边界诚实标注 (不夸大精度)

  • 权衡后不引入「多次取中位」(ensemble) —— 不值数倍算力去换一个「稳定但仍非人评」的数, 且会对少量参照案例过拟合。
  • 改为报告常驻边界诚实标注: 单次评分在等级边界附近约有 ±1 档波动, 请以诊断内容为改进依据, 档位仅作方向性参考。让成员的预期与工具真实能力对齐。

③ 版本标签统一

  • 报告与汇总表的人面版本号统一为定稿口径; 内部机器契约标识不变 (解耦「显示」与「契约」, 零迁移风险, 免评委产出被误判)。

一句话: 把「同一份周报跑出不同分」查到底 (温度加固 + 定位为 LLM 评委固有噪声), 并对成员诚实标注边界波动 —— 不假装精度, 档位方向性参考、不作绩效。

质量门

study_weekly --selfcheck 绿 · 温度优先级 + 边界标注 + 版本标签回归单测绿 · check_public_safe + redact_check 0 命中 · gen_changelog_html 漂移契约绿 · 全量单测绿 · CI unit + CF Pages 全绿
2026-07-21 · RELEASE

v1.19.0周报自省诊断框架升级 (自省式诊断 · 五维反向扣分) + 真机健壮性加固

把「周报自省诊断」场景从早期评分框架升级为定稿版自省式诊断框架, 并在真机首测暴露的偶发整单失败上, 把评委畸形输出根治为三层健壮性防线。定位始终是自省——评分与等级只帮成员看清"周报是价值证明而非工作记录", 一律不作任何绩效依据。

① 自省式诊断框架升级

  • 五维基础分 (满分 100) + 五项合并反向扣分: 核心贡献证明 / 关键进展与信号 / 决策推动与卡点 / 时间节奏与闭环 / 认知更新五个维度打基础分; 每维度对应一项反向扣分 (各设上限、总扣分封顶), 避免早期"多项叠加式归零打击"。
  • 等级阶梯 A / B+ / B / C / C-: 新增 C- 兜底档, 让最弱与中段周报拉开梯度, 不再"绝大多数挤在同一档"。
  • 机械层锁进回归单测: 总分算术与等级阈值确定性可复现, 任何人改规则跑偏即红灯, 口径不会悄悄漂移; 定稿参照案例逐格重现锁死。

② 评审提速 (轻量化)

  • 自省诊断场景走轻量化渲染 (跳过面向多评委长报告的额外合成与正文润色), 单份评审耗时从约 8 分钟降到约 5 分钟; 回执卡 ETA 随场景显示真实预期, 不再沿用通用评审的旧估值。

③ 真机健壮性加固 (三层防线)

首次真机提交暴露评委偶发吐畸形 YAML 导致整单失败 (同一份文档回填时却成功 → 判定为间歇性), 根治为三层防线: - 源头: 提示词加硬约束 (输出首字符必须是 frontmatter 起始、禁前言; 含冒号/引号的值整体加引号), 从生成端减少畸形。 - 修复器: 新增"双引号标量内嵌裸引号 → 改单引号包裹"与"前言 → 归位"修复, 第一次就修好, 不靠重试。 - 兜底: Phase 4 就地校验 (解析 + 区间校验), 不过则触发既有重试重新生成, 不再整单失败退成"评审失败"。

④ 运维细节

  • 回执卡 / 完成卡改为场景化文案 (ETA、边界说明、完成卡页脚均按场景走; 去掉会随改版过时的版本号); 每人每日配额上调。

一句话: 把周报自省诊断从早期框架升级为定稿的五维自省式诊断, 真机链路从"偶发整单失败"加固为"三层防线不漏单"——始终是自省, 不作绩效。

质量门

study_weekly --selfcheck 绿 (5 项扣分 / 5 档 / 定稿参照案例机械层一致) · fix_review_yaml 畸形 YAML 健壮性回归绿 · check_public_safe + redact_check 0 命中 · gen_changelog_html 漂移契约绿 · 全量单测绿 · CI unit/preflight/build/CF Pages 全绿
2026-07-18 · RELEASE

v1.18.0战略 OS 上线 (评审→决策→执行→复盘组织回路) + 评委体系对外可视化

把 boss 从「评审这一个节点做深」升级为「战略从规划到执行的七节点组织回路」—— 评审仍是核心引擎, 但评审的输出 (建议) 从此有下落: 被决策、被执行、被追踪、被复盘、沉淀回知识库。同期把评委阵容对内对外都做了可视化。

① 战略 OS · 七节点组织回路

Source → Theme/Metric → Plan → Review → Decision → Execution → Postmortem, 评审引擎是其中的 Review 节点, 本版补齐其余节点的数据结构与工作流 (M0–M5):

  • 决策捕获 (杠杆点): 每条优先建议 owner 一句话判定 (采纳 / 部分 / 拒绝 / 校准, 后三者必带理由); 飞书文本命令先行 (「决策 采纳」), 未决策 T+3 温和提醒一次。
  • 行动台账 + 自动跟催: 采纳建议自动生成行动 (owner / 期限可改), T+7 / T+30 私聊跟催回收进展, check-in 只追加可溯; 跟催有节制 (日频合并、受阻不自动上报)。
  • 指标注册表注入: 场景挂钩指标 (目标值 / 口径 / 期限 / 快照) 注入评审 context, 评「目标是否量化」有真数可对; 最高敏感级指标永不注入
  • 月度复盘 digest (零 LLM): 确定性生成本月捕获率 / 采纳分布 / 拒绝理由 / 兑现率 / 逾期清单, 经审核走受控管线进知识库; 同类建议连拒生成 doctrine 调优提案 (只提案不自改)。存量历史评审建议回填 (数百个品牌), 老评审即刻可决策。
  • 产品化红线: 决策永远是人 (AI 不自动采纳、不催办)、拒绝率 / 兑现率永不作为个人绩效口径、LLM 抽取过人确认闸; 回路组件全挂不影响评审主流程 (旁路)。
  • 收官件: 架构决策 ADR-016、PRD 定稿 v1.0、试点复盘框架 (G1–G5 对标); 内部管理台新增战略 OS 三页 (回路总览 / 决策记录 / 行动台账) + 使用指南 + 专题文档页; 公开手册站上脱敏方法论页《战略 OS · 组织回路》

② 评委体系对外可视化

  • 公开「评委全景 Panorama」: 主站新增栏目, 一页讲清评委阵容方法论 —— 5 镜头 (打分尺) × 6 维度评委 (各自 doctrine) × 锚点基线 (anchor_delta) × 真人蒸馏视角 × 场景类型 × 评委纪律。
  • 公众人物视角样例 · 每人一独立页: 6 个「行业标杆视角」样例页 (第一性原理 / 算力生态 / 平台 / AI 原生 / 数据平台 / 工业 AI), 内容取自各公众人物公开战略哲学作方法示例, 确定性生成 + CI 漂移契约。
  • 内部评委名册 (运维管理台): 按机器人分组列出全部虚拟评委 + 每评委 doctrine 详情, 共享评委只一页并聚合"被哪些机器人使用"。

③ 严格脱敏 (公开层出口闸)

  • 公开的战略 OS 方法论页 / 评委全景 / 视角样例页只讲方法论与框架, 无任何真实客户 / 人物 / 判例 / 内部数据; 公众人物样例仅取全球公开思想领袖, 排除一切客户相邻人物与内部机器人名。
  • 全部经 check_public_safe + redact_check 双闸 + 人工客户标识扫描零命中。

一句话: 评审的建议从「有去无回」变成「被决策、被追踪、被复盘」的组织回路; 评委阵容对内对外都可视化。

质量门

check_public_safe (www 107 · handbook 45 · 0 命中) · redact_check 0 命中 · gen_changelog / gen_lens 漂移契约绿 · 全量 2255 passed / 14 skipped · CI unit/preflight/build/CF Pages 全绿
2026-07-18 · RELEASE

v1.17.2公开方法论页上站 — 从内部推广手册脱敏抽取《评审智能体 · 从工具到战略 OS》

把一份内部战略评审智能体推广手册完全脱敏后, 抽出可外可看的方法论上到公开手册站, 用于推广 boss 智能体。

① 新方法论页

  • 新增手册页 《评审智能体 · 从工具到战略 OS》 (/handbook/concepts/review-agent-playbook): 四层结构 (虚拟评委 / 评价标尺 / 知识与证据 / 输出与动作)、传统评审四痛点、 高频 × 高价值 × 可闭环选场景、战略 OS 七环回路、人机共判三原则、五步落地指南; 交叉链到 5 镜头 / 6 维度评委 / 多场景评委体系 / anchor_delta / 30·90·365 attribution。
  • 主站首页 hero 加一行入口推广语指向该页。

② 完全脱敏 + 双闸

  • 去干净: 公司 / 板块 / 地名、真人 (含锚点)、客户与行业标杆、精确经营数据、 内部工具、专有术语 —— 只留方法论骨架, 可外可看、可"照着做"。
  • 公开层双闸 check_public_safe + redact_check + 敏感词残留自查零命中; 走 Git PR + 主理签 (CTO 会签后补, 承 ADR-013/014 先例)。

一句话: 把内部推广手册脱敏成公开方法论页, 让 boss 的多视角评审方法论可外可看、可"照着做"。

质量门

check_public_safe (handbook 44 + www 55 · 0 命中) · redact_check 0 命中 · CI unit/preflight/build/CF Pages 全绿
2026-07-13 · RELEASE

v1.17.1体验台与公开站完善 — 报告图表化/全中文 + 公开判例库 + 视觉统一 + CI 自建

承接 v1.17.0 服务化上线, 本版把在线体验台与公开站从"能用"打磨到"好看好查", 并把持续集成 与每日巡检迁到自建基础设施上自主运行。

① 体验台报告: 三格式 + 富渲染 + 全中文

  • 演示报告除 Markdown 外补齐网页版 (html) 与 PDF, 与飞书机器人交付对齐; PDF 渲染死因留痕 (可观测 status.pdf_error, 排掉沙箱两坑)。
  • 网页/PDF 报告从纯文本升级为图表化: KPI 卡 + 评委×5 镜头热力图 + 评委卡 (展开一句话/关键缺口/ 行动建议/反方三问)。
  • 全中文: 评委名 (锚点 / 行业趋势 / 产品战略…) 与镜头名走中文, 英文表头加中文注; 报告标题用真实议题。

② 主页改对话入口 + 公开判例库

  • 主页即体验: 空态居中输入盒, 发一个议题即开评审, 原地切对话视图看四阶段进度 → 报告; 原主页内容 迁 product.html (锚点全保留)。
  • 公开判例库 (gallery.html, 默认关): 匿名访客的议题 / 文档 / 报告沉淀保留 7 天供后来访客浏览, 显著公开提示 + 独立存储 TTL 物理删。上线前过对抗式隐私/安全评审, 据此加固 (文件名专用闸 + 报告 HTML 严格 CSP 中和 stored-XSS + 全字段软扫)。
  • 体验台配额抬升: 每访客每日 10 单 / 全局 60 单。

③ 公开站视觉统一 + 品牌 VI

  • /boss 标志: 三道渐变判词斜杠 (= 多评委各自落笔) + 顶端琥珀落锤点脉动 (= 可验证的那一刻), 全内联 零外部资源; 另出 VI 说明页 (vi.html) 讲清标志 / 色彩 / 字体 / 动效规范。
  • 全站统一清新浅色风格: 主页参考大站范式重构 (浅色玻璃导航 + 衬线主标 + 大圆角输入盒), 营销六页 (产品 / MCP / 飞书 / 判例库 / VI / changelog) 的导航、hero、footer 由深转浅统一 (代码/终端块保持深色), 移动端零横向溢出。

④ 工程化: CI 与每日巡检迁自建

  • 持续集成 (单测 / 公开面硬规则闸 / release 等) 与每日 attribution 定时任务从托管 CI 迁到自建 runner 与 systemd timer, 去除对托管 CI 分钟的依赖; 每日巡检自检 (定时器存活 / 按时跑过 / 退出码), 异常主动告警。

一句话: 服务化之后的一轮体验与观感完善 — 报告图表化全中文、主页即体验、公开判例库沉淀可查、 全站视觉统一到清新浅色, 并把 CI 与每日巡检搬上自建基础设施自主运行。

质量门

pytest 1820 passed / 13 skipped · check_public_safe + redact_check 0 命中 · 现网零扰动 (SR0 四层隔离)
2026-07-12 · RELEASE

v1.17.0boss-as-a-Service 上线 — 判断引擎服务化 (MCP/HTTP 双协议) + 公开站三入口 + 在线体验台

把"判断流水线"从单机 CLI 升级为可被外部程序与访客直接调用的服务, 从技术方案、双签、 抽库到公网可体验一路闭环, 全程现网机器人零扰动。

① 引擎抽库 (M0) + 知识库抽象 (M1)

  • boss_core 纯函数引擎核: 错误类型 / 文档 IO / prompt 装配 / 打分聚合 / wiki 查询等 从数千行 CLI 下沉为独立包, CLI 与服务共核不共壳; 全程"纯搬 + 顶层 re-export shim", 字节级快照证明产物零漂移; 三道 CI 契约护栏 (公开面锁定 / 禁反向依赖 / 禁服务依赖 CLI)。
  • KBProvider 知识库抽象: 知识库访问收敛为显式 Protocol; HostedKB 实现敏感度 tier 过滤 + 出口脱敏骨架, 为"服务托管知识库"铺路。

② 档 A 服务化 (M2): boss 不调 LLM

  • 三端点契约: prepare 返回冻结 context + 全套评委 prompt 包 → 调用方自己的模型 跑合成/评委/合议 → submit 契约校验回传 (打分齐且界内 / 反方机制三字段必填 / 全批原子) → render 确定性聚合出富报告。
  • MCP (主) + HTTP (备) 双协议同核同闸; Bearer 鉴权 fail-close (未配 token 拒绝裸奔); run 存储独立 SQLite, TTL 24h 到期物理删除; 出口脱敏闸数据面必闸。
  • 四层发布隔离: 独立进程 + 资源限额 + 数据只读 + 默认关开关 — 灰度五步上线, 回滚秒级; 生产按路径分流双实例部署 (MCP 与 HTTP 各一)。

③ 公开站改版: 三条使用路径

  • 主页重构 (导航 11 → 7 项), "怎么使用 · 选一条路"三卡置顶: 飞书机器人 (零配置) / MCP 服务 (自带模型) / 自托管 CLI
  • 新增 MCP 接入指南页 (30 秒 .mcp.json 接入 + 三工具契约表 + 回传 review 骨架) 与 飞书机器人落地页 (纯 CSS 对话演示, 示例全虚构占位)。

④ 在线体验台: 零配置服务端代跑

  • 访客无需注册、无需 API key: 发一个议题或附一份文档, 服务端代跑全链 (合成 → 多评委独立打分 → 合议 → 报告), 聊天式进度实时可见。
  • 三条纪律: 不连内部知识库 (演示报告零内部数据) / prompt 包不出网 (只返回最终 报告, 且过出口脱敏闸) / 三层成本护栏 (默认关开关 + 每访客与全局日配额 + 单并发 + 输入长度上限)。
  • 端到端实测: 真实网关全评委过闸, 一单约 2-5 分钟; 且全体评委对占位议题正确拒评 — anti-fabrication 纪律在演示面原样生效, 这本身就是产品最好的演示。

⑤ 运行时收尾 (承接 v1.16.x)

  • 分身流式渲染默认开; 锚点可免管理员自行切换分身模式; 锚点输入流存档 (优化语料)。
  • LLM per-request 超时 (挂死请求不再长占线程饿死机器人); 空应答"鬼卡"根治; 运行时状态入每日备份 + 备份失败飞书告警; 分身评测 harness 补自动化机械判据。

一句话: 判断引擎完成服务化 — 引擎抽成纯函数核, 档 A 契约 (boss 出题与纪律、调用方模型 出判断) 经 MCP/HTTP 双协议对外, 公开站给出三条使用路径, 并上线零配置在线体验台 (服务端代跑 · 不连知识库 · 三层成本护栏) — 全程现网机器人零扰动。

质量门

pytest 1787 passed / 13 skipped · check_public_safe + redact_check 0 命中 · 现网零扰动 (SR0 四层隔离)
2026-07-10 · RELEASE

v1.16.8审计账目结清 (skill_lint 零告警)

v1.16.7 数据债处置的最后一步。上一版把 9 份畸形 review 里 4 份"格式 bug 但数据完整"的忠实 修复了, 剩 5 份是失败生成残片: 2 份 0 字节空文件 + 3 份只有模型"让我先读这份文档"前言、 无任何评分/评审内容

处置: 移除这 5 份 debris

三选一 (重跑评委 / 移除 / 保留) 中采纳"移除":

  • 重跑 —— 会为冻结于历史时点的判断生成一份当日的新 review, 与不可变版本快照脱钩, 等于 补造一场当时没发生的评审。否决 (违反版本不可变性)。
  • 保留 —— debris 长留 + 内部质量闸告警长挂。
  • 移除 (采纳) —— 这 5 份是生成 debris 而非判断; 版本快照是静态冻结副本, 删文件不影响 快照; 最终报告当时已把这些失败评委排除在评分外; 内部质量闸不做 panel 完整性校验, 删后无 悬挂引用。删除前逐一复核确认 (< 200 字节、无评分/反方机制字段)。

内部质量闸告警 5 → 0 (完全干净)。至此这次审计的所有账目 —— 60 项发现 + 两笔非缺陷长期债 + 5 份失败生成残片 —— 全部结清

一句话: 数据债最后一步, 移除 5 份"生成失败"的空/前言残片 (debris 非判断) —— 内部质量闸从 有告警到零告警; 全程守 anti-fabrication (无数据既不造也不留噪) + 版本不可变性 (删前复核、 快照不受影响)。

质量门

pytest 1687 passed / 7 skipped / 0 xfailed · check_public_safe + redact_check 0 命中
2026-07-10 · RELEASE

v1.16.7审计长期债收尾 (畸形 review 忠实修复 + 生成器覆盖率补齐)

清掉这次审计一直挂着的两笔非缺陷长期债 (§5–§7 备查项)。纯收尾, 零语义改动。

数据债 · 畸形 dimension review 忠实修复

内部质量闸 (skill_lint) 长期挂 9 条告警: 部分历史 review 文件名是维度评委 slug 但 frontmatter 无法解析 (此前特意设为 warning 容忍存量, 不追溯阻断)。逐一诊断分三类:

  • 格式 bug · 数据完整 (4 份): 评分 + 反方机制 (adversarial_view) 都在, 只是 YAML 坏了 (开头分隔符与首字段粘连 / frontmatter 被 ```yaml 代码块包裹 / 标量含未加引号的冒号)。 按最小手术、绝不改正文一字忠实修复: 拆分隔符 / 剥代码块 / 把 prose 标量转成 YAML 块标量, prose 逐字一致、时间戳保留原 ISO 串。修复只动 frontmatter, 评审正文字节不变。
  • 失败生成 (5 份): 2 份空文件 + 3 份只有"让我先读这份文档"的模型前言泄漏, 无任何评分/评审 内容。这类无可恢复数据坚决不补造评分 (anti-fabrication 纪律), 作为诚实的"该评委当次生成 失败"记录保留, 是否重跑/移除留待人工决策。

内部告警 9 → 5

覆盖率 · build_ / render_ 生成器纯函数补测

这批"读数据 → 出 HTML / 图"的一次性构建器多为 0% / 低覆盖; 端到端测需重 fixture, 但内部有大量 纯函数 (slug 化 / 目录提取 / frontmatter 解析 / 实体标签 / bin-packing / 链接改写等), 逻辑 真实且无需 fixture。给它们补真实回归覆盖 (16 个纯函数测试):

模块 覆盖率
render_internal_doc_html 0% → 52%
render_judgement_html 0% → 37%
build_raw_browser 0% → 35%
split_oversized_md 25% → 51%

一句话: 把审计挂账的两笔长期债 (存量畸形 review 的忠实格式修复 + 生成器纯函数覆盖率) 收干净 —— 数据完整的忠实修复、无数据的坚决不造, 生成器纯函数补上真实回归覆盖。

质量门

pytest 1687 passed / 7 skipped / 0 xfailed · check_public_safe + redact_check 0 命中
2026-07-10 · RELEASE

v1.16.6审计护栏加固 (testability 重构 · 17 条 PLAUSIBLE 现全部有回归护栏)

v1.16.5 的复核里有 3 条判定为"已修但缺测": 修复本身到位, 但都在深 I/O 缝 (飞书 SDK 下载 / 整库页面 build / 增量主循环), 直接单测需重度 mock 生产依赖, 易脆。本版做最小 testability 重构把它们补齐护栏。

本版内容

把三处修复各抽成一个纯函数缝并对齐调用点, 于是能脱离生产依赖直接测:

  1. 下载落盘防路径穿越 → 抽出 _safe_inbox_dest(inbox, ts, file_name, prefix): 把飞书提供的文件名 (不可信) 取 basename 后再拼进收件目录, 顺带 DRY 了三处下载落盘 (persona / 单份 review / batch)。回归护栏断言含 ../ / 绝对路径 / 子目录的名字, 落盘目标的父目录恒为收件目录
  2. 增量水位线时区归一化 → 抽出 _entry_before_watermark(fetched_at_str, last_run_dt): 把带时区的 fetched_at 与本脚本写入的 naive 水位都退成墙钟时间再比 (否则 aware ≤ naive 抛 TypeError 被吞 → 增量永不跳)。回归护栏断言 tz-aware 的更早 entry 应被跳过
  3. 内联 JSON 转义 → 抽出 _inline_json(data): 内联进页面 <script> 块前把 </ 转义成 <\/, 防含 </script> 的字段值提前闭合脚本。回归护栏断言转义生效且 JSON 语义等价 (可还原原文)。

三条测试均经对抗式确认可捕获回退 (逐一还原旧写法 → 测试确实失败)。重构行为等价、零语义改动

一句话: 把上一版复核里"已修但缺测"的 3 条深 I/O 缝修复, 用最小 testability 重构抽成可测的纯函数缝并补上回归护栏 —— 至此这次审计的 17 条 PLAUSIBLE 全部有回归护栏, 60 项发现无一遗留未修、无一缺护栏。

质量门

pytest 1671 passed / 7 skipped / 0 xfailed · check_public_safe + redact_check 0 命中
2026-07-10 · RELEASE

v1.16.5审计复核收尾 (17 条 PLAUSIBLE 逐条对当前代码验真 · 补齐一处漏修崩溃)

为把"审计发现全部落地"坐实, 本版对全部 17 条 PLAUSIBLE + 1 条存疑 CONFIRMED 做了一次逐条对当前代码的对抗式复核: 每条各派一个只读复核 agent, 判定三态 (已修+有回归测试 / 已修但缺测 / 未修), 且必须引用具体代码行为证。

复核结论

  • 已修 + 有回归测试: 14 条
  • 已修 · 缺回归测试: 3 条 (下载落盘取 basename 防路径穿越 / 增量跳过的时区归一化 / 内联脚本数据的 </ 转义) —— 代码复核确认到位, 缺的只是护栏; 因都在深 I/O 缝 (需重度 mock 生产依赖) 暂不强加脆测, 以复核证据留痕
  • 未修 (复核实测复现): 1 条 —— 见下

补齐的漏修

单文档导出 (Set A · MD/PDF) 在渲染 case.json 关键字段时, 对显式 null 的字段此前只兜底了一个 (flip_threshold)。复核 agent 实测复现: reasoning_trace / decision / attribution 三个顶层字段为 null 时仍对 None 取属性而崩, 整份导出中断; 同类的列表字段 (variables / theses / evidences) 为 nullenumerate(None) 也崩 (原发现漏列)。本版一次补齐全部 6 处: dict 访问改 .get(k) or {}, list 访问改 .get(k) or [], 显式 null 降级为空而非崩溃。附回归护栏 (注入全 null 的字段, 断言导出不崩)。

一句话: 用只读对抗式复核把 17 条 PLAUSIBLE 逐条对当前代码验真, 抓出并补齐唯一一处早批漏修的导出崩溃 (显式 null 字段只兜底了 4 之 1), 至此这次审计的 60 项发现无一遗留未修。

质量门

pytest 1666 passed / 7 skipped / 0 xfailed · check_public_safe + redact_check 0 命中
2026-07-10 · RELEASE

v1.16.4审计收尾批 (medium/low + 两项产品判断 · CONFIRMED 全部清零)

承接 v1.16.2/v1.16.3 的全量脚本审计, 本版清掉剩余的 medium/low 级发现 (25 个工具脚本), 外加两项需产品判断的修复 (先经确认再动)。至此审计确认 (CONFIRMED) 的问题全部处理完毕, 均带回归护栏。仍是纯加固, 零语义改动。

本版内容

  1. 一批崩溃兜底: 非 object 事件体、纯字符串镜头配置、指向 vault 之外的路径、LLM 偶尔返回的错误类型等坏输入, 此前会抛未处理异常; 现统一加类型/边界守卫, 单条坏数据只跳过、不拖垮整体。
  2. 更多 fail-close: ①未填证伪指标时, 空串不再被"子串命中"逻辑误判为"已确认" (保持 pending) ②批量校验查询出错 / 全部跳过时不再当成"假全绿", 改为非零退出 ③人格问答里"有据"标签只在确有出处时才成立, 光有标签无溯源即按无据处理 (anti-fabrication)。
  3. 并发与数据安全: ①事件幂等去重的"读-改-写"加锁 + 原子落盘, 防多线程并发投递互相覆盖丢条目 ②同日多次生成的增量笔记不再覆盖首份 ③判断档案改原子写 (临时文件 + 原子 rename), 中途被打断不截断源文件 ④增量摄入的水位线仅在完全成功时才前进, 部分失败保留水位防跳过未拉窗口。
  4. 注入 / 转义: ①内联进页面脚本块的数据把 </ 转义, 防含 </script> 提前闭合破坏结构 ②LLM 抽取的自由文本标题写入 YAML frontmatter 前先转义 + 折行, 防元数据破损 ③标题含反斜杠或 \1 组引用不再被正则替换误解。
  5. 正确性边界: ①schema 迁移时已消费/显式丢弃的字段不当"未知字段", 其余未知字段原样保留 ②偶数长度取真中位数 (中间两值均值) ③按标题分块再块内取值, 不再跨块"偷"到后一条的状态 ④单份越界文档跳过并记日志, 不中断整轮摄入。

两项产品判断 (先确认再动)

  • 判断书版本号无界增长: 全量重渲染时版本号总是 +1, 导致每次重跑都多冻结一个不可变快照 + 一条日志, 无上限。改为: 纯重渲染默认复用最新版、只滚动当前报告; 只有显式 --bump 才 +1 并冻结新快照。
  • 管理台登录限流可被伪造头绕过: 失败限流只按来源 IP 计数, 而来源 IP 取自客户端可伪造的转发头, 轮换头即可绕过。改为: 在 IP 维度之外再加一道账号维度的全局失败计数 (单账号后端), 与 IP 桶共存, 轮换来源也绕不过单账号节流; 不依赖代理拓扑知识、无需改部署。

一句话: 清掉审计剩余的 medium/low 发现 (崩溃兜底 / 更多 fail-close / 并发数据安全 / 注入转义 / 正确性边界), 并落地两项产品判断 (判断书版本不再无界增长、登录限流补上账号维度兜底防伪造头绕过); 至此审计的 CONFIRMED 全部清零。

质量门

pytest 1665 passed / 7 skipped / 0 xfailed · check_public_safe + redact_check 0 命中
2026-07-09 · RELEASE

v1.16.3审计 HIGH 补批 (指标修复 / 材料不丢 / 更多 fail-close / 安全加固)

承接 v1.16.2 的全量脚本审计, 本版清掉一批当初未排进首轮的 HIGH 级发现。至此审计确认的 critical / high 级问题全部处理完毕, 均带回归护栏。仍是纯加固, 零语义改动。

本版内容

  1. 月度归因命中率指标修复: 月度评审的「30 天归因命中率」此前永远为空 —— 统计侧按 JSON 解析归因日志, 而日志实际是文本格式, 每行都被跳过。现统计侧兼容 文本 / 结构化 / JSON 三种落盘格式, 指标恢复工作。
  2. 摄入失败的材料自动重试: 一条内部素材摄入链此前在某批摄入失败时仍把文件标记为"已处理", 导致这份材料永久不再重试、一次瞬时失败即静默丢失。现失败批次的文件不落新状态, 下次运行仍会被检出并重试。
  3. 必填闸缺元数据不再静默放行: 维度评委 review 缺 frontmatter 时, adversarial_view 反方机制必填闸此前静默跳过 (fail-open)。现改为显式告警使其可见 (考虑到存量已有若干历史畸形 review, 采用告警而非硬阻断; 带 frontmatter 但缺字段仍按原硬闸报错)。
  4. 导入路径的 frontmatter 转义: 手工素材导入时, 源文件路径未加引号插入 YAML frontmatter, 路径含 # / : 等特殊字符会截断或损坏元数据。现单引号包裹 + 转义。
  5. 上传文件落盘防路径穿越: 飞书上传文档的落盘目标此前直接拼接原始文件名, 含 ../ 的文件名可写到收件目录之外。现统一取 basename (与既有批量路径一致)。
  6. 导出对显式 null 字段的崩溃兜底: 判断档案的嵌套对象为显式 null 时, 单文档导出会因对 None 取属性而崩。现加兜底降级为空。

一句话: 承接 v1.16.2 审计, 清掉剩余 HIGH 级发现 —— 修好月度归因命中率指标 (读写格式不一致致恒空)、让摄入失败的材料自动重试不再静默丢、把一处必填闸从静默 fail-open 改为可见告警、堵住导入路径的 frontmatter 损坏与上传落盘的路径穿越、给导出加 null 兜底; 至此审计的 critical/high 全部清零。

质量门

pytest 1603 passed / 7 skipped / 0 xfailed · check_public_safe + redact_check 0 命中
2026-07-09 · RELEASE

v1.16.2全量脚本审计与健壮性/安全加固 (一批 fail-close 与崩溃防护)

一次系统性代码审计 track —— 对全部工具脚本做了一遍对抗式排查 (逐个子系统查错 + 逐条独立复核), 把确认的健壮性、安全与正确性缺陷成批修掉, 并给每处补上可执行回归护栏。无新功能, 纯加固, 对既有使用零语义改动。

本版内容

  1. 出站与公网安全闸一律 fail-close: 脱敏 / 公网发布硬闸此前对"读不出 / 非 UTF-8 / 路径不可解析"的文件会静默判为干净 (fail-open); 现统一改为命中即拦 (fail-close), 并让暂存扫描能正确处理中文文件名, 避免高敏内容漏检外泄。
  2. 失败通道不再绕过脱敏: 一条失败提示卡此前会绕过出站脱敏闸把原始文档名带出; 现同样过闸, 命中退回不含文档名的通用提示。
  3. 评分聚合正确性: 技术性失败 (子任务超时) 的评委此前被当作真实 0/占位分计入, 拖低维度均分与档位; 现按失败状态排除并在报告留痕, 不污染合议结果。
  4. 重判不再冲掉历史归因: 滚动重判 (EVOLUTION) 此前会用占位整体覆盖判断档案, 冲掉 30/90/365 归因累积与手工字段; 现改为合并, 只重写身份与评委/版本元数据, 保留归因与手填内容。
  5. 一批崩溃防护: 多处对空值 / 类型不符 / 未加引号的日期 / 畸形配置未兜底会拖垮整条流程 (编译知识库 / 报告渲染 / 场景枚举 / 故障切换链解析 / 校验器等); 现逐一加 None/类型/异常兜底, 单条坏数据只跳过它、不再连累全局。
  6. 敏感度分级修复: 一条内部素材过滤链的高敏 (tian_only) 分级此前形同虚设 (标志位恒不点亮); 现按具体客户名 / 精确金额触发正确升级。
  7. 精确财务数字识别补全: 出站脱敏对千分位写法的精确金额此前漏拦, 现补上。

一句话: 对全量脚本做了一次审计, 把安全闸从 fail-open 改成 fail-close、堵住一处失败通道的脱敏绕过、修好评分聚合把失败评委算进去的偏差、让滚动重判合并而非冲掉历史归因, 并成批加崩溃兜底; 无新功能、零语义改动、全部带回归护栏。

质量门

pytest 1588 passed / 7 skipped / 0 xfailed · check_public_safe + redact_check 0 命中
2026-07-08 · RELEASE

v1.16.1评审报告按提交文档标题命名投递 (各组可区分)

一条真实使用暴露的小痛点 —— 一场竞赛多组提交, 回推的报告附件磁盘名都是通用的 report.md/html/pdf, 在飞书里堆在一起分不清哪组

本版内容

  1. 投递按提交文档标题命名: 报告附件的展示名改为按提交文档原标题派生 (<文档标题>·AI评审报告<格式>), 各组一眼可区分。磁盘布局不变 (仍是每品牌一份 report.*), 只改对外展示名。
  2. 文件名出站闸同步加固: 文件名脱敏闸改查新展示名 (原只查通用磁盘名; 标题可能含敏感词 —— 沿用"内容脱敏但文件名外泄"的历史教训)。命中 → 退回通用名 (仍投递, 只是不裸露标题), 而非丢掉整份报告。

一句话: 报告附件从一堆同名 report.pdf 变成按提交文档标题命名 (各组可区分), 文件名出站闸同步覆盖新展示名。

质量门

pytest 1393 passed / 14 skipped · check_public_safe + redact_check 0 命中
2026-07-08 · RELEASE

v1.16.0LLM 多端点冗余与自动故障切换 (failover · 默认关 · 零运营影响)

一条真实运营诉求 track —— 后台已部署一个模型接口 + 完整的手工切换, 但激活端点整体挂掉时 (网关宕 / 密钥失效 / WAF 持续拦), 调用在单端点内重试耗尽即失败, 夜间无人值守 = 整段时间评审不可用。本版补上"某端点调不通时自动切到备选端点"这一层, 保留手工切换语义不变, 增强健壮性。

本版内容

  1. 跨端点自动故障切换: 首选端点内退避重试耗尽且属端点级错误 (连接 / 超时 / 5xx / 限流 / WAF / 鉴权) → 按配置的有序备选链逐个尝试下一个端点; 每个备选用它自己的模型名。相对"整场评审失败让用户重发", 混模型完成 + 如实标注是更好的失败模式。
  2. 手工切换仍是唯一"首选"真相源: 自动切换是单次调用的内存态, 绝不改写持久配置 —— 不与运维手动设定打架, 首选端点恢复后新任务自动回首选。
  3. 冷却熔断: 某端点硬失败后进入冷却期 (鉴权类失败冷却更长, 密钥失效不会自愈), 期间新调用直接跳过它、走下一个健康端点, 不反复撞死端点 (并发派多评委时尤为关键)。
  4. 只对端点级错误切换: 请求内容问题 (如非法模型名) 原样报错, 不做无谓切换 (换端点也没用); 端点内既有的重试 / WAF 检测 / 节流一律不变。
  5. 主动健康巡检: 一条只读命令体检所有端点 (连通 / 鉴权 / 模型可用), 逐个 ✓通 / ✗失败 / ⊘跳过 + 原因, 退出码可挂巡检; 管理员在飞书发命令也会看到 failover 开关 / 链 / 冷却状态。
  6. 可归因: 每次自动切换记结构化遥测事件; 报告如实记录"本次实际用过哪些模型" (发生过切换才打标), 混模型打分不隐藏。
  7. 零运营影响 = 架构级: 默认关, 关时代码路径与接线前等价; 开关热生效、回滚秒级免重启; 改动集中在 LLM 调用层 + 一个新模块, 不改评审 worker / 飞书一行运营逻辑。

一句话: 部署多个模型接口后, 激活端点整体挂掉时自动按备选链切换 (手工切换仍是首选真相源、切换绝不改配置、冷却熔断防撞死、只对端点级错误切、全程可巡检可归因); 默认关、秒级回滚、零运营影响。

质量门

pytest 1388 passed / 14 skipped · check_public_safe + redact_check 0 命中
2026-07-07 · RELEASE

v1.15.0运维管理台·知识库浏览增强 (中文名 + 搜索 + 交叉链接) + 刷新流程收口

承接上一版把评审文档受控沉淀进企业知识库, 这一版把内部运维管理台的知识库浏览页从"能看"打磨到"好用": 条目显示中文名而非拼音标识、加服务端搜索过滤、修详情页交叉链接, 并把知识库刷新流程文档化 + 补一支缺名审计工具。全部在登录闸后的内部管理台, 纯查看层, 不碰评审运行时

本版内容

  1. 条目显示中文名 (而非拼音标识): 浏览页列表原先直接列文件名 (拼音标识), 改为读每条目的规范中文名 (canonical) 显示, 取不到才回退标识; 标识仍是 URL / 反链身份 —— 只换显示文字、不改文件名, 反链不断。
  2. 服务端搜索 / 过滤: 上千条目原先只能整列滚动, 加搜索 (按中文名或拼音标识子串过滤各分区)。浏览页带无脚本 CSP (故意的 XSS 兜底), 故走纯 GET 表单服务端过滤、不引入前端脚本; CSP 显式放行同源表单提交。
  3. 详情页交叉链接修复: 编译产物页内的交叉链接是静态站 .html 相对格式, 在管理台无扩展名路由下点击 404; 改写为管理台路由 (条目↔条目 / 条目→判断产出查看器), 并让路由容忍 .html 后缀。
  4. 知识库刷新流程收口: 把"先编译、再推快照"提为公开手册站一等步骤 (常见坑: 只推不编 = 推旧货); 内部补一支完整刷新 runbook (编译 → 单写者推送 → 常驻节点自动物化)。
  5. 缺名审计工具: 新增只读脚本, 扫编译产物列出"规范中文名缺失或等于标识"(浏览页会回退拼音) 的条目, 便于补名; 纯只读、不改任何文件。

一句话: 内部运维管理台的知识库浏览页从拼音 + 无搜索 + 断链, 升到中文名 + 搜索过滤 + 可跳转, 配套刷新流程文档化与缺名审计工具; 全程登录闸后、纯查看层、零评审运行时影响。

质量门

pytest 1349 passed / 14 skipped · check_public_safe + redact_check 0 命中
2026-07-07 · RELEASE

v1.14.0评审文档受控进企业知识库 (设计 + 实现 + 抽检 · 零运营影响)

一条真实运营需求 track —— 每天流经评审机器人的文档都是企业知识, 如何受控地沉淀进企业知识库来丰富它? 从厘清边界、零影响严格评审、纠正一个方向性错误, 到实现 + 真实文档抽检, 全程现有多场景评审 + 飞书机器人一行运营代码没动

本版内容

  1. 受控 ingestion 管线 (ADR-013): 评审提交文档经 去重 + 价值分级 + 敏感度分级 + 知识分类, 受控沉淀进内部企业知识库。评审报告 (判断产出) 永不进 —— 维持版本快照不可变性 / 评委独立性 / 归因轨迹 (这是设计红线, 报告与知识库只用单向链接连接)。
  2. 关键边界澄清: 内部存原文, 公开层才脱敏: 企业知识库要的正是内部高敏战略 / 财务 / 组织文档 —— 而脱敏闸 (redact) 的设计用途是公网出口闸, 不该用于内部入库拦截 (否则把最有价值的内容全拦了)。定案: 内部知识库 (私有) 保留原文, 靠敏感度分级 + 私有存储保护; redact 在入库只做探测→升敏感度分级, 不删内容; 真正的脱敏只在公网出口 (公开手册站) 发生。红线: 知识库原文只在私有边界, 禁进公开层。
  3. 零运营影响 = 架构级保证: 三条既有护栏 (评审运行时不依赖知识库编译引擎 / 提交文档已持久只读共享 / 评审上下文来源固定不含新源) + 六条硬约束 (只读上游 / 零钩子 / 独立进程 + 资源限额 + 开关默认关 / 夜间错峰 / 只取已完成 / 不动评审上下文来源清单)。
  4. 知识分类维度: 每份带 category 标签 (企业业务知识 / 关于系统自身的工具文档 / 可扩展), 分开归档、分类查询 —— 元文档不丢弃、单独一类。
  5. 抽检工具链 + 真实验证: 只读 dry-run 逐份分类报告 + 跑内去重 + 文档文本提取; 一批历史文档抽检验证 (模型对 / 分类清晰 / 噪声正确过滤), 全程只读、不写、不接线。
  6. 配套: 运维 runbook (安全 dry-run / 验收标准 / 调优环) + M3 接线灰度计划 (5 步 + 秒级回滚) 已就绪。真接线 (给编译引擎加源 + 传输 + 单场景灰度) 留待另开工 + 灰度观察。

一句话: 把每天流过的评审文档受控地沉淀进企业知识库 —— 内部存原文、公开层才脱敏、报告永不进、全程零运营影响; 设计 + 实现 + 真实抽检全绿, 接线灰度计划就绪。

质量门

pytest 1327 passed / 14 skipped · skill_lint 0 · check_public_safe + redact_check 0 命中
2026-07-07 · RELEASE

v1.13.0群内 @机器人 触发可靠性根治 (身份 ID 精确匹配) + 身份巡检工具

一条真实运营暴露的需求 track —— 用户在群里「引用文件 + @机器人」发起评审, 机器人毫无反应。顺着一句"不能 @ 机器人让它评审吗"查到底, 发现的不是一个孤例, 而是一整类脆弱性: 群内 @机器人 是否触发, 历史上只靠机器人显示名的子串匹配 —— 运维在平台后台改一下显示名, 触发就静默失效, 且只在有人 @ 到时才在日志暴露。本版把它从根上换成按机器人身份 ID 精确匹配, 并补齐巡检工具与运维 runbook。

本版内容

  1. 群内 @机器人 触发"身份化"根治: @机器人 是否触发, 判据从"显示名子串匹配"升级为"机器人身份 ID 精确匹配"(读机器人自身身份、按应用缓存)。运维在后台改任何显示名都不再导致静默失效; 显示名降级为人类可读标签 + 身份取不到时的兜底。改动为 OR 逻辑纯增量 (今天能触发的照样触发) + fail-safe (取不到身份即回退旧的名字匹配), 零回归
  2. 机器人身份巡检工具: 新增只读体检脚本 —— 用每个机器人自己的凭据查平台真实显示名, 与配置逐一比对, 一次性挖出所有"配置名 vs 真实名"不匹配 (不必等有人 @ 到才发现)。并修正一处让脚本在交互式 shell 里"假全绿"的坑: 机器人凭据平时只注入服务进程环境, 脚本须自读 .env (逐字读、不过 bash, 含尖括号值也安全) 才能真查。
  3. 修复一批机器人群内 @ 静默失效: 一次后台批量改显示名, 连坐了多个专项评审机器人的触发匹配, 逐一校准恢复; 上面的身份化根治让此类问题不再复发。
  4. 每日评审配额上调: 把多个评审场景的每人每日配额从 5 上调到 30, 缓解真实使用触顶。
  5. 评委 SKILL 元数据解析健壮性 + 不变式测试: 修一处评委 SKILL 元数据里"列表项以引号开头"导致的 YAML 解析崩 (运行时整段当文本喂 prompt 故未暴露, 但任何解析元数据的工具都会崩), 并加一条不变式测试钉死这一 bug 类 (声明了 frontmatter 就必须能解析)。
  6. 运维手册补 runbook: @机器人 哑火三态分诊 (身份/显示名不匹配 / 非引用文件 / 事件没到服务) + 一条关键的"配置改动 (改场景 yaml, git 同步即生效、免重启) vs 代码改动 (须重启服务)"区分, 另补密钥轮换与配额调整 runbook (均内部文档)。

一句话: 群里 @机器人 是否触发, 从"认显示名"根治为"认身份 ID"(后台改名不再哑火), 配套只读巡检工具与运维 runbook, 每日配额上调。

质量门

pytest 1298 passed / 14 skipped · skill_lint 0 · check_public_safe + redact_check 0 命中
2026-07-06 · RELEASE

v1.12.0多视角评委差异化 (行业抓手 + 抗收敛) + 报告评委明细可跳转

一条真实使用暴露的需求 track —— 一次多评委评审的报告里, 几位行业视角评委读起来"千人一面、没体现各自业务特点"。诊断后发现不是评委没起效, 而是①深度视角资料没进评委上下文 ②浓缩 doctrine 偏抽象缺具象抓手 ③评委都被文档最显眼的结论带跑。本版三管齐下治理, 并顺手修了报告里"评委明细"看似空白的问题。

本版内容

  1. 行业视角评委差异化增强: 给多场景 (运营商 / 生态 / 卫星等) 的行业视角评委内联一段产品级行业抓手 —— 每个视角落到该行业的具体抓手 (而非泛泛的通用结论), 让不同视角评委真正各说各话。抓手均为公开行业框架、可回溯各自视角资料库, 不编造
  2. Phase 4 抗收敛 (对全体评委生效): 评委独立打分时, 先用自己 doctrine 里最独特的镜头找"文档主叙事没覆盖到"的角度, 再回应主叙事; 金句须是"只有这个视角才说得出"的话。直接治"多评委被文档最显眼的结论带跑、读起来千人一面"。
  3. 报告「评委明细」可跳转: 富渲染报告里"评委明细"用的是内部 wiki 链接语法, 此前在 HTML/PDF 渲成死链文本 (看似"没有内容"); 现转成锚点链接 —— 点击跳到上方对应的评委详情卡 (每张详情卡加锚点 id)。真正的每位评委内容一直在"评委详情"卡里。

一句话: 让多视角评委各说各话、落到具体行业抓手 (不再千人一面), 报告评委明细可点击跳转到详情卡。

质量门

pytest 1293 passed / 14 skipped · skill_lint 0 · check_public_safe + redact_check 0 命中
2026-07-05 · RELEASE

v1.11.0进展周报自动化上站 + 官网发布链路修复与护栏

又一条真实运营暴露的需求 track —— 想每周把开发进展汇成一份非技术周报上站, 顺手挖出并修掉了让官网连续多日发不出去的构建坑, 再加一道 CI 护栏防它复发, 并把几条 cron 脚本对 .env 的健壮性一并加固。全是边用边冒的真需求。

本版内容

  1. 进展周报自动生成 + 上站: 每周把开发进展汇成一份非技术周报, 从已公开脱敏的变更日志确定性派生 (版本清单 / 各版一句话 / 命中的方法论 / 数字概览), 由 VitePress 渲染到手册站 /handbook/progress/, 主站与手册都加「进展」入口。零 LLM、可复现, 从 changelog 派生天然过公开层红线。每周一自动生成"上一周"(周一当天已跨新周, 故报刚结束那周) 并推到独立分支等合并上线。
  2. 与备份同一套"不碰工作区"纪律: 周报生成到临时目录, 从主干导出已有周报做 seed (保索引列全), 再用 git 底层 (hash-object + update-index) 造提交推到独立分支 —— 全程不碰工作区与主干 (工作区靠 --ff-only 同步, 脏了会打断部署)。凭据复用备份已配好的 PAT, 无需另配。
  3. 官网发布链路修复: 修掉一处手册页构建坏法 —— 正文里一个裸写的尖括号标签被 VitePress 当成未闭合自定义元素, vitepress build 失败 → 整站部署连续失败多日 (连纯静态页也发不出去)。修复后官网一次性追上最新版本。
  4. CI 加构建护栏: 新增 CI job 跑与线上同款 vitepress build —— 手册 markdown 有裸标签 / 语法坏法, 合并前红灯拦下, 不再靠部署时才静默暴露。
  5. cron 脚本 .env 健壮性: cron 脚本不再 source 整个 .env —— .env 里某些值被 <...> 尖括号包着 (bash source 会把 </> 当重定向符, 整个文件报 syntax error, 令 cron 静默失败; 而 python-dotenv / systemd 按字面读故各服务不受影响)。改为按字面解析; 进展周报与观测周报两条 cron 一并加固。

一句话: 开发进展每周自动汇成周报上站 (零 LLM、不碰工作区), 官网发布链路修复并加 vitepress build 护栏, cron 脚本对 .env 更健壮。

质量门

pytest 1292 passed / 14 skipped · vitepress build 通过 · check_public_safe + redact_check 0 命中
2026-07-05 · RELEASE

v1.10.0运营韧性 (数据自动备份) + 分身对话可观测

本版是一条真实运营暴露的需求 track —— 系统实际跑起来后, 补齐运行时数据的自动备份与版本库卫生, 并把锚点认知分身的对话做成管理台里可回溯、可审计、可按人查看的观测面. 没有预先排期, 全是边用边冒出来的真需求.

本版内容

  1. VM 运行时数据自动备份: 运行时产生的判断数据 (真案 / 失败卡 / 报告文本) 每小时自动快照到独立分支 (append-only). 用临时 index + commit-tree 构造快照, 全程不碰工作区与主干, 与部署同步彻底解耦 (不会打断 --ff-only 拉取); 只留 md/json 文本判断资产, 剔除可再生二进制 (pdf/html); 灾难恢复走选择性 checkout. 机器回收不再丢运营历史.
  2. 版本库瘦身: 取消跟踪历史遗留的可再生导出件 (报告 pdf/html, 均可由 md 经渲染脚本重生), 由 .gitignore 兜住不再入库; 保留真正的源输入. 顺带把运行时数据的 lint 边界理清 (运行时 case 的占位 metric 不再阻断 clean-vault 检查).
  3. 管理台「分身观测」加对话视图: 列出对话线程 (群 / 单聊), 点进看完整对话 —— 分身收到的消息 + 分身的回复, 聊天气泡式渲染; 沿用管理台既有规矩 (路径穿越防护 + HTML 转义 + 登录后只读、无导出).
  4. 每一轮问答永久归档 + 按人展示: 与"近 N 轮滚动记忆"分离的独立永久归档 (append-only, 不受轮数 / TTL 截断), 每轮记发送者 + 时间 + 分级 + 状态; 被出站脱敏闸拦下的轮次也留档 (可审计"这一会拦了什么"); 支持可选的发送者→姓名映射, 面板按人展示.
  5. 分身对话代理: 群维度信任分级: 可信群配置生效后, 对话代理在内部可信群给出完整应答 (此前所有群一律走对外保守档、只给方法论); 外部群仍 fail-close 保守. 信任粒度精确到群标识, 不按人放行.

一句话: 让运营积累的判断数据自动进库不再丢, 让版本库只留该留的, 让分身的每一轮对话在管理台里可回溯、可审计、可按人查看.

质量门

pytest 1276 passed / 14 skipped · skill_lint 0 error · check_public_safe + redact_check 0 命中
2026-07-04 · RELEASE

v1.9.0运维管理台 (只读 web 视图) + 全链路遥测底座

本版新增一个只读的运维管理台网页 —— 把散落在日志里的机器人运行状态、评审任务处理过程、LLM 用量, 汇成一个登录后可视化查看的后台, 并为此铺了一条 fail-open 的遥测底座.

本版内容

  1. 遥测底座 (只记元数据, 不含正文): 单文件 SQLite, 全部埋点 fail-open (遥测挂了绝不影响主流程). 采集四类信号 —— 机器人心跳 / 收到消息的活动流 / 模型切换审计 / 评审流水线各 Phase 的 LLM token 与花费估算. 只落元数据与指标, 消息与报告正文永不入库 (隐私红线).
  2. 管理台六页: ①总览 (在线数 / 总 token / 累计花费 / 近期活动) ②机器人 (全场景在线状态 + 今日消息数) ③任务列表 → 任务详情 (原始文档 / 处理过程时间线 / 各 Phase token 与花费) ④用量 (按场景 / 按模型 / 每日花费) ⑤分身观测 (置信档分布 / 有据率 / 拒答率) ⑥活动日志. 自包含渲染, 主题感知, 零外链.
  3. 两层访问控制 + 只读: 网络层零信任网关 (邮箱验证) + 应用层密码 (stdlib pbkdf2 + hmac 签名会话, 无第三方依赖); 两 env 缺任一即 fail-close 拒绝服务. 只读, 无任何写 / 导出 / 分享路由 (防机密二次外泄).
  4. 原始文档 / 报告查看走白名单: 文件读只允许特定目录, 解析后必须落在白名单根之下, 挡路径穿越 (.. / 绝对路径 / symlink 逃逸); 服务的报告 HTML 带 CSP sandbox, 中和"用户文档注入脚本在后台同源执行"的存储型 XSS.
  5. 安全审计: 对这套对外网页做了一轮审计并修两项 (页面外部数据 HTML 转义 + 服务文件 CSP sandbox); 审计确认会话 / 限速 / 白名单 / 参数化查询 / 只读边界均就位, 安全模型 (含已接受风险) 记录在案.

一句话: 把机器人的运行状态、评审的处理过程与 token 花费, 汇成一个登录后只读可视的运维后台, 底下是一条只记元数据、fail-open 的遥测底座, 外面套两层访问控制.

质量门

pytest 1267 passed / 14 skipped · skill_lint 0 error · check_public_safe + redact_check 0 命中
2026-07-03 · RELEASE

v1.8.0锚点认知对话式代理 (对话 + 文档评议) + 长连接异步加固

本版新增「锚点认知对话式代理」—— 一个把锚点判断 doctrine 工程化后、可在飞书里对话与评议文档的单视角代理, 并对长连接事件处理做了异步加固与灰度观测.

本版内容

  1. 锚点认知对话式代理 (对话 + 文档评议): 基于锚点判断 doctrine 的单视角代理, 支持两类交互 —— ①对话 (问什么答什么) ②文档评议 (发一份材料, 用锚点视角评它, 非打分). 每条结论自标三档置信:【有据】(doctrine 有出处) / 【推演】(拿框架推新问题, 明说) / 【存疑】(无定论或材料不足), 引用锚点观点必带出处 —— anti-fabrication 硬约束, 分身不替锚点编造.
  2. 收件人分级 + 出站脱敏: 按收件人分 T0 / T1 / T2 三级红线 (内部完整 / 内部单聊或可信群 / 外部仅方法论); 对外 (T2) 走 fail-close 出站脱敏闸, 命中敏感即回避.
  3. 群 / 单聊交互: 群里发文档即评 (同评审机器人, 无需 @ / 引用); 对话需 @ 到本代理才应答 (只 @ 别人不触发); 也支持「引用某文件 + @」回评旧文件. 多格式: PDF / Word / PPT / Markdown / 文本 (逐页 / 逐段提取文字 + 表格 + 备注).
  4. 长连接异步 fast-lane: 事件处理丢后台线程池, 数十秒的 LLM 调用不再阻塞飞书长连接心跳 (此前评议期间会掉线重连).
  5. 灰度观测: 落盘每次交互的置信档分布 / grounded 率 / 拒答率 / 脱敏命中, 一条命令聚合查看.
  6. 展示层打磨: 回复摘掉内部溯源标注 (对外不显文件名:行号, 内部仍溯源); 每条回复末尾一句「核心结论」收敛落点; 对话简洁化 (评议保结构); 回执卡如实预期评议时长.

一句话: 把锚点判断做成一个能对话、能评文档、带三档置信与出站脱敏的数字分身, 并把长连接稳定性与灰度观测补齐.

质量门

pytest 1135 passed / 13 skipped · skill_lint 0 error · check_public_safe + redact_check 0 命中
2026-07-03 · RELEASE

v1.7.0OP2 评分标准 v2 + 多场景机器人上线运维加固 + 自动发版

本版把 OP2 评分标准更到 v2 (取消「一页表达质量」但总分保持 100), 补齐多场景评审机器人批量上线暴露的运维坑, 并把版本发布自动化。

本版内容

  1. OP2 评分标准 v2: 取消「一页表达质量」独立维度, 但总分保持 100 —— 把这 5 分并入每个场景的一个既有维度 (公司级并入"牵引机制与责任节奏", 各 BG 并入"时间节点与责任组织", 各专项并入其对应的责任 / 结果维度)。区别于此前 v1.6.2 (删掉后降为 95): v2 是重新配比而非减分。定级仍按"占满分百分比"归一 (门槛 60% / 80%), 口径不变。
  2. 多场景机器人回推健壮性: 修复"评审完成但结果卡送不出去"的一类回推故障 —— 多机器人架构下, 结果回推需按场景对齐到对应机器人的凭据; 当承载回推的进程缺该场景凭据时会静默回退默认机器人导致投递失败。现在缺凭据时显式告警指出根因与处置, 不再静默; 运维手册同步纠正 (新增机器人后需一并重启的进程清单)。
  3. 评审完成卡片精简: 去掉卡片上一行内部运维提示 (背景知识新鲜度巡检信息), 该字段仍保留在结果数据与巡检工具中, 只是不再呈现给评审用户。
  4. 版本发布自动化: 推送 v* tag 时, 由 CI 从本变更日志抽取对应版本段落, 自动创建 / 更新 GitHub Release (幂等, 已存在则更新)。以前手动建 Release 容易漏。
  5. 场景总览工具: 新增内部工具, 从场景与评委配置自动生成"机器人 + 各场景评价标准"总览, 便于运维核对。

一句话: 评分标准更到 v2 (换配比不减总分), 多机器人上线的运维坑治本 (回推缺凭据显式告警 + 手册纠错), 发版一步到位 (tag 即 Release)。

质量门

pytest 1070 passed / 13 skipped · skill_lint 0 error · check_public_safe + redact_check 0 命中
2026-07-02 · RELEASE

v1.6.2OP2 评分维度精简 (删「一页表达质量」)

时间紧时不再对"一页表达质量"做硬性要求, 本版把它从所有 OP2 评审场景 (公司级 / 各 BG / 各专项) 的评分维度里删除。

本版内容

  • 删维度: 全部 OP2 场景 panel 去掉"一页表达质量"维度 —— 每场评审从 7 维度降为 6 维度, 满分相应 100 → 95。
  • 定级不受影响: 等级按"占满分百分比"归一 (门槛 60% / 80%), 满分变化不改变等级判定 —— 同一份材料拿到相同的达标比例, 等级一致。
  • 格式评委保留: 不再单独给"一页表达质量"打分, 一页表 / 可评审性的关切并入"牵引机制与责任节奏"维度与反方意见, 仍主笔"修改后一页表草案"。

一句话: 评分维度按需精简, 定级口径保持一致 (百分比归一), 改一处配置即全场景生效。

质量门

pytest 1061 passed / 13 skipped · skill_lint 0 error · check_public_safe + redact_check 0 命中
2026-07-02 · RELEASE

v1.6.1报告交付前来源脱敏 (安全补丁)

评委按 anti-fabrication 纪律会在反方分析 / 金句里引用支撑来源, 其中夹带了内部原始出处 —— 内部文件路径、原始素材文件名、内部合成 / 阶段引用、内部会议纪要名、锚点真名。这些是内部审计线索, 不该出现在交付给用户的报告 (report.md / 富 HTML / PDF) 里。本补丁在报告落盘 / 渲染成交付件前加一道来源脱敏 transform

本版内容

  • 来源脱敏: 括号内 (来源: 内部出处)(内部佐证); 行内来源引用 → 去除; 内部文件路径 → 内部资料; 内部会议纪要名 → 内部会议纪要; 锚点真名 → 锚点
  • transform 而非阻断: 与出站阻断闸 (redact_check, fail-close) 不同, 这是改写 —— 报告仍可读、仍看得出"有佐证", 只是不暴露具体内部出处 / 真名。
  • 只作用于交付件: report.md / 富 HTML / PDF 脱敏; 原始评委 review 文件保留完整来源, 内部审计可回溯。
  • 不误伤合法字段: attribution 的 data_source (值本就是通称) 原样保留。

一句话: 评委可以放心引用内部佐证做交叉验证, 而交付出去的报告不会把内部出处 / 真名带出去。

质量门

pytest 1061 passed / 13 skipped · skill_lint 0 error · check_public_safe + redact_check 0 命中
2026-07-02 · RELEASE

v1.6.0评审报告自动可视化 — 发一份材料, 回来一份带评分的图文报告

OP2 / 公司级评审 (100 分制) 此前跑完只回推 markdown 与朴素 HTML; "评分在哪、谁给了几分、短板在哪一维" 得自己在文字里拼。本版让评审报告自动渲成带评分卡、评级带、维度×评委热力图、评委详情卡的富 HTML + PDF —— 发一份材料进去, 回来的就是一份能直接看的图文报告。

本版内容

  1. 自动富可视化回推: 流水线出报告后, 一个机械式 (纯 Python · 零 LLM · 确定性) 渲染器把 100 分制评审报告渲成自包含富 HTML —— 4 张 KPI 卡 (总分 / 等级 / 锚点心证 / 评委数) + 评级带 + 维度×评委得分热力图 (按各维满分比例着色) + 每位评委详情卡 (各维小分 + 人格化金句 + 反方三问) + 原方案摘要 / 评议 / 修订建议三段 —— 再 Chrome 转 PDF, 接现有回推链路自动发回。全程 fail-open: 富渲染 / PDF 任一失败自动降级朴素渲染, 绝不影响报告投递
  2. 手动精修导出 (Set C): 为 100 分制评审新增一套 LLM 精修版可视化模板, 供 showcase 级导出 (与自动机械渲染并存, 不同 tier — 自动=确定性/秒级, 精修=LLM/更细)。
  3. 评审健壮性三修 (真实生产暴露 → 治本 + 兜底): - 评委打分表自动规整: 模型偶尔把分析正文写在结构化元数据 (frontmatter) 前面, 导致该评委的分数 / 名字解析不到、被静默漏计、悄悄拉低总分。现在写盘时自动把元数据块提到顶部, 不再丢分。 - 聚合防呆: 某评委确实无有效分数时, 从均值排除 (技术失败不按 0 分拖低), 并在报告里显式标注 "N 位评委未出分" —— 不再悄悄改变总分与等级。 - 可视化更稳: 热力图的维度定义从解析后的评委组配置取 (不再因快照缺字段而整段消失); 评委名优先用其自起的角色名, 缺则回退规范中文名。
  4. 模型网关健壮性: 定位并 (经网关侧配置) 解决了某模型网关的上游超时问题, 通道恢复可用; 报告 "出厂铭牌" 记录用了哪个网关 / 模型, 出问题可追溯。

一句话: 评审从 "回一份要自己读的文字" 升级成 "回一份能直接看的图文报告", 且评委丢分 / 热力图缺失 / 名字错这几类真实坑全部治本 + 兜底。

质量门

pytest 1053 passed / 13 skipped · skill_lint 0 error · check_public_safe + redact_check 0 命中
2026-06-30 · RELEASE

v1.5.0换模型工程化 + 飞书运维命令

模型迭代很快, "换一个模型试试" 应该像点菜一样简单, 而不是改 5 个环境变量再重启服务。本版把"换模型 / 比模型 / 在哪里操作"全部工程化。

本版内容

  1. 一键切换 (CLI 菜单 + 短命令): 一条命令进交互菜单, 编号选网关 → 自动拉该网关的可用模型列表编号选 (不用记模型名) → 可当场重启生效。装成短命令 llm, 任意目录直接敲。
  2. 模型客观评测: 同一份文档喂给多个模型各跑一遍, 自动出对比表 —— 流水线是否跑通 + verify 是否过 (稳健性) / 评委结构化输出解析成功率 (格式稳健性) / 分数分布 (模型偏宽松还是严苛) / 成本与耗时。客观指标, 让"换了模型质量差多少"有据可依。
  3. 飞书运维命令: 管理员在飞书里 (单聊, 或群里 @机器人) 直接发命令切模型 / 列模型 / 看帮助 (/model /models /help), 不必 SSH。/help 是完整命令手册, 所有人可看; 切模型严格限管理员白名单 (fail-close)。
  4. 热生效不重启: 切模型只改配置, 评审 worker 每单作业前重读配置, 下一单自动用新模型, 无需重启。
  5. 报告自带"出厂铭牌" (v1.4.2): 每份报告记录用了哪个 provider / 模型 / 端点, 与评测对照做质量归因。

一句话: 换模型从"运维动作"降级成"日常操作", 而且有客观对比 + 全程留痕

质量门

1017 passed / 13 skipped · skill_lint 0 error · 公开层 check_public_safe + redact_check 0 命中
2026-06-30 · RELEASE

v1.4.2报告记录"是谁、用什么参数生成的"

换模型是常态 (不同 provider / 不同网关 / 快慢模型分离), 但报告此前不记录"这份是哪个模型、什么参数跑出来的" —— 想横向比较"换了模型后打分质量差多少"就无从回溯。本版让每份报告把生成信息写进开头。

本版内容

  • 报告 (及不可变版本快照) 的开头新增生成元数据: provider / 解析合成用的模型 / 评委打分与合议用的模型 / 端点, 外加固定的"哪个阶段用哪个模型"映射。
  • 机器可读, 在报告最顶端 —— 之后做质量归因 (同一份输入, 不同模型/网关, 分数与等级差多少) 直接读这块 + 评分摘要即可横向对比, 历史版本也可追溯。

一句话: 报告从此"自带出厂铭牌", 质量比较有了可靠的归因锚点。

质量门

969 passed / 13 skipped · skill_lint 0 error · 公开层 check_public_safe + redact_check 0 命中
2026-06-30 · RELEASE

v1.4.1真打分上生产后的三处修正

v1.4.0 上线后, 两个真实场景在生产 VM 上端到端跑了一遍, 暴露三处问题, 本版修齐。打分本身一直是对的, 三处都是"周边"。

本版内容

  1. 锚点保留自己的尺子: 自定义维度满分制 (公司级 100 分) 下, 锚点评委本应用自己的独立心证打分, 而非被强行套上维度满分制。修正后锚点心证单列 (独立 1-10 尺子), 不再与维度总分跨尺度混算。
  2. 评委评语剥代码围栏: 部分模型偶把整份评委评语包进 ``` 代码围栏, 导致解析失败、该评委被判废; 多评委 panel 上凑够两个就让整份报告交付失败。改为评语落盘前剥最外层围栏 (此前只在合议环节做了, 评委环节漏了)。
  3. 文案随场景自适应: ① 受理回执按场景打分体系措辞 (自定义维度 / 5 镜头), 不再一律写"5 镜头"; ② 单评委场景 (如竞赛) 的合议不再编造不存在的"评委间分歧"。

一句话: 引擎对了, 把锚点的独立性、模型输出的健壮性、文案的场景贴合度补齐 —— 真实跑一遍才照得出的边角。

质量门

965 passed / 13 skipped · skill_lint 0 error · 公开层 check_public_safe + redact_check 0 命中
2026-06-29 · RELEASE

v1.4.0竞赛/公司级"真打分"落地(自定义维度满分制)

多场景体系早就支持在配置里声明"自定义评分维度 + 满分制"(竞赛 10 分 4 维 / 公司级 100 分 7 维),但此前流水线只校验、不消费这套配置 —— 评委实际仍按通用 5 镜头(1-10)打分。本版把"配置里写的 rubric"真正接进打分引擎,让两类场景按各自的维度与满分出分。

本版内容

  1. 评委按真维度打分: 声明了 scoring_mode: sum_max_score 的场景, 评委改按该场景的自定义维度(各带满分)逐项打分, 并读到每维的评分标准, 不再套用通用 5 镜头。
  2. 满分相加 + 分级/排名: 各维度满分相加得总分; 常规评审按门槛归一分级(如 <60 重写 / <80 修改 / 否则进人工评审), 竞赛无门槛仅按总分排名。
  3. 竞赛排名榜端到端: 竞赛报告落地排名所需的结构化字段(项目名 / 组名 / 各维度得分 / 总分), 排名工具据此自动出榜。
  4. 向后零影响: 未声明满分制的场景仍走 5 镜头加权(锚点 anchor_delta 等历史行为完全不变)。

一句话: "5 镜头量判断质量, 自定义维度量方案优劣" —— 两套尺子此前只有前者真在跑, 现在后者也跑起来了。

质量门

953 passed / 13 skipped · skill_lint 0 error · 公开层 check_public_safe + redact_check 0 命中
2026-06-29 · RELEASE

v1.3.2接入第三方模型的韧性兜底(四层)

v1.3.1 接第三方网关跑通后,实战发现指令遵循较弱 / 较新的模型会偶发格式问题(整篇报告被波及)。本版把流水线对"模型偶发犯浑"的韧性补到四层,不靠运气。

本版内容

  1. Phase 0 解析跑偏重试: 模型把"解析文档"当成"评审文档"(返回评分字段而非解析 schema)→ 缺必填字段自动重试 + 强化 reprompt 拉回"解析而非评审"。
  2. §B 合议剥代码围栏: LLM 偶尔把整段输出包进 ``` → 自动剥最外层围栏。
  3. §B 合议退化重跑: 长合成偶发退化为 token 汤(中英文碎片粘连)→ 启发式检测 + 重跑,取最干净一版。
  4. §C 评委建议剥孤立围栏: 评委把整段 review 包进围栏导致截取时残留单边 ``` → 按奇偶剥孤立围栏(成对代码块不动)。

这些兜底是"重试 / 修剪",不改判断内容;模型选型仍是质量的主要杠杆。选模型时确认网关确有该模型通道(有的名字在列表里却无后端,会 503)。

质量门

931 passed / 13 skipped · skill_lint 0 error · 公开层 check_public_safe + redact_check 0 命中
2026-06-29 · RELEASE

v1.3.1LLM provider 一键切换 + 多模型接入韧性

v1.3.0 当天接着把"换 LLM"工程化:支持随时切到不同 provider / 模型(含第三方 OpenAI 兼容网关),并对模型间的"指令遵循差异"做韧性硬化。

本版内容

  1. LLM provider / 模型 一键切换 (scripts/llm_switch.py): 按 profile 一条命令切换,不必手敲 5 个 BOSS_LLM_*config/llm_profiles.yaml 定义 profile(无密钥可入库:provider / base_url / model_fast / model_deep / api_key_env);密钥与私有端点留 .env(${VAR} 引用,不入库)。use <name> 只改 .envBOSS_LLM_* 5 行;--model / --model-fast / --model-deep 让端点上任意模型即时可用;list / show(key 打码)。加新模型 = 加一个 yaml 段,不改代码。
  2. 接第三方 OpenAI 兼容网关: 同一引擎可跑 OpenAI / 智谱 / 各类聚合网关上的几十个模型(gpt / deepseek / 等),快/慢模型分开(解析用稳的、评委用强的)省成本又保质量。
  3. 抗模型"指令遵循差异"韧性 (2 处硬化): ① Phase 0 文档解析器遇 schema 跑偏(模型把"解析"当成"评审")时自动重试 + 强化 reprompt 拉回;② 报告渲染对 LLM 偶发把整段输出包进代码围栏做兜底剥除。换指令遵循较弱的模型也更不容易因偶发格式问题失败。

质量门

918 passed / 13 skipped · skill_lint 0 error · 公开层 check_public_safe + redact_check 0 命中
2026-06-29 · RELEASE

v1.3.0多场景 VM 联调闭环 + 评委体系完整性

多场景评委体系 (v1.2.0) 完成 VM 真实联调端到端打通 — 两种场景类型 (常规评审 review / 竞赛 competition) 各自经独立飞书机器人收文档 → 按场景路由 → 评委流水线 → 报告回推, 全链路在云 VM 跑通。本版是多场景落地 (v1.2.0) + P3 工程强化 (见下) 的联调收口与并发硬化, 并补齐评委显示层。一条"洋葱式" bug 链 (连接 → 受理 → 流水线 → 评委加载 → LLM 调用 → 评委编排, 每层只在真实联调才暴露) 全部修复。

本版内容

  1. 多机器人长连接并发硬化: 多个飞书机器人在单进程内并发接入时, 改为每机器人独立子进程 (规避长连接 SDK 进程级全局事件循环冲突 — 多 bot 同进程多线程 start() 会相互踩踏, 只有第一个连得上)。任一子进程异常退出整体重启, 保证一致状态。
  2. 异步回推按场景对齐机器人身份: 评审 worker (独立进程) 回推报告前, 按 job 的场景反查对应机器人凭证, 报告从"用户对话的同一个机器人"发出, 不再串到默认机器人。
  3. LLM 限流韧性: provider 调用层加 429 / 5xx / 超时指数退避重试 (默认 5 次, base 2s 上限 30s + jitter, env 可调); 评委 Phase 4 并发数 env 可配。并发派多评委打第三方 LLM 网关 (如 GLM) 时不再因瞬时限流批量失败。
  4. 场景评委解析正确性 (2 修): ① 固定评委编组的场景 (含竞赛场景) 按解析后 panel 评委列表跑, 不再误兜底成默认锚点; ② 评委 SKILL 解析支持场景 panel 的显式 skill 路径 (跨场景共享评委不再"未找到"占位)。
  5. 评委显示名 (中英文): 报告里评委按 panel 展示名 (含中英文) 渲染, 替代内部 slug; frontmatter 机器字段与 wiki 链接仍用 slug 可寻址。
  6. 灰度运营 SOP: VM 联调手册补「加第 N 个机器人」「灰度开通用户 (抓 open_id → 填白名单; open_id 每应用唯一)」标准流程 + 多类实测排查 (凭据空行覆盖致鉴权失败 / 端口占用 crash-loop / 落后多 commit 安全升级 / 回推串台)。场景日配额 env 可配。

质量门

900 passed / 13 skipped · skill_lint 0 error · 公开层 check_public_safe + redact_check 0 命中

多场景评委体系 (v1.2.0, 2026-06-25) 与本版 P3 工程强化 (2026-06-28, 见下) 之前未单独打 tag, 随本版 v1.3.0 一并正式发出。

2026-06-28 · RELEASE

v1.3P3 工程强化 + 评委 doctrine 源

v1.2.0 之后的工程强化与评委体系完整性建设 (随 v1.3.0 一并发布)。

本阶段内容

  1. P3 工程强化(4 项): 行业客户视角评委扩充(虚拟 persona + 免责声明)· 飞书事件按机器人路由到对应场景 · 月报 --scene-breakdown 分场景使用统计 · 竞赛排名榜生成(自包含 HTML,维度列由 panel 动态决定,支持 --top N)。
  2. anchor research 回测 harness: holdout 历史回测评分(≥2/3 方向一致门 + 反循环护栏),为 anchor 心智模型 confidence cap 解除提供前置门。
  3. 归因信号拉取接线: checkpoint 加可选指标定位字段 + fetcher 契约穿透;结构化数据源 fetcher 在"已知/未知边界"显式降级(契约未定前不伪造数值)。
  4. PDF/DOCX 评审支持: 确认已落地(pypdf + python-docx 直接提取,绕开 pandoc),更正过时的"延迟项"记录。
  5. 评委 doctrine 源蒸馏: 引入真人视角蒸馏库作为评委 doctrine 源(全部公开材料 + source 锚点,反捏造纪律内建);按业务线分类,供后续评委完整性建设蒸馏使用。库内含真实人物画像,仅内部,不入公开层

质量门

871 passed / 13 skipped · skill_lint 0 error · 公开层 check_public_safe + redact_check 0 命中
2026-06-25 · RELEASE

v1.2.0多场景评委体系 (Multi-Scene Panel) 落地

自 v1.1.3 累计 5 commit。主线: 多场景评委体系全链路实现 — 同一引擎按场景配置独立评委编组、评分维度与飞书机器人入口。

本版内容

  1. 多场景评委体系 (ADR-012): 引入 Scene 作为 Panel 的上层部署单元。scene.yaml 描述场景级配置 (scene_type / bot 绑定 / 访问控制); panel.yaml 通过 extends 继承基础 panel 并按差异覆写; scenes/shared-judges/ 统一存放跨场景可复用的专项评委 SKILL.md。
  2. scene_type: review / competition: 两种场景类型硬编码约束 — competition 场景强制 anchor_judge: null + show_scores_publicly: true, 由 scene_loader 在加载时校验, 违反即抛错阻断流水线。
  3. 6段式报告渲染 (op2_output.py): render_op2_6section() 输出总分 / 分项得分 / 必改项 / 补充建议 / 删减建议 / 一页汇总表; 等级按百分比计算, 兼容任意总分制 (review 100 分 / competition 10 分均适用)。
  4. 3 类专项外部视角评委: 数据平台工程化 / 技术选型纪律 / 资本市场视角 — 均为虚拟角色, 含标准 disclaimer + adversarial_view 三字段。
  5. e2e smoke 测试 (smoke_e2e.py smoke-scene): 对单场景执行全链路静态校验 (不调 LLM, 不写磁盘); make smoke-scene SCENE=<slug> 快捷入口; 适合 CI 门控 + VM 联调前检查。
  6. 40 个新 e2e 测试 (tests/unit/test_scene_e2e.py): review 链路 / competition 链路 / 所有真实场景参数化 smoke / 服务器一致性 / 场景隔离。

升级风险

  • 纯加法: 无 scene.yaml 时系统回退到单机器人模式, 原 panel.yaml 直接用法不变。
  • smoke_e2e.py 新增 smoke-scene 子命令, 未改动现有 full / verify 子命令。

质量门

pytest tests/                       790 passed, 13 skipped
skill_lint                          0 error
check_public_safe (www + handbook)  0 命中
redact_check (公开层)               0 命中
2026-06-25 · RELEASE

v1.1.3REVIEW 真 web 调研 (Tavily/Brave) + kimi-cli provider

自 v1.1.2 累计 2 commit (+ 数据补录). 主线: 把 REVIEW 模式从"只读文档自评"升级为"带真实外部印证的评审"。

本版内容

  1. REVIEW 真 web 调研 (ADR-007 C3): 评审模式新增 phase_2_review_verify —— 按文档 topic + 自述 claims 生成 4-6 条检索 query, 经 _fetchers.web_search (复用 Tavily / Brave 原语) 拉外部证据, 落 dim_websearch.md; phase_3_review_synthesis 注入 web evidence, gaps / 矛盾 / 共识优先引外部信号印证或挑战文档自述, 不再让评委只在文档内部循环。--verify flag 开启 (worker 侧 defaults.review_verify--verify); 无 API key 优雅降级回旧 REVIEW 行为, 不阻断交付。
  2. kimi-cli provider: 新增本地 Kimi CLI provider, 与 codex-cli 同范式 —— 非交互 spawn kimi -p, 解析首行 stream-json。CLI provider 矩阵扩到 5 个 (codex-cli / kimi-cli / anthropic / anthropic-compatible / openai-compatible)。
  3. 半年度判断报告构建脚本: scripts/build_halfyear_boss_report.py —— 把一个周期内的多份判断聚合成半年度 boss 报告的构建工具。

升级风险

  • REVIEW web 调研: 向后兼容; 未配 TAVILY_API_KEY / BRAVE_API_KEY 时降级到现有 REVIEW 行为, 无破坏。出站仍过 redact_check 闸不变。
  • kimi-cli: 加法式 provider; 未装本地 Kimi CLI 时不影响其余 4 个 provider。

质量门

pytest tests/                       605 passed, 4 skipped
skill_lint                          0 error
check_public_safe (www + handbook)  0 命中
redact_check (公开层)               0 命中
2026-06-18 · RELEASE

v1.1.2评审报告多格式 (md+html+pdf) + 公开层脱敏硬化

自 v1.1.1 累计 6 commit. 两条线: ① 飞书评审报告三格式投递; ② 公开站一次性脱敏全量体检 + 闸硬化

本版内容

  1. 评审报告多格式 (md + html + pdf): 飞书群 / 单聊评审报告除 report.md 外, 同时渲并投递 html (python-markdown 自包含渲染, 内嵌 CSS / 无外链 / 免系统 pandoc) + pdf (chromium headless --print-to-pdf)。每格式 best-effort 互不拖累: markdown 库缺 → 只 md / chromium 缺 → md+html / 都装 → 三格式; 任何渲染失败绝不影响 md 投递。三格式同源 → 出站脱敏内容闸只查一次 (report.md), 命中三格式都不外发; 各格式各查文件名闸。
  2. 公开层脱敏全量体检 + 闸硬化: 公开站 (www/ + handbook-src/) 一次性扫飞书标识符 / 邮箱 / IP / 手机号 / 公司机构名 / 其他专名 —— 把内部工具名、运营者拼音 handle、个人飞书足迹规模数字去标识化为方法论中性表述; scripts/check_public_safe.py 增 fail-close 硬规则覆盖拼音 handle、内部工具名、飞书标识符类型 (open_id / chat_id / app_id 模式级)。同类泄漏从此被 preflight CI 直接拦, merge 不进。

升级风险

  • 多格式: 向后兼容; 未装 markdown / chromium 时降级到现有 md 行为, 无破坏。
  • 闸硬化: 仅公开层 (www/ + handbook-src/); 内部 docs/ 不受影响 (私有层保留真实名)。

质量门

pytest tests/                       595 passed, 4 skipped
skill_lint                          0 error
check_public_safe (www + handbook)  0 命中
2026-06-18 · RELEASE

v1.1.1飞书评审机器人灰度上线 + 群评审 + 文档摄入鲁棒性

自 v1.1.0 累计 19 commit. 里程碑: review-service 从「E 侧 MVP 可用」走到灰度真实上线 — 飞书机器人单聊 + 群评审端到端跑通并投递完整报告. 本版几乎全是 go-live 实战暴露的鲁棒性与运营缺口的收口.

本版内容

  1. 飞书长连接上线: 海外 VM 用 lark-oapi WebSocket 长连接接收事件 (中国飞书 → 海外 VM 入站不通的 OUTBOUND 方案), 无需公网入站 / URL 绿勾 / 备案. server 主动连飞书.
  2. 群评审 (A4): 机器人可加入飞书群, 群里拖文档即评审, 结果回推到 (chat_id); 只对真人发的文件消息触发 (防刷屏 + 防 bot↔bot 循环), 鉴权仍按提交者.
  3. 文档摄入鲁棒性: docx / PDF 文本提取; 扫描件 / 纯图片 PDF (无文字层) 给针对性提示而非泛泛重试; LLM 偶发把整篇输出包进 markdown 代码围栏 → frontmatter 顶格兜底 (merge 含全评委 + verify 双路径).
  4. REVIEW 降级交付: 单个维度评委结构化输出异常时, 报告照常交付 (该评委从合议排除), 不废掉整条已生成报告; FRESH 判断 (高风险) 仍严格硬失败.
  5. 出站脱敏运营化: 单租户 redact 放开开关 + 群投递脱敏 (trusted_groups 精确放行 / 默认跟随 redact_review); out-of-box fail-close 不变. 运营 config 旋钮 (白名单 / 群 / 配额) 改完无需重启 (load_config 每条消息现读).
  6. attribution checkpoint LLM 起草: 30/90/365 验证点由 deep 模型基于判断正文起草具体可证伪信号 (draft 待审), 替代空占位; 失败回退占位, anti-fabrication 约束.
  7. 运营 runbook: 本机日常同步、加新群、加灰度白名单、调每日配额、VM 部署逐步引导 固化为文档; 公开手册站加「本地同步与数据新鲜度」页.

升级风险

  • 群脱敏默认跟随 redact_review: out-of-box fail-close 不变 (redact_review 缺省 strict); 仅运营者显式放开单聊时群一并放开
  • 改动均向后兼容: 1:1 评审、FRESH 判断流水线行为不变; anchor 评委显示由 slug 改为「锚点」(仅人面展示, 结构字段不变)

质量门

pytest tests/                 585 passed, 4 skipped
skill_lint                    0 error
check_public_safe (www/)      43 文件 0 命中
2026-06-14 · RELEASE

v1.1.0review-service E 侧 MVP + 模型 env 化 + 公开层硬化

自 v1.0.0 累计 15 commit. 平台维度: review-service 从 PRD 走到 E 侧 MVP 可用 + 流水线模型抽象出来支持非 anthropic 端点 + VM 部署有了 runbook. 公开层维度: 一次脱敏审计补齐 5 条内容硬规则 + 4 条文件名规则, 7 个老 URL 上 takedown 占位 + GSC 主动 deindex.

本版内容

  1. review-service E 侧 MVP (PR #15 + #16): boss_server v2 完整 — worker / review endpoints / 白名单配额 + 飞书事件处理 + 卡片回推链 (A3.2/A3.3 收口). 路径接通: 飞书 @ 本项目 → 队列 → worker → 回推卡片.
  2. 流水线模型 env 化 (PR #18): BOSS_LLM_MODEL_FAST / BOSS_LLM_MODEL_DEEP 抽出为环境变量, 流水线不再硬编码 anthropic 端点. 智谱 GLM / 阿里通义 / OpenAI-compatible 第三方 LLM 网关均可接入.
  3. 数据 repo 物理剥离 (ADR-011 S0.2): anchors raw 语料拆出到独立私有 boss-vault-data repo, vault 主仓收敛为 symlink. confidential 数据与方法论代码物理分层.
  4. 部署链补齐: 部署预检修掉 deployment.md §2 照做必踩的 5 个坑 (PR #17); VM 部署逐步引导固化为 deploy-walkthrough-vm.md runbook (PR #19).
  5. 公开层脱敏硬化 (本次会话): scripts/check_public_safe.py HARD_PATTERNS +5 内容规则 (真实客户名 / 股票代码 / wiki slug 形态锚点名 / 锚点生平指纹 / 原机构名规则补大小写覆盖). 新增 FILENAME_HARD_PATTERNS + scan_filename() 拦文件名级泄漏. 配套 8 个老路径上 takedown 占位 (noindex + meta refresh) + Google Search Console URL Removal 2 条 prefix 请求.
  6. 工具增量: scripts/migrate_case_schema.py 把扁平 case.json 一键迁移到 canonical 嵌套 schema. 触发 schema mismatch 时 (缺 context/skill_used/..., trigger 在顶层而非 context.trigger_event.named_event), 一行 --write --lint 修完并自验.
  7. 公开手册微更: handbook presentation 加 4 张评分透明度幻灯片 (S7-S10), 让 5 镜头 × 6 维度的打分链路可点击对照.

升级风险

  • 流水线模型抽象 (改动 2): 老调用方继续用默认值 (claude-sonnet-X-Y) 无变化, 自定义端点需新增 env 才会被路由
  • ADR-011 S0.2 (改动 3): 仅老 vault 升级需手动 symlink data repo, 新部署按 getting-started/installation 走自动到位

质量门

check_public_safe (www/, 75 文件)   0 命中
pytest tests/unit                    486 passed, 5 skipped (coverage 38.65%)
skill_lint --dry-run                 0 error, 0 warning
make smoke / smoke-e2e               全过
2026-06-11 · RELEASE

v1.0.0平台就绪, 产品阶段启动

PR #13 squash merge 入 main (5f706ac)。v1.0.0 不是新功能, 是里程碑声明: 判断流水线平台 (v0.5→v0.11 累计能力, 428 tests 全绿) + 产品阶段两份决策文档 accepted = review-service 开发就绪。

本版内容

  1. review-service PRD accepted (项目主理 2026-06-11 通过): 报告评审智能体服务, 飞书机器人优先 / 网页降级 Phase C; 复用 ADR-007 REVIEW 模式 ~80%; 三阶段路线 (MVP ~5-7 天 → 推广硬化 → 30/90/365 自动回访卡片等扩展); 四决策点落定
  2. ADR-011 accepted: 独立私有 data repo — 语料 (145MB, tian_only) 走 boss-vault-data 私有 repo; review-service 生产产物 MVP 留 VM 不进共享 repo; 访问控制粒度跟敏感分级走
  3. docs/v1.0/dev-plan.md: S0 (data repo 落地) + A1-A5 (队列/飞书/部署/灰度) 任务分解 + 排期, 目标 06-19 灰度上线发 v1.1.0

平台基线 (v0.5.0 → v1.0.0 累计)

Phase 0-6 双运行时流水线 · REVIEW/FRESH/EVOLUTION 三模式 · 1+6 评委 + 5 镜头 + adversarial_view · 30/90/365 attribution (websearch 真 fetcher + 证伪自动 FC + 90d 盲测比对/记分板) · anchor research 工程链 + 多锚点脚手架 · Bearer token fail-close + redact 出站闸 + 公开层双闸 · clean-clone CI + coverage 棘轮

升级

纯文档, 无行为变化。

2026-06-11 · RELEASE

v0.11.0frontmatter 统一 + coverage 棘轮

PR #11 squash merge 入 main (aa4712b)。清掉远程可做 backlog 的最后一块质量债 (v0.8/v0.9 两轮按纪律推迟的 frontmatter 8+ 处重复)。

关键改动

  1. frontmatter 解析仓库级统一: _export_helpers 单一源 (extract_frontmatter_text 正则单源 + parse_frontmatter_strict 跳过文件语义), 替换 7 处核心路径拷贝; review-fallback 留 pipeline (需区分"缺块/非法"); 外围 ~8 个无测试独立工具不强迁, 留自然汰换。顺修 latent: wiki 扫描空 frontmatter 时的 AttributeError。
  2. coverage 防回退棘轮: CI + Makefile --cov-fail-under=35 (实测 36%; 核心模块 42-63%, 独立工具多 0%); 只升不降。

升级风险

无 — 行为级等价重构 (两处已注明的不可达 edge 略严) + CI 增强。

质量门

pytest tests/unit --cov-fail-under=35   428 passed, 0 failed · coverage 35.88%
make smoke / smoke-e2e / skill_lint   全过 · CI 全绿
2026-06-11 · RELEASE

v0.10.0盲测记分板 + 测试防泄漏守卫

PR #10 squash merge 入 main (ef05676)。小步快版: 给 v0.9 的盲测比对补"裁判"环节, 给 v0.9 的事故教训补自动拦截。

关键改动

  1. framework 盲测记分板 (monthly_review §7): 扫全部 case 的 framework_compare 块按 version 聚合命中率, §E 累计判定三态 — 命中 ≥1/2 → "有前瞻价值" / 0 命中 → "未达阈值" / 已判定 <2 → "样本不足"。盲测实验从此有自动算总账的裁判。口径: 累计而非月窗 (§E 是跨议题判定)。
  2. failure_cards 防泄漏守卫: 测试 session 结束自动断言真实 failure_cards/ 文件集合未变 — v0.9 测试泄漏事故的教训从"人眼发现"变成"测试套自动拦截" (canary 验证守卫真触发)。
  3. handbook v0.9 同步: reference/cli.md 加方法论闭环工具表 (T10 driver / framework_compare / add_anchor / 记分板) + 自动行为说明。

升级风险

无 — 纯增量 (报告新段 / 测试守卫 / 文档), 无迁移无依赖无行为变化。

质量门

pytest tests/unit   420 passed, 0 failed (v0.9.0 基线 415)
make smoke / smoke-e2e / skill_lint   全过 · CI 全绿 · handbook 双闸过
2026-06-11 · RELEASE

v0.9.0方法论闭环: 证伪自动 FC + 90d 盲测比对 + T10/加锚点工具链

PR #9 squash merge 入 main (6e80b83)。把 §7 (Failure Card) 与 §8 (attribution) 的联动、Step 1.5 盲测的 M2 比对从"设计"变成"代码", 并把两件人工流程 (T10 anchor research 填充 / §2.4 加锚点) 工具化。

关键改动

1. 证伪 → 自动 Failure Card (§7+§8 联动闭环)

  • checkpoint 落 falsified/partial 时, run_checkpoint 自动走 6 类决策树分类 (带 contrary_signal) + write_failure_card() 落卡
  • cp 记 failure_card: <fc_id> 防重跑重复; demo case / dry-run 豁免; 低置信度分类 (frontmatter classifier_confidence) 留人工复核改判

2. 90d 盲测自动比对 (Step 1.5 第 7/8 点 M2 落地, H2 即插即用)

  • framework_compare.py: lock 文件解析 (§A direction/confidence) + actual 四级提取 (CLI override > decision.direction > framework_actual > report 正则) + §E 命中判定 + report §C 渲染 + --write
  • attribution 90d checkpoint 有 lock 时自动比对代替 stub; actual 不可得保持 pending 留人工
  • 联动: 盲测 miss → falsified → 自动 FC (实验失败自动进失败卡体系)

3. T10 本地一键 runbook

  • t10_local_driver.sh: 语料预检 → holdout 留出闸 → S1 elicitation → S2 派发指令打印; --verify 跑 S3 lint + 状态。空语料环境安全拒绝 (反造假硬规则: 无源不合成)
  • runbook (docs/v0.9/t10-local-runbook.md): §1–§5 全流程 + 完成判定 checklist; anchor research 填充的人工成本压到 4 步

4. add_anchor.py (加锚点三步一条命令)

  • 全套脚手架 (perspective 模板机器字段替换 / research 占位 / panel 克隆 anchor 三字段) + refresh_anchor_judges 闭环验证 + --dry-run; 实际启用仍 gate PRD 双签 + 锚点人选

5. 测试 FC 泄漏隔离 (事故修复, 透明记录)

  • 自动 FC 写盘副作用使旧 attribution 测试泄漏测试卡到真实 failure_cards/ — 加模块级 autouse 隔离, 连跑 3 次确认干净; dev-log 含完整事故记录 (含清理时误删 tracked FC 已恢复的次生失误)

升级风险

  • 无迁移无新依赖。行为变化: falsified/partial checkpoint 现在会自动落 FC 文件 (预期); 盲测议题 report 末尾出现 §C 段

质量门

pytest tests/unit   415 passed, 0 failed (v0.8.0 基线 380; +35 单测)
make smoke / smoke-e2e / skill_lint   全过
CI: tests.yml (clean-clone) + Cloudflare Pages   全绿

递延

T10/T11 内容执行 (本地语料, runbook 就绪) · 90d 盲测执行 (H2) · PRD 双签 · ADR-009 口径 · ADR-005 Phase 2 · 下轮: 盲测记分板 (monthly_review §E 命中率) / failure_cards 防泄漏断言 / handbook v0.9 同步 / frontmatter 统一

2026-06-11 · RELEASE

v0.8.0backlog 清偿: 多锚点工程前置 + fetcher 注册表

PR #8 squash merge 入 main (aa0cdaa), 与 v0.7.0 同日。纯内部工程重构 (默认行为零变化), 清偿 v0.7 dev-plan backlog 三项 (N6/N8 发现)。

关键改动

1. ANCHOR_JUDGES panel 驱动 (R13 前置)

  • anchor 评委集合从 panels/.yaml judge_category: anchor 动态推导 (refresh_anchor_judges()), 不再硬编码 {"tian"} (仅作 panel 缺失/解析失败时的兜底)
  • 11 处调用点零改动 (模块全局刷新); default panel 行为与 v0.7 逐位一致
  • 配套合成第二锚点结构测试: 集合推导 → SKILL 路径解析 → category prompt → confidence cap 全链路, 不创建真实锚点内容
  • 第二锚点实际启用仍 gate 在 PRD 双签 + 锚点人选 — 本版只做工程前置

2. fetcher 注册表 + 网络重试

  • FETCHER_REGISTRY (data_source → loader → fetcher) 替代 websearch if 特例; marsdata / feishu 将来接入只加注册行
  • _fetchers 加 tenacity 重试: 传输层异常 / 429 / 5xx 三次指数退避; 其余 4xx 不重试 (key 错重试无意义); 耗尽后照旧降级 V1 hybrid — fail-safe 语义不变

3. Failure Card 一体化入口

  • classify_failure.write_failure_card() (取号 + 渲染 + 写盘 + 返回路径); pipeline 评委失败路径瘦身改调用; orchestrator SKILL Failure Mode #3 双路径统一到同一入口

4. 按纪律放弃的项 (透明记录)

  • frontmatter 解析收敛: run_pipeline_local 两处与共享 helper 均非 drop-in 等价 (一处依赖"无 frontmatter 跳过文件"语义, 一处带刻意的中文 yaml 降级 fallback), 强行收敛会改行为 — 留仓库级统一单独 PR (dev-log P4 有完整论证)

升级风险

  • 无 — 纯内部重构, 默认行为零变化, 无 schema/数据迁移, 无新依赖 (tenacity 已在 requirements)

质量门

pytest tests/unit   380 passed, 0 failed (v0.7.0 基线 366; 14 个新单测)
make smoke / smoke-e2e / skill_lint   全过
CI: tests.yml (clean-clone) + Cloudflare Pages   全绿

递延 (无变化)

T10/T11 anchor research 真合成+回测 (本地语料) · 90d 盲测 (H2) · ADR-005 Phase 2 · PRD 双签 · ADR-009 口径 · 下轮工程候选: frontmatter 仓库级统一 / attribution-checker 接 write_failure_card / marsdata·feishu fetcher (D 路线)

2026-06-11 · RELEASE

v0.7.0递延债务清偿 + 双运行时一致性

PR #7 squash merge 入 main (da655ae). 清偿 v0.6.2 changelog 递延债务表中两项 (R11/R12) + v0.6 release checklist 余项 (handbook 同步) + main 回归修复, 并首次以 7 角度自审作为 merge 前质量门。

关键改动

1. main 回归修复 (N0)

  • v0.6.1 把 case-schema 改 mode-aware (顶层 7 base + allOf else 12) 时旧测试未跟, main 上 1 failed
  • 测试改锁新契约 (base 7 / else 12 / 豁免 enum {REVIEW, written-not-dispatched})
  • 教训: 本地直接 push main 绕过了 clean-clone CI (tests.yml) — 建议 main 加分支保护或本地 push 前 make test

2. R12 · 评委失败自动写 Failure Card (N3)

  • phase_4 评委 fail 写占位 review 后自动生成 process_failure FC (非致命路径, 生成失败仅 warn)
  • classify_failure.allocate_fc_id(): 按年隔离扫最大序号 +1 (修默认 fc_id 撞号 + 自审发现的跨年泄漏)
  • run-pipeline-local-design §10 验收第 5 项 (v1.1 defer) 落地

3. R11 · attribution V2 websearch 真 fetcher (N4)

  • scripts/_fetchers.py: Tavily → Brave env key 探测链, 检索摘要作 actual_signal
  • 弱证据纪律: confidence 固定 0.5 — 字符串 fallback 永不误判 falsified, 语义比对交 --llm-compare
  • fail-safe: 无 key / 异常 / 0 结果三路降级 V1 hybrid 人工指令流 (行为与 v0.6 完全一致)
  • marsdata / feishu 仍 stub (fetcher PRD §3 长期 D 路线, Hermes 上云走 MCP)

4. 双运行时一致性 (N6)

  • /boss SKILL 补 --diff-only / --no-diff-plan; orchestrator Phase 1E 加 CLI 等价注; Failure Mode #3 加自动 FC 双路径
  • anchor perspective SKILL 加 R1.3 三级 confidence cap 表 (placeholder 0.4 / agent-derived 0.6 / verified 解除, 与 W1 cap 取更严)
  • attribution-checker SKILL websearch 行更新为 V2 真 fetcher 现状

5. merge 前 7 角度自审 (N8, 新流程)

  • 7 个独立审查角度 × 35 候选 → 4 项修复 (跨年 fc_id / yaml 转义 / 吞错可见性 / 接口文档化), 3 项驳回有据, 4 项记 backlog
  • backlog: fetcher 注册表 / FC 入口下沉 / httpx 重试 / frontmatter 解析统一 (见 docs/v0.7/dev-plan.md)

6. 文档与杂项

  • v0.6.1 余波一致性 (README / docs 索引 "internal 不入 git" stale 陈述); handbook 同步 (token 段 / 新 flags / 401·503 排障, 双闸过); monthly_review drift 单测 ×5

升级风险

  • 无 schema / 数据迁移; websearch fetcher 是 opt-in (不配 TAVILY_API_KEY / BRAVE_API_KEY 行为不变)
  • 评委失败现在会落 FC 文件到 failure_cards/ — 属预期新行为, 非异常

质量门

pytest tests/unit   366 passed, 0 failed (v0.6.2 基线 341 passed / 1 failed)
make smoke / smoke-e2e / skill_lint   全过
CI: tests.yml (clean-clone) + Cloudflare Pages   全绿

递延债务 (与 v0.6.2 表对比)

债务 变化
attribution 自动 fetch ⬆ websearch 已真接 (V2); marsdata/feishu 仍 stub (D 路线)
评委失败自动 FC ✅ 清偿 (R12)
anchor research verified_by_anchor 不变 — S2 真合成 + S4 回测留本地语料执行
90d 盲测 / ADR-005 Phase 2 / PRD 双签 / ADR-009 口径 不变
2026-06-10 · RELEASE

v0.6.2M1+M2 工程清债 + 私有 repo 全审计放开 + attribution latent fix

v0.6 PR (#6, M1+M2 工程 R1-R10 完成) 主体 merge 入 main, 同日叠加 attribution _is_demo_case guard latent fix + .gitignore Plan A 选择性放开 (cases/reports/writing 入 git 全员可审计). 涵盖 4 commits, 距 v0.6.1 patch release 同日.

关键改动

1. v0.6 M1+M2 工程清债 (PR #6, by Claude)

  • R1 anchor research 工程链 (T8+T9): anchor_research_elicit.py 6 维度候选抽取 + skill_lint.anchor_research_state() 三级状态 + Phase 4 anchor confidence cap (占位 ≤0.4 / agent-derived ≤0.6 / verified 解除) + 反循环护栏 (合成素材排除占位 LLM 产物). 6 文件 placeholder 内容空, 真合成 (S2/S4) 留本地真实语料执行.
  • R2 clean-clone 测试 (T1+T2): test_feishu_sync_filter 4 失败用例改自带 fixture rules; 生产 config 校验改 opt-in TestRealConfigOptIn; 新增 .github/workflows/tests.yml 干净环境 CI. pytest 304 → 322 → 342 passed, 0 failed.
  • R3 versions/ chmod 444 对齐 (T3): run_pipeline_local Phase 5 写 versions 后 os.chmod 0o444; smoke_e2e fixture 同步 chmod + st_mode 写位断言.
  • R4 boss_server Bearer token 认证 (T4): BOSS_API_TOKEN 未设 → 503 fail-close, 错/缺 token → 401, /v1/healthz 永远豁免. 16 个认证单测; docker-build CI 含 401 契约.
  • R6 redact_check 审计澄清 (T5): §9.2 的 本项目/项目主理/ 是公开层脱敏占位写法 (各自映射 redact_check 内持真名的 detection pattern, 此处不列 id), 评估"缺 regex"是假缺口; fixtures 17 → 24 补漏测变体.
  • R9 lint 占位 metric 升 error (T6): case_metric_placeholder (checkpoint metric/expected_signal 含"占位"阻断); anchor_dual_scale_misuse warning→error.
  • R7 EVOLUTION Phase 1E auto diff plan (T13): phase_1e_diff_plan() LLM 对比上版自动选 1-3 维, JSON 解析 fail-safe 降级全跑, --no-diff-plan 强制全跑.
  • R8 Chrome 跨平台探测 (T14): find_chrome() 探测链 (macOS .app → google-chrome → chromium → None), Linux 容器零改动正确返回 None.

2. attribution latent fix (12b4a25)

  • scripts/attribution_check.py: _is_demo_case(case)run_checkpoint:314 + mark_instructions_generated:429 两写盘点
  • LIVE cron 09:00 hit demo case (C-9999-0001) → mark_instructions_generatedinstruction_generated_at + json.dumps reformat (+55 bytes drift) → 用户每天 git restore. 真因不是 --dry-run stealth write (上 session 误判), 而是 LIVE 写 committed reference
  • Fix 后 instructions.md 副作用保留 (1 项), 仅跳过 demo case.json 写盘. 36/36 attribution tests pass (34 旧 + 2 新)

3. v0.6.1 .gitignore 私有 repo 全审计放开 (ea7edc8)

  • 放开入 git: cases/ (936K) + reports/ (2.8M) + failure_cards/ (148K) + docs/internal/ (1.5M) + writing/ (4M, 减 reports-export PDF/HTML)
  • 仍 ignored: raw/ + anchors/*/raw/ (145M, 走 cloud_sync.sh rsync) + backups/ + _wiki/ (45M, 重生) + wiki_data/ + material/
  • 仍 ignored: cases/.archived/ (smoke testing fixtures 含 [占位] metric), cases/.attribution-runs/ (cron 动态产物)
  • 配套 mode-aware: redact_check.PATH_ALLOWLIST 放开 5 目录; skill_lint + pre-commit-hook 对 REVIEW / written-not-dispatched 模式豁免 ATELIER strict check; schemas/case-schema.json mode enum 加 written-not-dispatched
  • 总入 git 量: 388 files / 7.5 MB

4. 文档同步

  • docs/v0.6/ 四件套 (dev-plan / deployment / usage / release / dev-log) 已 push
  • docs/prd-next-draft.md v0.6 PRD (P0×4 + P1×6 + P2 backlog) 已 push, 状态仍 draft, 待 CTO + 项目主理双签
  • writing/project-evaluation-2026-06-10.md 整体评估报告 (需求满足度 ~85-90%)

升级风险

  • v0.6 boss_server 认证 fail-close (R4) — 部署点必须配 BOSS_API_TOKEN, 否则除 /v1/healthz 外全部 503. 详见 docs/v0.6/deployment.md §1 (或 docs/v0.6/deployment.md)
  • versions/ chmod 444 (R3) — rsync/备份需用 --chmod 显式控制 (cloud_sync.sh 已加)
  • .gitignore Plan A — git status 后 cases/reports/writing 变成 tracked, 首次 clone 后 wiki/raw 仍需重生 (scripts/build_wiki.py) 或 rsync 拉

递延债务 (显式标记)

债务 状态 解除条件
anchor research verified_by_anchor: false 6 文件 placeholder (工程链就绪) S2 真合成 + S4 holdout 回测 (本地真实语料)
90d 盲测执行 就绪未触发 2026 H2 真议题
attribution 自动 fetch V0 stub (V1 hybrid 人工指令 + V2 GLM 语义比对在用) P2 R11 (后续版本, 接 MCP / WebSearch HTTP fetcher)
ADR-005 Phase 2 云端部署 部署 spec 已写, 工程依赖 (R4) 已闭合, 待 dev-ops 执行 P2 R14
PRD draft → accepted 待 CTO + 项目主理双签 v0.6 release.md checklist
2026-06-09 · RELEASE

v0.5.0+quality patch · 首次 pytest 全绿 + 全景信息图

自 06-02 v0.5.0 以来 27 commits 的两日 quality 补丁. 主线三条: 06-08 Codex 代码审查 7 项 P1/P2/P3 一次清, skill_lint / build_wiki 两个预存 fail 终结 (pytest tests/unit 首次到全绿 0 failed), f-string YAML 全 vault 22 site 二轮审计 + 5 site harden.

关键改动

1. 全景信息图 (本日新增)

www/overview.html — 单页自含 SVG/CSS, 9 段覆盖: 需求 · 解决的问题 · 架构 · 数据流 · 当前进展 · 已做开发 · 剩余 · 时间估计 · 自动化建议. 适合给 CTO / 投资人 / 新成员一页讲清"这是什么 + 在哪 + 还差什么". 走 public 双闸 (check_public_safe.py + redact_check.py), 仅含方法论 / 框架描述 / 进展数字, 无 PII.

2. 06-08 P1/P2/P3 (Codex 代码审查交接, 2 commits)

  • P1-1 feishu_sync_filter.channel_1 兼容 v3.4 manifest markdown_path 字段 (旧 path 回退保留)
  • P1-2 channel_2_text_match 重写主循环, raw_hit_count 累加, regex 与 literal mention 一致计入 min_mention_count
  • P2-1 alias_candidates.scan_allrglob + ignore _meta / .review 取代第一层 glob
  • P2-2 slug_for(name, kind=...) 加 kind 参数, 默认 generic = concept 风格, 仅 kind="person" 走"姓-名连写"
  • P2-3 yaml.safe_dump 取代 alias YAML 输出的 f-string 手拼, 候选名/slug 含特殊字符也可 safe_load
  • P3-1 split_people_budget 一侧不足时把富余补到另一侧 (而非 ceil/floor 拆半锁死)
  • +34 unit tests 覆盖: test_alias_candidates (新, 25 用例) · 飞书抓取工具回归 (4) · Phase 2/4 并发 per-dim/judge 落盘 + 单 fail 不串写 (4)

3. 06-09 全绿 (4 commits)

  • fix(skill_lint) default 跳 gitignored cases (cases/* 整目录 gitignored, 本地 in-progress run 形状不应阻断 --dry-run); 加 --include-untracked flag 退回旧行为
  • test(build_wiki)RAW_MEETINGS_USB_DIR monkeypatch 修预存 fixture 漏 patch (导致 relative_to(tmp_path) 炸)
  • fix(pipeline) YAML frontmatter error: '{safe_err}' 单引号未转义; 加 _yaml_quote_inline 转义 ''' (YAML 规范); 应用到 _failed_dim_placeholder / _failed_review_placeholder / delta_explanation × 2 · +8 tests
  • fix(yaml) 二轮审计 22 个 frontmatter f-string site, 真实风险 5 处全清; _yaml_quote_inline 单一源放 report_builder, run_pipeline_local re-export, build_wiki 内联防御 · +3 tests

4. 测试基线: 126 → 286 (+160, +127%)

baseline (06-07): pytest tests/unit -q  →  126 passed, 2 failed (预存)
06-08 PM:        pytest tests/unit -q  →  160 passed (+34, 2 failed 仍在)
06-09 AM:        pytest tests/unit -q  →  286 passed, 0 failed, 1 skipped  ★

自 vault 创建以来, pytest tests/unit 第一次到全绿. 6 commits 全部走 pre-commit 5/5 PASS.

5. 工程化收益

  • alias_candidates.py 从 ad-hoc 脚本升级成 testable module (split_people_budget 纯函数 + yaml.safe_dump 替 f-string + slug_for kind 显式)
  • Phase 2/4 并发首次有"真 async + 假 LLM" 测试 (上轮 TestPhase2FailSoft 整个 mock _phase_2_async, 没测 semaphore/gather; 本轮 mock 下移到 _call_llm, 真并发路径有了 regression guard)
  • YAML escaping 全 vault 风险面 audit 留档 — 22 处 site 归类清晰, 未来加新 frontmatter f-string 时知道哪些已自带 escape 哪些不需要
  • skill_lint 默认行为收紧 — vault clean state 测试与 dev 环境本地产物解耦

6. 下一步 (mind PRD v1.0 M2-M4 排期, 6 月底)

  • M2 Sponsor 领袖画像 (06-10 cutoff): 5 维度 + 9 启发式雷达图 · 1 句锚点视角摘要 · 飞书卡片 push
  • M3 Sponsor 专属 Hermes (06-10 ~ 06-18): always-on VM · 飞书 webhook · per-Sponsor 议题入口
  • M4 信息采集自动 ingest (06-15 ~ 06-22): Sponsor 飞书/微信/邮件信号入 vault · sage-wiki 自动反向引用
  • V0 → V1 北极星 (6 月底): ≥ 50% 提效验收

详见 www/overview.html §7-8.

2026-06-02 · RELEASE

v0.5.0ADR-007 REVIEW + handbook 公开站 + Phase 6 闭环

自 v0.4.0-design 以来 55 commits 的合并里程碑. 主线四条: REVIEW 模式落地、handbook 公开站上线、Phase 6 export 集成入 /boss 用户面、飞书抓取工具/alias 周边工具链补完.

关键改动

1. 公开手册站 (/handbook/, ADR-008) 上线

handbook-src/ 用 VitePress 起源码, build → www/handbook/ (gitignored). sidebar 导航 + ⌘K 全文搜索 + dark mode + 代码高亮 + 锚点 TOC + 移动端响应. 内容覆盖上手 / 指南 / 参考 / 概念 / 运维 / ADR 共 6 大分组. 同站附 14 张方法论 slide + 互动 Playground (滑块拖 anchor_delta + mock 报告联动).

入口: https://www.apex.fan/handbook/. 旧 www/docs.html 保留作为内部 nav 入口.

2. ADR-007 REVIEW 模式 (judgement on a given doc)

/boss 新增 --review <doc> 模式: Phase 0 doc parser 抽出待评文档 → Phase 1 起 review-from-doc PRD → Phase 4 评委拿 review-context 独立打分 → report.md 三段式 (原文 / 评委 review / 锚点合议). 不进 brand-folder 滚动版本, 单次性输出, 但仍走 5 镜头 + adversarial_view + 版本化冻结.

3. Phase 6 export 一键化 (集成入 /boss)

prior session 已落 Python CLI 端 (run_pipeline_local.py --export*), 本次集成入 /boss 用户面 slash command:

  • --export → Set A confidential 完整合并 (默认)
  • --export-set <a|b|c|all> → 显式选 set
  • --export-full → 全 3 套 (A + B Light + C v2)
  • --export-redact <light|strict|meta-only> → Set B 脱敏强度
  • --export-skip-pdf / --export-only → 仅 md/html 或跳 Phase 1-5

4. ADR-009 · 内部文档审阅流程三件套

docs/internal/ 按 CLAUDE.md §9 confidential 默认 .gitignore, 但 PRD / dev-plan / audit / security 等关键文档仍需 CTO + 项目主理 review. ADR-009 落地三件套替代 Git PR:

  • 本地 HTML diff (scripts/render_internal_doc_html.py) — 渲染前后版本对照
  • 飞书异步签 — 卡片 push, 不动 Git
  • _wiki/log.md 审计 — 时序日志追加, 留痕可回查

公开层 (CLAUDE.md / www/* / handbook-src/* / www/adr/*) 仍走常规 Git PR + 双闸 (check_public_safe.py + redact_check.py).

5. 飞书抓取工具周边工具链补完

  • feishu-sync-watch (scripts/feishu_sync_watch.py) — 监控飞书增量, 命中锚点 raw 阈值时触发 /boss feishu-sync
  • feishu_sync_filter.py 修 bug — manifest 字段名对齐 (pathmarkdown_path, typeresource_type) + B-tier multi-anchor 路径校准
  • alias-scan 子命令 (/boss alias-scan) — 评委 perspective skill alias 候选扫描, 工作流脚本化

6. wiki 可视化刷新 + USB 离线导入通道

  • _wiki/pipeline-diagram.html / wiki-ingest-diagram.html / raw-browser.html / feishu-sync-explorer.html 全部 refresh (Phase 6 闭环后管线节点新增)
  • import_usb_meetings.py 接入 USB 拷贝的会议纪要 → meetings-usb/ (tian_only 敏感度) → sage-wiki watch 通道

测试 + 量级

  • 自 v0.3.0 起累计 55 commits, 公开层与工具链各占约一半
  • pytest 套件继续保持 0 regression (具体计数随 Phase 6 集成与 review 模式新增 fixture 浮动)
  • handbook-src/ 公开发布前过 check_public_safe.py --root handbook-src/ + redact_check.py --dry-run handbook-src/**/*.md 双闸
2026-05-30 · RELEASE

v0.3.0Codex provider + Phase 6 public export + site workflow

本次更新把报告生成从单一 Anthropic 叙事升级为多 provider 架构: Codex CLI、本地 Agent CLI、Anthropic、Anthropic-compatible、OpenAI-compatible 均可作为执行后端。Phase 2 调研和 Phase 4 评委支持并发子进程, Phase 6 输出内部完整版、公开脱敏版、内部可视化版。

关键改动

  • Codex CLI provider: run_pipeline_local.py --llm-provider codex-cli 可直接调用本地 Codex 登录态, 支持多子任务并发。
  • 兼容 provider: 文档同步说明 Anthropic-compatible / OpenAI-compatible 路径, 便于接智谱、Kimi 或自托管网关。
  • Phase 6 export: 明确 Set A / B / C 报告边界; 公开版必须先过 redact_check.py + check_public_safe.py
  • 网站发布流程: 新增 www/site-update-workflow.md, 固化“改 www → 脱敏 → push main → Cloudflare Pages 自动发布”的复用步骤。
  • SEO 基础: 首页补 canonical / Open Graph / Twitter card / JSON-LD, 并新增 sitemap.xml
2026-05-30 · RELEASE

v0.2.2P3 清三项 (FC-0002 + meta_framework + dual_scale render)

短 session 3 commits, 清 v0.2.1 dev-log §12.4 P3 候选中 3 项硬欠款. 全是 90d M2 真议题落盘前的阻塞项, 完成后 schema → render 链路闭环.

关键改动

1. panels/default.yamlmeta_framework topic_type (与 cross_domain 同 6 维范围)

Case 6 (2026-05-29) 元判别议题落 strategic topic_type 后用户手动 --panel-add product 才补全, 暴露 schema 层缺位. 本次让未来同类议题 auto-select 直出 7 评委 (anchor + 6 dim).

为什么独立 topic_type 而非复用 cross_domain: - 语义差异: cross_domain = 议题广度 (横跨多领域), meta_framework = 议题层级 (判断如何判断) - 与 schemas/framework-v0.2-spec.yaml §anchor_confidence_dual_scale.applies_to_topic_types 已用 [meta_framework, cross_domain] 一致 - skill_lint.py declines_to_state 限定也用同样集合

文档同步: skills/tian/SKILL.md topic_type 表加行 + scripts/run_pipeline_local.py 2 处 docstring 8 选 19 选 1.

2. Phase 5 panel_summaryanchor_dual_scale_delta (P2.4 闭环)

v0.2.1 落了 anchor confidence 双 scale schema 但 Phase 5 render 端没接. 本次按 schemas/framework-v0.2-spec.yaml §panel_summary_render 规范接通:

  • 元层议题 (meta_framework / cross_domain) 自动读 anchor frontmatter confidence_meta_layer + confidence_single_point_layer, 输出 anchor_tian_meta_mean / anchor_tian_single_point_mean / anchor_dual_scale_delta 3 新字段
  • ANCHOR_DUAL_SCALE_DELTA_THRESHOLD = 0.15 单独常量, 与 ANCHOR_DELTA_THRESHOLD = 2.0 隔离 (avoid 0-1 confidence delta 与 1-10 lens mean delta 混用)
  • _format_panel_summary_dual_scale_yaml() helper 单点议题返回空串, backward compat 完整

backward compat 三层守护: - 单点议题: 完全不读 dual_scale 字段, dict 不含新 key (prior 6 案重跑都不受影响) - 元层议题缺字段: log.warn 一次, 仅渲 anchor_tian_mean (Case 6 v1 anchor §confidence_cap_protest 留卡场景, anchor §74 deadline 2026-07-15 自定决定何时落) - 现有 versions/v{n}_*.md (chmod 444 不可变) 不被回写

3. failure_cards/FC-2026-0002 process_failure 落卡

FC-2026-0001 (validation_failure parser bug) §6 反思段留卡: 同 session 还发现 templates/reverse-engineer-5cases-prompt.md §B.2-B.5 用 "(同上结构)" 中文 fallback 替 placeholder, prepare 渲染时静默跳过. 本次单独落 FC-2026-0002 process_failure 类型. 与 FC-0001 同 commit (a1cdfe2) 修, 留 prepare-style validator (跨工具防御) 作 next-session P2 候选.

测试 + 量级

  • pytest 221 passed + 1 skipped (was 215, +6 dual_scale + +4 panel-select test = +10 累计本 session)
  • skill_lint 0 error 0 warning
  • diff stat: +243 / -10, 5 files
  • Duration: ~1.5h (预估 3.5h, 因为 schema 已就绪 / 只接 render 端)
  • 3 commits 已 push origin/main

与 v0.2.1 dev-log §12.4 P3 候选对照

# 项目 状态
1 90d M2 触发议题 ⏸ blocked (等 2026 H2)
2 classify_failure.py --manual 模式 留 (FC 全 manual 写, 工具化价值低)
3 classify_failure.py --review-month 汇总 留 (FC 量 2 张未起步)
4 FC-2026-0002 process_failure 落卡
5 Phase 5 panel_summaryanchor_dual_scale_delta
6 panels/default.yamlmeta_framework topic_type

P3 候选 (本 session 新发现)

  • prepare-style validator (FC-0002 §3 修复方向 2 + 3): reverse_engineer_5cases.py prepare + export_phase6.py prepare-b/c 渲染前扫 template 中文 fallback, 渲染后扫 {{TOKEN}} 残留. fail-close on incomplete render. 防 FC-0002 类静默缺失再现
  • Case 6 v2 anchor §74 落 dual_scale 字段: anchor 自决, deadline 2026-07-15
2026-05-29 · RELEASE

v0.2.1framework v0.1 30d confirmed + Phase 6 闭环

单 session 10 commits, 4 个关键里程碑落地. vault 开发以来单 session commit 数最多 + 范围最广的一次.

关键里程碑

1. framework v0.1 通过 30d 独立验证 (5/5 = 100% PASS)

元判别框架 v0.1 (7 decision variables × 3 状态 × 加权投票 algorithm) 在独立 sonnet sub-agent 反推 prior 5 案的 30d attribution checkpoint 中通过验证. SOP §5.4 "100% 太完美怀疑" 复核证据齐全 (vote 分布与 mock 显著不同 / 算法自觉 / 元观察独立 / integrity_violations: 0). F1 confirmation bias 一定程度排除.

过程中发现并修复 2 个隐藏 bug: - template 占位符缺失: prepare 模板原版本只为案 1 写完整 placeholder, 案 2-5 仅 "(同上结构)" 文字. 这就是 prior session 只能 mock dry-run 的原因. - parser priority-order bug: _extract_state 按 iteration 顺序找子串, 误把 "follow + 浅 bet 混合" 抓为 "bet". 修复为 first-occurrence-in-text 语义 (中文判断语境前置词是主方向).

第一次 verify 跑出 3/5 = 60% FAIL 是 parser 错抓, 与 framework 性能无关. 修复后 5/5 = 100% PASS.

2. 90d 盲测准备就绪 (M1)

--lock-framework-prediction flag 落地. Phase 1.5 在 GATE 1 后, Lead 用 framework spec 给本议题 7/8 V 测量 + 加权投票 + 三态决策, 写到 cases/<case-id>/framework_<version>_prediction.mdchmod 444 锁定. Phase 2-5 sub-agent / 评委 / Lead 在 §C 段外均不读 prediction 文件, 试图修改 chmod 444 → pre-commit hook 阻断.

M2 (Phase 5 §C 渲染 + 90d 自动比对 + schema yaml 抽取) 等 2026 H2 真议题触发时一起落.

3. Phase 6 export 工程化闭环

prior 6 案手动跑过 3 套 export (Set A confidential 完整合并 / Set B Light public 脱敏 / Set C v2 internal 可视化). 本 session 全面集成入流水线:

  • Set A (scripts/export_case_report.py): 修 3 个 latent bug (relative_to ValueError on external --out-dir / topic '(议题未知)' fallback / skill_used '?' fallback) → Python 端到端跑通 6 brand
  • Set B/C (新增 scripts/export_phase6.py 573 行): prepare + finalize 分开范式 (与 reverse_engineer_5cases.py 同 prepare → 手动 dispatch sub-agent → finalize). 5 子命令: prepare-b/c, finalize-b/c, status (NN 按 case_id 时序 + glob 自动发现)
  • 共享 helper (新增 scripts/_export_helpers.py 119 行): 抽 VAULT_ROOT / CHROME / parse_frontmatter / find_topic_from_h1 / display_path / chrome_pdf 5 个 helper, 双消费者复用
  • Python CLI 集成: run_pipeline_local.py 加 7 个 --export* flag, Phase 5 + verify 之后自动 phase_6_export. --export-only 路径跳 Phase 0-5 直接 Phase 6. CLAUDE.md §11 描述与实际一致.

4. failure_cards/ 框架首发 + skill_lint 5 类质量门

failure_cards/ 框架 (CLAUDE.md §7 定义 6 类 + classifier 工具 433 行) 自 vault 创建以来从未真用过. 本 session 写首张:

  • FC-2026-0001: validation_failure · 30d verify parser priority-order bug. 状态: fixed.
  • failure_cards/README.md 入 git 文档化 6 类 trigger + 触发 2 路径 (自动 attribution / 手动 session-internal).

skill_lint 加 2 类质量门 (现共 5 类): - priority-order substring 反 pattern audit (commit 0f29e92): 扫 scripts/*.py 防本 session parser bug 类型重现, 抑制注释 # skill-lint: priority-order-ok - anchor confidence 双 scale 4 规则 (commit accac4d): 元层议题 vs 单点议题用法分离, 防 schema 误用

5. anchor confidence 双 scale schema 落地

Case 6 (元判别框架议题) anchor (tian) review §confidence_cap_protest 显式抗议 W1 cap 0.5 在元层议题过低. anchor §74 action item (deadline 2026-07-15) 提前 ~47 天落地:

  • confidence_meta_layer (0-1, 不受 W1 cap) — 元判断层 (议题层级 + 决策框架本身)
  • confidence_single_point_layer (0-0.5, 受 W1 cap) — 单点判断层 (议题对象细节)
  • confidence (现有, backward compat): 元层议题中与 single_point_layer 语义等价

应用范围仅 meta_framework / cross_domain 议题. 单点议题 (strategic / customer / product / brand / org / financial) 仍用裸 confidence + W1 cap. anchor SKILL 加 doctrine 段说明何时打元层 confidence ≥ 0.6 vs ≤ 0.5.

6. dev-log 模板化 (3 模板)

老欠款 dev-log §8.5 落地. 模板按 session 性质分: - templates/dev-log-boss-pipeline.md — 议题判断全流水线 (FRESH/EVOLUTION), 8 section - templates/dev-log-attribution.md — 30d/90d/365d 验证 + bug 排查, 8 section - templates/dev-log-refactor.md — feature/refactor/工程化改造, 10 section

memory feedback_dev_log_per_session.md 路径修正 (docs/dev-log/writing/dev-log/) + 3 模板引用.

量级

维度 量级
commits 10 (单 session 史上最多)
入 git ~2,000 行 (10 commits diff stat)
本地 (gitignored) dev-log ~500 行 + FC ~120 行
Lead token ~250k (Read + Edit + Bash + Agent)
Sub-agent token ~33k (sonnet 30d real run)
总 token ~283k

老欠款清单 (post-session 状态)

# 项目 状态
1 dev-log 模板化 (P2.3)
2 anchor confidence 双 scale (P2.4)
3 failure_cards/ 框架首发 (P2.6)
4 30d 独立 agent V1 自动化 (P2.5) ⏸ blocked (需 ANTHROPIC_API_KEY)

P3 候选 (留 next session)

  • 90d M2 触发议题 (2026 H2, AI 资产治理 + Agent 安全治理) + Phase 5 §C 渲染 + framework v0.1 schema yaml 抽取
  • classify_failure.py --manual / --review-month 模式
  • FC-2026-0002 process_failure (template 占位符缺失) 单独落卡
  • panels/default.yamlmeta_framework topic_type (与 cross_domain 同范围, 全 6 维上场)