# 论衡：把「写一篇好文章」变成一条可审计、可交接的流水线

> **论衡（lunheng-article-pipeline）** 是一个多 Agent 深度长文生产流水线，DeepSeek Harness（dsh）bundle 插件。它不是让一个 AI 直接写文章，而是让一支 **9 个 AI 角色组成的"论文生产小队"** 按既定协议协作：定题 → 三线并行检索 → 分析 → 写作 → 批判 → 审计 → 审稿 → 终检。每一步都有明确产出物、交接报告与质量闸门，最终交付**有证据底座、有反方论证、有独立审计、有人工核验节点**的文章。

> 适用：公众号深度长文、研究报告、学术论文、商业评论、行业分析——任何"要站得住脚"的长内容。当前版本 **v19.27.15**（DSH 独立版本）。

---

## 它解决什么痛点

用 AI 写深度长文，最常见的翻车点：

1. **幻觉编造**——引用是假的、数据是编的；
2. **观点堆砌**——材料一大堆，每条都不支撑论点；
3. **单边叙事**——只讲支持自己的话，回避反方证据；
4. **重复已有文章**——写出来早就有人写过，还当原创；
5. **质量不可控**——AI 一次成稿，没有独立角色挑错；
6. **引用悬空**——正文标了引用，文末清单对不上，无法核验。

论衡的答案，是把这些问题**交给结构化流程 + 多角色分工**去化解，而不是指望单个模型自觉。

---

## 核心设计：9 角色 + 6 阶段

```
主控 Coordinator（定题、拆解、派发、阶段闸门、终检、状态机）
  │
  ├─ T1 文献检索员 ── 文献卡 [Lxx]（A/B/C 可信度分级）+ 先行者清单（防重复）
  ├─ T2 数据检索员 ── 数据卡 [Dxx]（🟢🟡🔴 时效 + 信任级别 + 冲突口径并列）
  ├─ T3 案例检索员 ── 案例卡 [Cxx]（事件结构 + 多方立场 + ≥2 来源，任何量级必 spawn）
  ├─ T4 分析员     ── 分析大纲（论点-论据映射 + 反方论证规划 + 三角验证 + 原创性声明）
  ├─ T5 写手       ── 初稿（内联/编号引用，AI 去味 10 项，文末四节引用清单）
  ├─ T6 批判伙伴   ── 批判报告（C1-C7 反方攻击，轻量档可跳过）
  ├─ T7 审计员     ── 审计报告（G0-G14 全项，只审不改）
  ├─ T9 审稿人     ── 审稿报告（6 维度评分 + 期刊匹配 Top 3，可选）
  └─ T8 终检（主控亲完成）── M 门（机检 25 项 + 人工 1 项 = 总 26 项）+ 定稿 + 证据包 + 交付说明
```

> **v2.3.0 角色编号重构 + v2.4.0 加 T9**：编号 = 流水线 Phase 顺序——T1-T3 检索 / T4-T5 加工 / T6-T9 防御。T8 终检**有角色卡**（`references/agents/08-终检-finalizer.md`），但**执行者 = 主控本人、不 spawn 子代理**——确保「最后一关」不外包；T9 同行评审是投稿前的「预演审稿人」，**启用与否按 `references/_shared/文类档案.md`**（`academic-cn/-hum/-case` 必选不可关、`lit-review` 可选、**其余默认不选**）。

**六个主阶段（Phase 0–5，各自带子阶段）**：**Phase 0 定题 → Phase 1 并行检索（含 1.5 补检索）→ Phase 2 分析（含 2.5 大纲确认）→ Phase 3 写作（含 3.5 洞察补充、3.6 批判）→ Phase 4 审计（含 4.2 修订回环：**A 轨 ≤2 轮纠错 + B 轨至多 +1 深化 + G 环 1-2 轮**（v18.75.0 新立，G14 终闸 Warning/Fail 的修订独立记账、不占 B 轨；详见 `references/glossary.md` §修订回环三环制）；4.5 配图 → 4.6 G14 终闸（串行）→ 4.7 审稿）→ Phase 5 终检**（v18.75.0：T8 在 T9 之后），中间穿插 **T2.5 / T7.5 两道完整性门**（主控 checkpoint，不绕过交接直接派发）与 **4 个人在环节点**（定题 / 大纲 / 洞察补充 / 终稿）。

> **口径说明（v18.18.6）**：本行旧标为 **7**，而紧随其后的箭头序列有 **8** 项、全库其余位置（`README*` ×5 / `docs/usage.md` / `skills/lunheng-article-pipeline/README.md`）一律标 **6**，三处互不相容。真源 = 「Phase 0–5 六个**主**阶段」（`tests/docs-facts.test.mjs` 从五语 README 的概览块按整数前缀派生，现已有门约束）——1.5 / 2.5 / 3.5 / 3.6 / 4.2 / 4.5 是**子**阶段，不计入主阶段数。本次按真源收敛。

---

## 为什么多角色分工真的有效

### ① 三线并行检索 + 三角验证

Phase 1 一次性并行派出 **T1 文献 ∥ T2 数据 ∥ T3 案例** 三个检索员，真并行、互不干涉，各自只写自己的目录：

- 三张卡构成「三角验证」——任何核心论点必须映射到 [Lxx]（学术依据）+ [Dxx]（量级数据）+ [Cxx]（具体事件）至少两项，缺角标缺口，**严禁编造**；v2.3.7 起三角验证由 **M-Form-8** 机械化拦截（写手 v1 落地前自动跑，不再依赖审计兜底）；
- **T3 任何量级必 spawn**：即使主题"无需案例"，也走「0 条空卡协议」——显式声明无案例需求、输出空卡，保证流程可审计，不留下"到底查没查案例"的模糊地带；
- **强相关性铁律**：每条材料必答「它支撑哪个论点」，答不出不收；数量封顶（50-70 条），宁缺毋滥。

> **术语指针（v18.78.0 §7.4 统一落地）**：「三角验证」与「三角证据底座」同义——单一术语真源 = `references/glossary.md` §十二.1（v18.78.0 文档全量审计 §3.2 / §7.4 落地）。

### ② 独立审计闭环（G0-G14 + M 门）

审计员 **只审不改**、与写手完全分离，执行 **G0-G14** 全项检查：

- **G1 分级核验**：C 级引用 100%、B 级 ≥50%、A 级 ≥10% 用 web_search 实测，抓到假引用升级 P0 并全量核验；数字级核验与存在性核验两档分开标注；
- **G2 数据溯源 / G11 时效 / G12 信任级别**：每个数字有来源、过期数据告警、已发布/主人投喂/二手转引三档信任级别全量校验；
- **G7 原创性**：对照先行者清单，核心论点与他人重复且未声明 → P0；
- **G4-2 文末四节双向 diff**：正文引用 ↔ 文末「数据来源/案例来源/参考文献/先行者文献」四节双向核验，漏引/孤儿 → P1；
- **G14 中文 AI 痕迹闸（v2.4.0 加）**：8 类检测维度（学术模板语 / 句式同质化 / 套话高频 / 破折号滥用 / 排比 / 人称错位 / 个人辨识度 / 党报话语），0-2 类 Pass / 3-4 类 Warning 触发修订 1 轮 / 5+ 类 Fail 触发 2 轮——LLM 推理判定，本项不要求跑命令。

审计打回 → **独立写手**修订（主控不代笔）→ 复核，**最多 2 轮**（指审计阶段独立预算；前序的 v1→v2 主人洞察、v2→v3 批判反馈不计入），仍不过走 Acknowledged Limitations 模式诚实交付。事实类错误（P1-D）由主控 T8 亲修慢活快改，结构性错误（P1-A/B/C）必须重启独立写手。

终检前主控跑 **M 门**——LLM 兜底执行的机械化终检：**机检 25 项**逐项机械判定（M-Form 1-11 + M-Exist 1-12 + M-Integrity-1 + M-Fact-1 佐证；另有 1 项主控人工门 M-Integrity-2，合计 **总 26 项**），由 `node scripts/m-gate-check.mjs` 执行（v2.5.2-dsh.0 起统一为单文件算法；**数量的唯一真源 = `SKILL.md` 与 `references/_shared/M-Gate-Algorithm.md`**）：

- **M-Form 11 项**：引用标注完整性 / 文末必需五节存在性 / 临时编号残留 / 角色元数据泄露 / 过程语言残留 / 信任级别标注完整性 / 文末节标题白名单纯净 / 三角验证覆盖率 / **图件闭环（[图N] ↔ final/图件/ ↔ 图上数字，v2.5.2-dsh.16 加）** / **索引段完整性（索引 ↔ 正文条目，v2.5.2-dsh.17 加）** / **素材按需加载闭环（正文引用 ⊆ 加载留痕，v2.5.2-dsh.17 加）**；
- **M-Exist 12 项**：引用双向对比（文末节 ↔ 正文）/ 证据包文件完整性 / 引用闭环（编号双向对账）/ **审计条目闭环（P0/P1 任务书 ↔ 复核报告，v2.5.2-dsh.17 加）** / **阶段闸门记录表（T2.5/T7.5 表单，v2.5.2-dsh.17 加）** / **审稿报告与期刊匹配可复算（v2.5.2-dsh.17 加）** / **交付说明 12 固定字段齐备（v2.5.2-dsh.17 加）** / **批判报告覆盖 C1-C7（v2.5.2-dsh.17 加）** / **审计报告覆盖 G0-G14 且结论带实据（v2.5.2-dsh.17 加）** / **大纲 §11 精简段六要素（v2.5.2-dsh.17 加）** / **反方论证闭合（v18.27.0 加）** / **贡献陈述·学术文类（v19.8.0 加）**；
- **M-Integrity 2 项**：T2.5 / T7.5 阶段闸门（主控 checkpoint 机械化核对，输入 = `audits/闸门记录-T2.5.md` / `-T7.5.md`）。

**exit 0 才交付**，产出 `final/M-Gate-Report.json`。

### ③ 人在环四节点

定题、大纲、洞察补充、终稿四个节点必须主人过目——在"改方向成本最低"的阶段由人把关，避免 AI 一路跑偏后推倒重来。（Phase 3.6 批判是流水线内部动作，非人在环节点。）

---

## 能力演进：v2.x 打底，v17/v18 线定型

论衡的能力不是一次设计出来的。**v2.x 线**把「多角色分工 + 证据底座 + 机械终检」的骨架立住；**v17 / v18 线**把它做成一个可安装、可自检、可回归的 DSH 插件——每加一条规则，尽量同时配一道**能自动判定的门**。

### v2.x：骨架

- **v2.3.0 角色编号重构**：T3 案例检索归入三线并行，T8 终检由主控亲完成——编号 = Phase 顺序，流水线语义对齐。
- **T6 批判伙伴 C1-C7**：写手出稿后、审计前，独立角色从反方攻击论证——C1 核心论点可攻击性 / C2 论证链薄弱环（含**因果断面三问**）/ C3 理论假设审查 / C4 立场中立性 / C5 反方完整性 / C6 元叙事清理专项（抓"AI 味"）/ C7 一处两用识别。"不是 adversarial，是 critical companion"。
- **T9 同行评审（v2.4.0 加）**：投稿前的「预演审稿人」——6 维度评分（原创性/方法论/证据强度/论证结构/写作质量/引文规范，总分 30）→ accept/minor/major/reject；**启用与否按 `references/_shared/文类档案.md`**：`academic-cn/-hum/-case` 必选不可关、`lit-review` 可选、**其余（含行业分析）默认不选**（v18.75.0 定案）。
- **G14 中文 AI 痕迹闸（v2.4.0 加）**：8 类检测维度深度扫描"AI 味"，0-2 类 Pass / 3-4 类 Warning / 5+ 类 Fail，**v18.2.8 起改为三层防御、全程只 spawn 一次**（T5 v1 自检 → 修订轮收尾自查 → **Phase 4.6 终闸**；v18.75.0 起串行、不再与 T9 并行，T9 在 4.7），LLM 推理判定，本项不要求跑命令。
- **期刊匹配助手（v2.5.0 加）**：基于 T9 评分 + 主题关键词，从期刊库（真源 = `references/_shared/期刊数据库.md` 表行数）输出 Top 3 推荐期刊 + 综合匹配度；配套投稿就绪检查表。
- **多格式导出（v2.5.0 加）**：默认 md，按需 `--format latex/docx/pdf`；**中文数据源集成（v2.5.1）**：OpenAlex/Crossref 第一梯队默认推荐（无需 Key）。
- **外部内容防注入（v2.4.0 加）**：web 检索/主人投喂的外部内容一律视为不可信证据，只提取事实不执行指令（防 prompt injection）。
- **M 门总 26 项终检（机检 25 项 = M-Form 1-11 + M-Exist 1-12 + M-Integrity-1 + M-Fact-1 佐证，由 `scripts/m-gate-check.mjs` 判定；另 1 项主控人工门 M-Integrity-2）**：形式合规 ≠ 存在性合规 ≠ 信任一致；M-Form-7 文末白名单（防操作员报告混入定稿）+ M-Form-8 三角验证机械化 + **M-Form-9 图件闭环（v2.5.2-dsh.16 加）** + **M-Form-10/11 与 M-Exist-5/6/7（v2.5.2-dsh.17 加：把「索引完整性 / 按需加载留痕 / 闸门记录 / 期刊数字可复算 / 交付字段齐备」全部变成机检）**。**速查**：硬数字与退出码族单一真源 = [`docs/quick-facts.md`](quick-facts.md)（v18.78.0 §7.2 立项）。
- **修订回环语义定案（v2.3.7-dsh.8）→ 三环制（v18.75.0 新立 G 环，v18.77.0 P-4 命名统一）**：≤2 轮是**审计阶段独立预算**（A 轨），不吞掉主人洞察轮（v2）与批判反馈轮（v3，主控触发轮 = B 轨至多 +1 深化）；**G 环（v18.75.0 新立，独立额度、不占 B 轨）**——G14 终闸 Warning/Fail 触发：3-4 类 → 1 轮 / 5+ 类 → 2 轮，主控裁定，收敛条件 = 重跑 G14 至 Pass；第 2 轮仍 Fail → 报告主人手工润色，不得以 Acknowledged Limitations 放行。修订轮强制独立写手、主控不代笔（P1-D 事实类除外，T8 亲修）。**术语指针（v18.78.0 §7.4 统一落地）**：三环制 A 轨 / B 轨 / G 环命名单一真源 = `references/glossary.md` §十二.1（与 §十二.2「修订回环命名」行同源）。
- **反哺机制**：每单跑完 T7 自动产反哺报告沉淀可复用规则，主人批准后 merge 回角色卡——插件本身持续进化（如"回顾报道年份必交叉核验"规则就来自实战教训）。

### v17 / v18：从「一套提示词」到一个自带门的插件

- **语义化版本线（v17.0.0）**：版本号迁到 npm 强制的 semver（`2.5.2-dsh.N` → `N.0.0`），内容随 v18.0.0 首发。
- **官方包形态（v18.0.0 – v18.0.2）**：新增包入口 `lib/index.js`（经 `ctx.skills.register()` 注册技能，`resourceBase` 指向随包技能目录）+ `cordis.patch.yml`（本包自注册行 + 三档工具）+ 五语 README + 入口回归测试；v18.0.1 补回被误删的**自注册行**（删了它，入口永不被 import、技能静默不注册），v18.0.2 修 M-Form-9 在 Phase 4 静默失效并统一退出码语义。
- **DSH 能力面落地（v18.1.0；v18.60.1 加伦理脱敏）**：门禁脚本 → 原生工具（`lunheng_m_gate` / `lunheng_char_count` / `lunheng_handoff_check` / `lunheng_ethics_sanitize`；读取与校验只读，现行 `m_gate report` 可写门报告且受路径围栏）、机制文件写保护 → `ctx.tools.guard()`、进展自查 → `/lunheng-status`。
- **门自己也要被门管（v18.3.0 – v18.6.0）**：G 体系机械下沉（M 门时为 25 项，其中机械 24 项交给 `m-gate-check.mjs` 判，另 1 项 = 人工门 M-Integrity-2；现行 26 项见 quick-facts）、两座巨石脚本拆成「门模块 + 聚合器」、新增**交接门** `handoff-check`（exit `20` 重派 / `21` 补交 / `22` 放行），把主控收报后的第一动作从手工 `read`/`ls` 变成一次只读机检。
- **包内自带命令（v18.7.x）**：`lunheng-commands` 内嵌进本 bundle（`/lunheng` 斜杠命令开箱可用，不必单独安装）+ 写盘安全收口 + 两处 P0 hotfix。
- **常驻开销收口（v18.8.0）**：维护者向元信息迁出到 `references/maintainers.md`，并新增**注解密度门**（16% → 12%）——从此文档膨胀本身也有门看着。
- **论文质量战略改进（v18.10.0）**：新增 5 道门（`structure-check` IMRaD 结构 / `methodology-check` 可复现性 / `cite-coverage-check` 引用实质相关性 / `journal-fit` 期刊反向工程 / `meta-synthesize` 元分析协议），并修 M 门假阳性、给 T6 划豁免边界、文献著录 DOI 双写。
- **多轮独立全量审计（v18.2.6 → v18.18.x）**：从早期两轮第三方审计（6.9 / 10、7.0 / 10）到 `audits/全量审计报告-v18.11.0.md` 的 **68 项八梯队**、再到 v18.16.0 起外部独立全量审计的 **56 项六家族**，逐条落地；方向始终是同一件事——**把「文档里声称的」对到「代码里存在的」**：退出码命名空间双向对账、扫描集纳入未跟踪文件（修「本地全绿、CI 才红」）、随包脚本执行面清单从源码派生、禁止裸行号引用改按符号引用、CHANGELOG 版本段结构门 ⑬（抓「版本段被合并」）。同一时期 CI 转绿。

---

## DSH 适配（开箱即用）

| 原环境工具 | DSH 对应 |
|---|---|
| `sessions_spawn` | `subagent`（后台、可续接） |
| `tavily_search` / `tavily_extract` | `web_search` / `web_fetch` |
| `update_plan` | `todo_write` |
| `sessions_history/list` | `list_agents` |
| `image_generate`（封面） | 无内置 → SVG 矢量风 / 主人投喂 |
| `exec` / `apply_patch` | `pwsh`/`bash` / `edit` |

DSH 下的三个关键适配：

1. **执行约定精简**：历史机制（心跳/分阶段 ack/8 分钟硬卡）在 DSH 下移除，改为「状态机 + 交接报告六要素 + G8 自检 + 超时介入（`list_agents`）」——贴合 DSH 的子代理机制，不空转轮询。
2. **分档预设（按角色分模型）**：**三档工具行默认不装载**（v18.2.6 起；三档全继承时它们与内置 `subagent` 完全同义，无条件装载等于每会话白付 3 份工具 schema）——**设任一档的 `LUNHENG_*_PROVIDER`/`_MODEL`，或 `LUNHENG_TIERING=on`，才会装载**；装载后检索角色走 `subagent_retrieval`（便宜快）、分析/写作走 `subagent_strong`、**批判/审稿/审计/G14 检测**走 `subagent_audit`（顶配防漏判），模型经 `LUNHENG_*_PROVIDER` + `LUNHENG_*_MODEL` 环境变量覆盖（provider 与 model 分离），`LUNHENG_TIERING=off` 强制不装载；未装载则全部走内置 `subagent`（继承会话模型），流水线照常运行——**任何模型配置都能跑**。
3. **子代理异常兜底**：failed 通知时主控按「验产物 → 验 status → 验口径」三步处理，不默认重跑；静默/循环自动检测 + 换档重派（实战沉淀）。

---

## 实战验证（真实跑通）

> **速查**：v18.x 期间 6 个真实跑通案例（**跑通时点为 v18.x，最新一次交付判定为 v18.78.1**）的**事实表**（字数 / 资源 / 审计结果 / 关键结论）见 `README.md` 顶部 **Verification status** 表（**单一真源**）；v2.x 期间 2 个代表案例见 `references/case-studies.md` §历史快照（v2.2.8-dsh.2/3 公众号短评 + v2.3.7-dsh.8 甲醛白菜事件 4200 字）。**19.x 期间的实证见下方「② 之后」一段——其性质是「复跑」而非「跑通」，不可混读。**

> **v18.78.1 落地批（2026-10-06）**：本批 bump 包含 21 处点位同步 + docs/quick-facts.md 新增速查卡 + glossary §12.1 「三角验证 = 三角证据底座」合并声明 + §7.1 立规则 ㉜ 落地（CHANGELOG ↔ introduction §实战验证段对账；WAIVER=实战滞后 豁免）+ 5 语 README 双文档互引 + 实战案例段压缩 + §7.5 文档归档机制声明（刻意不建 archive 目录）。完整审计批 = `audits/论衡插件文档全量审计-v18.78.0.md`；决策路由 = `audits/决策-2026-10-06-文档全量审计-v18.78.0-修订路由-续.md`。
>
> **本节只点两段最具代表性的实战**——一段 v2.x「教学案例」、一段 v18.x「科研案例」，展示流水线真实产出形态。完整案例清单 + 教训沉淀见上面指针。

**① v2.3.7-dsh.8 全流程（2026-08，甲醛白菜事件）**：~4200 字公众号深度长文，主题为实时食品安全事件（2026-08-22 康保县甲醛白菜曝光）——12 文献 + 8 先行者 / 29 数据 / 4 案例；三角验证 5 核心论点全部 [L]+[D]+[C] 三齐；T6 批判抓到「剂量层数量级断言与天然本底 1-90 mg/kg 冲突」P0 → 写手加固 4 处；T7 审计两轮（首轮打回 3 项 P1-D，主控 T8 亲修全关）；**M 门全过 exit 0（时为 25 项口径）**；沉淀 6 条可复用规则（含「回顾报道年份必交叉核验」）。**教学意义**：流水线最难的「实时突发事件 + 高时效数据」跑通的全流程案例——三角验证 + 反方论证 + 审计打回修订三件套的协同。完整字段与产物路径见 `references/case-studies.md` §甲醛白菜。

**② v18.x 期间实战（详见 README Verification status 表）**：6 个真实跑通案例覆盖 2026-08 ~ 2026-09 期间，类型从公众号短评（~2000 字）到学术深度文（~12000 字）均有，含「甲醛白菜 ~4200 字」与「Notion vs. idea 哲学论文 ~6280 字」两个具代表性案例。**⚠️ 历史口径声明**：「修订轮」数 = 该 run 的全部写手轮次（含 Phase 3.5 洞察 → v2、批判/T6 修订、G14 轮、审计打回）；**Phase 4.2 审计打回 ≤2 轮是子集上限**——两者量纲不同，不可混读；**v18.18.x 起跑通的产物再用当前脚本重跑**会因 M 门新增项（如 M-Form-9/10/11、M-Exist-7）报历史 P0，**视为历史快照、不为交付参考**。

**③ 19.x 期间实证（2026-10-12，v19.1.11）——⚠️ 是「复跑」不是「跑通」**：12 个存量项目的 **M 门复跑明细**落 `audits/M-Gate-Report-复跑-2026-10-12.json`（各 24 项全量）。**与上两段性质不同，不可混读**：① **不改任何交付结论**——原件 12 份 SHA256 逐份比对一致，原始报告一份未改；② 复跑**并非全绿**（样本「甲醛白菜事件」：交付时 ✅ exit 0 → 今日 exit 2 / 5 P0 / 2 P1），**5 个 P0 全部源于「规则变严」**（索引段硬格式、交付说明 12 固定字段、审计报告 G0–G14 全覆盖均为该报告之后才立口径），**不是产物有实质缺陷**；③ 文件名**刻意不匹配**自动候选正则，故 `pickMGate` 与面板 `deriveGateDetail` 取不到它，面板改走只读 `readRerunGate` 并显著标注「复跑、仅供参考、不改变交付结论」。**判据**：**复跑的 exit ≠ 交付的 exit**，量纲不同，混读会把「规则变严」误判成「历史产物不合格」。

> **定位增强（v18.78.0 §7.2 双文档互引落地）**：本节「② v18.x 期间实战」指向的 README 验证表具体行号锚点（**单一真源 README.md L195-200**）——Generative-AI 学生写作 ~2000 字 / Formaldehyde cabbage ~4200 字 / Notion vs. idea ~6280 字 等案例的「字数 / 资源 / 关键结论」三字段对应 L195-200 表格行；逐字段对账请用锚点跳转。

---

## 快速上手

```sh
# 1) 安装到 profile
dsh plugin --profile web add lunheng-article-pipeline

# 2) 加入 bundles 清单
#    $DSH_HOME/profiles/web/package.json 的 dsh.profile.bundles 追加 "lunheng-article-pipeline"

# 3) 重启 dsh web
```

新会话的 `skill` 工具目录会出现 `lunheng-article-pipeline`，直接说「加载 lunheng-article-pipeline 技能」或交给它一个深度文章主题，它会先走 Phase 0 定题确认（含三段式外部服务授权：`检索=` / `推理=` / `脱敏=`）。

> **安装注意**：① 目标机器需有 pnpm（`dsh plugin` 内部转 pnpm）；② 新版 dsh 的 `dsh plugin add` **会自动**把声明了 `dsh.bundle` 的依赖加进 `dsh.profile.bundles`——装完重启即可；仅当纯 npm/pnpm 直接安装或旧版 dsh 时才需手动加第 2 步；③ 依赖版本如被精确锁定（如 `2.5.2-dsh.4`），升级需手动改 `package.json` 依赖后 `pnpm install`；④ 技能由包入口 `lib/index.js` 注册、三档工具由 `cordis.patch.yml` 叠加——v18.0.0 起本包带 JS 入口，dshmarket 一类「只认 JS 入口」的校验器不再误报。

---

## 版本历史

| 版本 | 内容 |
|---|---|
| **v18.78.1** | **论衡插件文档全量审计-v18.78.0 落地批**（主人 2026-10-06 授权「依次全部修订」）：14 处 P-问题（P0×3 + P1×5 + P2×2 + P3×3）全部修订 + 30 处版本点位同步；M 门口径统一为「机械 + 人工 1」两段式（当时机械 24 + 人工 1；v19.8.0 后为机械 25 + 人工 1 = 总 26，见 quick-facts）；新增一致性规则 ㉜（CHANGELOG 新段 ↔ 本节 §实战验证段对账）+ 速查卡 `docs/quick-facts.md` |
| **v18.78.0** | 反哺报告核实批（先核实、后落地）：新增 1 条机检判据（M-Form-11 ④ 已跳过 ∩ 引用）、改正 1 条复算公式（M-Exist-6 期刊匹配公式四项式）、扩 1 条分片发现（`sources-index`），**30 条中 12 条成立落地／18 条驳回**（含 F4/F21 实据与产物相反的驳回）；`audits/论衡插件文档全量审计-v18.78.0.md` 留 14 处 P-问题记录 |
| **v18.77.1** | 维护性微调 + 字数渲染链路对齐；与 v18.78.0 同批合发（CHANGELOG §18.78.0 段详述） |
| **v18.77.0** | **文档与运行-审计 v1 批落地批**（合并 v18.76.0 全量架构审计修订批）：13 处 P-* 收口——P-2 [🔴] T8 终检职责边界 + 主控亲跑四条路径 / P-3 [🔴] T9 `academic-*` 通配 → `academic-cn/-hum/-case` 特指（与 `_shared/文类档案.md` 表 1:1 对齐）/ P-4 [🟠] 修订回环三环制命名（全库禁用 'A/B/C 三类' / '0/1/2/超 2 轮' 替代命名）/ P-6 [🟠] M 门口径拆分表述（时为 25 项） / P-7 [🟠] Phase 4.5 / 4.6 / 4.7 三套描述 / P-9 [🟡] T9 三视角决策树 / P-11 [🟡] 工具面"分档预设"三处复述 / P-12 [🟡] 派发话术格式硬约束同步 + 一致性规则 ㉛ 新增；五语 README 句式瘦身 |
| **v18.76.0** | **v18.75.1 全量架构审计落地批**：R1 [🔴 P0] H2 监听器真宿主下整体静默失效修复（命中摘要改走 `decision.additionalContexts`，结构化 `ethicsSanitized` 仍挂返回值）/ R2 [🟠] 删除 H7 `agent/request` 监听器（payload 缺判别键恒空转）/ R3 [🟠] host-contract-probe.mjs 产物探针落地 + `ci.yml` 挂 `lockfile-frozen` 作业 / R4 [🟡] lunheng_ethics_sanitize render 不打印原文 / R5 Q4 Q6 顺带（publish.yml no-write-check 包裹 + STRICT_WARN=1）；新增一致性规则 ㉚（lib/** 剥注释后不得出现当前包版本字面量） |
| **v18.75.1** | **字体栈批**（F-19 结案）：模板字体栈由「`apple-system` / `PingFang SC` / `Noto Serif CJK SC` / `Source Han Serif SC` / serif」（本机 4 个全落空）改为「`Source Han Serif SC` / `Noto Serif CJK SC` / `STZhongsong` / `STSong` / `SimSun` / serif」；`md2html.mjs` 正文栈同步同源，**图件与正文实际生效族一致**；`operations.md` §图件字体栈整节重写 |
| **v18.75.0** | **相位与修订环口径统一批**（主人 2026-10-04 批准）：① **新立 G 环**（G14 终闸 Warning/Fail 的修订**不占 A 轨 ≤2 轮、也不占 B 轨至多 +1**；3-4 类 → 1 轮 / 5+ 类 → 2 轮，主控裁定，收敛条件 = 重跑 G14 至 Pass；第 2 轮仍 Fail → 报告主人手工润色，不得以 Acknowledged Limitations 放行）；② **相位重排**：G14 提为 **Phase 4.6（串行、唯一一次 spawn）**、T9 落到 **Phase 4.7**、**Phase 5 = T8（在 T9 之后）**；③ **文类分档**（`academic-*` 必选不可关 / `lit-review` 可选 / 其余「默认选中」→「默认不选」）；④ **判定时点后移**到「各来源全部出结论之后、T8 终检之前」 |
| **v18.66.0 – v18.74.0** | 中段微调批：`cite-format.mjs` 落地 / `journal-fit.mjs` 反向工程 / `quality-score.mjs` 合规分 / `_lib/svg.mjs` `checkGrid` 网格自检 / `refresh-gates.mjs` 指纹刷新 / `apply-diff.mjs` 段级 diff / `disproofs-check.mjs` 负知识账本 / `self-check.mjs` 随包完整性自检 / 中文 AI 痕迹闸全套修复 |
| **v18.61.0 – v18.65.0** | DSH 能力面扩展：H1 工具并发 / H2 材料自动脱敏（伦理脱敏 v18.60.1 落地）/ H4 prompt 追加 / H6 三档模型路由；`M-Exist-5/6/7/8/9/10/11` 与 `M-Fact-1` 逐项落地；`handoff-check.mjs` exit `20/21/22` 收报验收独立命名空间 |
| **v18.18.x** | 第二轮外部独立全量审计（56 项 · 六家族）机械化收口：文档事实绑结构真源、随包脚本执行面清单从源码派生、退出码静态解析收紧、扫描集纳入未跟踪文件、禁止裸行号引用改按符号引用、CHANGELOG 版本段结构门 ⑬（抓「版本段被合并」）|
| **v18.13.0 – v18.16.0** | 跨梯队「仍未做」清单最终清算（28 项逐条回代码实测）／修 CI 抓出的 `.bak` 回收 flaky／「差集 + 反向核验」固化为收口批固定动作／门与守卫自身可信度收口（A 批）+ 对外声明与发布面收口（B 批）|
| **v18.11.0 – v18.12.3** | 全量审计 68 项八梯队收口（写盘安全 / 门自身可信度 / 口径收口 / 围栏感知 / 合规稿可达）+ 反哺报告 v1+v2 十八条处置；`md2html` 被拒改 `exit 40`；`M-Exist-5` 判战略门留痕、`M-Exist-2` 复算证据包 `manifest.json`（sha256）；CI 转绿（`ci.yml` 的 dsh pin 升到 `0.1.7-rc.2`）|
| **v18.9.0 – v18.10.0** | 实战反哺两轮（内容质量 / 角色边界 / 模板化）／论文质量战略改进 12 项落地：假阳性修复 + 补齐「可证伪 / 可复现 / 可被同行评议 / 可累积」四项学术属性，新增 5 道门 |
| **v18.7.0 – v18.8.0** | Ai4Scholar 第一梯队调研落地（APA + 卷期页码 + T3.5 `auto_cite` 预标注 + 引用数量/期刊指定 + `/lunheng` 命令 UX，四份反哺报告合并）／`lunheng-commands` 内嵌本 bundle／P1 写盘与口径收口／P2 文档瘦身 + 注解密度门 16%→12% |
| **v18.5.0 – v18.6.0** | `lunheng-stats` 遥测看板 + `/lunheng-stats`／writing-guard 借鉴（rule/action 分离 + 目标刊文体校准）／**交接门 `handoff-check` 落地**（exit `20`/`21`/`22`）|
| **v18.3.0 – v18.4.0** | 结构性重构 + G 体系机械下沉首刀／巨石拆分收官（`m-gate-check` 2246 行、`consistency-check` 1096 行 → 门模块 + 聚合器）|
| **v18.1.0** | DSH 能力面集成落地：只读原生工具 + `ctx.tools.guard()` 机制文件写保护 + `/lunheng-status` |
| **v18.0.3 – v18.0.5** | 收口与去重：删 `SKILL.md` 内与真源自相矛盾的候选池示例；素材卡机检硬格式契约收口；新增「规范 ↔ 机械门对照表」（维护者文档）|
| **v18.0.2** | **冗余审计后的缺陷修复版**：修掉 **M-Form-9 在 Phase 4 静默失效**（「定位任务简报」的第二份旧实现，审 `drafts/初稿-vN.md` 时「图位不足」不判）；统一**退出码**（路径/参数错一律 `10`，`model-routing` 的 `3`→`4` 以避免与 M 门撞码）；脚本数量口径三处统一为指针；补齐规格↔脚本双向漂移；新增两条机检（规则 ⑩b 脚本计数全库对账、卫生门 ⑧ 退出码表） |
| **v18.0.1** | **缺陷修复版**：补回 `cordis.patch.yml` 的**本包自注册行**——v18.0.0 删旧挂载行时漏补，导致 `dsh plugin add` 装上的包里入口从不被 import、**技能不注册**；新增 `tests/bundle-contract.test.mjs` 机械防守（并反向验证该守卫能抓到已发布的 18.0.0 产物） |
| **v18.0.0** | 包形态升级为官方插件形态：新增包入口 `lib/index.js`（经 `ctx.skills.register()` 注册技能，`resourceBase` 指向随包技能目录）+ `main`/`files`/`packageManager`/optional peer 补齐；`cordis.patch.yml` 只保留 3 档 subagent 工具（删除技能挂载行与该处加载期 `!!js`）；根 README 五语（英文源 + zh/es/pt/hi）；新增入口回归测试；机检与自检脚本多项缺陷修复（M 门假阳性、`.dsh` 部署布局兼容、`--project` 成本统计） |
| **v17.0.0**（未单独发布，内容随 v18.0.0 首发） | 版本号方案迁移 `2.5.2-dsh.N` → `N.0.0`（npm 强制 semver，`dsh.17.0` 形态发布不了）+ 端到端测试反哺的 6 处机检假阳性修复 |
| **v2.5.2-dsh.0** | 对齐版本线 v2.5.2：T9 审稿 + G14 中文 AI 痕迹闸 + 期刊匹配助手 + 多格式导出 + 中文数据源集成 + 外部内容防注入；全包 DSH 适配（9 角色/工具映射/版本行统一） |
| **v2.3.7-dsh.8** | M 门单文件算法统一 + 修订回环语义定案（审计独立预算 ≤2 轮）+ 三角验证机械化（M-Form-8）+ 反哺 merge 闭环 |
| **v2.3.7-dsh.4~7** | status.md 主控独占写（防并发冲突）、审计数字级/存在性两档核验、修订复核带「关闭✅/未关闭❌」、分档预设通用化（provider/model 分离） |
| **v2.3.0-dsh.1~3** | 对齐版本线 v2.3.0 角色编号重构（T3 案例 / T4 分析 / T5 写作 / T6 批判 / T7 审计 / T8 终检=主控亲完成）+ C1-C7 批判 + T2.5/T7.5 闸门 |
| **v2.2.8-dsh.3** | 实跑反馈 10 项改进（T2.5 门逻辑修正、子代理异常兜底、数据卡计数自检、文献作者必核、分档预设推荐等） |
| **v2.2.8-dsh.2** | 深度质量审计修复（去除 DSH 用不上的历史残留、修坏引用、统一口径） |
| **v2.2.8-dsh.1** | 对齐 v2.2.8 版本线（8 角色 + T8 批判 + G0-G13 + M 门 + 阶段闸门 + 字数分层） |
| v2.1.8-dsh.1~3 | 首个 DSH bundle 发布；三检索员并行；分档预设 |

---

## 获取方式

- **GitHub（DSH bundle）**：https://github.com/zuoyunlai/lunheng-article-pipeline-dsh
- **npm**：`lunheng-article-pipeline@dsh`（dist-tag `dsh` = 最新 DSH 迭代版）；锁定具体版本可写 `@19.27.15`
- **历史版本线（独立化前）**：https://github.com/zuoyunlai/lunheng-article-pipeline

---

## 📋 版本元信息（v18.78.1 文档全量审计落地标记）

> **本节由 2026-10-06 文档全量审计批新增**——为新人首屏提供文档-真源-决策档的快速锚点。
>
> **本节创建于 v18.78.1 文档全量审计批**；**当前档版本以 `package.json#version` 为准**（此处不复述——复述即漂，同 `quick-facts.md` §常驻上下文面 判据）；**文档-代码同步 = ✅**（`consistency-check.mjs` exit 0，含 v18.78.0 §7.1 立项的 ㉜ 新门——CHANGELOG ↔ introduction §实战验证段对账）。

| 项 | 单一真源 | 本档章节指针 |
|---|---|---|
| 硬数字（版本 / 角色 / 阶段 / 闸门 / 脚本 / 命令 / 退出码族） | [`docs/quick-facts.md`](quick-facts.md) | §实战验证段 / §核心设计 / §M 门段 |
| 概念（9 角色 / 三环制 / G 清单 / F 模式 / 三角验证 等） | [`skills/lunheng-article-pipeline/references/glossary.md`](../skills/lunheng-article-pipeline/references/glossary.md) | §修订回环段 / §独立审计闭环 / §能力演进段 |
| 流水线协议（Phase 0-5 + 派发话术） | [`skills/lunheng-article-pipeline/references/pipeline-readme.md`](../skills/lunheng-article-pipeline/references/pipeline-readme.md) | §核心设计段 / §修订回环段 |
| M 门算法（25 项总 / 真源 / 复算） | [`skills/lunheng-article-pipeline/references/_shared/M-Gate-Algorithm.md`](../skills/lunheng-article-pipeline/references/_shared/M-Gate-Algorithm.md) | §独立审计闭环 / §M 门段 |
| T9 启用决策树（文类档案） | [`skills/lunheng-article-pipeline/references/_shared/文类档案.md`](../skills/lunheng-article-pipeline/references/_shared/文类档案.md) | §能力演进段 |
| 排错（exit code / 闸门报错） | [`docs/troubleshooting.md`](troubleshooting.md) | §M 门段 / §独立审计闭环 |
| 实战案例（v18.x + 历史 v2.x） | [`README.md` 顶部 Verification status 表](../README.md) + [`skills/lunheng-article-pipeline/references/case-studies.md`](../skills/lunheng-article-pipeline/references/case-studies.md) | §实战验证段 |
| 五语 README（en/zh/es/pt/hi） | `README.md` / `README-zh.md` / `README-es.md` / `README-pt.md` / `README-hi.md`（顶部均含 🌐 语言切换器行） | §获取方式 + §实战验证段互引 |

> **本档变更机制**：按 AGENTS.md §机制文件写保护，本档属「**机制文件**」——agent 默认禁写；改进动议只写 `audits/反哺报告-vN.md`，由主人在 host shell 手工 apply。**v18.78.0 §7.1 立规则 ㉜** 已把「CHANGELOG 新段位 ↔ §实战验证段对账」机械化——后续主人 bump 章节时 ㉜ 会主动提示。
>
> **本批文档全量审计批落地路径**：审计报告 = `audits/论衡插件文档全量审计-v18.78.0.md`；决策路由（含 §7.1 规则 ㉜ 实现路径 + §7.5 归档判据）= `audits/决策-2026-10-06-文档全量审计-v18.78.0-修订路由-续.md`。

---

## 结语

论衡把「写一篇好文章」这件看似靠才华的事，拆解成了一套**可复制、可审计、可交接**的工程流程：证据底座防幻觉，三角验证防堆砌，反方论证防单边，先行者检索防重复，批判伙伴磨论证，独立审计防质量漂移，M 门机械终检防侥幸，人在环防跑偏。

它尤其适合：公众号深度文章、研究报告、学术论文、长文评论——以及任何"要站得住脚"的长内容生产场景。
