数字我 Digital Me:全量入库(大文件走 Git LFS)
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s
This commit is contained in:
Executable
+77
@@ -0,0 +1,77 @@
|
||||
# 天赋系统契约(Talent System Contract)
|
||||
|
||||
天赋树 = **Prompt + 模型行为的控制平面**,不是游戏成长系统。
|
||||
- **主天赋(唯一)** = 身份:决定 System Prompt / 是否走 RAG / 合规安全等级 / 默认模型。主天赋 **就是 `twin.profession`**,不另存一套 id。
|
||||
- **副天赋(≤N)** = 风格软技能:**后置改写**,只碰成稿、**绝不改事实**。
|
||||
|
||||
实现见 [`../../src/talents.js`](../../src/talents.js)。本目录是与线上代码对齐的**契约**,也是将来搬 DB 的蓝本。
|
||||
|
||||
## 文件
|
||||
| Schema | 描述 | 对应代码 |
|
||||
|---|---|---|
|
||||
| [main-talent.schema.json](main-talent.schema.json) | 主天赋身份节点 | `mainTalent(profId)` |
|
||||
| [sub-talent.schema.json](sub-talent.schema.json) | 副天赋注册表项 | `SUB_REGISTRY` |
|
||||
| [user-talent-instance.schema.json](user-talent-instance.schema.json) | 分身选定的天赋 | `twin.talents` |
|
||||
| [talent-registry.schema.json](talent-registry.schema.json) | 注册表整体 | 派生/静态表 |
|
||||
|
||||
## 派生关系(主天赋怎么来的)
|
||||
不逐个职业手写主天赋,而是三张映射表交叉派生(`talents.js`):
|
||||
```
|
||||
profession(professions.js) ──cat──▶ ARCH_BY_CAT ──▶ arch ──▶ ARCH_BEHAVIOR(行为基线) + ARCH_MODEL(模型偏好)
|
||||
└─compliance─▶ COMPLIANCE ──▶ safety_level + block_keywords + disclaimer + audit_required
|
||||
```
|
||||
- `cat → arch`:content→creator, pro/health/biz/life/other→expert, edu→teacher, art→artist, sport→sport, craft→craft
|
||||
- `compliance → 安全`:none→{2,无} / soft→{5,软免责} / strict→{9,强免责+关键词+需审核}
|
||||
|
||||
新增一个职业只改 `professions.js` 一处;换某原型的行为只改 `ARCH_BEHAVIOR` 一处。
|
||||
|
||||
## 校验规则(服务端必须兜底,不信前端)
|
||||
1. **主天赋唯一**:`main_talent` 必须 ∈ 职业表(`getProfession`),否则 400 `unknown-main-talent`;`null`/无 → `general` 兜底身份。
|
||||
2. **副天赋合法性**:每个 id 必须 ∈ `SUB_REGISTRY`;去重;顺序保留。
|
||||
3. **副天赋槽位**:数量 ≤ `maxSubs(level) = min(3, 1 + level)`(level 来自 `computeSkillTree`)。超出**静默截断**(`validateSubs`),不报错。
|
||||
4. **副天赋不改事实**:所有 style/constraint 副天赋合并成**一次**后置改写,指令强约束"不改变任何事实/数字/结论/引用";hobby 型走前置注入。
|
||||
5. **审核门(软门)**:`main.audit_required && !twin.verified` → `twin.talentAudit='pending'`,**不拦截**(分身仍可用),但运行时 Guardrail 强制免责。已 `verified` → `'approved'`。
|
||||
6. **Guardrail(运行时,输出前)**:
|
||||
- `block_keywords` 命中 → 软化替换;
|
||||
- `safety_level >= 5` 且回答未含免责 → 追加 `disclaimer` 到结尾。
|
||||
|
||||
## 运行时管线(`services/twin.js` → `ask()`)
|
||||
```
|
||||
用户输入
|
||||
→ 组装 System Prompt:身份(mainPromptBlock) + 前置注入(injectBlock) + 人设/记忆/RAG
|
||||
→ (RAG 检索,main.rag)
|
||||
→ LLM 主回答 chat(messages) ← 主天赋出稿
|
||||
→ 副天赋后置改写 chat([restyleInstruction, draft]) ← 合并 1 次;无副天赋则跳过
|
||||
→ Guardrail guardrail(text, main) ← 屏蔽词 + 免责
|
||||
→ 输出
|
||||
```
|
||||
成本:每轮 **1 次主调用 + 至多 1 次改写调用**(不是每个副天赋一次)。
|
||||
|
||||
## API 契约
|
||||
### `GET /api/twins/:id/talents`
|
||||
返回(`describeTalents`):
|
||||
```jsonc
|
||||
{
|
||||
"main": { "id","name","emoji","entity","arch","compliance","safety_level",
|
||||
"rag_required","audit_required","audit_ok","behavior" },
|
||||
"subs": { "selected": ["humor"], "max": 1,
|
||||
"options": [{ "id","name","subtype","desc" }] },
|
||||
"growth": { "level": 0, "maxSubs": 1 }
|
||||
}
|
||||
```
|
||||
### `PUT /api/twins/:id/talents`
|
||||
Body(两字段都可选,可单独改):
|
||||
```jsonc
|
||||
{ "main_talent": "lawyer", // 可选:切身份(=profession),带 audit 门
|
||||
"sub_talents": ["humor","concise"] } // 可选:仅当为数组时才更新;截到 maxSubs
|
||||
```
|
||||
返回同 `GET`。
|
||||
|
||||
## DB 化迁移(留了缝,MVP 不做)
|
||||
1. `SUB_REGISTRY` → 集合 `talent_sub_registry`(一项一文档)。
|
||||
2. 主天赋映射(ARCH_BEHAVIOR / COMPLIANCE / ARCH_MODEL)→ 集合 `talent_main_config`,或物化 `talent_main_talents`(一职业一行)。
|
||||
3. 每个节点加 `talent-registry.schema.json#/$defs/versioning`(`version/active/gray_pct`)→ 支持**灰度放量 + 一键回滚**。
|
||||
4. `talents.js` 的纯函数签名不变,只把三张 `const` 表换成带缓存的 DB 读取;`describeTalents/resolveTalents/guardrail` 全部复用。
|
||||
|
||||
## 留坑不做(架构留得住)
|
||||
天赋升级 lv2/3(`level` 字段已在)· 冲突检测(医生+算命❌)· 天赋市场(官方/共创)· 会话级动态天赋 · 按天赋真路由模型/计量返佣(`model_preference` + `chat(opts.model)` 缝已在)。
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://digitalme.invoratec.cn/schemas/main-talent.json",
|
||||
"title": "MainTalent",
|
||||
"description": "主天赋 = 唯一身份单元。当前由 profession + archetype + compliance 派生(见 talents.js mainTalent());将来可整体搬入 DB 集合 talent_main_config。主天赋决定:身份 System Prompt / 是否走 RAG / 合规安全等级 / 默认模型。",
|
||||
"type": "object",
|
||||
"required": ["id", "name", "type", "system_prompt", "rag", "safety_level", "compliance", "audit_required"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"id": { "type": "string", "description": "= profession id(主天赋不另建一套 id,直接复用职业)。null 身份用 'general'。", "examples": ["lawyer", "game_blogger", "general"] },
|
||||
"name": { "type": "string", "description": "展示名", "examples": ["律师/法律顾问"] },
|
||||
"emoji":{ "type": "string" },
|
||||
"type": { "const": "main" },
|
||||
"level":{ "type": "integer", "minimum": 1, "default": 1, "description": "身份等级(MVP 恒为 1;lv2/3 留给未来天赋升级)。" },
|
||||
"arch": { "type": "string", "enum": ["expert", "creator", "teacher", "artist", "sport", "craft"], "description": "职业原型:决定行为基线(ARCH_BEHAVIOR)与默认模型。由 profession.cat 映射。" },
|
||||
"entity": { "type": "string", "description": "生命体称号", "examples": ["律师生命体"] },
|
||||
"system_prompt": { "type": "string", "minLength": 1, "description": "身份+行为基线,拼进 buildPersona。" },
|
||||
"rag": {
|
||||
"type": "object",
|
||||
"required": ["required", "top_k"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"required": { "type": "boolean", "description": "是否强要求基于私有知识库作答(expert 原型或非 none 合规 → true)。" },
|
||||
"top_k": { "type": "integer", "minimum": 1, "maximum": 20, "default": 5 },
|
||||
"scope": { "type": "array", "items": { "type": "string" }, "default": [], "description": "限定检索域(预留;MVP 为空=全库)。" }
|
||||
}
|
||||
},
|
||||
"model_preference": { "type": "array", "items": { "type": "string" }, "default": ["qwen"], "description": "模型偏好,路由缝。当前仅 'qwen'(符号名,非真实 model id),near-noop。" },
|
||||
"safety_level": { "type": "integer", "minimum": 0, "maximum": 10, "description": "越高越严。none=2 / soft=5 / strict=9。>=5 触发 Guardrail 强制免责。" },
|
||||
"block_keywords":{ "type": "array", "items": { "type": "string" }, "default": [], "description": "命中即被 Guardrail 软化替换。" },
|
||||
"disclaimer": { "type": "string", "default": "", "description": "safety>=5 且回答未含时,由 Guardrail 追加到结尾。" },
|
||||
"audit_required":{ "type": "boolean", "description": "专业强合规身份需资质审核(strict=true)。未认证→talentAudit=pending(软门,仍强制免责)。" },
|
||||
"compliance": { "type": "string", "enum": ["none", "soft", "strict"], "description": "合规等级,来源 professions.js。" }
|
||||
}
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://digitalme.invoratec.cn/schemas/sub-talent.json",
|
||||
"title": "SubTalent",
|
||||
"description": "副天赋 = 风格/软技能,存于 SUB_REGISTRY(talents.js),将来搬 DB 集合 talent_sub_registry。两类接入点:style/constraint = 后置改写(只碰成稿,绝不改事实);hobby = 前置注入(进 System Prompt;机制预留,MVP 未铺货)。",
|
||||
"type": "object",
|
||||
"required": ["id", "name", "subtype", "desc"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"id": { "type": "string", "examples": ["humor", "concise"] },
|
||||
"name": { "type": "string", "examples": ["幽默感"] },
|
||||
"subtype": { "type": "string", "enum": ["style", "constraint", "hobby"], "description": "style/constraint→后置改写;hobby→前置注入。" },
|
||||
"desc": { "type": "string", "description": "给用户看的一句话说明。" },
|
||||
"rewrite_prompt": { "type": "string", "description": "subtype=style|constraint 必填:合并进单次后置改写指令的风格项。" },
|
||||
"inject_prompt": { "type": "string", "description": "subtype=hobby 必填:前置注入到 System Prompt 的兴趣/偏好项。" }
|
||||
},
|
||||
"allOf": [
|
||||
{ "if": { "properties": { "subtype": { "enum": ["style", "constraint"] } } }, "then": { "required": ["rewrite_prompt"] } },
|
||||
{ "if": { "properties": { "subtype": { "const": "hobby" } } }, "then": { "required": ["inject_prompt"] } }
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://digitalme.invoratec.cn/schemas/talent-registry.json",
|
||||
"title": "TalentRegistry",
|
||||
"description": "天赋注册表。当前『按数据表形状』写在 talents.js(主由 professions 派生、副是 SUB_REGISTRY 数组);本 Schema 描述其逻辑形态,也是搬入 DB 后 talent_* 集合的契约。每个节点预留 version/active/gray_pct 以支持灰度与回滚。",
|
||||
"type": "object",
|
||||
"required": ["sub_talents"],
|
||||
"properties": {
|
||||
"main_talents": {
|
||||
"type": "array",
|
||||
"description": "主天赋表。MVP 由 professions.js × archetype × compliance 动态派生,不落库;搬 DB 时物化为一行一职业。",
|
||||
"items": { "$ref": "./main-talent.schema.json" }
|
||||
},
|
||||
"sub_talents": {
|
||||
"type": "array",
|
||||
"description": "副天赋注册表(当前 SUB_REGISTRY)。",
|
||||
"items": { "$ref": "./sub-talent.schema.json" }
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"versioning": {
|
||||
"description": "DB 化后每个节点附加的灰度/回滚字段(MVP 代码内暂无)。",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"version": { "type": "integer", "minimum": 1 },
|
||||
"active": { "type": "boolean", "default": true },
|
||||
"gray_pct": { "type": "number", "minimum": 0, "maximum": 100, "default": 100, "description": "灰度放量百分比。" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://digitalme.invoratec.cn/schemas/user-talent-instance.json",
|
||||
"title": "UserTalentInstance",
|
||||
"description": "一个分身(twin)当前选定的天赋。主天赋不重复存——它就是 twin.profession;这里只存副天赋选择与解锁时间。审核态存 twin.talentAudit。",
|
||||
"type": "object",
|
||||
"required": ["sub_talents"],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"sub_talents": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" },
|
||||
"uniqueItems": true,
|
||||
"maxItems": 3,
|
||||
"description": "已选副天赋 id(必须 ∈ SUB_REGISTRY)。长度受 maxSubs(level)=min(3,1+level) 限制;服务端 validateSubs 兜底截断。"
|
||||
},
|
||||
"unlockedAt": { "type": ["string", "null"], "format": "date-time", "default": null, "description": "首次配置副天赋的时间。" }
|
||||
},
|
||||
"$comment": "关联字段(存在 twins 文档其它位置,非本对象):twin.profession = 主天赋 id;twin.talentAudit ∈ null|'pending'|'approved'(强合规身份的资质审核态);twin.verified = 蓝V(admin 置,audit 通过依据)。"
|
||||
}
|
||||
Executable
+483
@@ -0,0 +1,483 @@
|
||||
# 样传 · 南齐 · 中书通事舍人
|
||||
|
||||
> # ⚠⚠⚠ 过期声明(2026-07-17 第六刀加)—— 先读这一段
|
||||
>
|
||||
> **本页是【第三刀那一天的快照】,而它现在有几处对不上引擎的实际输出了。**
|
||||
> 挂这个声明,是因为本页下面白纸黑字写着一句话:
|
||||
> 「以下为 `shizanForLineage(lineage)` 的**实际输出,原样粘贴**:简体、未转繁、未润色、未删节。」
|
||||
> ★ **加一道题,这句话当场变成假话** —— 而没有任何东西看着它过期。
|
||||
> (发现它过期的是 `test/lineage.test.js` 里那条钉着本页赞辞的断言。
|
||||
> ★ 那条断言**钉得越死,本页过期的那天就越早被发现** —— 故它没有被改成宽松匹配。)
|
||||
>
|
||||
> ## 哪几处对不上了
|
||||
>
|
||||
> **第六刀给南齐加了一道「事」层的关口**(`nanqi-xuanzhi`「宣旨慰劳」,永明八年 490,
|
||||
> 料出《南齐书》卷五十六·茹法亮传,当代史双证),而它在**时序上排在本页这一道之前**
|
||||
> (永明 490 < 建武 494–498)。⇒ 一部南齐的传现在**从永明八年那一趟江起**,是三格,不是两格。
|
||||
>
|
||||
> | 本页写的 | 引擎现在的实际输出 |
|
||||
> |---|---|
|
||||
> | 赞的**起联**作「**省内四户,机要所因**」 | 「**巴东杀僚,衔命及津**」——`shizan.js` 的取法是「起 ← 链首那一格」,而链首变了 |
|
||||
> | 正文从「四户」起 | 前面多了永明八年那一趟江(4 句),末尾多了**两笔「在场」**(`src/zaichang.js`) |
|
||||
> | 史臣曰从「中书通事舍人,品卑而权重」起 | 从「中书通事舍人之职,萧子显序之,凡十六字」起(骨干改用**萧子显本人**,当代史) |
|
||||
>
|
||||
> **✓ 而本页下面这些,一个字都没变,仍然作数**:
|
||||
> 「正文是推演,注才是原文」的体例、拒绝安籍贯、逃生口、三档影响、
|
||||
> 《南齐书》「史臣曰+四言赞」的体例说明、以及那句自陈的体例破绽(萧子显看不见陈)。
|
||||
>
|
||||
> ⇒ **要不要重出一份快照,等老板拍**。本刀**没有替它重写** —— 理由:
|
||||
> 重出一份就得连同「哪一条链」一起重新拍板(本页拍的是 `zuo-shi` 那条),
|
||||
> 那是个产品决定,不是收尾工作。★ **在那之前,本页的「原样粘贴」四个字只对上面表格之外的部分成立。**
|
||||
|
||||
---
|
||||
|
||||
> **第三刀的端到端样张。**
|
||||
> 产品定义:「我的分身,我在每朝每代的位置,我所在位置的选择对后世的影响,史记我的传。」
|
||||
> 这一页把四句话跑通一遍:位置(`dynasties.js`)→ 选择(`decisions.js`)→ 影响(`computeImpact`)→ 传(`shizan.js`)。
|
||||
>
|
||||
> **一句话内核:你什么都没变,天花板全变了。**
|
||||
|
||||
---
|
||||
|
||||
## ⚠ 这是什么,这不是什么 —— 先读这一段,不许折叠
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| **传主叫「某」,他是【拟托】的人。** | 南齐没有这个人。他不见于《南齐书》,不见于《南史》,不见于任何史籍。他是一份人格画像(严谨专业/有理有据/简洁利落/结论先行/耐心细致/沉稳克制,**无声望**)被投影到南齐建武年间的结果。**任何人在任何地方看见这一页,都不许把它当作史料。**<br>★ 他叫「某」不是偷懒:**传主是你**。本页**拒绝给他安名字,也拒绝给他安籍贯**——「某,不知何许人也」是史书自己的成例,而编一个「吴兴乌程人」出来,那就是在造一条假史料。 |
|
||||
| **正文是【推演】,注才是【原文】。** | 这是本产品唯一诚实的地方,也是它全部的信誉。下面每一句正文都编了号;注里逐条说明它是**原文**(给出处、原文、限定语)还是**推演**(明说无史料,且**不给它安卷次**)。<br>**带卷次的错误比没出处的错误危害大十倍,因为它不可反驳。** |
|
||||
| **caveat 不许隐藏。** | 注的价值不在于显得权威,在于**拆穿读者脑子里的通俗史观**。「四户」不是四个省、「势倾天下」不是南史的贬抑书法、「南朝多以寒人掌机要」是清人赵翼的条目名、纪僧真那件事**不能读成制度** —— 这些都写在 caveat 里。折叠 caveat 等于把这个产品最值钱的部分扔了。 |
|
||||
| **「史臣曰」是【断语,不是计算】。** | 引擎算得出来的只有三档:没有/五十年/两百年以上。断语是拿《南齐书》体例套出来的话,由规则和模板拼装,**不是 LLM 生成**,也**不是萧子显写的**。它是**拟史家之辞**。 |
|
||||
| **史料考实。** | 本页史料全程 `curl -sk` 取生 HTML/wikitext 逐字比对,**未用 WebFetch**(它把页面交给小模型转述,实测抓到过伪造引文)。关键句取两个独立见证(zh.wikisource/sidneyluo.net 繁体本/国学导航/ctext)。wikisource 所带的中华书局 `<ref>` 校勘记已全部剥除,未充作史料引文。**引文标点为本项目所加**,未采用任何现代点校本的标点、分段或校勘成果。 |
|
||||
|
||||
---
|
||||
|
||||
## 一、传主
|
||||
|
||||
**人格画像**:严谨专业 · 有理有据 · 简洁利落 · 结论先行 · 耐心细致 · 沉稳克制。**无声望。**
|
||||
**吏能满格,不善交游,无门第。**
|
||||
|
||||
引擎实算(`profileFromSubs` → `computeAxes` → `computeRank(profile, 'nanchao')`,纯函数,无 LLM):
|
||||
|
||||
```
|
||||
六轴 吏能 83 · 沉毅 73 · 文采 40 · 果决 40 · 交游 40 · 机锋 40 · 声望 0
|
||||
通道 sheren(中书通事舍人)—— gate { fa: 55 },不问门第,只问你办不办得了事
|
||||
位阶 中书通事舍人 · 品卑而权重 · tier 4
|
||||
史书归类 倖臣 · stigma = true
|
||||
```
|
||||
|
||||
引擎给的理由(`reasons`,**原样**):
|
||||
|
||||
> 你走的是「中书通事舍人」。舍人取精敏者掌诏诰机要——问的是你办不办得了事,不问你是谁家的。
|
||||
> 这条路最看重吏能,你在这一项是 83。
|
||||
> **权在其手,而名不在其身:清流不与同席。**
|
||||
> 而「士族清途」那条路对你关着——清官为士族所专——这条路对绝大多数人根本不开。
|
||||
> 而「军功」那条路对你关着——方镇握兵,寒人可因军功起。
|
||||
|
||||
**士族清途对他关着**:`gate { wang: 75 }`,他是 **0**。这不是「他不够努力」,这是那条路的门槛写在门上。
|
||||
|
||||
同一份画像,`compareDynasties` 跑出来的 headline(**原样**):
|
||||
|
||||
> **同一个你:在南朝,中书通事舍人;在魏晋,不入流。你什么都没变。**
|
||||
|
||||
| 朝代 | 通道 | 位阶 | tier |
|
||||
|---|---|---|---|
|
||||
| 汉 | 辟召(四科·明达法令) | 县令 · 六百石 | 3 |
|
||||
| **魏晋** | **(三条路一条都不开)** | **不入流 · 无品** | **0** |
|
||||
| **南朝(南齐)** | **中书通事舍人** | **中书通事舍人 · 品卑而权重** | **4** |
|
||||
| 唐 | 藩镇幕府 | 刺史 · 四品 | 3 |
|
||||
| 明 | 科举正途 | 知府 · 正四品 | 3 |
|
||||
|
||||
> ⚠ **不许拿 tier 画跨朝对比柱状图。** 汉的「二千石」和南齐的「五品」**可比附而不等值**——南朝人自己就折算过(梁天监初定令,于品下注「一品秩为万石,第二第三为中二千石」),但那是把汉代十余级的实际禄级压成挂在品下的三档虚名。**折算得出来,等值等不了。**
|
||||
|
||||
---
|
||||
|
||||
## 二、列传
|
||||
|
||||
> 拟《南齐书》卷五十六·列传第三十七·倖臣 体例。**正文是推演**;句末编号对应下节的注。
|
||||
> ⚠ 用繁体,是因为它抄的是《南齐书》的字。(下文第六节的引擎输出是简体——那是**原样粘贴**,本页不替引擎转繁、不替它润色。)
|
||||
|
||||
**某,不知何許人也**〔1〕。**世無冠冕,不豫鄉論**〔2〕。**少為郡書佐。性沉密,簡於言;每白事,先陳其要,而後列其狀,不為文飾。案牘盈几,剖決無留**〔3〕。
|
||||
|
||||
**建元中,補中書省主書**〔4〕。**永明中,以吏幹遷中書通事舍人**〔5〕。**關讞表啟,發署詔敕;頗涉辭翰者,亦為詔文,侍郎之局,復見侵矣**〔6〕。**省內舍人四人,所直四省,某居其一**〔7〕。**天下文簿板籍,入副其省,萬機嚴祕,有如尚書外司**〔8〕。
|
||||
|
||||
**四方餉遺,歲各數百萬。同列茹法亮嘗於眾中語人曰:「何須覓外祿,此一戶內年辦百萬。」某不預焉**〔9〕。
|
||||
|
||||
**某雖總機要,而士流不與同席**〔10〕。**先是,中書舍人紀僧真幸於武帝,稍歷軍校,容表有士風,謂帝曰:「臣小人,出自本縣武吏,邀逢聖時,階榮至此。為兒昏,得荀昭光女,即時無復所須,唯就陛下乞作士大夫。」帝曰:「由江斅、謝瀹,我不得措此意,可自詣之。」僧真承旨詣斅,登榻坐定,斅便命左右曰:「移吾床讓客。」僧真喪氣而退,告武帝曰:「士大夫故非天子所命。」時人重斅風格,不為權幸降意**〔11〕。**某聞而不言**〔12〕。
|
||||
|
||||
**是時王儉因玄象失度,謂上曰:「天文乖忤,此禍由四戶。」仍奏文顯等專擅愆和,極言其事。上雖納之而不能改也**〔13〕。
|
||||
|
||||
**及明帝輔政,深知之,始制諸州急事宜密有所論,不得遣典籤還都,而典籤之任輕矣**〔14〕。**建武世,詔命殆不關中書,專出舍人**〔15〕。**某退謂所親曰:「削典籤者此人,養四戶者亦此人。彼非酬吾功,用吾耳。用之則四戶,不用則典籤。」**〔16〕
|
||||
|
||||
**某獨以為:權之在四戶者,恩也,非官也。恩繫於一人之喜怒,一人沒則恩沒;官著於令,令在則官在**〔17〕。**乃建言:請以中書舍人分掌諸曹,各當尚書一曹,並為上司,著之於令**〔18〕。**議格不行**〔19〕。**某尋坐事免,卒於家。子孫無聞**〔20〕。
|
||||
|
||||
**史官次某於《倖臣》,不次於《良政》**〔21〕。
|
||||
|
||||
---
|
||||
|
||||
## 三、注
|
||||
|
||||
> **caveat 必须显示。** 它才是这一节的价值。
|
||||
|
||||
**〔1〕某,不知何許人也** — **【拟托·无史料】**
|
||||
南齐无此人。「不知何许人也」是史书成例(陶潜《五柳先生传》「先生不知何許人也」即用此格)。
|
||||
★ **本页故意不给他籍贯。** 编一个「吴兴乌程人」出来,读者会去查,而查出来的是**另一个人**——那就是造假史料。**传主是你,你的籍贯不该由我编。不给此句安卷次。**
|
||||
|
||||
**〔2〕世無冠冕,不豫鄉論** — **【推演·无史料】**
|
||||
对应画像的「无声望」(`wang = 0`)与「无门第」。这是**引擎的输入**,不是史书的记载。**不给此句安卷次。**
|
||||
|
||||
**〔3〕性沉密…剖決無留** — **【推演·无史料】**
|
||||
画像(严谨专业/简洁利落/结论先行/耐心细致/沉稳克制)的文言化。「先陳其要,而後列其狀」=**结论先行**;「剖決無留」=**吏能 83**。**不是史事,不给此句安卷次。**
|
||||
|
||||
**〔4〕建元中,補中書省主書** — **半原文**
|
||||
- **source**:《南齐书》卷十六·志第八·百官志,中书省条
|
||||
- **quote**:「中書省職,置主書、令史、正書以下。」
|
||||
- **caveat**:⚠ **官名是原文有的,「建元中补此官」是推演。** 且这一句是该条**全文**——《南齐书·百官志》中书省条只有这一句,**不给品,甚至不列中书通事舍人**。
|
||||
★ **南齐中书通事舍人具体几品,查不实。** 序文另有「**晉令**舍人位居九品」——那是**晋代法典**的追述,**不是齐制**;《南史》卷七十七序把它改写成「于時舍人之任,位居九品」并**删去「晉令」二字**,据南史引用会把晋令当齐制。旁证只有梁制(十八班之「四班」,极低)与陈制(「依減秩例」,连石数都不给)——**那不是齐**。故本页一律只写「品卑」,**绝不给齐代品数**。
|
||||
|
||||
**〔5〕永明中,以吏幹遷中書通事舍人** — **【推演】(这一步是引擎算的,不是史书写的)**
|
||||
`computeRank` 判定:通道 `sheren`,`gate { fa: 55 }`,他 `fa = 83` → 过。年号「永明」是本页为叙事所系,**史无此人此事,不给此句安卷次。**
|
||||
⚠ 「以吏干被擢」这个**通道**本身有原文支撑(见〔6〕「齊初亦用久勞,及以親信」),但**这个人**没有。**通道是史料,人是推演——两者不许混。**
|
||||
|
||||
**〔6〕關讞表啟,發署詔敕…侍郎之局,復見侵矣** — **原文**
|
||||
- **source**:《南齐书》卷五十六·列传第三十七·倖臣传**序**(萧子显)
|
||||
- **quote**:「齊初亦用久勞,及以親信。關讞表啟,發署詔敕。頗涉辭翰者,亦為詔文,侍郎之局,復見侵矣。」
|
||||
- **caveat**:双证(sidneyluo.net `a/a07/056.htm` 与 zh.wikisource《南齐书·卷56》`action=raw`)。
|
||||
⚠ **两个见证有异体字之别**,本页照实说:wikisource 作「表**啓**」「爲」「旣」,sidneyluo 作「表**啟**」「為」「既」。**字形不同,文字相同**——故只能说「双证,**文字相同**」,不能说「**逐字**相同」。(`decisions.js` 该条 caveat 现写作「逐字相同」,属**轻微过头**,见 notes。)
|
||||
⚠ 此为**传序**的通论,描述的是**这一格**,不是**这一个人**。引文标点为本项目所加。
|
||||
|
||||
**〔7〕省內舍人四人,所直四省,某居其一** — **原文(两处,必须分开引)**
|
||||
- **source A**:《南齐书》卷五十六·倖臣传序
|
||||
**quote A**:「省內舍人四人,所直四省,其下有主書令史,舊用武官,宋改文吏,人數無員。」
|
||||
- **source B**:《南史》卷七十七·列传第六十七·恩倖传·**呂文顯传(本传,非传序)**
|
||||
**quote B**:「時中書舍人四人各住一省,世謂之四戶。既總重權,勢傾天下。」
|
||||
- **caveat**:
|
||||
★ **「四户」不是尚书/中书/门下/秘书四省。** 决定性内证就是 quote A 的「**省內**舍人四人,所直四省」——四人在「省内」,所直之四「省」只能是该省**内部**的分隔,不可能是四个中央官署。
|
||||
⚠ **但「直庐」二字原文没有**,是今人训释,**不可当引文**。原文只有三种说法:「所直四省」(南齐书序)、「各住一省」(南史·吕文显传)、「此一戶內」(茹法亮语)。本页一律用原文的说法。**训释归训释,原文归原文。**
|
||||
⚠ **「四戶」这两个字在今本《南齐书》卷五十六里一次都没有**——本页已 curl 双证全卷扫过:`四戶` **0 命中**、`勢傾天下` **0 命中**。它出**唐人李延寿**《南史》,且在**吕文显本传**,不在传序。**「四户」是南史的词,不是南齐书的词。**
|
||||
★ **纠一个流行的错**:「勢傾天下」**不是《南史》的贬抑书法**。沈约《宋书》卷九十四·恩倖传序**已经在用**:「鼠憑社貴,狐藉虎威……**勢傾天下**,未之或悟。」李延寿是**承袭沈约的成语**,不是唐人自创。(⚠ 此条与 `dynasties.js` 的 `sheren.sourceCaveat` **正面冲突**,那一句按考实是错的——见 notes,待老板裁。)
|
||||
⚠ **「某居其一」是推演**:四户是四个具体的人,把「某」放进去等于挤掉一个真人。这正是本产品在做的事(**你**站上那一格),但它是拟托,**不给这四个字安卷次**。
|
||||
|
||||
**〔8〕天下文簿板籍,入副其省…有如尚書外司** — **原文**
|
||||
- **source**:《南齐书》卷五十六·倖臣传序
|
||||
- **quote**:「莫非左右要密,天下文簿板籍,入副其省,萬機嚴祕,有如尚書外司。」
|
||||
- **caveat**:双证。⚠ 「有如尚書外司」是萧子显的**比拟**,不是官制名目——南齐**无**「尚书外司」此官。**别把比喻读成编制。**
|
||||
|
||||
**〔9〕四方餉遺…此一戶內年辦百萬** — **原文 + 推演**
|
||||
- **source**:《南史》卷七十七·恩倖传·呂文顯传
|
||||
- **quote**:「舍人茹法亮於眾中語人曰:『何須覓外祿,此一戶內年辦百萬。』蓋約言之也。」;同传:「四方守宰餉遺,一年咸數百萬。」
|
||||
- **caveat**:双证。⚠ **赵翼《廿二史札记》转引作「此戶內歲可辦百萬」,与原文不合,不可转引。** 经赵翼转手的南朝引语一律要回原书覆核——他还把《南齐书》劉係宗传的「**明帝**曰」写成「齊武帝亦曰」,措辞全非。
|
||||
⚠ 「**某不預焉**」是**推演**(画像的「交游 40」「不善交游」),不是史事,**不给这三个字安卷次**。
|
||||
⚠ 又:此为《南史》文,**唐人所修**,非南齐当代史。
|
||||
|
||||
**〔10〕某雖總機要,而士流不與同席** — **【推演 + 引擎判定】**
|
||||
`computeRank` 给的 `stigma = true`,`stigmaNote`:「权在其手,而名不在其身:清流不与同席。」这是**引擎的话**,不是史书的话。
|
||||
⚠ 它的原文支撑在〔11〕〔21〕,但那些是**别人的事**。**这个人没有这一条记载,因为这个人不存在。**
|
||||
|
||||
**〔11〕紀僧真乞作士大夫,江斅移床** — **原文(★ 全篇 caveat 最重的一条)**
|
||||
- **source**:《南史》卷三十六·江夷传附**江斅传**(唐·李延寿撰)
|
||||
- **quote**:「先是中書舍人紀僧真幸於武帝,稍歷軍校,容表有士風。謂帝曰:『臣小人,出自本縣武吏,邀逢聖時,階榮至此。為兒昏,得荀昭光女,即時無復所須,唯就陛下乞作士大夫。』帝曰:『由江斅、謝瀹,我不得措此意,可自詣之。』僧真承旨詣斅,登榻坐定,斅便命左右曰:『移吾床讓客。』僧真喪氣而退,告武帝曰:『士大夫故非天子所命。』時人重斅風格,不為權幸降意。」
|
||||
- **caveat**:双证(zh.wikisource《南史·卷36》`action=raw` 已剥 `<ref>` + guoxue123 国学导航《南史》卷三十六)。
|
||||
★ **异文**:wikisource 作「謝**淪**」,国学导航作「謝**瀹**」——**当以「瀹」为是**(谢瀹,谢朏弟,《南齐书》有传),淪/瀹形近而讹。
|
||||
⚠⚠ **【逸事,非制度】——这是本页最要紧的一条 caveat**:此事在**江斅本传**,**不在《恩倖传》**。故事记在**拒绝者一方**的传里,末句「時人重斅風格,不為權幸降意」才是它的用意:**这是【夸江斅】的故事,不是记录一条规矩。** 且**不见于《南齐书》,为《南史》孤证**。江斅、谢瀹**并无审定士庶的官方职权**,武帝之语是**推诿兼戏谑**。
|
||||
★ **【绝不可读成「南齐制度规定士族身份不由皇帝授予」】。** 一件逸事+一个孤证+一句败退者的自嘲,撑不起一条制度。
|
||||
⚠ 末句「士大夫故非天子所命」《南史》属**纪僧真自言**(败退者的自嘲);**作齐武帝语者出顾炎武《日知录·流品》**,语义大不同,不可用。
|
||||
⚠ 「移吾床**讓**客」——作「**遠**客」者亦出《日知录》,而「移我遠客」四字实出**另一则**移床故事(刘宋张敷拒中书舍人,《宋书》**卷六十二**)。**顾炎武在这一则上动了两处**:改「让」为「远」、把末句从纪僧真自言改成「世祖曰」。**经《日知录》转手的这一则,不可用。**
|
||||
⚠ 引张敷事**必须引《宋书》卷六十二**,不许引卷四十六——**卷四十六北宋初已亡佚**,今本是后人拿《南史》和高氏小史补的,该卷自带说明。引卷四十六等于引一份《南史》的宋代仿制品。
|
||||
⚠ 又:此为**永明**事(武帝),本页的十字路口在**建武**(明帝),故引作**前车**,不是某自己的事。引文标点为本项目所加。
|
||||
★ **附一条史料诚实交代**:`dynasties.js` 的 `shizu.sourceText` 至今把这段**压成第三人称转述**(「中书舍人纪僧真出自本县武吏,得幸于齐武帝,乞作士大夫」),**把僧真的直接引语改没了**,还丢了「稍歷軍校,容表有士風」和「即時無復所須」。**那是转述冒充原文**,正是本项目明令禁止的一类。本页用的是**核实过的全文**。(见 notes。)
|
||||
|
||||
**〔12〕某聞而不言** — **【推演·无史料】+ ★ 结构律★二在这里的样子**
|
||||
这四个字是画像「沉稳克制」的文言化,**不给它安卷次**。
|
||||
★ **但它对应一件机制上真实发生的事**:`decisions.js` 里有第二个关口 **`nanqi-qi-shidafu`(乞作士大夫,建武末)**——**这部传里它一次都没出现过。**
|
||||
为什么?三道闸,他撞在第三道上:
|
||||
|
||||
| 闸 | 字段 | 他的情况 |
|
||||
|---|---|---|
|
||||
| 位阶 | `requiresRank { channelId:'sheren', minTier:4 }` | 过(tier 4,在那一户里) |
|
||||
| 状态量 | `preconditions.state { quan: 0 }` | 过(他选 `zuo-shi` 后 `quan = +2`) |
|
||||
| 前序 | `afterDecisions ['nanqi-sheren-simen']` | 过(已答) |
|
||||
| **永久关闭** | **`closedByOptions ['nanqi-sheren-simen/zuo-shi']`** | **✗ 关死** |
|
||||
|
||||
> **你伸手碰过令文,士林那边的门就对你关死了——你再去乞,人家连床都不必挪。**
|
||||
|
||||
★ **他看不见这道题,也看不见一个灰按钮。书里根本没写别的。** 这是「性格锁」的同一条原则:**历史不发选项面板。**
|
||||
★ 同时这也是「**一朝成传**」(结构律★五):这一步之后 `availableDecisions` 返回空 → `closed` **自动置 true** → 这部传写完了。**他这一朝只有一道题。这不是失败态,这本书就是这么写的——只是它很短。**
|
||||
|
||||
**〔13〕王儉…上雖納之而不能改也** — **原文(★ 本页纠了一个字)**
|
||||
- **source**:《南史》卷七十七·恩倖传·**呂文顯传**
|
||||
- **quote**:「其後玄象失度,史官奏宜修祈禳之禮。王儉聞之,謂上曰:『天文乖忤,此禍由四戶。』仍奏文顯等專擅愆和,極言其事。上雖納之而不能改也。」
|
||||
- **caveat**:
|
||||
⚠⚠ **此事不在《王俭传》。** 本页已 curl **双证**扫《南齐书》卷二十三(褚淵/王儉)全卷:`四戶`/`乖忤`/`茹公`/`大位` **两个见证均 0 命中** → **南史孤证**,坐实。
|
||||
★ **本页纠一个字:不许写「太尉王俭」。** `decisions.js` 的 `situation` 现作「太尉王俭已经奏过你们一本了」,`fei-hu` 的 caveat 亦作「王俭(太尉,高门领袖)」——**「太尉」是他的【赠官】,不是生前职衔。**
|
||||
- **佐证**:《南齐书》卷二十三(**双证,文字相同**):「故侍中、中書令、太子少傅、領國子祭酒、衞軍將軍、開府儀同三司南昌公儉……天不憖遺,奄焉薨逝……**可追贈太尉**,侍中、中書監、公如故……**謚文憲公**。」
|
||||
- **即**:他生前是侍中、中书令等,**死后才追赠太尉**。而这一奏发生在他**活着的时候**——**用赠官称呼一个活人,是硬伤。** 本页正文只作「**王儉**」,不给职衔(《南史》记此事时**本来也不给他职衔**)。
|
||||
⚠ 王俭是**借天象发论**,且结局是「上雖納之而不能改也」——**这是失势者的牢骚兼弹章,不是制度描述。** 不可读成「南齐有过一次制度改革」。
|
||||
⚠ **另一句「我雖有大位,權寄豈及茹公」同样不在王俭传**,在《南史》卷七十七·**茹法亮传**。
|
||||
⚠ **系年**:王俭卒于永明七年(489),故此事在**武帝**世,「上」=武帝。本页正文把它排在「明帝辅政」(494)**之前**,是照时间走的。
|
||||
★ 但它有一个不可替代的用处:**这是有记载以来唯一一次正面冲着舍人之权来的制度尝试,而它失败了。** 位在传主之上不知几级的人都推不动。
|
||||
|
||||
**〔14〕明帝輔政…而典籤之任輕矣** — **原文**
|
||||
- **source**:《南史》卷七十七·恩倖传·呂文顯传(内嵌典签论)
|
||||
- **quote**:「明帝輔政,深知之,始制諸州急事宜密有所論,不得遣典籤還都,而典籤之任輕矣。」
|
||||
- **caveat**:双证(ctext + wikisource)。
|
||||
★ **这是整个十字路口的底料**:蕭鸞辅政期**真的下制削了典签**——而同一个蕭鸞,建武世却「詔命殆不關中書,專出舍人」。**削一个寒人要职、同时养大另一个。真实发生,不必虚构。**
|
||||
⚠ 南史孤证。(同传另记典签品阶变动:「本五品吏,宋初改為七職。」)
|
||||
|
||||
**〔15〕建武世,詔命殆不關中書,專出舍人** — **原文(有要命的异文)**
|
||||
- **source**:《南齐书》卷五十六·倖臣传序
|
||||
- **quote**:「建武世,詔命**殆**不關中書,專出舍人。」
|
||||
- **caveat**:⚠⚠ **《南史》卷七十七恩倖传序同句作「詔命【始】不關中書」**(ctext 四库 + wikisource 二证均作「始」)。
|
||||
**殆**(几乎/差不多)是**程度描述**;**始**(开始)读起来像**可系年的制度起点**——**语义完全不同**。本页引的是《南齐书》,故一律作「殆」。**引这句必须认明是哪一部书。**
|
||||
|
||||
**〔16〕某退謂所親曰…** — **【推演·无史料】**
|
||||
这段话**没有人说过**。它是把〔14〕那个**真实的制度动作**放进传主眼睛里的结果。**不给此句安卷次。**
|
||||
|
||||
**〔17〕權之在四戶者,恩也,非官也** — **【推演·无史料·题眼】**
|
||||
这是本传的**题眼**,也是**全篇推演成分最重的一句**。**它没有史料,不给它安卷次。**
|
||||
它是「**授权律**」的文言化:*变法依赖非常规授权;这份授权不在制度里,在一个活人身上。*
|
||||
⚠ 「事/制/道」三层是**本项目的分析模型**,不是史料自带的范畴——与「品位分等/职位分等是阎步克的分析模型」同样的性质。**前端展示时必须这么标。**
|
||||
|
||||
**〔18〕乃建言:請以中書舍人分掌諸曹…著之於令** — **【推演·无史料,但它的措辞抄的是后来的历史】**
|
||||
⚠ **南齐没有人真的这么奏过。** 此句属推演,**不给它安卷次**。
|
||||
★ **但「各當尚書諸曹,並為上司」八个字不是我编的——那是《隋书·百官志上》记【陈制】的原文。** 换言之:**传主提的这件事,几十年后由别人做成了。** 见第四节「历史答案」。
|
||||
|
||||
**〔19〕議格不行** **〔20〕某尋坐事免,卒於家。子孫無聞** — **【推演·无史料】**
|
||||
`fate.score = 1`。**不给这几句安卷次。**
|
||||
可挂的只有那条授权律:**他依附的是一个活人;那个人辅政时能一纸削掉典签,就能一纸削掉他。典签是前车(见〔14〕)。**
|
||||
⚠ 引擎在这一格自己就写着:「★【推演,非史事】:南齐**没有人真的这么奏过**,故此格无史料可挂——本产品的规矩是查不实的宁可不写,这里明说它是推演,**不给它安卷次**。」
|
||||
|
||||
**〔21〕史官次某於《倖臣》,不次於《良政》** — **原文(入传标准)**
|
||||
- **source A**:《南齐书》卷五十六·倖臣传序末(萧子显)
|
||||
**quote A**:「領武官,有制局監,領器仗兵役,亦用寒人被恩幸者。今立《倖臣篇》,以繼前史之末云。」
|
||||
- **source B**:《南史》卷七十七·恩倖传序末(李延寿)
|
||||
**quote B**:「領武官有制局監、外監,領器仗兵役,亦用寒人。爰及梁、陳,斯風未改。其四代之被恩幸者,今立以為篇,以繼前史之作云爾。」
|
||||
- **source C**:《南齐书》卷五十六·倖臣传·呂文度传末
|
||||
**quote C**:「濟陽江瞿曇、吳興沈徽孚等,以士流舍人通事而已,無權利。」
|
||||
- **caveat**:
|
||||
★ **入传标准是【恩幸】。** 「寒人」是**统计上的伴随特征,不是门槛**;「掌机要」也**不是门槛**。两个方向都有原文自证:
|
||||
· **入传而不掌机要**:徐爰主国史礼仪而在《宋书·恩倖传》;吕文度掌制局器仗而在《南齐书·倖臣传》。→ **掌机要不是门槛。**
|
||||
· **掌机要而不入传**:quote C —— 江瞿曇、沈徽孚**身为中书舍人**却「以士流舍人通事而已,**無權利**」,不立传。→ **当舍人也不是门槛,且舍人内部权力天差地别。**
|
||||
⚠ **一处必须给的限定**:说「入传标准不是寒人」对**《南史》**成立(李延寿把二者切得很干净:「亦用寒人」是编制描述,「其四代之**被恩幸者**,今立以為篇」才是入传条件);但对**《南齐书》讲得太满**——萧子显作「亦用寒人**被恩幸者**」,句法上「寒人+被恩幸」双条件读得通。故本页表述为:**恩幸是标准,寒人是伴随特征。**
|
||||
⚠ **「南朝多以寒人掌机要」是清人赵翼《廿二史札记》卷八的条目名,不是南朝史家的分类原则。**
|
||||
⚠ 南朝**当代史**只有沈约《宋书·恩倖》与萧子显《南齐书·倖臣》两部立此类传,**《梁书》《陈书》不立**;**《南史·恩倖传》是唐人李延寿所修**。
|
||||
⚠⚠ **某不在《倖臣传》五人之中。** 该篇立传五人,卷首人名行原文:「**紀僧真 劉係宗 茹法亮 呂文顯 呂文度**」(双证,五人无误)。**本传是拟托,不是补传。**
|
||||
|
||||
---
|
||||
|
||||
## 四、十字路口
|
||||
|
||||
> `decisions.js` → `nanqi-sheren-simen`(**四户之一**,南齐建武年间 494–498)
|
||||
> **位阶门槛**:`requiresRank { dynasty:'nanchao', channelId:'sheren', minTier:4 }`
|
||||
|
||||
**够不到的人,根本碰不到这个关口。** 魏晋的他不入流,**看不见这道题**。
|
||||
而南齐的**士族**走清途也能到 tier 4,**位阶一样高,照样看不见这道题**——他不在那一户里,**他正是那个把床挪开不跟你坐的人**。
|
||||
> **位阶是杠杆,但杠杆得先握在你手里。**(光比高度会把这一格算错——所以 `requiresRank` 除了 `minTier` 还要 `channelId`。)
|
||||
|
||||
### 处境(`situation`,原样)
|
||||
|
||||
> 你是中书通事舍人。品卑——具体几品,南齐当代史料查不实,《南齐书·百官志》中书省条只有一句「置主书、令史、正书以下」,连中书通事舍人都没列。而权重——关谳表启,发署诏敕,天下文簿板籍入副其省,有如尚书外司;侍郎之局,复见侵矣。建武世,诏命殆不关中书,专出舍人。省内舍人四人,所直四省,世谓之四户。
|
||||
> **你手上这一户,一年办得出百万。**
|
||||
> 而扶你上来的那个人——明帝——他辅政时刚刚下制削了典签之权。**同一个人,削一个寒人要职,同时养大另一个。** 你很清楚:他不是在酬你的功,他是在用你。用得着的时候你是四户,用不着的时候,典签就是前车。
|
||||
> 太尉王俭已经奏过你们一本了:「天文乖忤,此禍由四戶。」上虽纳之而不能改也。——这是有记载以来,唯一一次正面冲着舍人之权来的制度尝试。**它失败了。**
|
||||
> 现在轮到你了:**你手上这一户,要不要坐实成一条【写进令文】的定制?**
|
||||
|
||||
> ⚠ **本页对 `situation` 有一处不同意**:它写「**太尉**王俭」。**「太尉」是王俭的赠官,不是生前职衔**(见注〔13〕,双证)。本页正文作「王俭」。`decisions.js` 待改,见 notes。
|
||||
|
||||
### 四个念头
|
||||
|
||||
> ★ **性格锁**:这四个不是给所有人的选项面板,是**你这种人想得到的念头**。
|
||||
> **不是灰按钮** —— 你看不见灰掉的按钮,因为**书里根本没写别的**。历史不发选项面板。
|
||||
|
||||
| | 选项 | 什么样的人会想到这一步 | 层 | 后继者要不要它 | 影响 | 你的下场 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| `shou-hu` | 什么都不奏,守住这一户。有人要升你出去,就哭着推掉 | 清醒的趋利者。**那个位子本身才是权力,升官反而是夺权** | 事 | 无可继承 | **没有**(弥合·史势所趋) | **5** 善终,富厚 |
|
||||
| `qiu-ming` | 受了那个大司农。位列九卿,从此不必再被人当作倖臣 | 在意名分甚于实利。你受不了清流把床挪开的那一下 | 事 | 无可继承 | **没有**(弥合·史势所趋) | **4** 位高而权去 |
|
||||
| **`zuo-shi`** | **奏请著为令:舍人分掌诸曹,各当尚书一曹,为其上司** | **把事情做完的人。你受不了这套东西悬在一个活人的喜怒上——今日诏命专出舍人,明日一句话就能让它专出别人** | **制** | ★ **要**(梁、陈真的坐实了) | **两百年以上**(跨朝) | **1** 你死在你那一念之前 |
|
||||
| `fei-hu` | 自请废四户,复诏命于中书。亲手把自己这一户拆了 | 想到底的人。你要动的不是一条制度,是**「凭什么」** | **道** | **不要**(后继者非但没废,还坐实了) | **五十年**(一代人) | **0** 失位,而那一户照旧 |
|
||||
|
||||
### ★ 传主选了 `zuo-shi`
|
||||
|
||||
画像是「严谨专业/有理有据/结论先行/沉稳克制,**无声望**」。这种人受不了**把一套已经在运转的东西,继续悬在一个活人的喜怒上**。
|
||||
**他不要这一户的百万,他要这一户在他死后仍然是这一户。**
|
||||
|
||||
选完之后,链上的状态量(`replay`,纯函数):`quan +2 · ming −1 · li 0 · xian +3`。
|
||||
`availableDecisions` 返回 **空** → **一朝成传**,`closed = true`。**他这一朝只有一道题。**
|
||||
|
||||
### ★ 当初那个人选了 `shou-hu`
|
||||
|
||||
**茹法亮实际选的是「守住这一户」。**
|
||||
|
||||
- **source**:《南齐书》卷五十六·倖臣传·茹法亮传
|
||||
- **quote**:「出法亮為大司農,中書勢利之職,法亮不樂去,固辭不受,既而代人已致,法亮垂涕而出。**年六十四,卒官。**」
|
||||
- **caveat**:双证(文字相同;异体字 `爲/為`、`旣/既` 之别照实说明)。
|
||||
★ 大司农位高(九卿),中书通事舍人位卑,**茹法亮宁可哭也不肯升**——他知道那个位子才是权力所在。这是「品卑而权重」最好的心理注脚。
|
||||
★ **「年六十四,卒官」——原文自己给了 `fate.score = 5` 的证据**:他善终,死在任上。**引擎判 shou-hu 善终,不是我们编的,是史书写着的。**
|
||||
引文标点为本项目所加。
|
||||
|
||||
> **而他守的那一户,几十年后由别人坐实成了定制。他一票都没投,事情照样发生了。**
|
||||
> 这就是「史势所趋」四个字的代价:**它不是安慰,它是说你根本没在场。**
|
||||
|
||||
### ★★ 历史答案:这道题,历史真的答了 —— 分两步,都不是南齐做的
|
||||
|
||||
**(一)梁 —— 去掉「通事」二字,并宣布不限资地**
|
||||
- **source**:《隋书》卷二十六·志第二十一·百官志上(**梁制**)
|
||||
- **quote**:「通事舍人,舊入直閤內。梁用人殊重,簡以才能,**不限資地**,多以他官兼領。其後除通事,直曰中書舍人。」
|
||||
- **caveat**:zh.wikisource《隋书·卷26》,已剥除 `<ref>` 校勘记;已用 node 核定该条位于**梁段**(早于「陳承梁,皆循其制官」)。「不限資地」四字是南朝门第观的**正式让步**。⚠ **属梁不属齐**,引用必须标明朝代。
|
||||
|
||||
**(二)陈 —— 坐实到底,职权转移完成**
|
||||
- **source**:《隋书》卷二十六·百官志上(**陈制**)
|
||||
- **quote**:「國之政事,並由中書省。有中書舍人五人,領主事十人,書吏二百人。……分掌二十一局事,**各當尚書諸曹,並為上司**,總國內機要,**而尚書唯聽受而已**。被委此官,多擅威勢。」
|
||||
- **caveat**:已用 node 核定此段在「陳承梁,皆循其制官」之后,属**陈制**。★「各當尚書諸曹,並為上司,而尚書唯聽受而已」=**职权正式转移完成**。⚠ 属陈不属齐;又《隋书》为唐初官修,记陈制属**追修**,非陈代当代史。
|
||||
|
||||
**南齐那个舍人站的,正是通往此处的岔路口。**
|
||||
|
||||
---
|
||||
|
||||
## 五、影响 —— `computeImpact('nanqi-sheren-simen', 'zuo-shi')`
|
||||
|
||||
```
|
||||
layer : zhi(制)
|
||||
years : 200
|
||||
verdict : 两百年以上
|
||||
label : 跨朝 —— 后继者仍需要它
|
||||
```
|
||||
|
||||
> ⚠ **years 是【档位标签】,不是测算值。** 史学上「这条制度活了多少年」**没有可精确到年的算法**;给「137 年」这种数字是**伪精确**,是本产品最容易翻车的地方。三档:**没有(弥合)/一代人/跨朝**。**前端不许拿它画曲线。**
|
||||
|
||||
**why**(引擎逐条给出,**包括对你不利的那条**):
|
||||
|
||||
1. 你改的是【制】:改一条制度。它可能活过你,也可能随授权者一起断气。
|
||||
2. **变法依赖非常规授权**:你不是靠官品办成这件事的,你靠的是「上以为亲信」。**这份授权不在制度里,在一个活人身上。**
|
||||
3. ★ 而后继者**仍然需要它** —— 于是它活过了授权者,也活过了你。
|
||||
4. **它活下来不是因为你了不起,是因为接你班的人仍然需要它。这一票不在你手上。**
|
||||
5. ★ 这一条**历史上真的被坐实了**,分两步走完,而且**都不是南齐做的**:梁去掉「通事」二字,把它变成正经职名,并宣布「不限资地」;陈把它坐实到底——「各当尚书诸曹,并为上司,总国内机要,而尚书唯听受而已」。后继者继承它,**不是因为你说得对,是因为他们仍然需要它**:一个不靠士族也能发得出诏命的省,对任何一个想亲政的皇帝都太好用了。
|
||||
6. ★ 你个人的下场:**你死在你自己那一念之前。** 你要把「上以为亲信」写成令文——**那四个字正是明帝手里唯一的缰绳,他不会交出来**;而满朝清流等的就是你伸手去碰令文的那一天。
|
||||
**——你那一念越深,你自己的下场越坏。这不是巧合,是同一件事的两面:你动的正是授权者身边那些人的命根子。**
|
||||
|
||||
### ★★ 这一页的全部重量,压在这一段上
|
||||
|
||||
> **`years = 200` 说的是【那条制度】;`fate.score = 1` 说的是【你】。引擎分开算,因为它们本来就是两件事。**
|
||||
>
|
||||
> 他的建言「議格不行」,他坐事免、卒于家、子孙无闻。
|
||||
> 而几十年后,梁去其「通事」、陈使其「各當尚書諸曹,並為上司,而尚書唯聽受而已」。
|
||||
> **他提的那件事成了定制,而定制里没有他的名字。**
|
||||
> **他的名字在《倖臣传》里,那条制度在《隋书·百官志》里 —— 两处不相涉。**
|
||||
>
|
||||
> ★★★ **而最狠的一句,在正文里写不出来:**
|
||||
> **记他的那部书,看不见他对没对。**
|
||||
> 萧子显卒于梁大同三年(537)——《梁书》卷三十五:「大同三年,出爲仁威將軍、吳興太守,至郡未幾,卒,**時年四十九**。」
|
||||
> 而陈受禅在梁太平二年(**557**)。
|
||||
> **他死在答案揭晓的整整二十年前。**
|
||||
> 《南齐书》的体例,**物理上不可能知道「某」是对的**——所以第二节那篇拟《南齐书》的列传,**只能写到「卒於家。子孫無聞」为止**。
|
||||
> 梁、陈那两条,本页放在**注**里、放在**引擎**里,**没有放进正文**——因为正文是拟托的史官,而**那个史官没活到那一天**。
|
||||
|
||||
---
|
||||
|
||||
## 六、史臣曰 · 赞曰
|
||||
|
||||
> **体例**:《南齐书》卷末「史臣曰」之后**必缀四言韵语「赞曰」**,此摹《后汉书》之例——范晔以「论曰」发议、缀四言「赞曰」,萧子显改**发语词**为「史臣曰」,**赞例不改**。故二者之别**只在发语词,不在有没有赞**。
|
||||
> (⚠ **绝不许**说成「《南齐书》用史臣曰,《后汉书》用论曰+赞曰」——那是把发语词之别偷换成体例之别,读起来像《南齐书》没有赞。**这条被史学核查专门打回过。**)
|
||||
>
|
||||
> 以下为 `shizanForLineage(lineage)` 的**实际输出,原样粘贴**:简体、未转繁、未润色、未删节。
|
||||
> 它是**规则+模板**拼装的(`shizan.js`),**不是 LLM 生成**,纯函数,跑两次一样。
|
||||
|
||||
**史臣曰**:中书通事舍人,品卑而权重。品卑者,其秩齐世无文可考;权重者,关谳表启、发署诏敕,天下文簿板籍入副其省,侍郎之局复见侵矣。沈约论宋之恩倖,尝曰:「人主谓其身卑位薄,以为权不得重。曾不知鼠凭社贵,狐藉虎威,外无逼主之嫌,内有专用之功,势倾天下,未之或悟。」——移之于齐,亦无不合。
|
||||
|
||||
某者,四户之一也。建武之世,诏命殆不关中书,专出舍人,是其时也。彼欲以令文易恩幸,是欲夺人主手中之缰而纳之于官府也。
|
||||
|
||||
而其法竟历梁、陈而不废。非其人之贤足以致此,乃后之君犹需之耳——**此一票不在彼手中,在后人手中。**
|
||||
|
||||
论曰:**所念愈深者,其身愈危;其身愈全者,其念愈浅。二者未尝可得而兼。** 何则?浅者不触人之所恃,故无怨;深者所触,正人主左右之所恃以为命者也。
|
||||
|
||||
虽然,权在其手而名不在其身:史官次之于《倖臣》,不次之于《良政》。入此篇者,以恩幸,不以寒素,亦不以掌机要——徐爰主国史礼仪而在焉,吕文度掌器仗兵役而在焉;而江瞿昙、沈徽孚身为舍人,以士流通事而已,无权利,则不在焉。**此史家之别裁也,非制度之品第也。**
|
||||
|
||||
**赞曰**:
|
||||
> **省内四户,机要所因。**
|
||||
> **欲著为令,不恃恩亲。**
|
||||
> **念之愈深,去死愈邻。**
|
||||
> **后有需者,故历梁陈。**
|
||||
|
||||
*(韵脚:因·亲·邻·陈 —— 四言,八句成篇,两句一联,偶句押韵,一韵到底,无重韵。`validateZan` 实测 `violations = []`。)*
|
||||
|
||||
> ⚠ **押韵的诚实交代**:本项目用**平水韵·上平十一真**检押韵。但**平水韵是金元韵书**(刘渊、王文郁,13 世纪),**萧子显(489–537)根本没见过它**;《切韵》(601) 亦在其身后六十余年。南朝人押的是**当时的实际语音**。故「合平水韵真部」只是**本项目自定的、可机检的规则**,**不是「萧子显会这么押」的断言**。前端**不许**把它说成「依南朝韵例」。选真部纯粹因为它字多好凑,且「臣、身、因、人、亲、邻、尘、陈」正好都在里面——**这是工程便利,不是史学主张。**
|
||||
|
||||
### ★★ 而这一段,是史家的判断,不是计算
|
||||
|
||||
> ★「史臣曰」与「赞曰」是**史家的断语,不是计算**。本引擎算得出来的,只有那三档:**两百年以上(跨朝 —— 后继者仍需要它)**——而且它是**档位标签,不是测算值**,史学上「这条制度活了多少年」没有精确到年的算法。断语是拿体例套出来的话:它由规则和模板拼装,**不是 LLM 生成**,也**不是萧子显写的**。它是**拟史家之辞**。
|
||||
> **正文是推演,注才是原文——要信,请只信注。**
|
||||
|
||||
> ⚠⚠ **一处已知的体例破绽,本页照实交代,不遮**:上面那句「**而其法竟历梁、陈而不废**」,**萧子显写不出来**——他死于 537,陈受禅在 557(见第五节)。他能看见梁,**看不见陈**。
|
||||
> 这句话是 `shizan.js` 的 `SHICHEN_HE[200]`,是**本项目拟作的史臣**说的,那个史臣**知道后事**。
|
||||
> 这不违反 disclosure(它已明说是「拟史家之辞」「不是萧子显写的」),但**它确实不是《南齐书》能有的句子**。**记在这里,别哪天被人当成萧子显的原话。**
|
||||
|
||||
---
|
||||
|
||||
## 七、这一页是怎么来的 —— 哪些是算的,哪些是史料,哪些是史家的判断
|
||||
|
||||
### ① 算的 —— 纯函数,无 LLM,跑两次一模一样
|
||||
|
||||
| 项 | 出自 | 值 |
|
||||
|---|---|---|
|
||||
| 六轴 | `computeAxes(subs)` | 吏能 83 · 沉毅 73 · 余四轴 40 · 声望 0 |
|
||||
| 通道 | `computeRank` | `sheren`(gate `{fa:55}` → 83 过) |
|
||||
| **位阶** | `computeRank` | **中书通事舍人 · 品卑而权重 · tier 4** |
|
||||
| 关着的路 | `blocked` | 士族清途(`wang` 需 75,他 **0**)/军功(`wu` 需 55,他 40) |
|
||||
| 状态量 | `replay(chain)` | `quan +2 · ming −1 · li 0 · xian +3` |
|
||||
| 影响档 | `computeImpact` | `years = 200`(**档位标签,不是测算值**) |
|
||||
| 关口开闭 | `availableDecisions` | 关口二被 `closedByOptions` **永久关闭** → 链走完 → `closed = true` |
|
||||
|
||||
> **这一整列,`shizanForLineage` 跑两次 `deepEqual` 全等**(链上无时间戳、无随机数、`lineage.id` 由 `subjectId/dynasty/edition` 拼出来)。
|
||||
> ★ **位阶在开传那一刻快照冻结**(`rankSnapshot`),不随分身后来的生长而变。**否则用户会为了够关口去刷起居注,那本书照的就不是他,是他的 build。**
|
||||
> ★ 状态量(权/名/利/险)**没有 setter,永远不会有**。想把「利」刷到 3,唯一的办法是在关口一选「守住这一户」——**那不是刷属性,那就是做那个选择本身。gate 的是你的【选择】,不是你的【数值】。**
|
||||
> ★ **没有读档。** 全模块无 `undo/revert/rollback/pop`。想换活法只有一条路:**另写一版**(`anotherEdition`)——**开一部新书,从头写;旧的那部仍然在、仍然可读。两部都成立。** 那不是读档,那是同一个人的另一部传。
|
||||
|
||||
### ② 史料 —— 原文,可点开,每条带朝代限定
|
||||
|
||||
| 用在哪 | 出处 | 见证 | 朝代限定 |
|
||||
|---|---|---|---|
|
||||
| 舍人职掌·四户内证·建武「殆」·入传标准 | 《南齐书》卷五十六·倖臣传序 | **双证**(wikisource/sidneyluo,**文字相同,异体字有别**) | 齐 ✓ |
|
||||
| 茹法亮固辞大司农·年六十四卒官 | 《南齐书》卷五十六·茹法亮传 | **双证** | 齐 ✓ |
|
||||
| 倖臣传立传五人 | 《南齐书》卷五十六卷首人名行 | **双证** | 齐 ✓ |
|
||||
| 王俭「太尉」是赠官 | 《南齐书》卷二十三 | **双证** | 齐 ✓ |
|
||||
| 「四户/乖忤/茹公」不在王俭传 | 《南齐书》卷二十三全卷扫描 | **双证 0 命中** | 齐 ✓ |
|
||||
| 「四户」「势倾天下」不在南齐书 | 《南齐书》卷五十六全卷扫描 | **双证 0 命中** | 齐 ✓ |
|
||||
| 四户·一户百万·典签·王俭奏 | 《南史》卷七十七·吕文显传 | 双证 | **唐修,非当代史** ⚠ |
|
||||
| 纪僧真乞作士大夫·江斅移床 | 《南史》卷三十六·江斅传 | **双证**(异文 淪/瀹,当作瀹) | **唐修·永明事·南史孤证·逸事** ⚠⚠ |
|
||||
| 「势倾天下」沈约已用 | 《宋书》卷九十四·恩倖传序 | 单证 | **刘宋,非齐** ⚠ |
|
||||
| 舍人坐实为定制 | 《隋书》卷二十六·百官志上 | 单证(已 node 核定梁段/陈段) | **梁·陈,非齐** ⚠ |
|
||||
| 萧子显卒年 | 《梁书》卷三十五 | 单证 | 梁 |
|
||||
|
||||
> **引文标点为本项目所加**,未采用任何现代点校本的标点、分段或校勘成果(原文字符属公有领域;**标点、分段、校勘是现代点校者的智力成果**)。
|
||||
> **查不实的,宁可不写。** 本页多处「不给它安卷次」,就是这条规矩的样子。
|
||||
|
||||
### ③ 史家的判断 —— 论曰
|
||||
|
||||
「史臣曰」「论曰」「赞曰」**全部是断语,不是计算**。它们由 `shizan.js` 的规则+模板拼装,**不是 LLM**,**不是萧子显**,是**拟史家之辞**。
|
||||
引擎只算得出三档;**「他这一念传了多远」是判断,「200」是档位标签**。
|
||||
|
||||
> **正文是推演,注才是原文。要信,请只信注。**
|
||||
|
||||
### ④ 这一页跑了哪些代码
|
||||
|
||||
| 环节 | 文件 | 性质 |
|
||||
|---|---|---|
|
||||
| 位置 · 天花板 | `src/dynasties.js` `computeRank` / `compareDynasties` | 纯函数,无 LLM(**本轮未改**) |
|
||||
| 决策点 · 授权律 · 关口串联 | `src/decisions.js` `computeImpact` / `availableDecisions` / `appendDecision` | 纯常量+纯函数,无 IO/DB/LLM |
|
||||
| 史臣曰 · 赞曰 | `src/shizan.js` `shizanForLineage` | **规则+模板**,非 LLM,纯函数 |
|
||||
| 回归守卫 | `test/decisions.test.js` 等 | 全量 **188 条全绿** |
|
||||
|
||||
**授权律**(`decisions.js` 的核心,**可执行、非文案**):
|
||||
|
||||
> 一、变法依赖**非常规授权**——你不是靠官品办成事的,你靠的是「上以为亲信」。这份授权**不在制度里,在一个活人身上**。
|
||||
> 二、**授权者一死,变法即亡**——商鞅—孝公、王安石—神宗、雍正—雍正自己。
|
||||
> 三、★ **但制能否存活,不取决于你,取决于后继者是否仍需要它**——商鞅死而秦法行,不是因为商鞅了不起,是因为惠王仍需要那套法;军机处活到清末,因为此后每个皇帝都需要它。
|
||||
>
|
||||
> → **★★ 你个人的下场,和你那一念的深度,是反相关的。**
|
||||
> 改「事」的人善终,因为他没动谁的奶酪,**也因此什么都没留下**。
|
||||
> 改「制」「道」的人下场坏,因为他动的正是**授权者身边那些人的命根子**。
|
||||
> **而他动的那个东西能不能活过他,他自己一票都投不了——那张票在后继者手里。**
|
||||
|
||||
---
|
||||
|
||||
> **分身不是传主,分身是史官。传主是你。**
|
||||
> **不是游戏,是 AI 帮你写的一部书。没有失败态**——某这一朝只有一道题、这本书只有一页,那不是「你输了」,是**这本书就是这么写的**。
|
||||
Executable
+319
@@ -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` 自陈它「程序化剥除」了标记 —— 它**知道**要剥,但它的**检索口径**那一条只写了字形类。
|
||||
**一个文件在两个地方各说了一半,合起来才够用。**)
|
||||
Reference in New Issue
Block a user