- 发布于
2026-第三十八周
- 作者

- 姓名
- AgedCoffee
- @__middle__child
该周报主要为各个地方内容的汇总整理
技术
如何命名事物
命名是软件工程与知识工作的核心技能:清晰的语言几乎总意味着清晰的思考,而每次命名都是在与同事、未来的自己以及语言模型沟通。文章主张按事物本质而非即时需求来命名,把命名视为一种智力共情;坏名字往往暴露出模糊概念,甚至牵出真实缺陷。
- 🧠 命名是基础能力:清晰语言体现清晰思考,含糊命名通常意味着内部理解不清。
- 💬 每次命名都是沟通:变量、函数、字段、API、页面、数据库表和产品名都在传递语义。
- 🤖 LLM 依赖代码库清晰度:术语被“slop-fried”后模型表现会退化;减少、澄清、打磨术语就是控制系统复杂度。
- 🔍 DRY 是语义压缩而非位相同:相同值不一定是同一事实,应抽象事实,而非偶然相等的数字。
- ⚖️ 警惕“一致性”崇拜:Clean Code、OOP、FP 等像带承诺的产品,诱人用规则逃避深入思考。
- 🧩 要一致的是命名过程:综合考虑类型、用途、本质、对称性(如 src/dst)和读者,而非死守“缩写/长名”规则。
- ❤️ 命名是智力共情:不要按“我为什么需要它”命名;如 to-pixels 本质只是浮点转整数,像素叙事应放在调用处。
- 🗓️ 时间字段要看语义:created_at 常是默认,但 uploaded_at/issued_at 取决于行代表真实世界对象还是软件合成对象。
- 📦 名称问题常是模型问题:如 fallbackConfig 是否为 Option[Map] 取决于缺失语义,名称与数据形状应一起审视。
- 🗺️ 坏名会隐藏通用性:mergeTargetValuesIntoSourceTemplate 其实只是 Map 合并,应使用 template ++ values 等惯用法。
- 🧵 坏名常牵出真 bug:documentDate 同时表示文件日期、记录日期和到达日期,导致陈旧规则判断错误,改名还需迁移与回填。
- ✅ 好命名反向检验设计:设计未定型时难以命名是正常信号;好名字自然涌现则是高质量信号。
- 🎯 结论:命名要深思熟虑、整体权衡、按本质而非需求、像在乎一样对待。
工具
fallow
Fallow 是面向 TypeScript 和 JavaScript 的代码库智能工具,提供免费的静态代码与样式分析,可检测未使用代码、重复、复杂度、架构漂移和设计系统一致性问题,并可选配运行时智能以了解生产环境中实际执行情况。
- 🚀 快速上手:无需安装,直接运行
npx fallow即可,首次使用无需配置 - 🔍 静态分析能力:一次运行即可发现死代码、重复代码、复杂度和样式问题
- 🗑️ 删除冷代码:放心移除未使用的文件、导出和依赖
- ♻️ 减少重复:在重复逻辑扩散前将其找出
- 🎯 优先重构:利用复杂度和健康度分析聚焦清理工作
- 🧾 TypeScript 证据:确认具体符号使用、类契约、受影响文件和针对性测试
- ⏱️ 运行时证据:查看热路径、冷路径以及基于运行时的删除依据
- 💻 CLI 工作流:最佳起点,可在本地、CI 和代理循环中使用
- 🧩 VS Code 集成:编辑器内实时诊断、Code Lens 和一键修复
- 🤖 MCP 与代理:为 Claude Code、Cursor 等代理提供结构化工具调用
- 🧠 双层模型:静态分析回答“什么和什么相连”,运行时智能回答“实际运行了什么”,二者在
fallow health中交汇 - 📚 常用页面:快速开始、配置、CI 集成、CLI 参考
GitHub - philipwalton/modern-web-types:适用于尚未加入 lib.dom 的新 Web 平台 API 的 TypeScript
本仓库 philipwalton/modern-web-types 旨在为已在至少一个稳定浏览器中可用、但尚未进入 TypeScript 官方内置类型定义的 Web 平台 API 提供 TypeScript 类型;它复用 TypeScript 官方生成管线,输出完整 lib,可作为官方 DOM/Worker 类型的替代或补充。
- 📦 项目提供
modern-web-types,包含五个环境 lib:DOM、WebWorker、ServiceWorker、SharedWorker、AudioWorklet。 - 🧩 类型由与 TypeScript 官方相同的生成器生成,质量与正确性一致,区别只在于收录 API 的数量。
- 🎯 TypeScript 官方
lib.dom.d.ts等只收录已在两个及以上浏览器引擎发布的特性,因此单引擎已可用且广泛使用的 API 会缺少官方类型。 - ⚙️ 推荐安装方式:
npm install --save-dev @typescript/lib-dom@npm:modern-web-types,用别名替换 TypeScript 解析的 DOM 库。 - 🧷 TypeScript 6+ 需在
tsconfig.json中启用libReplacement: true;TypeScript 4.5–5.x 默认支持库替换。 - 👷 对 Worker 等环境,需从
lib移除对应库,并在types中引用入口,如modern-web-types/webworker。 - 📚 入口映射包括:
modern-web-types/modern-web-types/dom替代 DOM;webworker替代 WebWorker;serviceworker、sharedworker、audioworklet对应相应 @types 包。 - ⚠️ 若项目原本未设置
types,添加后 TypeScript 将只包含列出的 @types 包,不再自动包含node_modules中所有@types/*。 - 🔄 更新机制:每周一 workflow 重新固定生成器和条目注册表到最新提交,重新生成全部五个 lib、运行测试,并自动开 PR。
- 🛠️ 生成流程:固定并补丁生成器,使引擎阈值可配置;用同一数据快照构建两次,分别为两引擎 baseline 和一引擎 full;再用 TypeScript 编译器 API 做结构化 diff;最后按环境生成完整 lib。
- 📝
report.md列出官方类型与一引擎类型之间的差距,冒烟测试由当前 delta 自动生成;API 一旦升级到两引擎,就会移出 delta 和测试。 - 🧪 开发命令:
npm run update执行 fetch-upstream → fetch-registry → build → diff → emit-lib → emit-test → emit-readme → report;npm test对每个生成 lib 做类型检查并限制增量大小。 - 🧰 同时安装 TypeScript 6 与 7:diff/emit 脚本用 TS 6,因为 TS 7 将编译器 API 移到
typescript/unstable/*;测试则在两个版本下检查生成输出。 - 🚀 发布由
pkg/package.json的version驱动:合并到main且版本变化会触发 publish workflow,发布pkg/到 npm 并打 tag;版本不变则不发布。 - 🧾 相关项目:
lib.dom.d.ts/@types/web是官方类型;@types/dom-*是手写单特性补丁,本项目用生成的完整 lib 覆盖同类空白。 - 📜 许可证为 Apache-2.0,生成输出源自
TypeScript-DOM-lib-generator和webref的 Web IDL。
更新
Playwright v1.63.0
Playwright v1.63.0 发布,重点带来测试锁、跨 frame 定位、可见元素定位、步骤参数与副标题、trace 的 Aria/屏幕快照等能力,并扩展 API、报告器、CLI 与浏览器支持;同时宣布部分实验组件包停止更新及 Ubuntu 20.04 不再支持。
- 🔒 测试锁:访问共享资源的测试可声明命名锁,跨文件、worker、项目互不并发,其他测试仍并行;支持多个锁及
test.describe()组级锁。 - 🪟 跨 frame 定位:
page.frameLocator()和frame.frameLocator()不传选择器时可在任意子 frame 中搜索,匹配多个 frame 会报错。 - 👁️ 可见定位器:新增
locator.visible(),仅匹配可见元素,推荐替代:visibleCSS 伪类。 - 🧾 步骤增强:Playwright API 步骤会报告目标定位器和调用参数;
test.step()支持subtitle和params,报告器可读取并在 trace viewer/HTML 报告中展示。 - 🖼️ Trace 快照:
tracing.start()和testOptions.trace的snapshots可选择捕获dom、aria、screen;trace viewer 新增 Display Aria 模式,可并排查看并悬停高亮。 - 🔐 认证扩展:
httpCredentials支持凭据数组,按请求 origin 匹配,无 origin 的条目可匹配任意请求。 - 🗂️ 存储状态:新增
opfs选项,将 origin private file system 纳入 storage state,便于持久化与恢复。 - 🔔 新事件:
page.on('dialogclosed')和browserContext.on('dialogclosed')在 JS 对话框被接受、关闭或用户关闭时触发。 - 🧩 Aria API:新增
locator.ariaSnapshotJSON()和page.ariaSnapshotJSON(),以 JSON 返回 Aria 快照,支持mode、depth、boxes。 - 🌐 请求类型化:
apiRequestContext.get()等请求方法支持类型参数,使response.json()返回指定类型。 - 🧪 测试选项:新增独立的
testOptions.reducedMotion、testOptions.forcedColors、testOptions.contrast。 - ➕ CLI 增强:
--add-reporter可追加报告器;npx playwright install --no-remove保留其他 Playwright 安装的浏览器;codegen --http-credentials支持录制 HTTP 认证页面。 - 🏷️ 报告器标签:
list、line、dot、github、junit报告器新增omitTags,可抑制自动附加到测试标题的标签。 - 📈 报告与时间线:内置
perfetto报告器输出 Trace Event Format 文件,可在 Perfetto UI 或chrome://tracing中查看;HTML 报告显示测试步骤时长瀑布。 - ⚠️ 重要公告:实验性
@playwright/experimental-ct-react、ct-react17、ct-vue不再更新,需迁移到 stories 模型;Ubuntu 20.04 不再支持;Linux arm64 改用 Chrome for Testing 构建的 Chromium。 - 🌍 浏览器版本:Chromium 153.0.8010.12、Mozilla Firefox 155.0、WebKit 26.6;同时测试兼容 Google Chrome 153 和 Microsoft Edge 153。
设计
其他
良好的企业文化是提升生产力的最大秘诀,而不是人工智能。
良好文化才是最大生产力提升手段,AI 只是放大器;若文化、流程和架构不佳,AI 会加速错误。文章主张不要只追 AI 工具,而要先建立信任、自主、清晰和协作的组织环境。
- 🏆 核心观点:良好文化比任何 AI 工具都更能提升生产力;AI 有用,但前提是文化正确。
- ⚠️“有了 AI 就不需要那么多人”会降低心理安全感,让员工担心被替代,尤其高管这样说危害更大。
- 🏗️ 引用康威定律:组织沟通结构会体现在产品设计中;文化差,产品差,文化好,产品通常也好。
- 🩺 文化像健康,是一切的前提;没有健康,其他事很难做好。
- 📉 CEO 因竞争对手“10x 生产力”报道而 FOMO、指责团队,会损害信任;许多 10x 声明背后是销售 AI 产品/合作,应先看激励。
- 🚀 AI 放大已有文化:好文化 + 好架构让 AI 更有效;坏沟通/坏架构会被 AI 放大,团队只会更快走错方向。
- ✅ 好文化自检:责任清晰、可自主决策、能安全挑战领导、团队互信、优先级清晰、建设性分歧、奖励成果、理解目标、从失败学习而非找替罪羊。
- 📋 作者提供工程组织 checklist/audit,用于评估和建设优秀工程组织。
- 🗣️ 正确传达 AI 采用:把 AI 当成另一种工具,鼓励学习使用来帮助团队和业务,绝不要提“替代”或“不再重要”。
- 🔄 AI 采用只能自下而上,不能自上而下;变化太快,需要持续知识交流,强制会适得其反。
- 🧭 AI 采用不是工具问题,而是领导力问题;目标不是提高 AI 使用率,而是业务成功与整体成果。
- 👥 反对用 AI 替代工程师:AI 时代更应招聘更多工程师,前提是文化到位,更多人可指数级提升生产力。
- ⏱️ 上市时间(TTM)关键:最快响应市场、提供最佳体验的公司会胜出;限制生产力和人才是长期负债。
- ❓ 领导者该问的不是“如何让所有人用 AI”,而是“如何让优秀人才做出最佳工作,再用 AI 倍增他们”。