

博客是来自生产一线的笔记:架构决策、经受住真实用户考验的 AI 系统、能自己挣回成本的基础设施。写于工作之中,而不是隔岸观火。


博客是来自生产一线的笔记:架构决策、经受住真实用户考验的 AI 系统、能自己挣回成本的基础设施。写于工作之中,而不是隔岸观火。
MCP 服务器把真实平台开放给 AI 助手,Agent 流水线在人工审批关卡之后完成真正的编辑工作,还有让这一切在生产环境持续运转的基础设施。它们作为系统构建,经过认证、限定范围并被审计,从来不是演示品。
围绕模型构建的平台,让 AI 功能从演示走向生产:能够规划、执行和验证的智能体,以及架设在企业自有系统之上的 MCP 服务器。围绕它们的是跨模型服务商的路由、面向长任务的持久化工作流、按客户隔离的记忆,以及让每一次写操作都有人把关的防护机制。本站背后正在运行的 MCP 服务器就是现成的例子,同样的工程也曾运行在一个服务一千多个租户、以智能体为核心的 AI 工作流平台上。整套系统运行在自托管的基础设施上,因此没有任何数据离开本地。
基于 Electron 与 React 的桌面软件,服务于留在本机上的工作:支持离线运行,打包适配 Windows、macOS 和 Linux,并在有平台时像其他客户端一样接入平台后端。本栏目的示例是 Keyboard Tracker,一款自带报告生成器的员工活动追踪工具。
一款面向 macOS 和 Linux 的开源终端应用,由 Webanion 以 MIT 许可证发布:保存的命令可在一个标签页里并排打开最多四个终端,采用 Termi 记住的布局,并能随应用一起启动;还有拆分、重新打开、命令面板、快捷键表、内置指南,以及侧边栏里的 CPU、内存和网络数据。Electron、React、TypeScript、xterm.js 和 node-pty,用 electron-vite 构建,用 Vitest 测试,并带有一个 MCP 服务器,让助手可以管理保存的命令。源码见 github.com/webanion/termi。
基于无头 CMS、使用 React 与 Next.js 构建的 Web 平台及其前台网站:支撑企业日常运营的管理后台、客户门户、一家合作社的账本与贷款系统,以及加载迅速、便于搜索引擎和 AI 爬虫读取的公开网站。无论规模大小,都采用服务端渲染、多语言本地化,并持续度量。
一家合作社金融机构此前把社员档案、储蓄、贷款和投资人资本分散在纸质记录与电子表格之间,既无法审计任何一个网点,也无法干净地完成日终结账。我们构建了一套系统把这些全部收拢:社员登记、每日收款、从申请到放款的完整贷款流程、多网点总账、投资人资本,以及一份记录谁做了什么的审计日志。工作人员在每笔收款发生时当场记录,管理者审批贷款并完成日终结账,而权限模型决定每个角色能看到什么、能做什么,而不是简单地把按钮藏起来。本案例研究中展示的一切都运行在预置的演示数据上;真实的社员档案从不出现在作品集材料中。
静态作品集网站既承载不了五种语言的内容,也跟不上背后写作的节奏,于是我们用一个平台取代了它。一套无头 CMS 保存每一份案例研究、文章和记录;一个 Next.js 前端以英语、孟加拉语、西班牙语、印地语和中文呈现它们;一台 MCP 服务器则把同样的内容开放给 AI 助手,让被问及这些工作的智能体去读取源头,而不是根据抓取结果猜测。搜索、媒体管理、审批流程和一个公开的发现层都运行在它之上。证据是递归的:你正在阅读的这个页面,正由本条目所描述的系统提供。
让平台持续在线的基础设施与发布工作:从托管云迁移到自托管 Kubernetes 的生产环境迁移,全程无停机记录;部署在 Cloudflare 之后的 Docker 化服务,推送即发布的 CI/CD,以及通过应用商店审核的移动端发布。备份、TLS 与监控是工作本身的一部分,而非额外项。
工作室自己的基础设施,运行在自托管的 Kubernetes 集群上,于 2026 年 2 月规划,此后每天维护:网站、CMS 和 MCP 服务器,以及它负责维护的客户平台,都通过 Cloudflare 隧道提供服务;每个数据库每晚导出并校验;指标和告警规则推送到手机;家门之外有一个宕机监控;还有一个容器镜像仓库和一个 npm 仓库;一个私有控制台把合并、运行、镜像、Pod 和节点汇集在同一个页面上。
构建和部署从 GitHub 的托管 runner 搬到了家中的一个 runner 池。过去每次运行都从一台全新机器开始,发布还要等排队、等故障恢复;现在由一台构建机在线时承接每个任务,常开服务器上的备用 runner 则由一个看门狗看守,一旦拿不准,它优先保证还能继续发布。镜像进入私有容器镜像仓库,工作室的程序库进入私有 npm 仓库,两者都在自家环境内,每次运行的记录也会归档,留存时间超过 GitHub 的保留期。最慢的部署从八分二十四秒缩短到三分零五秒,CI 也快了三分之一。
平台周边那些既不是应用也不是网站的部分:gm-libs,用于认证、数据、界面和后台任务的可复用 TypeScript 软件包,Webanion 的每个前端和后端都以它们为起点;以及一个产品的设计历程,从交互式 Figma 原型及其 UI/UX,到把它推向市场的视觉素材和教程视频。
一个带版本、与框架无关的软件包家族,Webanion 的每个前端和后端都以它为起点,服务端有一层 NestJS,客户端有 React、Vue 和 Expo 绑定:支持通行密钥和单点登录的身份认证、功能开关、审计日志、多租户数据、加密、文件、文档、消息、实时与离线、webhook、worker 和一套 UI 组件库。每个包都有自己的私有仓库和独立发布,从工作室的私有 npm registry 安装,工作室的控制台会显示哪个消费方在哪个版本上落后。
一款适用于 Linux、Windows 和 macOS 的安静桌面应用,统计键盘和鼠标的使用情况,绘制成图表并导出报告,用五周时间为 Ja Turna 打造。它只统计按键次数而不记录任何人输入的内容,可以查看一天到全部历史的图表,面对数月的数据也依然流畅,任何表格都能下载为经理可以分享的 PDF,还能把全部历史备份到一个文件,以便迁移到新电脑。Electron、React、TypeScript 和 Redux,同一套代码库。
Jahangirnagar University 的 Department of Pharmacy 中 Sukalyan Research Group 的网站,由 Sukalyan Kumar Kundu 教授领导:七个研究方向及其技术和论文,一份按年份归类、可筛选的一百二十四条 Google Scholar 记录的论文列表,首席研究员的简介,按姓名和肖像列出的成员,一面校友去向墙,一个 Lab Life 图库,以及带邮件清单的四条路径加入页面。Next.js 静态导出,React 和 TypeScript,Tailwind CSS,所有内容都在一个查询函数之后,因此迁移到无头 CMS 时其他一切都不必改变。作为单个容器部署在自托管的 Kubernetes 集群上。
一个定制的 WordPress 网站,多年来一直由 Grace Bangla 语言中心的员工自己运营,这所学校面向居住在达卡的外国人教授孟加拉语。网站体现学校自身的形象,在新来的人第一次打电话之前就讲清课程和教学方法,并让员工自行修改每一个页面、通知和活动。项目以视频教程而非支持合同收尾。
第二台可随时关机的机器加入了一个正在运行的单节点集群,没有改动任何应用。常开服务器保存控制平面、每个数据库和卷以及每个服务的第一个副本;构建机在 taint 之后承担构建任务和无状态服务的第二个副本,它休眠时这些副本会等待,而不是退回常开服务器。工作结束时它自行关机,有任务进入队列时再回来;一个控制台展示每个节点、每个工作负载和每段可用时间;常开服务器上的每一项 CPU request 都经过测量,使其预留从可分配量的 84% 降到 56%。