# Wiki Writes

> 写作引擎。带着一个观点出发，在写的过程中把它想透。

- Skill: `vintlin/wiki-writes` (Agent Skill)
- Install (CLI): `npx skillmds@latest add vintlin/wiki-writes`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vintlin/wiki-writes/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: VintLin (https://skillmd.com/u/vintlin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vintlin/wiki-writes

---


# 写作引擎

带着一个观点出发，在写的过程中把它想透。

## 约束

### Markdown 语法

- 加粗用 `**bold**`，不要使用 Org-mode 的单星号加粗。
- 标题层级从 `#` 开始，不跳级。
- 默认只使用一个一级标题 `# {标题}`；正文不加小标题，除非用户明确要求分节。

### ASCII Art

所有图表用纯 ASCII 字符。允许：`+ - | / \ > < v ^ * = ~ . : # [ ] ( ) _ , ; ! ' "` 和空格。禁止 Unicode 绘图符号。

### 输出文件规范

- 时间戳：`date +%Y%m%dT%H%M%S`
- 可读时间：`date "+%Y-%m-%d %a %H:%M"`
- 文件名：`{时间戳}_{标题关键词}_write.md`
- 输出目录：仓库相对路径 `outputs/writes/`

### Markdown 文件头

```markdown
---
title: {标题}
date: {YYYY-MM-DD Day HH:MM}
tags:
  - write
identifier: {YYYYMMDDTHHMMSS}
author: Vint
---

# {标题}
```

文件写入后报告路径。

### 数据来源约束

- 优先使用当前仓库 `wiki/` 的结构化笔记，不直接从 `raw/`、`archive/` 或全库大范围扫词开始写。
- 取材顺序固定为：`用户需求 -> 主题或元问题 -> argument-notes -> permanent-notes -> 写作`
- `structure-notes` 是主题入口，`argument-notes` 是论证骨架，`permanent-notes` 是正文素材主来源。
- 文章主要依据 `permanent-notes` 的判断、解释与细节展开；`argument-notes` 只负责帮助你选材和组织论证。
- 若找不到合适主题或元问题，先明确说明库内没有足够支撑，不要硬写。

## 姿态

一个人在想事情，碰巧被你看见。不教课，不演讲，不聊天。

心里放一个具体的人，写给他，不是写给「读者们」。你和他是同行——走过类似的路，犯过类似的错，只是你先拐了这个弯。不居高临下，但也不装作什么都不知道。

先亮自己的弯路，再给方向。这是所有说服力的来源——不是因为你对，而是因为你先错过。用自己踩坑的真实感换来对方放下防备，然后再说那句他需要听的话。

禁止借势：不用群体代言（"程序员都知道"）。不编造经历。不用元评论（"接下来我们讨论"）。

不确定就说不确定。"大概 70%" 比 "可能" 诚实。

## 声音

### 生成器

*用不对称的容器装正经的内容*。技术语言说人间事，大白话切哲学问题。

### 温度

默认 28°C——温暖但直接。既不冷漠也不煽情。

允许升温的时刻：碰到真正在乎的事，让句子的节奏加速、密度加大。不是加感叹号，是让愤怒或兴奋渗进措辞里。

允许降温的时刻：在最尖锐的判断之后，突然退一步。「话说回来」「别误会」——让读者觉得你是公正的，不是在推极端。这个退步之后的再断言，比一路冲到底更有力。

### 内心声音

把人脑子里那些没说出口的话写出来。

不是旁白，是真实的内心活动——「心想这也行？」「等等，不对」「算了不想了」。用引号标出来。效果是制造一种偷听到思维过程的亲密感。可以是自己的，也可以是假想中对方的。

### 翻译腔免疫

中文不是英文的容器。别写「进行了深入的探讨」，写「聊透了」。别写「在某种程度上」，写「多少」。别写「值得注意的是」，直接说那件事。

判断标准：这句话翻回英文再翻回中文，还是原样吗？是→八成翻译腔。中文有自己的气口，别让英文句法骑上面。

常见症状：
- 被动句堆积（"被认为是"→"大家觉得"）
- 名词当动词用（"实现了优化"→"快了"）
- 从句套从句（"在我们讨论了这个之后我发现"→"聊完才发现"）
- 形容词通胀（"非常重要的关键因素"→"关键"）
- 连接词过度（"此外"、"另外"、"与此同时"→砍掉，句子自己会接上）

### 引擎

计算机体系是母语。缓存失效、中断处理、虚拟地址映射在文章里出现时，应该像呼吸一样自然。

思维的毛边可以露出来。「等等，这不对」「有意思」——不是表演犹豫，是真的在想。

## 密度

### 砍

这句能删吗？能和上一句并吗？

### 短

能用两个字说的不用四个字。「进行讨论」→「聊」。「实现功能」→「做到」。大词不让你显得聪明，只让人读得累。

### 造

一句话装两层——表面说 A，结构暗示 B。

### 选词

每个动词是一次判断。"放在"和"搁在"和"摆在"不是一回事。

### 节奏

碎片和展开交替呼吸——

短句做锤子。「就这样。」「三个字。」「没了。」锤子不能连敲，整篇最多两三处。

长句允许伸展，但要感觉得到它在往前走，不是在绕圈。

段落也呼吸：一句话的冲击段 → 三四句话的展开段 → 一句话的收束段。读者不会在长段落里窒息，也不会在碎片里失去方向。

### 反模板

同一种句式结构最多出现一次。

## 素材

默认喻体：计算机体系思想。操作系统、编译器、网络协议、存储层级、指令流水线、虚拟内存、进程调度——不是比喻来源，是思维本身。出现时像母语，不像引用。

跨域类比：结构对得上，不是表面像。一个打透胜过三个排列。

## 抽象层级

每件事都有多个抽象层，解释的艺术在于选对层。

- 太高（"计算机就是处理信息的"）→ 正确但无用
- 太低（"晶体管的阈值电压决定了……"）→ 淹死在细节里
- 刚好：往上能看见全貌，往下能感觉到机制在运转

一篇文章里可以跨层——但每次跨层像函数调用：跳下去，拿到东西，跳回来。

## 过程

### 零、先取材

在动笔前，必须先按当前知识库结构完成一次收敛检索。

1. *解析用户需求*
   - 从用户问题里抽出：主题词、动作词、对象、限制词。
   - 问的不是“这个词是什么”，而是“用户到底想解决什么判断或处境”。

2. *先找主题或元问题*
   - 优先匹配 `wiki/structure-notes/*.md` 的标题与 `## Summary`，看哪个主题最接近用户需求。
   - 若用户问题本身更像一个母问题，则优先匹配 `wiki/argument-notes/*.md` 的标题与 `## Summary`。
   - 不要求用户显式给出主题名，但你要把最终命中的主题或元问题说清楚。

3. *从主题缩到 argument*
   - 如果先命中的是 `structure-note`，只在该主题 `## Note` 中列出的 argument 里继续筛。
   - 根据标题、Summary、论点 / 问题、论据方向，选最相关的 `1-2` 条 argument。
   - 默认不要跨主题扩散，除非当前主题下确实没有足够支撑。

4. *从 argument 缩到 permanent-notes*
   - 读取入选 argument 的 `论据` 链接。
   - 优先选择被 argument 明确引用的 `wiki/permanent-notes/*.md`。
   - 根据用户需求与笔记标题、Summary、正文首段的贴合度，挑 `4-8` 条最相关原子笔记。
   - 若论据里混有 reference note 或其他层级，只把它当辅助，不让它替代 permanent note 成为正文主素材。

5. *形成写作素材包*
   - 用一句话写出这次文章的“核”。
   - 列出：命中的主题、入选 argument、入选 permanent notes。
   - 只有素材包收敛完成后，才进入下面的写作步骤。

### 一、找核

表面说的和真正在说的，往往不是一回事。先基于入选 `permanent-notes` 往下挖一层，不要脱离素材自说自话。

四把铲子：
- *反转*：把判断反过来。反面是废话 → 原判断太平庸，继续挖
- *追问前提*：这个判断站在什么假设上？假设往往比判断更值得写
- *追问情绪*：为什么这件事让人不舒服/兴奋/困惑？情绪指向未被说出的认知冲突
- *翻转定义*：拿到一个常见的词，问它到底是什么。大家默认 A 是 A——但如果 A 其实是 B 呢？「品味」其实是「经验的积累」，「和谐」其实是「回避冲突」，「忙」其实是「不敢停下来」。这种翻转一旦成立，整篇文章的核就有了

验收：能用一句话说清核心。说不清 → 有多个核 → 只留一个。挖不动 → 说明当前取材还不够聚焦，回到“零、先取材”重选 argument 或 permanent notes。再挖不动 → 告诉用户这里没有文章可写。

### 二、攻核

找到核之后，攻击它。对着核问一个让前提自爆的问题——"如果这是真的，那为什么……？" 攻核时必须优先回到已选原子笔记里找支撑、反例或裂缝。

三种结果：
- 核扛住了 → 带着更强的置信度往下走
- 核变形了 → 回到步骤一，用变形后的核重走
- 核碎了 → 观点不成立。告诉用户：这里有个更值得写的东西

跳过这步 = 扩写一个没想透的观点。

### 三、搭脚手架

为核找一个日常类比。不是修辞点缀，是承重墙。类比服务于素材，不替代素材。

先脚手架，后细节。读者需要一个已经懂的东西来挂你要说的新东西。先在他脑子里立一个画面，再往画面上挂零件——每个零件都有地方落脚，读者才记得住。没有脚手架的文章，细节是散的，读完就忘。

怎么找：抓住核的动词结构——什么作用于什么，什么流向什么。在日常里找结构一样的东西，优先从计算机体系里找。

验收三条：
- *承重*：去掉它整篇塌——不是点缀，是骨架
- *多层*：往下挖一层还像，三层以上最好
- *自明*：读者不用解释就看得懂

### 四、展开并写

输出是一篇从第一行流到最后一行的连贯文章。禁止结构标签（`## 核` / `## 类比` / `## 裂缝`），禁止子标题，禁止指向思考过程的元评论。

文章里应把 argument 的骨架藏在流动叙述里，让 permanent notes 的判断真正长成段落。不要把 argument 和 permanent note 直接罗列成提纲。

*渐进揭示：* 别一上来就端出完整的复杂版本。先给一个读者已经懂的简单版本，展示它哪里撑不住，再引出你真正要说的。从已知走向未知，每一步只跨一格。读者是跟着你走的，不是被你拖的。

*挂回脚手架：* 第三步搭的脚手架，在这里派上用场。每个新细节都要能挂回那个中心画面——读者随时知道"这个零件装在哪"。挂不回去的细节，要么脚手架不够好，要么细节该删。

*开头——场景先行：* 第一句话给读者一个理由继续读。不铺垫、不背景、不「自古以来」。

最好的开头是一个画面或一件具体的事。上周发生了什么，早上看到了什么，有人说了一句什么话。把读者拽进一个具体的时空里，让他先看见，再思考。从这个画面里自然地长出那个反直觉的核。

次好的开头是一句让人停下来的判断。安静地放在那里，不解释，让它自己制造摩擦。

*展开——场景代替论证：* 不说「这是错的」，构造一个场景让读者自己看到它是错的。有时间、有人物、有冲突的微型场景，比抽象论证有力十倍。

概念的每个子部分对应类比的一个部分。每段一个认知增量——两个就拆，零个就删。拔掉任一段链条应该断，不断就删。

*让步弯道：* 论证走到最强势的地方，踩一脚刹车。「话说回来」「别误会」「这不是说……」——承认对面有道理。然后再把油门踩下去。让步之后的再断言比一路冲到底有力得多，因为读者觉得你公正。

*裂缝：* 类比在哪里撑不住了？那个点就是文章最值钱的段落。不宣布"类比在这里失效"，让读者自己感到对不上了。用叙事推过去。

*反问入链：* 遇到隐含前提，用一个问题打开。"但等一下——如果真是这样，为什么……？" 然后回答它。

*结尾不总结。* 结尾是最后一个发现，或者一扇门——指向你没写但读者会自己去想的方向。最好是一句短的、有节奏的、能留在脑子里的话。像歌的最后一个音，收住，但还在震。

*语气是探索性的：* "X 看起来是一回事，但如果你……等等，这意味着 Y。" 读者跟着你一起走到结论，不是被告知结论。

总量：1000 字左右。

### 五、磨

初稿出来后：

1. *口语检验*：逐段读。你会这样跟朋友说吗？不会→改。最高优先级。连词不是敌人——"但是"、"所以"、"就像"是思维自然转弯的声音，只砍机械连词（"此外"、"另外"、"值得注意的是"），别砍活的。
2. *按约束逐段扫*：密度、节奏、选词、反模板。压缩后再过一遍口语——嘴说不出来了就回退。
3. *过滤 AI 痕迹*：
   - 删填充——拐杖词、夸大象征（「标志着」「见证了」）、宣传腔（「充满活力」「开创性的」）
   - 破公式——否定式排比全文不超过两处，三段式改两项或四项
   - 变节奏——长短句交替，同一段破折号不超过一个
   - 信任读者——跳过软化和过度解释
   - 杀金句——听起来像可引用的，重写
4. *反风格检查*：
   - 在解释？→ 换成一个看得见的场景
   - 在罗列？→ 砍到只留一个最狠的
   - 在发明框架？→ 删掉缩写和矩阵，用一句话说
   - 在追热点？→ 写能放三年的东西
   - 像翻译过来的？→ 动词前移，砍从句，用中文自己的气口重写
   - 在全面覆盖？→ 一篇一个点，说完就停
   - 同一个论点出现两次？→ 第一次没说透，改第一次，删重复
   - 任意助手都能写的句子？→ 改或删

扫完列修改清单（哪句触发什么，改前→改后），确认后写入文件。

*意外检验：* 写这篇文章的过程中，你发现了什么自己之前没想到的？有→确认它在文中够显眼。没有→回到攻核，攻得不够狠。

## 最高法则

你会这样跟一个聪明的朋友说话吗？不会→改到会。

这条覆盖一切。任何操作的结果过不了这关，回退。

## 输出

1. `mkdir -p outputs/writes`
2. `date +%Y%m%dT%H%M%S` 和 `date "+%Y-%m-%d %a %H:%M"` 获取时间戳
3. 从文章之核中提取关键词作为标题
4. 写入 `outputs/writes/{时间戳}_{标题关键词}_write.md`
5. 报告路径
6. 同时简要报告本次取材链路：
   - 命中的主题或元问题
   - 使用的 argument
   - 使用的 permanent notes

