跳转至

撤回自己写过的话:近两周更正了哪些内容

近两周的内容更正

近两周有几页的内容被改掉,改法多半是把先前写过的整段撤回。香港的入境查机风险由中升到高、日本境外 eSIM 的例外拿掉、推荐过的 2FA app 换了经营者、台湾封锁判定的分布从 40 笔抽样换成 22,105 笔全量重算。7/27 到 8/10 之间文档站并入 50 个 PR,相当比例花在这类更正上。以下按页介绍改了什么、依据在哪里,中段有一份清单,写给照着旧版做过准备的人。

出差与研讨会那页,撤回了三处叙述

出差与研讨会的数位准备在八月初做过一次全页查证,六个方向独立核对来源,结果撤回三处查不到实据的叙述。

  • 香港自 3/30 起的边境解锁权「不以国安嫌疑为前提」。撤回的是「不以国安嫌疑为前提」这个范围描述。该说法只出现在旅游信息聚合网站,各家对生效日(3/28 或 3/30)与罚则(6 个月或 1 年)互相矛盾,政府宪报、律政司资料与第一线报导都查不到对应文本。3/23 的国安法修订(Legal Notice 27 of 2026)本身查得到,涉国安调查时可要求交出密码,拒绝即构成刑事罪,只在香港机场转机并通关的旅客同样适用。
  • 日本境外购买的 eSIM 不受新规范。森・滨田松本法律事务所对此点明确标注「文書に明記されていません」,文档原本把它写成一条可以依赖的建议。页面现在写的是境外供应商是否纳管留待后续省令厘清,出发前不要把「境外买的 eSIM 一定不受规范」当成确定前提。
  • 马来西亚 ONSA 首周处理 1,500 则以上贴文。原始来源的 1,583 是 2025/1/1 至 11/30 的仇恨内容下架请求总数,时间早于 ONSA 生效。错的是数字,法本身仍在运作,页面保留《线上安全法》2026 年 1 月生效、规范对象为平台业者、实际影响落在内容被移除速度变快的叙述。

同一次更新替换了南韩段落的来源。原本引用的 Cybernews 无署名、无引用,且该站与 VPN 联盟有利益冲突,改用 Lumen Database #73101162 与韩国时报,过期的「20 万件」也更新为 2024 年审议 356,945 件。

香港的入境查机风险层级由中升到高,依据就是上面那条查得到的国安装置解密义务。撤回一条被夸大的叙述与调升风险层级同时发生,方向看似相反,实际指向同一件事:解密义务为真,被夸大的只是它的适用范围。

推荐过的 2FA app 已经易主

怎么维持多个网络身分原本推荐 Raivo 作为 Authy 的替代品,而 Raivo 在 2023 年 7 月被 Mobime 收购,收购方的隐私政策纳入广告追踪器与 log 收集。同一行还写着 Authy 桌面版停止维护因此需要更换,前后自相矛盾。现在的版本只保留 Aegis 与 2FAS,并以开源、可汇出备份、经营者未换手三个判断标准取代品牌清单。

同一页的「在现有 Gmail 开一个全新帐号(不绑手机)」实际上无法达成,改为说明主流免费信箱在注册阶段就要求手机验证,同装置同 IP 开的帐号也可能被服务商自行关联。虚拟门号那段原本只警告 WhatsApp 封锁,现在补上两个关键风险,付费刷卡会把两层身分重新接上,号码会被回收再配发给下一个人,对方之后能用简讯重设你的帐号。

社群平台怎么收集你的数据写「大规模研究没有找到偷录音的证据」,容易被读成已经证明没有,补上「没有找到证据跟证明不存在是两回事」,并加入 2024 年 Cox Media Group 的 Active Listening 推销简报事件(Google 随后将 Cox Media Group 移出广告合作伙伴计划,该公司否认实际聆听)。

另外两处是跨页之间的冲突,社运行动者的数位准备的「预付卡购买时不要用实名身分证办」与出差页新增的十四地实名对照直接矛盾,而新章节还两次把读者导向出差页。记者保护消息来源把市话与简讯的取舍写得像许可,补上案件随时可能升级到能调阅通联记录的层级,而通联记录的保存期限通常比案件周期长。

以上六项出自七月底到八月初新增的八页读者提问内容,上线后分别从结构、逐句、目标读者三个角度各审一次才查出来。

照着旧版做过准备,要补的五件事

上面两节有五项会改变读者已经做过的准备,逐条列出现况与该补的动作。

  • 香港行程。入境查机由中风险升到高风险,涉国安调查时拒绝交出密码本身就是刑事罪。照中风险准备过的人,准备等级要拉到干净机这一层,行程只是经香港转机同样适用。
  • 日本的境外 eSIM。「境外买的一定不受规范」这个前提要拿掉。纳管纯数据 SIM 与 eSIM 的法律已经公布,施行日由政令另订、最迟 2027 年 5 月,境外供应商是否纳入尚未明确。
  • 已经在用 Raivo。建议转到 Aegis 或 2FAS。TOTP 没有办法直接搬,需逐一到各服务的两阶段验证设定里重新绑定。过程中先留着旧 app,直到新 app 能产生正确验证码为止,并确认备援码还在手上。
  • 预付卡。实名这一层避不掉,台湾的预付卡同样要实名登记。能做的是不要登记在跟主门号同一个人名下,再据此决定那支门号拿来做什么。
  • 用虚拟门号注册过的帐号。值得逐一检查那些帐号的简讯复原设定,把已经停用的号码移除,改用 TOTP 或备援码。

台湾的封锁判定改用全量数据重算

OONI 怎么判定一个网站被封锁引用的是 OONI(全球网络审查的公开量测计划,各地志愿者执行测试、结果全部公开)的观测数据,原本写着抽查 40 笔异常测量,dns 31 笔、tcp_ip 6 笔、http-failure 3 笔、http-diff 0 笔,并据此说台湾没有出现重导向到封锁告示页的样态。改用 2026-08-05 往前 24 小时的全量数据(22,105 笔)重算之后,那份分布与支撑它的抽样方法都不成立:

判定 笔数 占比
false 21,029 95.13%
none 512 2.32%
tcp_ip 312 1.41%
dns 150 0.68%
http-failure 67 0.30%
http-diff 35 0.16%

tcp_ipdns 的两倍以上,http-diff 也确实存在 35 笔,问题出在那 40 笔的来源:它取自 measurements API 的异常清单,该清单有自己的排序,当成随机样本使用会失准。页面上补了一则警示记录这次更正,因为同样的陷阱其他人也可能遇到。

被推翻的是分布数字与抽样方法,「台湾没有封锁告示页」这个结论本身反而站得住。那 35 笔 http-diff 抽查了 4 小时内的 15 笔,body_proportion(Probe 取到的内容与对照组相符的比例)全部落在 0.0040.21 之间,内容远短于对照组(control),与告示页逼近 1 的样态相反。成因需要逐笔查验证据层(evidence layer),文档因此只陈述观察到的样态,不下结论。

能重算的原因是栏位统计终于补上。OONI 测量资料结构导览上线时就写着,最小的一步是在逐行解析时多取 test_keys.blocking,统计就能从测量笔数延伸到各 ASN(自治系统编号,网络上一个业者或组织所管的一群 IP)的异常分布。程序一直没有做,是文档与程序之间唯一一处只写在纸上的规划,八月初补上之后,新数据一产出就推翻了上面那段叙述。

互动作品总览页的七处更正

互动与呈现区的总览页上线隔天就查核出七处问题,四处是事实错误,三处是写得过度绝对。

四处事实错误里有两处是文档与自身叙述矛盾。文中写地球仪画面上有流星,原始码里的 buildSky() 只画静态星空与银河带,搜寻 meteor流星comet 都没有命中,带亮头的彗星属于另一件作品 onion-rendezvous,文档把两件混在一起写。另一处把「两条电路在中途某台中继相遇」当成 Tor 通则,该叙述只适用于连线 .onion 服务,而同一页的作品卡片写的是正确版本。

其余两处是文档与数据不一致,「每份数据档都带有四个栏位」的说法在 cables.json 上就不成立,该档没有 sourceUrllicenseUrl,处理方式是把数据补齐,一并修改 tools/gen_cables.py,而非把文档说法改弱。另一处「tools/ 只使用 Python 标准库加上 curl」遗漏了 fix_trunk_land.mjs 是 Node、publish_games_data.sh 是 shell。

写得过度绝对的地方有三处:

  • 「任何一步错位,匿名性就不成立」。匿名性会因为流量关联、出口监控这类与顺序无关的因素被打破,而 Tor 的顺序错乱通常只导致连线失败。原句把匿名性的失效条件窄化成顺序一项,已改为保守叙述。
  • ASN「由一家业者掌管」。该说法与同一个项目产生快照的脚本注释互相矛盾,注释写明 ASN 可能由个人申请。
  • 「八十个国家」。直接写入精确整数,快照重新产生就会过时,改为约八十个并标明数字取自最近一次快照。

英文读者点进来,多半没读到文章

Cloudflare 近 90 天的数据(排除子网域与 bot)显示英文版占文档站流量 25.9%,440 次浏览里只有 70 次(16%)落在真正的文章,290 次落在分类目录页,80 次是 404。

追查后有三个成因,两个出在转址设定,一个出在更早的导览重构。转址设定里有四条规则,来源路径就是现存的英文页,建站工具遇到这种情形会在该网址产生一页只有转址动作的空壳(redirect stub),把真正的文章盖掉,线上实测那四页全部只剩转址画面。另有三条转址在英文内容存在的情况下指向目录页。最后是 2026-05-09 的导览重构,该次 commit 从 docs/en/ 删除 17 个文件、新增 0 个,约 11.5 万字元,设定档注释写明「dropped pages redirect to the nearest live section index」。

依实测流量还原了五篇,落在真正文章的比例由 16% 提升到 64%。被空壳盖掉的四页只占问题的一小块,目录页与 404 才是大宗,剩下 12 篇被删的英文内容与 18% 的 404 尚未处理。

写作规范多了六条自动检查

前面几节的错误有一个共同的上游,规范写了但没有工具挡着,内容就会持续偏离,直到有人读到为止。贡献者百科写着口语词改书面语,而 docs_style_lint.py 只针对其中一个字实作了规则。全站扫描出 605 处那个字以外的口语词,站台自己的工具对现况回报 0 error0 warn

七月底那次清扫连同原本就挡得到的那个字,总共处理 669 处、158 个文件,同时补上六条 linter 规则,全部列为 warn,因为替换词取决于语境,不该让机器直接替换。清扫过程中机械替换造成两处实质损害,都已修复并补进例外清单:

  • 「主讲」被换成「主提到」,破坏了议程页两个语系共 20 处介绍。原因是排除清单只挡后面的字,没挡前面的「主」。
  • 「没搞清楚」被换成「没处理清楚」,理解与处理属于两回事。

同一周另一支 PR 收尾时发现,比对规则只涵盖繁体字,简体对应字完全没有被检查,zh-CN 等于没有这条规则。扫过全站之后待处理的项目比预期少,需要检视的只有 3 处,查证之后都是正当用法。真正的收获是补上了首套回归测试,因为 linter 是全站写作规范唯一的自动检查点,却没有任何测试。覆盖不全的问题人工抽样无法察觉,抽到的样本恰好都在覆盖范围内。

更早一次的全站清理已经逐段改写过 99 个文件里的 266 段「这」字堆叠。八月初再补上密度标准,起因是校稿时实际使用的判准只留在 commit 讯息里,下次写新页不会生效,于是把判准写进贡献者百科,并把可机器判断的部分实作成 zhe-repeat 规则。距离门槛 8 个字是对全站 429 篇校准而得,放宽到 10 会开始收进正当用法,全文密度需要语意判断,刻意留给人工。

两页的叙述已经对不上现况

个人隐私指引在 8/6 补上「相关文章」索引时,下方的进度段落没有跟着改,同一页出现两种说法。上面列了概念层八篇,下面写着「概念层五篇上线」并只列原本那五篇。各层索引也累积落后了一段时间,工具层实际 18 篇只列 7 篇、场景层 10 篇只列 5 篇、进阶层 5 篇只列 2 篇,这次补进 14 篇。

同一页的「常见误区整理」列了四项,读起来像整条还没动工。实际盘点后有两项早已写完,只是没被连到,「VPN ≠ 匿名」在 VPN 指南有整篇,「去中心化 ≠ 匿名」在被误认为匿名的技术完整涵盖 IPFS、Yggdrasil、DN42 与 I2P。另外两项确实还没动工,改后分别标明现况。

帮忙 pin 文档站的 IPFS 镜像有三处对不上现况,其中两处是读者实际操作后才发现的。

macOS 那段写着 brew install ipfs,Homebrew 的 formula 已经改名为 kubo。旧名仍然装得起来,可是 brew services 认的是实际名字,依旧文安装之后再设定常驻服务就会对不上。常驻做法原本只写「可以用 brew services 或 launchd」,没有给指令,实际上 formula 本身已定义 service,一行 brew services start kubo 就会常驻并在登录时自动启动。

第二处是有伙伴想把社群节点设成固定节点,把页面上的 IPNS 名称填进 kubo 的 Peering.Peers,工具直接报错。原因是页面只解释了 CID 与 IPNS 名称,没有提到节点自己的 Peer ID。三串标识符长相接近,节点 Peer ID 的 base36 形式与文档站 IPNS 名称前 12 个字符完全相同,两者都是公钥指纹、同一套编码,差别在一个指向会更新的内容,一个指向一台机器。页面补上三者的对照表,以及一节选用的 peering 设定。

第三处是导言写着「目前只有社群自己的节点在 pin」。查 DHT 时发现另有一个第三方节点也在提供文档站内容,可能是别人自架的镜像,也可能是公开 gateway 取得之后 announce,无论哪一种,原本那句都已经不成立,改为「目前提供文档站内容的节点很少,社群自己那台是主力」。没有写出确切数字,因为 findprovs 是尽力而为的查询,返回的是超时前找得到的节点,不保证穷举,写出「只有 N 个」会是另一种不准确。

窄屏幕的白边查到了语言切换菜单

读者回报置顶公告右边会出现一段空白。实际测量后,公告不是原因,把公告整个隐藏,documentElement.scrollWidth 仍然比窗口宽 14px。逐一隐藏候选元素后定位到 header 的语言切换菜单,三个语言标签的中文字面让收合状态的菜单有 177px 宽,窄屏幕时按钮贴近窗口右边缘,菜单就把版面往右顶出去。置顶公告的黑底与 header 的蓝底都只有窗口宽,往右滑就露出白边。断点正好落在 960px,也就是 header 换成桌面排版的那一刻。改法是在该断点以下让菜单靠按钮右边缘展开,桌面维持居中。同一次也提高了置顶公告链接在浅色主题的对比,原本只有 2.79:1,几乎融进黑底。

另外两个 GitHub Action 还停在 Node 20 runtime,runner 每次执行都会输出 deprecation 警告。actions/cache 由 v4 升到 v6、actions/setup-node 由 v4 升到 v7,升级前逐版读过 release notes,确认两者的破坏性变更都打不到本项目的用法。

两位社群伙伴的贡献

近两周的 50 个 PR 里有两个来自社群伙伴。

wu858430049 补上了 BECOME_ANONI 协议的简中版,正本放在 repo 根目录,位置比照 zh-TW,文档页用 snippets 嵌入以维持单一来源,同一个 PR 一并修正两个会让页面无法显示的设定问题。翻译是站上长期缺人的一条路线,简中与英文都还有大量页面没有对应版本。

ChihChengLiang 更新了 COSCUP 2026 隐私支付实作工作坊的介绍。原本写着不需自备电脑,在旁观看即可,有意参与实作的人依此准备会不足。实际上现场已备妥模拟网络与模拟链,鼓励参加者携带电脑实际操作。这一项不需要碰任何程序,需要的是知道现场实况并愿意把那段文字改掉。

两个 PR 都移除了会让读者做出错误判断的内容。最低的一步是开一个 issue,指出哪一句不对并附上你查到的来源。想直接修改内容,如何参与与认领主题说明怎么选题与认领,贡献者百科的「第一周的入门路径」则依写作、翻译、技术维运、活动筹备分成四条线。

你没有办法自己验证的那部分

站台的主题是隐私与安全,读者依照文档的建议调整自己的行为,一句错的叙述成本落在读者身上。更难处理的是读者没有办法自己验证,抽样得到的分布写成通则,读起来跟全量算出来的一模一样,读者无从分辨那是 40 笔还是 22,105 笔。更正的过程与依据因此一并写出来,包含被撤回叙述的原文与不予采信的理由。

同一段时间新增的内容包括互动与呈现区的台湾基础设施图层、四篇 OONI 技术文档,以及纳入 CI 的 .onion 版建置。若读到与事实不符的内容,欢迎到 GitHub 开一个 issue 或直接送 PR,我们会查证后更新。

相关阅读