← 返回博客
文章归档

全部文章,按时间排列。

共 21 篇中英文文章,最新发布在前。

WebSocket 为什么堵:2 Mbps 出口嫌疑与 22.3% 减流实测

生产 300 桌出现 199 次发送队列淘汰,CPU 和数据库却未满;同代码本地跑 1000 桌时动作 p99 仅 1.2 ms,JSON 下行却要 4.07 Mbit/s,超过生产 2 Mbps 出口。因此瓶颈先锁定出站链路,再用 compact-v1 把同负载字节从 10.18 MB 降到 7.91 MB;具体单点与生产新容量仍待复测。

阅读全文

为什么公平性证明不该放在手牌复盘页

我们删掉的不只是一个按钮,还纠正了一处容易误导玩家的页面设计:复盘页负责解释手牌,公平性页面负责验证发牌记录。更重要的是,我们用测试防止这项功能再次回到错误的位置。

阅读全文

2 核生产机实测:150 人通过预算,200 开始卡,300 崩塌

直接给数字:腾讯云 SA2.MEDIUM4,2 vCPU、3.6 GiB、固定公网出带宽 2 Mbps,Postgres 与 Caddy 同机。150 人通过延迟预算,200 人超预算,300 人 p99 达 4.1 秒;这不是结案,而是定位出站瓶颈、优化代码并用同一阶梯复测的起点。

阅读全文

三层限流:调用方速率、账号额度与机器容量

限流不只要防止单个调用方刷接口,还要处理账号配额和整机容量。本文结合 Rust/axum 实现,说明何时该拒绝而非排队、怎样找到真正消耗资源的对象、为什么用 GCRA 取代固定窗口,以及每层限流器应当如何失败。

阅读全文

FDE 到底在做什么?把 AI agent 带进传统行业

FDE 的一类主要工作,是把 AI agent 接进客服、物流、餐饮等传统行业和现有流程。它未必比后端更深,难点是同时做好工程、行业理解和客户交付。

阅读全文

发布脚本改了依赖后,如何自动更新 SHA-256 pin

一个发布脚本正确刷新了公开源码 URL,却没有告诉 agent 同提交更新 CI 成本守卫里的 SHA-256 pin。真正的修复不是再写一条提醒,而是让产生变更的工具输出下游 pin,并把旧断言反转成拒绝危险回归的测试。

阅读全文

CSS 静态检查的边界:不要在 CI 里重造浏览器

为了证明一个 CSS custom property「只会用于字体」,locale 闸门差点在内部重造一套 cascade engine。真正稳的边界不是继续补 selector case,而是承认静态证据到哪里结束,再把合法写法收窄到局部、显式、可测试。

阅读全文

CI 发布如何绑定正确的 workflow run

触发 workflow 后再取「最新一次绿灯」,你可能等到旧 run、并发 run,甚至一次完全不同的发布。真正可靠的链路,要把同一个不可变身份从源码意图一路带到 workflow run,再用公开版本 stamp 证明结果。

阅读全文

文档声称博客节奏已自动检查,但定时任务从未接入

两份文档都写着每日 heartbeat 会呈现博客节奏的过期提醒,并引用了一个不存在的章节号。翻开历史才发现:这条接线是被有意搁置的,理由老老实实记在了 commit message 里——而文档用现在时描述了同一件事。之后 59 个分支合进 main,没有任何东西报警。搁置的工作一旦用现在时写下来,就不再是计划,而是断言。

阅读全文

月费 $400 的 AI 团队,按 API 牌价计算要 $53,403

两个固定月费的编程订阅一个月 $400。同样的 30 天真实用量,按 API 牌价算是 $53,403——订阅价的 133 倍,按牌价年化的运转成本比一个资深工程师的全成本还高。本文把这张按模型的明细账单从本机 CLI 日志里重建出来,并说明:让 AI 团队全自动跑,靠的正是这份固定月费,而不是按量 API——后者会把账算翻。

阅读全文

品牌语言迁移:复用布局时如何避免继承旧词汇

一个临时牌桌代号渗进了目录、组件、测试、文档、机器数据与官网。真正的清理不是全局替换,而是一次有目标 schema、有迁移顺序、有语义保真和 CI 约束的品牌语言迁移。

阅读全文

从聊天机器人到生产级 AI 编程

我在 Claude Code + OpenAI Codex 实战中用到的概念、架构、坑和证据:从 model、Terminal/CLI、本地/云端/Remote Control,到 memory、MCP、skill、plugin、harness、workflow、hooks 与双 AI 交付。

阅读全文

测试订单是假的,钱是真的

一次 Telegram Stars 支付测试,被 Apple 扣了 1,077 新币真钱。不是 Telegram 或 Apple 出了故障,而是我们没搞清测试 Stars 应该从哪里来。为什么稳定版客户端里的充值仍会扣钱、当前怎样预置零真钱测试余额、钱怎么当天全额要回来,以及把服务端订单路径的重演损失压到 1 XTR 的 fail-closed 防护。

阅读全文

自己验证一手牌——以及一个「可验证公平」验证器必须拒绝什么

「可验证公平」如果你没法亲手跑那个证明,就一文不值。这里是验证我们一手牌的方式——导出后,在网页或命令行里核对,背后是同一个验证器——以及真正值得抄走的那部分:让人信服的检查,是那些让验证器学会拒绝的检查。

阅读全文

从源码看高级加密发牌:服务器能看到哪些牌?

ADR-101 现已允许 host 在全真人、无 AI 的练习币房间开启高级加密发牌:仅限本模式手牌,服务器不持有未公开底牌明文。须信任运营者运行已审计的开源版本,远端无法验证实际运行的二进制;任一玩家掉线,整桌会当众降级为服务器可见发牌;练习币,非真钱。

阅读全文

我们会故意发冤家牌吗?从架构到发牌讲清楚

一句“不可能”没有说服力。真正能回答这个问题的,是一手牌从浏览器到后端 session task、从 seed commit 到 flop / turn / river、再到断线与发布重启恢复的完整链路。

阅读全文

修完一个 bug 后,如何系统清扫同类问题

一个没跳转的 401,其实是 33 个。一个标着「可核验」的开关,其实是三个表面,不是一个。把单个 bug 报告变成一整类清扫的习惯——以及那行留下回执的 trailer。

阅读全文

我们管它叫 GTO,但它不是

我们 App 里有个按钮写着「GTO」。它在读一张 169 格的表,根本没在解一局博弈。诚实的分级——开局表 vs CFR 近似 vs 真解出来的树——以及我们为什么写了个单测:只要「GTO」这个词敢回来,就让构建挂掉。

阅读全文

AI agent 共享记忆中的五类数据库故障

多个 agent 跨会话共享的记忆,悄悄踩中了五个经典数据库故障:撑爆预算、并发写、孤儿行、schema 漂移、同步过期。有一个,离静默覆盖错误记录只差一次文件名比较。

阅读全文

AI 编码 agent 的三类约束:独立 worktree、证据与双模型审查

一个三端 App、大半代码是 AI agent 写的——但 agent 会谎报「完成」、互相踩踏、还会给测试放水。这是约束它们的那套操作系统。

阅读全文

多个 AI 编码 Session 共用目录,为什么不同分支仍会冲突

两个 session 共用一个目录时,即使各自在不同 branch 上工作,也只能轮流 checkout;每次切换都会更新同一套工作文件。Worktree 用独立目录解决这个问题。

阅读全文