跳到主要内容

《每周一龙》写作风格指南

本文档基于对全部 54 期《每周一龙》约 1,836 条报道的定量与定性分析, 总结归纳了本栏目的写作风格规范。风格会随时间演化,本文档反映的是截至 2025 年初的整体面貌。

本文档中凡是涉及自然语言层面的讨论与决策,如句式、措辞、语用等,都仅适用于简体中文内容(zh-Hans locale)的撰写与审校,原因是截至 2026 年 TWiL 仅有简体中文版。如未来 TWiL 获得了其他语言的翻译或原创内容,针对那些自然语言的句式、措辞、语用讨论与决策,将在那时被另行补充至适用于它们的《自然语言风格指南》,以及本文档。 本文档中其他的规范性内容,如报道准则、科普尺度等,与自然语言无关,故适用于所有当下及未来的 TWiL 语言版本。

目标读者

本文档的读者包括《每周一龙》的人类编辑AI 智能体协作者(笔者使用的编码助手)。 目的有二:

  • 帮助人类编辑保持风格一致性;
  • 告诉 AI 智能体在代写初稿时应遵循何种模式。

分析工具

本风格指南基于本项目仓库中 scripts/analyze-newsletter.py 的计量结果编写。该脚本解析全部周报,输出每条目的字数、句数、超链接挂载于动词上的比例、编辑语气检测、科普深度等指标。复现命令见脚本顶部的文档字符串。

篇幅简明

每个条目的长度

统计量数值
平均字数51 字
中位字数~35 字
平均句数1.5 句
正好 1 句的条目66.1%
1-2 句的条目87.6%

绝大多数条目只有一到两句话。如果一个条目超过了 3 句话,应当考虑拆分(前提是不影响可读性),或确认其确实构成一个不可分割的报道单元。

篇幅的指导原则

  • 常规报道条目控制在 1-2 句20-80 字
  • 我们信赖读者群体有基本的开发技能,且能检索基本的陌生概念,因此不要对所有概念都做科普性质的补充说明。对于可补可不补的说明,我们倾向于不补。请仅在以下情况下补充信息:
    • 无法再预期读者自行得到结论:复杂的技术或非技术细节;不涉密、可披露的内幕消息;复杂的逻辑链条等。
    • 可能或已经造成重大影响的事件:解释背景、原因、影响。
  • 若必须补充说明,可追加 1-2 句,但总量不宜超过 5 句。
  • 位于 Markdown 列表中的条目通常更短:30-40 字,以适应作为列表浏览。
  • 每期平均 25-50 条目;合订本可达 60-190 条。

关于上文所述「复杂的细节」,把握标准为:如我们预期目标读者需跨 3 个或更多信息源(包括但不限于文档篇数、程序中函数等的个数、联系人数……)才能独立查证一个细节,则该细节属于「复杂的细节」。

关于上文所述「复杂的逻辑链条」,把握标准为:如一条逻辑链条满足下列任一情况,则该逻辑链条属于「复杂的逻辑链条」:

  • 对目标读者而言结论反直觉;
  • 结论有 3 个或更多逻辑分支;
  • 为得到结论需要的推理步数大于等于 3;
  • 为得到结论需要援引跨学科知识,或跨单一学科内不同专业方向的知识。
    • 跨学科知识的例子:需要了解生物信息学或计算化学的某个算法,才能证明某编译器或库优化确实有利于原作者所声称的某场景。
    • 跨单一学科内不同专业方向的例子:如需要了解高可靠场景编程或游戏编程的某个细节,才能得出某编译器或内核变更的合理性。

句式

主导的句式模板

报道类条目几乎全部遵循以下模板:

X 月 X 日,谁[动词了](链接)什么……。

谁以/用/通过/……什么,[动词了](链接)什么……。

[动词了](链接)什么。这解决了/代表着/意味着/……什么……。

示例:

Huacai Chen [发出了](https://lore.kernel.org/...) 适用于龙芯 3 号处理器的自动调频驱动。
Xi Ruoyao [修复了](https://gcc.gnu.org/...) LoongArch 硬件断点的几个实现问题。
Bibo Mao [实现了](https://lore.kernel.org/...) KVM 半虚拟化快速自旋锁。
  • 55.3% 的链接直接挂在句子的中心动词上——这是最标志性的风格特征。
  • 不合适挂在中心动词上的链接,或一个句子里涉及到的多个次要链接,才被挂在名词短语上。如:
    • X [提出了](url1)……,见[上游的跟踪 issue](url2)
    • X [解决了](url1)先前 Y [提交的](url2) Z 的 XXX 问题
    • X 做了一系列重构:[甲]、[乙]、[丙]
  • 在撰写每个句子时,总是应当优先将超链接挂载在句子的中心动词上,必要时请优先为此组织语言。

高频中心动词

已发布内容中被挂载链接的最高频的 10 个中心动词如下,供参考:

修复了(96)、增加了(47)、贴出了(29)、提交了(24)、优化了(19)、 发布了(18)、实现了(18)、发出了(14)、合并了(12)、允许了(12)

优先使用具体动词

增加添加新增优化等动词都是高度抽象的动作描述,无法传递贡献者究竟做了什么的实际信息。 当遇到这些动词时,应优先考虑是否存在更贴切的具体动词。仅在没有更合适的选择时,才可维持使用这些抽象动词。

特别地,遇到 添加 时,几乎总是应当将其改为 增加,以贴近存量语料的写作风格。

推荐的替换方向:

实际动作优选动词
实现了某项硬件/驱动/子系统支持实现了引入了
实现了某项功能/特性实现了提供了
启用/开放了某个配置项或能力启用了打开了
编写了新的测试或文档编写了
移植/接入了某架构支持移植了引入了
扩展/泛化了既有功能扩展了泛化了
实在无法归入以上类别维持原样
关于动词「提交」

提交了 只描述「发出了补丁」这一动作,通常不能用来明示或暗示「代码已合入」。除非这样说:「向中心仓库提交了……」,但比起专门动词如「合并」显得冗长。

因此如作者想传达「补丁已合入主线」的意思,应优先使用 合并了 之类的写法。

动词的体态、时间状语

  • 绝大部分被报道的事件已经结束,因此最自然的选择是完成体(动词 + 「了」)。
  • 对存在明确时间戳的事件,请明确写出时间状语,最好写在句首:**X 月 X 日,XXX 修复了 XXX 的 XXX……
  • 对发稿时仍在进行中的事件,请给出当前时间参照:截至目前(X 月 X 日 XX:XX),……截至发稿时(X 月 X 日 XX:XX),……
  • 位于 Markdown 列表中的条目有时被省略了句尾的句号,但仍保留动词完成体标记

编辑评论

何时进行评论

约 10% 的条目包含明确的编辑评论(不含独立的 :::info 块)。 编辑评论在以下场景出现:

场景典型用语
感谢贡献者辛苦了!欢迎欢迎!让我们感谢…(感谢 … 的线索投递)
更正/道歉更正声明有失偏颇在此谨向…道歉
解释事物意义这意味着…鉴于此…因此…
提供历史背景从前…先前…在…的年代
推测/分析大概率…笔者猜测…笔者认为…
代码质量评议不可接受遑论优雅不能当饭吃
主编点评对 ABI 决策、工具链变更等重大事项的专门评述

:::info 块的使用场景

  • 技术深度剖析:解释某机制如何运作(如链接器松弛的原理)
  • 历史背景:提供事件的前因后果(如某 PR 为何推迟)
  • 更正/澄清:对之前报道内容进行补充或修正
  • 主编点评:对重大设计决策发表看法
  • 引用声明:如版权合理使用声明
  • :::tip 块用于轻松的花絮或小知识

编辑评论的指导原则

  • 编辑语气应自然、有节制。不要给每一条都评论。
  • :::info 块应有明确标题(使用 :::info[标题] 的语法),其内容应相对独立。
  • 纠正先前报道时,使用 :::info[更正声明] 格式,使用正式、负责的语气与措辞。
  • 致谢应真诚而简洁,避免浮夸。

科普

当前科普深度分布

基于对 1,836 条目的自动化分类:

科普深度数量比例
无科普(纯报道)1,22666.8%
浅度科普(1 个解释线索)33718.3%
中度科普(2-3 个解释线索)20110.9%
深度科普(≥4 个解释线索)723.9%

科普率呈上升趋势:2023 年 28.0% → 2024 年 38.7% → 2025 年(早期数据)40.3%。

什么内容需要科普

以下的话题通常伴有深度科普:

话题举例
Linux 的内部机制为什么 LoongArch 用 statx 而不是 fstat;vDSO getrandom 的安全性;半虚拟化如何实现 566% 的性能提升
设计决策为什么 R_LARCH_CALL36 保持其编码;「PC-relative」与「PC-aligned」的语义差异;为什么从未添加 pcalau18i
编译器优化原理为什么 bstrins 优于移位+掩码;链接器松弛与 -mexplicit-relocs 的相互作用;GCC CoreMark 性能劣化事件的四个独立根因
ISA 设计FP16/FP128 编码空洞的指令位域分析;LA464 的 32 位除法未定义行为及 LA664 是如何修复它的
细节或非技术的背景知识BOLT 是什么;龙架构文档仓库的状态为何使 binutils 变更受阻

以下内容通常不需要科普,纯报道即可:

  • 常规缺陷修复(修复了… 后不跟 因为…
  • 简单功能添加
  • 发行版新闻(X 发布了 ISO
  • 大多数 LLVM 或其他项目的 单条补丁
  • 相对不严肃的内容:社区整活、游戏测试等

当需要科普时,建议遵循「三段式」:

  1. 事实(1 句,完成体):X [做了](链接) Y。
  2. 为什么重要 / 如何运作(1-3 句,以下仅为一种可行的框架,请不要机械遵循此措辞):这是有必要的,因为 Z。这意味着…
  3. 影响 / 建议(0-1 句):因此,用户应该… / 这将启用…

科普的量化标准

自动化脚本检测标志性的词语的数量来估计科普深度。共有七类标记词:

类别标记词示例
原因因为、由于、这是因为、原因是、具体来说
后果这意味着、这会导致、其作用、其目的是
目的用于、以实现、来达到、从而、以便
对比相比之下、与…不同、而非、而不是
时间先前、此前、过去、原本、现在、随后
定义是一种、指的是、对应、等同于、相当于
情态需要、要求、必须、应该、可以
计数评价
≥ 4深度科普
2-3中度
1浅度
0纯报道

举例

纯报道(无科普)

Tiezhu Yang [修复了](https://lore.kernel.org/...) 用户态断点对线程标志
TIF_LOAD_WATCH 处理的一些细节。

轻度科普

Hui Li [修复了](https://lore.kernel.org/...) LoongArch 硬件断点的几个实现问题。

中度科普

7 月 5 日,Sui Jingfeng [合并了](https://cgit.freedesktop.org/...) 龙芯显示控制器 DRM 驱动。
他在前一天[拿到了](https://gitlab.freedesktop.org/...) drm-misc 仓库的合并权限。
这意味着集显用户应该能用未来的上游内核亮屏了;2D/3D 渲染加速是另外的工作。

深度科普 + 编辑评论

参见历期 :::info 块中关于链接器松弛、ABI 设计决策、ISA 指令编码分析等长篇论述。 这类内容通常位于独立的注释块中,而非内嵌于报道条目。

报道准则

TWiL 的每条报道必须带有至少一条来源链接。 这是为了读者可以自行验证、深入了解报道内容,也便于后续追溯。但过渡段落、栏目介绍等模板内容不在此限。

此规则适用于所有栏目,包括 社区整活:儿:。如果内容没有公开链接可引用,则说明编辑无从得知此事,也就不可能被写出。但如果真的存在确实值得报道、但仅见于非公开渠道(如微信聊天记录,微信不支持导出群聊记录为公开链接)的内容:

  • 编辑必须先向原作者征得转载许可。
  • 获得许可后,编辑应以截图或其他适合引用的形式将内容搬至公开可见的地址,并在报道中引用该地址。
  • 编辑不得猜测或编造 URL。如无法合规地提供来源链接,该报道条目必须被删除。
对 AI 智能体的附加要求

AI 智能体在处理无链接的报道条目时:

  • 如果可帮助用户查找到等价的公开来源(包括但不限于 lore.kernel.org、GitHub PR),必须明确告知用户 自己查到了链接,并请用户二次确认,以防幻觉。
  • 如果无法查找到等价的公开来源,必须向用户报告,并请求用户提供链接;不得绕过此步骤直接发布。
  • 在提交说明中记录链接来源的获取方式(自行查找并提供链接 / 用户提供 / 无法获取、已删除)。

补丁集的报道粒度

补丁集(patchset)是 Linux 内核与工具链新闻的主要素材来源。为保证用户可高效扫读内容,请您:

  • 只报道最新版本中出现了重大变化的修订。 「重大变化」指:
    • 设计方案大改;
    • 在相似设计下重写实现;
    • 从他处接管了上游工作(作者变更);
    • 其他不可被解释为小修小补的变更。
  • 常规的审阅跟进、小幅修正(如拼写修正、补充注释、cc stable 的添加与移除等)不构成报道条目
  • 如果某补丁集在前几期已被报道过,且本周的新版本无重大变化:删除该条目
  • 换言之,只有以下性质的内容才算作「新闻」。常规跟进工作不算。
    • 实质性工作的首次公开亮相或重大变更;
    • 实质性工作的正式发布:合入主线、包含它的新版本被 tagged;某发行版提前交付了此功能;……

此规则意味着:大多数来自其他通讯或原始采编素材的「v1 → 审阅 → v2 → 审阅 → v3」链条,要么会被缩减为至多一句话(如果最新版本有实质性变化),要么整个条目被移除(如果最新的变更只是第 N 次的小修小补)。

向后移植(backport)补丁集的特殊处理

向后移植(backport)的补丁集是上述规则的一个例外。虽然此类补丁在内容上与先前报道过的补丁相关,但它们是独立的补丁集, 且对下游发行版维护者具有实际价值:

  • 一套向后移植补丁集的首次提交最终合入通知,算作「新闻」,应当保留。
  • 向后移植补丁集内部的例行修订(如拼写修正、cc stable 调整)仍然遵循常规的报道显著度规则,不构成报道条目。
术语说明

在 AWLY/TWiL 的范畴内,backport 统一译为「向后移植(backport)」而非「回合」。 「回合」更常见的义项是「轮次」(n. turn, round),在「backport」的语境下会产生歧义。 请在 AWLY/TWiL 的范畴内统一使用「向后移植」表述,在首次提及时请一并注明英语术语。举例如下:

  • 动词用法:将其向后移植(backport)到了
  • 名词用法:向后移植(backported)补丁

详见自然语言风格指南

改写来自其他通讯的投稿

有时贡献者(包括新编辑)可能同时为其他 LoongArch 通讯供稿。这些通讯的读者群体不同, 导致原始稿件的风格可能与 TWiL 存在系统性差异:

  • 面向非技术读者的通讯往往含有大量术语解释,即便这些术语对做 LoongArch 适配超过 3 个月的开发者都很熟悉了;
  • 疑似 KPI 驱动的内容有时甚至对代码审查的每个轮次、所有正常的研发跟进工作等细枝末节都作追踪报道;
  • 相对地,TWiL 面向技术读者,期望读者能够自行查阅链接或背景知识,且每条目应当相对独立、可扫读。

典型差异与处理方式

差异其他通讯的风格TWiL 的处理方式
审查周期追踪 v1→审阅→v2→审阅→v3 的完整过程适用补丁集报道粒度:仅保留有实质性变化的最新版本;无实质性变化则整条删除
术语解释PR_SET_SYSCALL_USER_DISPATCH(是一个 Linux prctl 操作,用于…)删除括号或单独成句的解释。如果某个概念确实对 TWiL 目标读者而言需要科普,则撰写单独的 :::info
覆盖面详尽的列表(如 Box64 一个周期内的全部 11 条 PRs)挑选 2-3 个最重要的亮点;其余可省略或用一句话概括
动词选择添加了优先替换为更具体的动词(实现了启用了引入了 等);仅在无合适替代时使用 增加了。参见优先使用具体动词
编辑声音中性、冷调、无评论如果有值得评论的内容,可补充 :::info 或简短的「这意味着…」;不强求

风格适配检查单

收到面向其他通讯撰写(或受其风格影响)的原始稿件时,按以下步骤处理:

  1. 应用补丁集粒度规则:将包含多个补丁版本或审查轮次的条目拆分或删除。 只保留有重大变化的最新版本(设计大改、实现重写、作者变更等); 常规跟进工作(拼写修正、cc stable 增删、审阅往返)应被整条删除。
  2. 检查来源链接:确保每条报道条目至少有 1 条来源链接。 对无链接的条目:自行查找链接并请用户二次确认,或向用户请求提供。无法提供链接的条目应被删除。 需要遵守来源链接的全部可追溯性约束(包括 社区整活:儿: 栏目的公开可溯源要求)。
  3. 精简内联科普:一般需要把括号解释((是…,用于…))移除。 如确有必要为 TWiL 受众解释某概念:将其扩展为独立的 :::info 块。
  4. 裁减冗长列表:将过长的条目列表(如某个项目的每笔提交都被单独列出)精简为 2-3 个重点。如有可能,连 Markdown 列表格式也一并放弃,改写为自然段。
  5. 统一措辞:检查并替换偏离风格指南的关键词汇。尤其是将抽象的 添加/增加 替换为更具体的动词(如 实现了启用了引入了);仅在无合适替代时保留 增加。参见优先使用具体动词
  6. 检查栏目完整性:确认所有必备栏目(先「马」再看杂闻播报张贴栏)均存在。 社区整活:儿: 不是必须的栏目:如果本周没有足够有趣的社区内容,不强求,可将其省略。
  7. 按需补充编辑评论:如果本期有值得深度探讨的技术话题:额外撰写 1-2 个 :::info 块。 如果自然出现了值得感谢的贡献者或值得评论的代码质量话题:感谢或评论它们,使用既定的编辑语气。 不强求——对于不合适的一期内容,宁可保持它的干货风格,也不生硬彰显编辑个性。
  8. 修复元数据:确认 slugdatedraft 状态等 frontmatter 字段正确无误。