审计结论(速览)
编者自审结论由本站作者自查得出,不是第三方审计
先说判断,再说依据。
可以发布:硬性结构项 0 缺陷
24 类 HTML 标签全部平衡(差值 0);三页无重复 id;目录与正文双向对齐(29/26、16/14,缺失 0、孤立 0); 站内检索 47 条索引的锚点全部命中;行内样式已归零;图标按钮与纯图标链接100% 有可访问名称。
置信度做到了「逐条可核」,但密度低于「以日为镜」
46 个板块 100% 有来源徽章;50 条引语 100% 带出处标签(卷一 34 条、卷二 16 条); 速览卡片与逐讲索引分组另有来源行。但段落中间没有逐句标注——这是有意保留的取舍,理由见 A4。
三处「标题 ≠ 内容」的坑已经查实并标注
最典型的是卷一第 010 分 P:标题写着《因信仰自由而享受自由》,但用本地 ASR 转写比对后确认 它的音频其实是《性与权力》,且与第 019 分 P 是同一集重复音频(开头逐字相同、相似度 0.85、时长差 5 秒)。 这类问题已经写进索引行内与页脚,没有藏起来。
三个「有意保留」的不足,不打算用话术盖过去
① 段落级逐句标注缺失;② 卷一速览 11 张卡片的讲号映射属编者判断; ③ 卷一 146–155 集只有二手 AI 概要、无法逐字核对。 三项都已在页面上显式声明并降档标注。
审计对象清单(实测)
| 文件 | 字节 | 行数 | 正文板块 | 目录链接 | 置信度标签 | 引语(带出处) |
|---|---|---|---|---|---|---|
index.html | 49,802 | 633 | 6 | 13 | 17 | — |
2016-2017-wealthfreedom.html | 199,958 | 1,834 | 26 | 30 | 82 | 34 / 34 |
2026-interview.html | 67,447 | 838 | 14 | 17 | 42 | 16 / 16 |
assets/site.css | 30,203 | 584 | — | — | — | — |
assets/site.js | 17,945 | 426 | — | — | — | — |
| 合计 | 365,355 | 4,315 | 46 | 60 | 141 | 50 / 50 |
两点口径说明:① 本页(审计报告)不计入被审对象,否则「统计自家标签数」会变成自我指涉; ② 置信度标签 141 处含首页图例与来源表里的 17 处,落在正文结论上的为 120 处(卷一 79、卷二 41)。
A1审计口径:沿用「以日为镜」五条纪律
口径对照逐条说明本站在每条纪律上做到了什么、哪些是有意偏离
「以日为镜」的 README 里写明了五条写作纪律。本站逐条对照落地,偏离的地方明说。
| 纪律(以日为镜) | 那一站的做法 | 本站的落地 | 本次实测 |
|---|---|---|---|
| 作者权威化 | 综合学者观点后直接下结论、给动作,不让读者自己选边 | 有意偏离。本站不下判断,只做「转述 + 来源定级」;唯一由编者下判断的板块是「十年对照」,且明确标注为编者归纳 | 9 行对照表全部标注判定来源 |
| 三级置信度 | 高可信·已查证 / 推演·中可信 / 推演·低可信 | 语义改造为「这行字离原话有多远」:原话·已核字幕 / 转写·中可信 / 概要·待核 | 141 处标签,覆盖 46 个板块 |
| 来源可追溯 | 正文上标 [n] 对应文末 85 条参考资料 |
用讲号(001–156)与时间码(00:00:00–04:22:28)替代参考文献 | 引语 50 / 50 带出处(100%) |
| 数据纪律 | 优先最新数据;估算值标注方法;不同口径并排呈现 | 三批材料证据强度递减并逐板块声明;两处「标题与内容不符」用本地 ASR 复核后写明 | 第 010 / 019 重复音频已确认 |
| 风险写实 | 不回避坏消息,每个风险判断都配可执行解法 | 每卷各有一节「需要打折听的地方」(卷一 12 条 / 卷二 6 条),逐条说明为什么要打折 | 18 条,两卷均置于正文末 |
A2排版:版式、字体、深浅色
实测尺寸、断点与颜色变量均为代码实测值
排版维度看四件事:版心与留白是否稳定、字号与行高是否适合长文、宽屏与手机是否都成立、深色模式有没有残留。
版心 1240px,宽屏目录常驻 322px
内容列固定 --wrap-w:1240px;屏幕 ≥1119px 时左侧目录常驻 322px,正文与顶栏右列用同一条
calc(var(--toc-w) + max(0px, (100% - var(--toc-w) - var(--wrap-w))/2)) 计算,两者严格对齐。
小屏时该规则整体失效,退化为抽屉目录,正文回到单列居中。
板块间距 56px,锚点偏移随顶栏自适应
section{margin-bottom:56px};scroll-margin-top:calc(var(--bar-h) + 20px)
保证点击目录跳转时标题不被 sticky 顶栏遮住。顶栏高度统一为 --bar-h:58px,抽屉、搜索面板、
移动端搜索条的吸顶位置全部由这一个变量推导。
正文无衬线、标题用宋体,均为系统字体栈
正文栈:PingFang SC → Hiragino Sans GB → Microsoft YaHei → Source Han Sans SC → system-ui; 标题栈:Songti SC → Source Han Serif SC → Noto Serif SC → Georgia。 不加载任何 Web 字体,因此没有字体造成的布局抖动(CLS),中文阅读观感也更接近纸面。
所有颜色走 CSS 变量,硬编码浅色已全部覆盖
颜色令牌在 :root 与 html[data-theme="dark"] 两处定义,共 26 个变量,
深色下覆写 20 个(其余 6 个是尺寸与字体栈,本来就不需要覆写)。
原设计里三处硬编码浅色(引用块渐变底、警示卡底色与标题色、头部径向渐变)已单独加 dark 覆写,
切换后无浅底深字或深底浅字残留。主题选择写入 localStorage,并在 <head>
内联脚本里提前应用,避免闪白。
六档断点,手机端搜索框收成一个放大镜
断点 1119 / 760 / 680 / 480 / 400 / 360 px。480px 以下搜索框折叠为图标,点击后整行下拉; 400px 以下隐藏 GitHub 图标保留分享与主题;品牌名三档收缩(全称 → 简称 → 两字)。
正文 15.5px / 行高 1.78,卡片 14px / 1.72
正文行高 1.78(约 27.6px)。版心 1240px ÷ 15.5px ≈ 80 个字/行(按全角字宽估算), 落在中文长文的舒适区。引语块用宋体 + 暖底,与正文形成明确层次。
A3格式:标签平衡、目录对齐、索引
实测以下数字由 _build/validate.py 直接统计,可复跑
格式维度看的是「机器能不能读懂、链接会不会断、检索能不能命中」。
标签平衡(24 类,差值全部为 0)
| 页面 | div | section | p | li | ul | h1 | h2 | h3 | blockquote | cite | span | a | button | svg |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 首页 | 104 | 6 | 74 | 0 | 0 | 1 | 6 | 11 | 0 | 0 | 117 | 15 | 14 | 4 |
| 卷一 | 532 | 26 | 432 | 40 | 10 | 1 | 26 | 171 | 34 | 34 | 785 | 36 | 20 | 5 |
| 卷二 | 110 | 14 | 103 | 38 | 9 | 1 | 14 | 60 | 16 | 16 | 168 | 24 | 19 | 5 |
| 三页全部 24 类标签的开闭数量一致,差值 0;未发现未闭合标签 | ||||||||||||||
旁证一处「看似少了」其实是对的:原文案里的 <li> 计数比现在高 26(卷一)/ 14(卷二)——
差值正好等于被替换掉的侧栏目录里的 <ol><li> 条数(26 与 14),
新目录改用抽屉式纯链接结构,并不代表正文字数减少。正文纯文本长度实测增加:卷一 +4.3%、卷二 +11.1%(来自新增的来源徽章与说明)。
双向检查:无悬空链接、无孤立板块
卷一:目录 29 条链接 → 26 个 section,缺失 0;26 个 section 全部出现在目录里,孤立 0。
卷二:目录 16 条链接 → 14 个 section,缺失 0,孤立 0。
29 与 26 的差是设计如此:目录除了 1 条卷首与 3 条分组标题,还有 26 条对应每个板块,分组标题另有独立锚点。
三页 id 总数 87,重复 0
id 分布:首页 17、卷一 41、卷二 29。每个 id 在页面内唯一,锚点跳转不会错位。
47 条索引,锚点 100% 命中
首页的检索索引覆盖:总览 6 条 + 卷一 26 条 + 卷二 14 条 + 审计 1 条 = 47 条。 自动核对每条索引指向的文件与锚点,0 条失效。索引已改为严格 JSON,便于脚本校验。
148 行,无「无字幕」灰条残留
卷一的全 156 讲索引共 148 行(B 站 80 + 续篇 58 + 补遗 10),已无 .nosub 灰底条目。
三块分组标题(正篇 / 续篇 / 补遗)本次补齐,并各挂一枚证据等级徽章。
65 处行内 style 已归一为 12 个工具类
整理过程中发现正文残留 65 处行内样式(间距与颜色,均为 margin 与 var() 颜色)。
已全部替换为语义化工具类,三页行内 style 计数为 0,样式来源只剩 assets/site.css 一处。
1 个可选 CDN,缺失时自动降级
全站唯一第三方脚本是 qrcodejs,只服务于「分享 → 生成微信二维码」。
未加载时该入口会提示改用「复制链接」,不影响其余功能;CSS 与主脚本均为本地资源。
A4置信度体系落地:三档、三个层级
体系说明语义改造的完整理由
置信度是这次改造的核心。它是「照搬以日为镜的做法」,但不是照抄它的语义——因为内容性质变了。
可以当引用用有官方字幕或原视频逐字可核验,出处精确到讲号 / 时间码。
引前须回原音依据第三方 ASR 转写或二手压缩材料,同音字、断句与专有名词都可能有误。
只能当线索别人已经压缩过一遍的概要,或标题 / 编号本身存疑、原片检索不到的流传说法。
「以日为镜」标的是判断力,本站标的是引文保真度
那一站是作者自己的判断,所以标签问的是「这个结论有多可信」。 本站是转述别人的言论,对错不是编辑能担保的——编辑能担保的只有一件事:这行字离原话有多远。 所以三档的语义换成「保真度」,并且把「说错了」和「不是我说的」严格分开。
板块徽章 → 卡片来源行 → 引语标签
① 板块级(40 处):每个板块标题下一行来源徽章,写明依据与讲号 / 时间码区间。
② 卡片 / 索引级(约 40 处):速览卡片与索引分组各有来源行。
③ 引语级(50 条):每条逐字引语的出处行末尾挂标签,讲号落在哪个来源区间就标哪一档。
段落中间不做逐句标注
「以日为镜」可以做逐句标注,因为它的每一句都是作者的判断,都要定级。 本站的正文是连续转述,如果给每句话都盖一个章,就会制造一种「逐句都核过了」的伪精度—— 而事实上同一段里的依据强度是一样的。
所以本站把定级放在段落所属的来源区间上,而不是每一句上。密度更低,但每一枚标签都是真的。
卷一速览 11 张卡片:讲号映射属编者判断
速览卡片是面向「如果只读一段」的重写稿,讲号与卡片的对应关系是编者按内容判定的, 不是原文自带的。这些卡片已标为「已核字幕」并写明具体讲号,读者可以按讲号回听核对。 这一步是推断,不是转录——已知并标注。
A5覆盖实测与分档理由
实测数字由脚本统计,非估算
分档分布(按页)
| 页面 | 原话 · 已核 | 转写 · 中 | 概要 · 待核 | 合计 | 高档占比 |
|---|---|---|---|---|---|
| 首页(图例 + 来源表 + 对照表) | 9 | 5 | 3 | 17 | 53% |
| 卷一 · 2016–17 音频课 | 35 | 41 | 6 | 82 | 43% |
| 卷二 · 2026 长访谈 | 35 | 5 | 2 | 42 | 83% |
| 合计 | 79 | 51 | 11 | 141 | 56% |
因为卷一的来源结构就是这样
卷一跨三个来源:B 站官方字幕只覆盖 001–080(26 个板块里占 11 个), 088–145 来自第三方 ASR 转写(占 10 个),146–155 只有 AI 概要(占 1 个),其余是索引与附录。 中档多不是标注偷懒,而是素材本身的保真度就这么高——这正是需要标出来的信息。
因为卷二全片有官方字幕
7,068 句官方字幕覆盖 00:00:00 – 04:22:28,正文九段与 12 条金句因此全部落到时间码; 中低档的 7 处集中在「概念词典」「需要打折听的地方」与速览来源行——那些是编者归纳,不是原话。
50 条逐字引语,100% 带出处标签
卷一 34 条、卷二 16 条,每条 <cite> 末尾都有标签。
分档规则是机械可核查的:讲号 ≤080 判高档、081–145 判中档、146 及以后(含 vol.xxx)判低档;
卷二一律高档。没有任何一条是「凭感觉」定的。
标签总数与来源结构调整过两次
初版只有板块徽章(40 处);加入引语标签后到 50 条;再加入速览卡片与索引分组后到约 120 处。 每次增加都同步跑一遍统计脚本,确保不会出现「标签数与实际标注物不符」的情况—— 这是「以日为镜」那种做法最容易翻车的地方。
A6可访问性、兼容性与交付体积
实测逐页统计
| 检查项 | 首页 | 卷一 | 卷二 | 判定 |
|---|---|---|---|---|
图标按钮无 aria-label | 0 | 0 | 0 | 通过 |
| 纯图标链接无可访问名称 | 0 | 0 | 0 | 通过 |
图片缺 alt | 0 | 0 | 0 | 通过(全站无位图 <img>) |
外链缺 rel="noopener" | 0 | 0 | 0 | 通过 |
行内 style 残留 | 0 | 0 | 0 | 通过(已归一) |
重复 id | 0 | 0 | 0 | 通过 |
| 表格缺横向滚动容器 | 0 / 0 | 0 / 0 | 0 / 0 | 通过(被审三页无 <table>;本页 4 张表全部包在 .tablewrap 内) |
| 脚本报错风险点 | 所有 DOM 查询都有空值保护;页面无 TOC 时目录脚本整体跳过 | 通过 | ||
3 页共 317 KB,共享资源 48 KB
HTML 合计 317,207 B;site.css 30,203 B + site.js 17,945 B,
三页加共享资源共 365,355 B。无位图、无字体文件、无前端框架。
首次加载只需请求本页 + 两个共享资源。
依赖 calc() 嵌套 max()
宽屏目录对齐用到 calc(var(--toc-w) + max(0px, …)),
现代浏览器(Chrome / Edge / Safari / Firefox 近五年版本)均支持。
不支持时会回退为左对齐,不出现内容遮挡。
禁用 JS 后仍可完整阅读
关掉脚本后:抽屉目录打不开,但正文全部可见; 搜索、分享、日夜模式失效,其余内容与锚点跳转正常。 主题默认浅色,不会出现深色残留。
A7问题清单与处理状态
问题台账不隐藏未修项
共记录 10 项。5 项已修、2 项为设计取舍、3 项为透明度事项(不修,但显式声明)。
| # | 维度 | 问题 | 处理 |
|---|---|---|---|
| 1 | 格式 | 三页的 canonical 与 og:url 全部指向站点根,而非各自页面 | 已修改为逐页 URL |
| 2 | 格式 | 站内检索索引里有一条指向 audit.html,但该页当时尚未生成 | 已修本页生成后自动命中 |
| 3 | 格式 | 正文残留 65 处行内 style(间距与颜色) | 已修归一为 12 个工具类,现为 0 |
| 4 | 排版 | 卷一逐讲索引只有「续篇」「补遗」两个分组标题,「正篇」缺标题 | 已修补齐并挂证据徽章 |
| 5 | 交付 | 缺少社交分享封面 og.png,但 meta 已在引用 | 已修新增 1200×630 封面 |
| 6 | 置信度 | 段落中间没有逐句标注,密度低于「以日为镜」 | 有意保留理由见 A4 |
| 7 | 置信度 | 卷一速览 11 张卡片的讲号映射属编者判断 | 有意保留已写明讲号可回听核对 |
| 8 | 置信度 | 卷一索引 148 行没有逐行标签 | 透明声明由三块分组标题承担分档 |
| 9 | 内容 | 卷一第 010 分 P 标题贴错,且与第 019 是同一集重复音频 | 透明声明索引行内标注 + 页脚详述 |
| 10 | 内容 | 卷一 146–155 集只有二手 AI 概要,无法逐字核对 | 透明声明整块降为「概要 · 待核」 |
A8复核方法(可复跑)
可复现脚本随仓库一同发布
本页所有数字都不是人工数的。构建与自检脚本都在仓库的 _build/ 目录下,按顺序跑即可复现。
六项必跑
- 标签平衡:24 类标签开闭差值必须全为 0。
- 目录双向对齐:目录 href 无悬空、section 无孤立。
- 索引锚点:47 条检索索引指向的文件与锚点全部存在。
- 引语覆盖:
<cite>数量 = 带标签的<cite>数量。 - 行内样式:三页
style="计数为 0。 - 可访问名称:无可访问名称的按钮与链接均为 0。
以上六项加上资源存在性、本页数字一致性,共八项,
由 _build/check.py 一条命令跑完并打印 PASS / FAIL;
退出码非 0 即表示不可交付。此处不再靠人工目测。
六项全部通过
对应本页 A3 / A5 / A6 三节的所有数字。任何一次改动后重跑, 数字若发生偏移,本页必须同步更新——否则审计报告本身就会成为不实陈述。
这条纪律已经脚本化:_build/sync_audit.py 从 validate_out.json
与产物真实字节数推导本页 A0 表格与 A6 体积卡的每一个数字,
且任何一次替换未命中都会直接报错退出。本页数字因此不可能与产物脱节。
重构品牌文案时它就抓到过一次偏差(三页字节数变了、表格还停在旧值)。
静态检查够不到的那一层:17 / 17 通过
标签配平、锚点存在、无行内样式——这些证明不了顶部栏那几样 JS 交互真的能用: 搜索会不会高亮、分享菜单会不会弹、日夜模式会不会切换并记住、抽屉目录能不能开。 而顶部栏正是本站照搬「以日为镜」的核心交付,只截图看不出来。
所以另有一份真交互验收:_build/accept.mjs 用 Playwright 驱动真实
Edge 浏览器跑 17 条断言,覆盖日夜模式切换 + localStorage 持久化、
检索命中数与无命中引导、分享菜单 12 渠道与 aria-expanded、
高亮计数一致性、高亮不越界到顶部栏、滚动联动与进度条、窄屏抽屉遮罩、四页零脚本报错。
当前 17 / 17。
它抓到过一个静态检查发现不了的问题:断言「高亮计数 == 正文 <mark> 数」
时报 46 对 43 —— 查下来是断言写窄了,脚本有意把 hero 与页脚也算作正文范围。
修的是断言,不是脚本。
A9已知边界:本次没能验证的部分
边界声明不把这些说成「已核」
审计的价值一半在于说清「哪些我查过」,另一半在于说清「哪些我没法查」。
卷一 146–155 集
这 10 集只有播客平台的 AI 概要 + 时间轴,没有逐字文本。本站按概要补全, 整块降为「概要 · 待核」,并明确写着「不能当逐字引用」。 想要逐字内容,只能回原始音频。
转写仓编号 ↔ 喜马原版编号
088–145 的对应关系是用「标题 + 时长」锚点推定的,已确认的锚点包括: 仓 006 = 站 1、仓 009 = 站 4、仓 016 = 站 11、仓 021 = 站 16、仓 027 = 站 21、仓 086 = 站 79、仓 087 = 站 80, 以及仓 081–087 与站 074–080 标题 7/7 全中、时长差仅 +6~+39 秒。 锚点之间是线性推定,未逐集听验。
B 站合集的标题不能当编号依据
第 010 分 P 是反例:标题与音频内容不符。所以本站对「标题相同即同一集」这类判断一律加一道时长或转写校验, 并在 MEMORY 里把这条固化成了流程。
「156 集」是官方口径,不是实际可得数
专辑页原话说「一共是 156 个音频……但是由于有几个涉及违规,没有上传成功」。 因此「全 156 集」严格说是官方声称的集数,而不是「能公开听到 156 集」。 本站覆盖的编号区间是 001–156,其中 146–156 段的依据最弱。
没有做第三方独立审计
本报告是作者自查,不是外部审计。所有「通过」都只代表自查脚本没有发现问题, 不代表不存在脚本没覆盖到的缺陷(例如语义层面的过度概括、翻译式失真)。
没有逐条回听原音
标注定级依据的是「来源区间」而不是「逐条回听」。也就是说: 标为「原话 · 已核字幕」的条目,其来源是可靠的官方字幕,但本站并未把 250 条结论逐条拖回音频比对一遍。 这一点在首页的阅读前提里也写明了。