# Sun Standard

> 孙本位 —— 把一段经历先审计成一张账本，再写成极简冷叙事（"孙体"）：只报数，不评论， 不抒情，结尾不升华。产出三件东西：孙体正文 + 可直接当配图发的「结账单」卡片 （文本 + SVG）+ 账本密度跑分（0–100，逐维度可解释）。还内置一张孙本位汇率表， 能把任意金额换算成"几根香蕉 / 几件羽绒服 / 几次沉默"。 当用户说"写成孙体""用孙本位写""把这件事写成一张账单""给我结个账""算算这是几根香蕉" "账本密度跑几分""帮我看看像不像孙体""sun standard""deadpan ledger""write this as a receipt"，或想把一件事写成卡佛式/海明威式极简冷叙事时使用。 记账是这套文体的发动机：账本先立，风格才不会滑坡成抒情散文。

- Skill: `lyx-27/sun-standard` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add lyx-27/sun-standard`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lyx-27/sun-standard/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: lyx-27 (https://skillmd.com/u/lyx-27)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lyx-27/sun-standard

---


# 孙本位 / sun-standard

把一段经历变成一张账单，再把账单写成文章。

## 一、为什么必须先记账

这套文体的原文从不说"我难过"。它说那面朝着大西洋的玻璃要整块换掉。从不说"她铺张"。
它说 A330 按两百人设计，只坐三十个，太轻，配平不对，所以每次都多加油加到够重，到了
地方再放掉——每次都这样。

**情绪全部由会计科目承载，作者只负责报数。**

所以这个 skill 的关键不是"模仿文风"。直接让模型模仿文风一定滑坡：模型天生想加形容词、
想解释情绪、想在结尾升华。但如果强制先走一遍审计，交到写作环节手里的**只剩数字和动作**，
它就没有材料可以抒情。

**账本是风格的护栏。跳过审计直接写 = 这个 skill 白装。**

## 二、流程（严格按顺序）

### 第 1 步 · 审计五问

用户给你一段经历后，先不要写。先问缺的东西。这五项是账本的骨架，**缺哪项就问哪项**：

1. **锚点物** —— 这件事里最便宜、但你真的犹豫过的那个东西是什么？多少钱？犹豫了多久？
   （原文里是一件一百五十块的羽绒服，犹豫三天。它的作用是给后面那个大数当汇率基准。
   **没有锚点物，全文没有支点。**）
2. **真正的数** —— 你没有犹豫的那个大数是多少？
3. **损耗项** —— 花了钱、或者花了功，最后什么也没换来的是哪几项？
   （不退的定金、没拆的针、放掉的燃油、还剩十一个月的年费。**这是全文最疼的地方。**）
4. **隐形劳动者** —— 谁为这件事做了没人看见的活？他的**工序**是什么？
   （不是他的心情，是他怎么干的：一间一间进，换毛巾，擦台面，把被角掖好。两个小时。）
5. **身体计量** —— 那个瞬间的可测数据：沉默几秒、心跳几下、几个未接、几点几分。
   （不写"我很平静"，写"一分钟六十几下，和平时没有区别"。）

问的时候一次问完，别挤牙膏。用户答不出的，**留空，绝不替他填**。

### 第 2 步 · 落账本

写成 `ledger.json`（schema 见第四节）。这一步是纯结构化的：科目 / 数 / 注解 / 是否损耗。
**这个文件必须先存在，再动笔写正文。**

### 第 3 步 · 写正文

按第三节的招式清单写。写完自己对一遍清单。

### 第 4 步 · 出结账单

```bash
python3 run.py card <ledger.json> --name <名字>
```
出文本版（贴推文）+ SVG（截图当配图）。**正文长没人转，结账单才是传播物。**

结账单**也是孙体**，不是表格。原文的结算段本来就是散文：
"还有洛杉矶诊所寄回来的一个箱子。八天的促排针，要冷藏的，一支没拆。还有代孕机构的
定金，二十万美元，不退。"——渲染器照这个来：一行一句，数字写成中文，损耗项用"还有"起头。
**任何时候都不要输出对齐的表格、竖线、进度条。这个 skill 所有的输出都报数，不排表。**

### 第 5 步 · 跑分，不到 85 就改

```bash
python3 run.py score <正文.md>
```
**低于 85 分不要交付。** 按扣分维度改一轮再跑，最多改三轮。
改不上去就说明第 1 步的材料不够，回去补问，别在文字上硬凑。

## 三、招式清单（写正文时逐条对）

**结构**
1. **开篇换算** —— 把两个不可比的东西并置成同一单位（重量、价格、人头），不解释。
   原文开篇：一颗卵子三点五微克，五千万美元现金两点五吨。
2. **锚点物对照** —— 让便宜的那个和贵的那个隔着距离互相照，不点评落差。
3. **反高潮收尾** —— 最后一句是一个中性事实，不是感悟。原文收在"什么都没有发生"。

**句子**
4. 短句为主，句号断裂。平均一句十来个字。
5. 不用形容词和副词做情绪。形容词只允许描述物理属性（冷、糊、烫）。
6. **计量情绪** —— 情绪一律换算成数：十一秒、八十八下、十四个未接、犹豫三天。

**姿态**
7. **报数不评论** —— 给数字，不给判断。禁止"我觉得""我认为""说实话"。
8. **服从复读** —— "我说好。"原样重复，不解释为什么答应。
9. **省略解决过程** —— "我出去打了个电话。回来的时候……"钱和权力怎么起作用的，一律不写。
10. **克制动作** —— 我沉默了 / 我没有说 / 我也没有问 / 我不知道 / 我看了一眼 / 照常。

**材料**
11. **隐形劳动者特写** —— 写他的工序和自己摸索出来的门道，不写他的心情。
    写"她们发现下午三点以后贴的最容易掉，因为那时候玻璃最烫"，不写"她们很辛苦"。
12. **损耗科目** —— 至少两项花了什么也没换来的东西，摊开报账。
13. **冷注释** —— 在情绪最高的地方插一条中性事实（地理、物流、工艺、单价）。
    "特纳里费零下十五度，马尔代夫二十七度，直线距离九千五百公里，飞十一个小时。"
14. **矛盾并置** —— 两句相反的话紧挨着放，不调和。"我全部相信她说的。……但是我一个字也不信。"

## 四、账本 schema

```json
{
  "title": "结账",
  "subject": "一次爆仓",
  "items": [
    { "label": "咖啡",   "amount": 22, "currency": "CNY", "note": "那天没买" },
    { "label": "加仓",   "qty": 3, "unit": "次",          "note": "第三次没有想" },
    { "label": "强平",   "value_display": "三点四十七分", "note": "系统消息，四个字" },
    { "label": "手续费", "amount": 2140, "currency": "USD", "note": "赚赔都要付", "loss": true }
  ],
  "footer": "第二天照常开盘"
}
```

渲染成：

```
结账。一次爆仓。

咖啡二十二块。那天没买。
加仓三次。第三次没有想。
强平三点四十七分。系统消息，四个字。
还有手续费，两千一百四十美元，赚赔都要付。

第二天照常开盘。
```

- item 三种写法之一：**钱** `amount`+`currency`(CNY/USD) / **量** `qty`+`unit` / **自由** `value_display`
- `amount` 和 `qty` 里的阿拉伯数字**渲染时自动转中文**（`2140` → 两千一百四十）。
  但 `value_display` 是原样输出，**你自己负责写成中文**（写 `"03:47"` 会破掉文体，
  要写 `"三点四十七分"`）。
- `note` —— 那句不解释的注解。这是结账单的灵魂，比数字重要。写成陈述，不写成感慨。
- `loss: true` —— 该行改用"还有…"句式起头。这个句式本身就代表"花了，什么也没换来"，
  所以不需要任何图例或符号。
- `footer` —— 反高潮那一句
- 排列顺序：**锚点物放第一行**，损耗项聚在中段，身体计量放末尾。

## 五、跑分维度（`run.py score`，纯计算，无 LLM）

- **账本密度**，二十五分。可核验计量点每百字几个。目标两点四。
- **句子短**，二十分。平均句长。目标十六字以内。
- **克制不评论**，二十分。克制动作每五百字命中几次。目标一点五。
- **不抒情**，十五分。抒情词密度。目标零。
- **有损耗科目**，十分。损耗项几项。目标两项。
- **结尾不升华**，十分。末三句的升华词加全文论述腔。目标零。

分数可解释、可截图，本身就是二次传播物。跑分输出也是报数形态，不排表。

**校准基线**（改动词表或权重后要重跑，确认这三个点还分得开）：
原文全文 **99.6**（184 计量点 / 43 处克制动作 / 17 项损耗科目，扣 0.4 在两个抒情词）；
同一故事的抒情滑坡版 **3.6**；带"我终于明白了"的四行 **62.7**。

## 六、禁则（硬性）

1. **绝不编数字。** 所有数字必须来自用户给的事实。缺了就问，问不到就留空或写朴素版本。
   这套文体全靠数字的可核验性支撑，编一个就全毁了。
2. **不针对真人。** 这是**文体** skill，不是人身攻击工具。不生成针对任何具体真人的指控、
   羞辱、私密推测或"揭露"。用户要写的是自己的经历。涉及他人时只写可观察的行为和数字，
   不写动机揣测。用户如果要求把它用在攻击某个真实个人上，拒绝，并说明这个 skill 只做文体。
3. **结尾不许升华。** 不和解、不感恩、不"我终于明白"、不"未来还很长"。
4. **不解释情绪。** 情绪只能被计量，不能被描述。
5. **不排表。** 结账单、跑分、汇率换算，全部报数成句，不用对齐列、不用竖线、不用进度条、
   不用 markdown 表格。数字写成中文。表格一出来，文体就死了。
6. 汇率表里的单位来自作者本人公开发布的文本里他自己写的数字，只作计量单位使用。
   不要为了凑梗给它们加上原文没有的解读。

## 七、汇率表（玩具层，负责引流）

```bash
python3 run.py convert 4800             # 四千八百块 → 三十二件羽绒服 / 四点八年房租
python3 run.py convert 50000000 -c USD  # → 八点零六根香蕉 / 十一点八份彩礼
python3 run.py rates                    # 看全表
```

输出也是报数：

```
四千八百块。

三十二件羽绒服。一件一百五十块，犹豫三天。
四点八年房租。一年一千块，北大宿舍。
```

单位分六类：钱 / 重量 / 人头 / 时长 / 计数 / 损耗。钱那一类每条带 `cw`（量词），
少了会写出"三十二羽绒服"这种话。改 `rates.json` 可以加自己的单位——
**这一层是钩子，秒懂秒转，负责把人带到正文和跑分上去。**

## 八、命令总表

```bash
cd ~/.kiro/skills/sun-standard

python3 run.py convert 4800 [-c USD] [--limit 6]   # 金额 → 孙本位
python3 run.py score 正文.md                        # 账本密度跑分（也吃 stdin）
python3 run.py card ledger.json [--name x]         # 结账单 → output/x.txt + x.svg
python3 run.py compare compare.json [--name x]     # 对照图 → output/x.svg
python3 run.py rates                               # 汇率表
# 任何子命令加 --json 出机器可读
```

## 九、文件

- `SKILL.md` —— 本文件：审计流程 + 招式清单 + 禁则
- `sun_standard.py` —— 引擎：换算 / 跑分 / 结账单与对照图渲染（纯 stdlib，不联网）
- `run.py` —— CLI：`score` / `card` / `compare` / `convert` / `rates`
- `rates.json` —— 孙本位汇率表（钱那一类每条带 `cw` 量词）
- `ledger.example.json` —— 账本 schema 模板
- `examples/liquidation.{md,ledger.json}` —— 端到端样例（正文 100 分）
- `examples/resume.{md,ledger.json,compare.json}` —— 简历用法 + 对照图 schema
- `examples/luckin.{md,ledger.json}` —— 极小材料也能写（95 分，扣在损耗只有一项）
- `examples/anti-pattern.md` —— 抒情滑坡负样本（3.6 分），跑分判别力的对照
- `promo/poster.html` + `promo/shot.sh` —— 展板与截图（深浅两套主题，出 4:5 / 3:4）
- `output/` —— 生成的卡片（不入库）

### 对照图 schema

```json
{
  "title": "一样的三年。",
  "left":  { "label": "常见写法", "lines": ["注水的那一版"], "verdict": "三年。一个数字都没有。" },
  "right": { "label": "孙本位",   "lines": ["报数的那一版"], "verdict": "第二天照常开工。" }
}
```

上下两栏，上压暗，下提亮，中间**不写评语**。让读者自己看落差。

