数字我 Digital Me:全量入库(大文件走 Git LFS)
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s

This commit is contained in:
2026-10-10 16:24:43 +08:00
commit 0593ff7e62
1893 changed files with 361723 additions and 0 deletions
+319
View File
@@ -0,0 +1,319 @@
# 考验 · 汉 —— 残差 = 天
> **一句话:天 = 0 格。而这不是「没测到」,是【测不到】—— 我能证明。**
> 而老板要验的那一格(李广),**不是最大的正残差 —— 它是最大的【负】残差。**
跑法:`computeRank(profileFromSubs(subsOf(id), { wang: 0 }), 'han')`
数据:`src/renwu.js`(十人,画像/实职/入仕,curl 双证)· `src/kaoyan.js`(成绩单 + 残差)
**引擎(`dynasties.js` / `talents.js`)一个字未改。** `npm test` 473/473。
---
## ⚠ 先读这一条:这场考试不合法
**引擎的汉 = 东汉(`era:'东汉'`, `span:'25–220'`);本表十人 = 西汉,全部死于公元前 87 年以前。**
十人里**四个的实职是御史大夫**,而 `dynasties.js` 自己的铁律写着「御史大夫**不是东汉官**,绥和元年(前8)罢」。
⇒ **引擎里那个汉,连这四个人的官名都不存在。**
**✗ 谁都不许把下面任何一个数读成「引擎在汉朝的准确率」。那个数不存在,因为题目错配。**
跑它的理由只有一个:**量出引擎的行为**,不是给引擎打分。
---
## 成绩单 + 残差(每人一行)
`residual = 引擎给的位阶 − 他真到的位阶`
· **正残差(算高了)= 天** —— 引擎说他该到,他没到。
· **负残差(算低了)= 引擎缺变量** —— 他到了,引擎说他到不了。**这不是天,是我们的错。**
| 人 | 画像(史官的字,逐字) | 出处 | 我们认出的 subs | 引擎给的 | 他真到的 | **残差** |
|---|---|---|---|---|---|---|
| 晁错 | 錯為人**陗直刻深** | 《史記》卷101 | blunt, rigorous | 辟召·县令 **3** | 御史大夫 **5** | **−2** 缺变量 |
| 张汤 | 湯爲人**多詐,舞智以御人** | 《史記》卷122 | —(空) | 一条路都不开·斗食 **0** | 御史大夫 **5** | **−5** 缺变量 |
| 汲黯 | 黯為人**性倨,少禮,面折,不能容人之過** | 《史記》卷120 | blunt | 军功·县令 **3** | 主爵都尉 **5** | **−2** 缺变量 |
| **李广** | 廣**訥口少言**,其善射亦天性也,莫能及廣 | 《史記》卷109 | —(空) | 一条路都不开·斗食 **0** | 郎中令(九卿)**5** | **−5** 缺变量 |
| 李蔡 | 蔡**爲人在下中**,名聲出廣下甚遠 | 《史記》卷109 | —(空) | 一条路都不开·斗食 **0** | 丞相 **5** | **−5** 缺变量 |
| 公孙弘 | 弘為人**恢奇多聞**/**意忌,外寬內深** | 《史記》卷112 | datadriven, warm | 辟召·县令 **3** | 丞相 **5** | **−2** 缺变量 |
| 董仲舒 | 董仲舒為人**廉直** | 《史記》卷121 | blunt | 军功·县令 **3** | 江都相→膠西相 | **—** 量不了 |
| 桑弘羊 | 雒陽賈人子,**以心計**,年十三侍中 | 《史記》卷30 | datadriven | 辟召·县令 **3** | 御史大夫 **5** | **−2** 缺变量 |
| 兒宽 | 寬為人溫良…**善著書、書奏,敏於文,口不能發明也** | 《史記》卷121 | warm, calm | 一条路都不开·斗食 **0** | 御史大夫 **5** | **−5** 缺变量 |
| 程不识 | **爲人廉,謹於文法** | 《史記》卷109 | rigorous | 辟召·县令 **3** | 太中大夫(比千石) | **—** 量不了 |
**天(正残差):0 格 | 缺变量(负残差):8 格 | 算对:0 格 | 量不了:2 格**
**残差的值域:{−5, −2}。只有两个值,中间什么都没有,正的一个也没有。**
> 「量不了」**不是**「算对了」:董仲舒是诸侯王相、程不识是比千石 —— **本表的梯子上没有他们站的地方**。
> ✗ 不许算成错(那是拿「我们没有这一格」冒充「他不行」),✗ 也不许算成对。
---
## ★ 李广那一行 —— 老板点名要单独拎出来的那一格
```
引擎:一条路都不开 → 郡县小吏,斗食(tier 0)
史料:「然廣不得爵邑,官不過九卿」(《史記》卷109,双证)→ tier 5
残差:0 − 5 = −5 = 【缺变量】,不是天
```
**老板的前提是:「按这套尺子:李广该封侯。历史:他没有。」**
**⇒ 这个前提错了。按这套尺子,李广不该封侯 —— 引擎说他连门都进不去。**
为什么:司马迁给李广的画像是**「訥口少言」——他不说话**。
而 `talents.js` 的 16 项副天赋**全部是「说话风格」**(它自陈:「副天赋 = 说话风格软技能」)。
⇒ **一个「訥口少言」的人,在一张只量说话风格的表上必然是零。这不是巧合,是定义。**
**而最狠的一刀**:李广的实职**正是靠军功挣的**(「以良家子從軍擊胡,用善騎射,殺首虜多」)。
而引擎的军功之路是 `gate{wu:55}`,`wu`(果决)的两项副天赋是 **blunt(直率坦诚)** 与 **motivate(激励感染)**——
**两项都是说话。**
⇒ **把李广挡在军功门外的那道闸,量的是他最不擅长的那一样,而那一样与打仗毫无关系。**
### ⇒ 所以:引擎和司马迁站在同一边了吗?
**没有。它们连符号都相反。**
- 司马迁(和王勃)说的是**「他该封而没封」**—— 那是一个**正**残差的形状。
- 引擎说的是**「他连军功的门都进不去」**—— 那是一个**负**残差,而且是满格的。
**老板说「如果不是 —— 照实说,那更有意思」。照实说:不是。**
---
## ★ 太史公那句原话 —— 老板要我 curl 回来的那一句
> 老板:「我记得大意是『广不为后人,然无尺寸之功以得封邑者,何也?』——
> **但这是我的记忆,不是见证。以你 curl 到的为准。我记错了就照实说。**」
照实说,**三处**。curl `-sk` 生文本,双证逐字目验,未用 WebFetch。
见证 W:`zh.wikisource《史記/卷109》action=raw` | 见证 T:`ctext.org shiji/li-jiang-jun-lie-zhuan/zh`
### 错一:那句话**不是太史公问的** —— 是**李广自己**问的,对一个**看相的**说的
> 廣嘗與**望氣王朔**燕語,曰:「自漢擊匈奴而廣未嘗不在其中,而諸部校尉以下,才能不及中人,
> 然以擊胡軍功取侯者數十人,而廣不爲後人,**然無尺寸之功以得封邑者,何也?豈吾相不當侯邪?且固命也?**」
**「何也?」是李广的原话**,在**燕語**(私下闲谈)里,对象是**望氣王朔 —— 一个看气看相的方士**。
**而太史公曰整段里没有这个问题**(双证逐字):
> 太史公曰:傳曰:「其身正,不令而行;其身不正,雖令不從。」其李將軍之謂也?
> **余睹李將軍悛悛如鄙人,口不能道辭。**及死之日,天下知與不知,皆爲盡哀。
> 彼其忠實心誠信於士大夫也?諺曰「桃李不言,下自成蹊」。此言雖小,可以諭大也。
⇒ **太史公没有问「为什么」。他在【辩护】。**
> ★ 而这一段里躺着一件我没找、它找上我的东西:**「口不能道辭」**——
> 司马迁**在论赞里又说了一遍**李广不会说话(本传已有「廣訥口少言」)。
> ⇒ **司马迁认为「不会说话」重要到要在总评里再写一次 —— 而那正好是我们唯一量得了的那一样,
> 他两次说的都是「没有」。于是我们给他零。**
> 三个证人:李广「訥口少言」(卷109 本传)、「口不能道辭」(卷109 论赞)、兒寬「口不能發明也」(卷121)。
> ⚠ 而**论赞不进映射**(「拿它做映射就是拿答案当题目」)—— 这一句只当读数,李广的 subs 仍然是空的。
### 错二:**「李廣難封」不出《史記》**
- 见证 W:**「難」0 次、「难」0 次**(全卷,**逐字符**数,不整词搜)。
- 见证 T:字符串命中 2 次 —— **逐个读上下文复核:两次都是 ctext 页面左栏导航里的书名「難經」**,不在正文里。⇒ 正文 0 次。
**真出处:唐·王勃《滕王閣序》(约 675 年)**,双证(两个独立四库底本,**均无标点** —— 正因无标点,它们是「字」的独立见证):
> 嗟乎!時運不齊,命途多舛。**馮唐易老,李廣難封。**屈賈誼於長沙,非無聖主;竄梁鴻於海曲,豈乏明時?
⚠ 异文(标出,不暗合):《古今事文類聚》四库本作「**時運不齊**」,《文苑英華》四库本作「**大運不窮**」并自注「一作時運不齊」。而「馮唐易老,李廣難封」八字**不在异文之列**。
⇒ **老板说「中国人两千年前就给它起好名字了」—— 那个名字是【一千三百多年前】起的,起名字的是【王勃】,不是司马迁。**
> **⚠ 而必须立刻把另一半说满,否则这就是一次「假订正」:**
> **「李广没封侯」这件【事】,《史記》正文说了,逐字,双证:「然廣不得爵邑,官不過九卿」。**
> ✗ **绝不许由此写「李广难封是编的」**——**事实在原文里,只有那四个字的【措辞】是唐人的。**
> (照 `shiliao.js` 在「御史大夫中二千石」上换来的口径:「注有、正文无,本表只收正文」,✗ 不许说「本表无据」。)
**而这个错的形状,是本项目反复钉死的那一种 —— 把一句后人的名言,当成史料本身的话:**
| 名言 | 真身 |
|---|---|
| 「上品无寒门」 | 刘毅**请废九品的政论**,不是制度描述 |
| 「为与士大夫治天下」 | 文彦博的一句**辩论词**(神宗当场顶了回去,而那句回话被后世的书删了) |
| 「南朝多以寒人掌机要」 | **赵翼《廿二史札记》的条目名**,不是南朝史家的分类原则 |
| **「李广难封」** | **王勃《滕王閣序》的一句骈文**,不是《史記》的话 |
**同一个坑的第四次。而这一次踩它的是出题的人。**
—— 这一句必须说出来,因为本项目的全部纪律都建立在「谁都会踩这个坑」上,而**「谁都」包括出题的人**。
### 错三:见上 —— 按这套尺子,李广是斗食小吏,不是该封侯的人
---
## ★★ 而原文自己,把这个残差**解释掉了三次**
> 老板的红线:「**不许把残差解释掉。**『李广没封是因为他情商低』——那是给引擎打补丁,不是承认天。」
《史記》卷109 正文,双证:
1. **李广自己**:「豈吾**相**不當侯邪?且固**命**也?」——**相**与**命**。
2. **王朔(方士)**:「**禍莫大於殺已降,此乃將軍所以不得侯者也。**」——**报应**。
(李广自己招了:「吾誘而降,降者八百餘人,**吾詐而同日殺之**。至今大恨獨此耳。」)
3. **武帝**:「大將軍青亦**陰受上誡**,以爲李廣老,**數奇**,毋令當單于,恐不得所欲。」——**數奇**(命数不好)。
⇒ **「不许把残差解释掉」这条规矩,两千年来没有一个人遵守过 —— 包括李广本人:
问残差的那个人,和第一个把它解释掉的那个人,是同一个人,在同一句话里。**
⇒ **古人不承认残差。他们给残差起名字,然后把它当成一个已知量。**
> ⚠ 见证学的判别器又生效了一次:「數奇」在见证 W(收注)出现 2 次,见证 T(只收正文)**1 次**。
> **A 有而 B 无 ⇒ 它是注。**「失道見斥,**數奇不封**」是**司馬貞索隱(唐人注)**,不是史料。本表只取正文那一次。
### ★★★★ 而最要紧的一层在③ —— 它正面撞上老板的另一条红线
> 老板:「**不许把「天」做成一个变量塞进 computeRank。天不接受输入 —— 这是它的定义。
> 它只能被【测量】,不能被【计算】。**」
**而武帝就是那么干的。**
「數奇」是汉朝人给「天」起的名字,而他**拿它做了一个人事决定**:
陰受上誡 ⇒ 「毋令當單于」⇒ 徙前將軍廣出東道。
**而那正是李广结局的开端**:出东道 →「東道少回遠」→ 失道 → 后期 → 引刀自剄。
⇒ **天被当成变量的那一刻,它就不再是天了 —— 它成了那个人下场的原因。**
**⇒ 即:老板那条红线【有原文依据】。而它不是一条工程纪律,它是《史記》卷109 里一个人的死法。**
> **⚠ 两条限定语,缺一条这就是过度解读:**
> ① **这条因果链是【本表串的】,不是原文说的。** 原文给的是四笔事实(陰受上誡/徙東道/東道少回遠/失道),
> 它**没有说**那是死因。✗ 不许写成「司马迁认为武帝的偏见害死了李广」——那是我的读法,不是他的话。
> ② **而原文自己给了一个竞争解释,就在同一段**:「而是時公孫敖新失侯…**大將軍亦欲使敖與俱當單于,故徙前將軍廣**。」
> ⇒ 徙他的第二个理由是**卫青要给公孙敖让路 —— 一个人情,不是一个天命**。
> **原文把两个理由并排放着,一个字的裁断都没有。本表照办:两个都摆,不裁。**
---
## ★ 为什么「天」测不到 —— 两行算术,不是运气
| | 值域 |
|---|---|
| **引擎在汉能说的** | `tier ∈ {0, 3}` —— 穷举 524,288 个 profile 实测,且**解析证明**:三条通道 `kemu` 全空 ⇒ `tier ≡ clamp(seat,0,cap) ≡ 3`;不过闸 ⇒ 0。⇒ **max = 3** |
| **这张卷子的答案** | `realTier ∈ {5}` —— 八个可判分的人实职全是三公/九卿。⇒ **min = 5** |
⇒ **`residual = engineTier − realTier ≤ 3 − 5 = −2`,恒成立。**
⇒ **正残差的定义域是空的。**
**⇒ 「天」不是「这次没出现」,是【在这张卷子上不可能出现】。**
而废掉它的有**两条独立的理由**,**修好任何一条,另一条照样废它**:
1. **答案表的形状**(幸存者偏差):《百官公卿表》**按定义只记坐上位子的人**。
⇒ 这是**史料的问题**,而且**修不了**:一个做到县令就到头的人,**史书不给他立传**。
2. **引擎的值域**:就算给我一张实职分布在 0–5 的完美名单,**汉的引擎最高也只会说 3**
⇒ 对任何 `realTier ≥ 4` 的人,残差**必然是负的**。⇒ 这是**引擎的问题**,**与名单无关**。
> **★ 一个最高只会说「县令」的引擎,永远不可能说出「他该封侯」。⇒ 它没有资格产生一个正残差。**
---
## ★ 残差的形状(老板:「报个案,报形状,别报百分比」)
**哪一类人算得准?——没有一类。八格全是负残差,0 格算对。**
**但形状是有的,而且很干净:残差只有两个值,中间什么都没有。**
- **残差 = −2(晁错、汲黯、公孙弘、桑弘羊)** ⟺ 引擎**认出了**他的画像 ⇒ 过闸 ⇒ tier 3
**共同点不是他们更能干**,是**司马迁给他们的词,正好落在我们有的那 16 项上**
(陗直→blunt、刻深→rigorous、面折→blunt、多聞→datadriven、外寬→warm、以心計→datadriven)。
- **残差 = −5(张汤、李广、李蔡、兒宽)** ⟺ 引擎**没认出** ⇒ 一条路都不开 ⇒ tier 0
**而这四个人不是更差**:
- 张汤「多詐,舞智以御人」:16 项里**没有「诈」**;
- 李广「訥口少言」:16 项**全是说话,而他不说话**;
- 李蔡「爲人在下中」:**那根本不是画像,是一个【等第】**——司马迁没描写他,他**直接给了个分**;
- 兒宽 subs **非空**(`[warm, calm]`)—— 而**汉的三条闸一项都看不见**(jiao 被 `wang=0` 连坐、heng 汉不看)
⇒ **效果与空完全相同**。
⇒ **★ 所以这张残差表,描述的不是历史,是【我们自己的词汇表】。**
**残差的两个值 = 我们词汇表的两个状态:接住了(−2),没接住(−5)。**
**而历史那一头是个常数(八人实职全是 5)。**
⇒ **一个减法,被减数是我们的词汇表,减数是一个常数。于是「残差」这个量,从头到尾量的都是我们自己。**
**而「天」要的恰恰是相反的东西**:它要求**引擎那一头有内容,历史那一头有变化**。
⇒ 实测:**两头都是常数。两个常数相减,得到的还是常数 —— 那里面没有「天」。**
⇒ **「天」是残差里【减不掉】的那一部分。而这张卷子上,残差 100% 由「我们认不认得这个人的画像」解释。
残差里一点天都没有。**
---
## ★★ 最后回答那个问题(老板:这比成绩单重要)
> **这场考试考出的是「引擎能算命」,还是「引擎是一套自洽的胡话」?老实说。**
**两个都不是。老实说,是第三个 —— 而它比两个选项都难堪:**
### **引擎不是胡话 —— 它的每一句话都有出处。问题是它几乎不说话。**
- 全表 20 条通道,**19 条的位阶是常数函数**(解析 + 穷举双证)。
而这**正好等于原文授权的区分度 —— 一处不多,一处不少**:唯一会变的那条(宋武举)
恰恰是唯一一条有原文可依的(「策、武藝俱優為右班殿直……武藝末等者三班差使」)。
⇒ **19 条常数不是 19 个 bug,是 19 次「本表数不出你的高下」的诚实回答。**
- **汉这一朝,引擎的位阶信息量 = 1 bit**,而那 1 bit 是「你过没过闸」,不是「你能爬多高」。
**连三条路的天花板都是平的(全是 5)——「通道即杠杆」在汉一格都没兑现。**
### **而它也不能算命 —— 十个人,八个算错,而且错法完全一样。**
**老板说「如果十个人里八个算错 —— 那就说八个算错,那也是今天最值钱的一句话」。**
**⇒ 八个算错。八个全是【算低了】。零个算对。零个算高。**
### **★ 而真正的答案是这一句:**
> **它不是在算命,也不是胡话 —— 它是一把量错了东西的、诚实的尺子。**
>
> **六轴的名字是「文采/吏能/果决/交游/沉毅/机锋」—— 那是【选官的取向】。
> 而它的唯一输入,是 16 项【说话风格】。
> ⇒ 它名义上在量「你这种人」,实际上在量「你这种说法」。**
>
> **李广是天下第一的射手,兒寬是天下第一的笔杆子 —— 他们的共同点是【都不会说话】。
> 于是我们给他们两个零。**
**⇒ 而这一条对「天」是决定性的:**
**老板说「谋事在人,成事在天」。这一刀量出来的是:**
> ## **「人」这一半还没做完,「天」那一半就无从谈起。**
「人」= 引擎能算的那部分 = 在汉只有 1 bit,而且量的是你会不会说话。
**一个只有 1 bit 的「人」,减出来的残差里,装不下「天」。**
**残差要能读成「天」,前提是「人」那一头已经把能算的都算完了 ——
而我们连李广是个将军都不知道,我们只知道他不爱说话。**
⇒ **所以「天」这一刀的结论是:它没有被做完,它被证明【还不能开始】。**
---
## 要老板拍的(一条都没自作主张,`kaoyan.js` NOT_DONE)
1. **「天 = 残差」这个定义是对的,我认它 —— 但它在这张卷子上【不可用】,而且我能证明。**
要开始它,得先拍 `renwu.js` NOT_DONE ②:**那一维(「你是什么人」)到底补不补 —— 那一维就是「人」。**
2. **✗ 强烈反对「给汉编一套 kemu 让 tier 够得着答案」**:那是**为了测出「天」而发明「人」**。
⚠ 而且它有一层更阴的:**发明出来的 kemu 会【立刻】制造出正残差**——
引擎一旦能说 5,而历史上有人没做到 5,那个差**当场就出现**。
⇒ **于是我们会得到一张「天」的表,而那张表里的每一个「天」,都是我们自己编的那套 kemu 的产物。**
**★ 那不是测量天,那是制造天。**
3. **李广这一格仍然是这个产品最好的文案,只是文案的内容【反了】**:
✗ 不是「引擎和司马迁都说他该封侯,而历史没有 ⇒ 那就是天」;
★ 而是 **「司马迁说他天下无双,我们的引擎说他是个斗食小吏。⇒ 错的是我们,不是天。」**
⚠ **这是一句产品定性的话,不是一句文案** —— 它把这个功能从「算命」改成「认错」。
4. **而若要正面用李广,「數奇」比「李广难封」值钱得多**:
「李广难封」是一句**感慨**(而且是唐人的);
**「數奇」是一次【判断的执行】—— 它才是这个产品真正在做的那件事的镜子:
我们也在给人算一个数,然后把那个数告诉他。**
---
## 我自己招的
- **`Object.keys(SUB_REGISTRY)` 那一跤**:`SUB_REGISTRY` 是**数组**,`Object.keys` 给的是下标 `["0".."15"]`,
于是穷举时**一个 sub 都没点上** ⇒ 全 tier 0 ⇒ 结果是 `[0]`。
**★ 而一个【采样错了】的穷举,长得和一个【引擎变了】的穷举一模一样 —— 我差点去改断言。**
⇒ 立了口径:**穷举的 subs 全集必须取【引擎自己读的那一份】(`AXES.subs`)**,并加了一条断言钉死
「`AXES` 读的 16 项 == `SUB_REGISTRY` 的 16 项」。**是我自己的断言抓出来的,不是我读出来的。**
- **第五次零命中,而它是一个【新种类】**:扫「不爲後人」→ 零命中,差点写成「原文无此语,老板记错了」。
逐字符复核:原文作「而廣不爲**-{後}-**人」——**两个原因叠在一起**:
① 字形(《史記》用「爲」);② **wikisource 的 `-{ }-` 转换标记【插在词的中间】**。
⇒ **`renwu.js` 立的那条口径(写成 `[為爲]` 字形类)挡不住第二个** —— 就算写 `[為爲]`,「不爲-{後}-人」仍然零命中。
⇒ **立一条更严的:凡在 wikisource 生文本上检索,必须【先剥 `-{ }-` 与 `{{ProperNoun|}}`,再检索】。字形类不够。**
(`renwu.js` 自陈它「程序化剥除」了标记 —— 它**知道**要剥,但它的**检索口径**那一条只写了字形类。
**一个文件在两个地方各说了一半,合起来才够用。**)