技术笔记
从生产环境里带出来的东西
这些笔记来自真实交付的系统 —— 应急语音平台、企业知识助手、餐厅多租户平台。写的是当时怎么权衡、哪里判断错了、以及最后留下了什么规则。
把 7 秒压到 2 秒:实时语音 AI 的延迟工程
Seven seconds to two: latency engineering for real-time voice AI
阻塞式链路里每一步都在等上一步。把它改成流式之后,识别、生成、合成开始重叠 —— 端到端首字音频从约 6.8 秒降到约 2.3 秒。这篇写的是五个具体改动,以及为什么最难的那个和模型无关。…
In a blocking pipeline every stage waits for the last. Once it streams, recognition, generation and synthesis overlap — and time to first audio falls …
跨云的代价与收益:AI 在 Azure,基建在 AWS
The cross-cloud bill: AI on Azure, infrastructure on AWS
多云的代价是每次调用多付 100–300 毫秒,换来更好的中文语音质量。这篇写清楚这笔账怎么算,以及什么情况下我不会这么做。…
Multi-cloud isn't a fashion statement. It's paying 100–300ms per call to buy better Mandarin speech. Here's how that arithmetic works — and when I wou…
让 worker 可以随时死掉:共享状态与故障转移
Let the worker die: shared state and failover
把状态搬出进程之后,故障转移和水平扩容变成了同一个问题。这篇写数据模型、心跳设计、完整的接管时序,以及 Redis 自己挂了怎么办。…
Once state leaves the process, failover and horizontal scaling become the same problem. The data model, the heartbeat design, the full takeover sequen…
RAG 从 80% 到 90%:四个具体动作
RAG from 80% to 90%: four specific moves
不是换更大的模型。是切块方式、元数据过滤、提示词约束,和一个能告诉你问题出在召回还是生成的排查流程。…
Not a bigger model. Chunking strategy, metadata filtering, a prompt constraint, and a procedure that tells you whether the failure was retrieval or ge…
多租户筒仓模型:一个代码库,每个客户一套部署
The silo model: one codebase, one deployment per customer
为什么不做一个大池子。行级安全默认拒绝、单一原子写入口,以及为什么「新增一个客户」应该是加数据,而不是改 schema。…
Why not one shared pool. Row-level security that denies by default, a single atomic write path, and why onboarding a customer should be adding data — …
生产级 AI 的 30/70 法则
The 30/70 rule of production AI
模型选型大概占三成工作量。剩下七成是状态、故障、扩容、权限、迁移和可观测性 —— demo 和产品的差距大多在这里。…
Picking the model is about 30% of the work. The other 70% is state, failure, scaling, permissions, migrations and observability — which is the entire …