[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"categories":3,"archive":41,"tags":251,"latest-articles":544},[4,11,17,23,29,35],{"_id":5,"name":6,"description":7,"cover":8,"created_at":9,"updated_at":9,"id":10},"6a2d2e4f58b719b2465af022","后端工程","NestJS \u002F Node.js 服务端：数据建模、缓存、鉴权、错误处理、对象存储等工程实践。","","2026-06-13T10:17:51.794Z",9,{"_id":12,"name":13,"description":14,"cover":8,"created_at":15,"updated_at":15,"id":16},"6a2d2e5058b719b2465af027","前端工程","Nuxt \u002F Vue \u002F React 前端与后台：SSR、运行时配置、组件与交互、请求层封装、语言与浏览器。","2026-06-13T10:17:52.535Z",10,{"_id":18,"name":19,"description":20,"cover":8,"created_at":21,"updated_at":21,"id":22},"6a2d2e5158b719b2465af02a","AI 工程","边缘 \u002F Serverless AI：RAG、Agent、LLM 调度、知识库同步与限流。","2026-06-13T10:17:53.139Z",11,{"_id":24,"name":25,"description":26,"cover":8,"created_at":27,"updated_at":27,"id":28},"6a2d2e5158b719b2465af02d","云原生与交付","Docker \u002F Nginx \u002F CI-CD \u002F 证书与边缘网络：从本地一键启动到生产零停机部署。","2026-06-13T10:17:53.362Z",12,{"_id":30,"name":31,"description":32,"cover":8,"created_at":33,"updated_at":33,"id":34},"6a2d2e5158b719b2465af030","架构与工程实践","跨切面主题：架构演进、解耦、可观测性、安全与开源治理。","2026-06-13T10:17:53.581Z",13,{"_id":36,"name":37,"description":38,"cover":8,"created_at":39,"updated_at":39,"id":40},"6a2d2e5158b719b2465af033","工具与效率","开发环境、编辑器、命令行与效率技巧：Vim \u002F Git \u002F Zsh \u002F macOS \u002F ffmpeg 等。","2026-06-13T10:17:53.804Z",14,[42,162,169,176,186,198,209,227,234,245],{"year":43,"articles":44},2026,[45,49,52,55,59,63,66,70,74,78,82,86,90,94,98,102,106,110,114,118,122,126,130,134,138,142,146,150,154,158],{"title":46,"cover":8,"created_date":47,"id":48},"给 AI 对话做限流：Workers \u002F 会话 \u002F AI Gateway 三层防护","2026-06-13T00:00:00.000Z",38,{"title":50,"cover":8,"created_date":47,"id":51},"开源前的密钥治理：gitleaks + 历史清理 + 凭证轮换",44,{"title":53,"cover":8,"created_date":47,"id":54},"为开源准备一个项目：README、LICENSE 与最小可复现",48,{"title":56,"cover":8,"created_date":57,"id":58},"DeepSeek vs Gemini：RAG 场景的工具调用风格调优","2026-06-12T00:00:00.000Z",37,{"title":60,"cover":8,"created_date":61,"id":62},"边缘鉴权：在 Worker 里本地验签 JWT，告别跨境回源","2026-06-11T00:00:00.000Z",36,{"title":64,"cover":8,"created_date":61,"id":65},"个人项目也要做可观测性：AI Gateway 日志与用量",47,{"title":67,"cover":8,"created_date":68,"id":69},"滚动更新与零停机部署：deploy.sh 的设计","2026-06-10T00:00:00.000Z",43,{"title":71,"cover":8,"created_date":72,"id":73},"repository_dispatch 驱动的跨仓库 CI\u002FCD 与一键回滚","2026-06-09T00:00:00.000Z",42,{"title":75,"cover":8,"created_date":76,"id":77},"Webhook + HMAC：把 CMS 内容实时同步进向量库","2026-06-08T00:00:00.000Z",35,{"title":79,"cover":8,"created_date":80,"id":81},"webhook 的 fire-and-forget：别让同步拖垮主流程","2026-06-06T00:00:00.000Z",46,{"title":83,"cover":8,"created_date":84,"id":85},"acme.sh + 阿里云 DNS-01：泛域名证书自动续期与 CDN 推送","2026-06-05T00:00:00.000Z",41,{"title":87,"cover":8,"created_date":88,"id":89},"RAG 为什么用 R2 而非爬虫：数据噪音与召回质量","2026-06-04T00:00:00.000Z",34,{"title":91,"cover":8,"created_date":92,"id":93},"从单体 Koa 到四服务博客：一次渐进式架构演进","2026-05-30T00:00:00.000Z",45,{"title":95,"cover":8,"created_date":96,"id":97},"nginx 网关按域名分发 + HTTP\u002F3：单机多服务入口","2026-05-29T00:00:00.000Z",40,{"title":99,"cover":8,"created_date":100,"id":101},"Tool-driven Agent Loop：让 LLM 只做调度","2026-05-28T00:00:00.000Z",33,{"title":103,"cover":8,"created_date":104,"id":105},"一套 Docker Compose 同时服务开发与生产：分层覆盖","2026-05-22T00:00:00.000Z",39,{"title":107,"cover":8,"created_date":108,"id":109},"在 Cloudflare Workers 上从零搭一个 RAG + Agent 服务","2026-05-21T00:00:00.000Z",32,{"title":111,"cover":8,"created_date":112,"id":113},"axios 分层封装：多后端鉴权与 401 处理","2026-05-14T00:00:00.000Z",31,{"title":115,"cover":8,"created_date":116,"id":117},"构建产物与环境解耦：一次构建、多处运行","2026-05-07T00:00:00.000Z",30,{"title":119,"cover":8,"created_date":120,"id":121},"React 19 + Ant Design 5 后台：运行时配置注入（app-config.js）","2026-04-30T00:00:00.000Z",29,{"title":123,"cover":8,"created_date":124,"id":125},"APlayer 与浮层的 z-index 之战：移动端遮挡复盘","2026-04-23T00:00:00.000Z",28,{"title":127,"cover":8,"created_date":128,"id":129},"给博客做一个流式 AI 对话浮窗：SSE + 组合式函数","2026-04-16T00:00:00.000Z",27,{"title":131,"cover":8,"created_date":132,"id":133},"Nuxt 4 SSR runtimeConfig：浏览器与容器内网双地址","2026-04-09T00:00:00.000Z",26,{"title":135,"cover":8,"created_date":136,"id":137},"把对象存储抽象成一层 S3 接口：兼容 OSS \u002F R2 \u002F MinIO","2026-04-02T00:00:00.000Z",25,{"title":139,"cover":8,"created_date":140,"id":141},"统一响应与语义化错误码：拦截器 + 异常过滤器","2026-03-26T00:00:00.000Z",24,{"title":143,"cover":8,"created_date":144,"id":145},"JWT 双令牌：access\u002Frefresh 边界与 Identity 守卫设计","2026-03-19T00:00:00.000Z",23,{"title":147,"cover":8,"created_date":148,"id":149},"Redis 归档缓存的事件驱动失效：EventEmitter2 + TTL 兜底","2026-03-12T00:00:00.000Z",22,{"title":151,"cover":8,"created_date":152,"id":153},"Typegoose 实战：用装饰器写出类型安全的 Mongoose 模型","2026-03-04T00:00:00.000Z",21,{"title":155,"cover":8,"created_date":156,"id":157},"MongoDB 双 ID 体系：为什么同时保留 _id 与自增 id","2026-02-25T00:00:00.000Z",20,{"title":159,"cover":8,"created_date":160,"id":161},"用 NestJS + Fastify 重写 Koa 博客后端：架构取舍与收益","2026-02-18T00:00:00.000Z",19,{"year":163,"articles":164},2023,[165],{"id":166,"title":167,"cover":8,"created_date":168},18,"Jenkins 不完全指南：从安装到流水线即代码","2023-02-06T00:00:00.000Z",{"year":170,"articles":171},2022,[172],{"id":173,"title":174,"cover":8,"created_date":175},1,"Docker 快速上手：从镜像到容器的常用命令","2022-12-08T00:00:00.000Z",{"year":177,"articles":178},2021,[179,182],{"id":40,"title":180,"cover":8,"created_date":181},"阿里云容器镜像加速：配置 registry-mirrors 告别拉取超时","2021-11-18T00:00:00.000Z",{"id":183,"title":184,"cover":8,"created_date":185},5,"oh-my-zsh 疑难杂症与提速：插件、主题与启动慢排查","2021-06-30T00:00:00.000Z",{"year":187,"articles":188},2020,[189,192,195],{"id":16,"title":190,"cover":8,"created_date":191},"Vim 窗口管理：split、切换、缩放与标签页","2020-12-14T00:00:00.000Z",{"id":22,"title":193,"cover":8,"created_date":194},"Vim 问题集合：退出、中文乱码、复制到系统剪贴板等高频坑","2020-10-20T00:00:00.000Z",{"id":10,"title":196,"cover":8,"created_date":197},"Vim 前端开发插件整理：补全、LSP、文件树与格式化","2020-10-13T00:00:00.000Z",{"year":199,"articles":200},2019,[201,205],{"id":202,"title":203,"cover":8,"created_date":204},17,"TypeScript 快速入门：类型系统的核心心智模型","2019-12-27T00:00:00.000Z",{"id":206,"title":207,"cover":8,"created_date":208},4,"HomeBrew 食用指南：macOS 的包管理器怎么用才顺手","2019-10-13T00:00:00.000Z",{"year":210,"articles":211},2018,[212,215,219,223],{"id":34,"title":213,"cover":8,"created_date":214},"本地开发绕过跨域：从「关浏览器安全」到正确做法","2018-12-19T00:00:00.000Z",{"id":216,"title":217,"cover":8,"created_date":218},15,"React Hooks 快速尝鲜：useState \u002F useEffect 与自定义 Hook","2018-10-04T00:00:00.000Z",{"id":220,"title":221,"cover":8,"created_date":222},8,"Vim 工作流：模式、动作 + 文本对象的「语言」思维","2018-07-11T00:00:00.000Z",{"id":224,"title":225,"cover":8,"created_date":226},3,"macOS 环境变量配置：搞清 PATH 与各 shell 配置文件的加载顺序","2018-05-22T00:00:00.000Z",{"year":228,"articles":229},2017,[230],{"id":231,"title":232,"cover":8,"created_date":233},6,"PM2 基本使用：Node 进程的守护、日志与开机自启","2017-12-13T00:00:00.000Z",{"year":235,"articles":236},2016,[237,241],{"id":238,"title":239,"cover":8,"created_date":240},16,"用 ffmpeg 批量把 flac 转成 mp3：一条命令搞定整目录","2016-12-14T00:00:00.000Z",{"id":242,"title":243,"cover":8,"created_date":244},7,"Nginx 基本使用：命令、配置结构与反向代理","2016-12-08T00:00:00.000Z",{"year":246,"articles":247},2015,[248],{"id":28,"title":249,"cover":8,"created_date":250},"Git 使用指南：从日常工作流到撤销与协作的常用命令","2015-12-21T00:00:00.000Z",[252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348,352,356,360,364,368,372,376,380,384,388,392,396,400,404,409,414,419,424,429,434,439,444,449,454,459,464,469,474,479,484,489,494,499,504,509,514,519,524,529,534,539],{"_id":253,"id":16,"created_at":254,"updated_at":254,"name":255},"6a294c7a9fbda20eb7c62dea","2022-12-08T14:05:49.000Z","小记",{"_id":257,"name":258,"created_at":259,"updated_at":259,"id":28},"6a2d2e5258b719b2465af037","NestJS","2026-06-13T10:17:54.616Z",{"_id":261,"name":262,"created_at":263,"updated_at":263,"id":34},"6a2d2e5258b719b2465af03c","Fastify","2026-06-13T10:17:54.860Z",{"_id":265,"name":266,"created_at":267,"updated_at":267,"id":40},"6a2d2e5358b719b2465af03f","Node.js","2026-06-13T10:17:55.079Z",{"_id":269,"name":270,"created_at":271,"updated_at":271,"id":216},"6a2d2e5358b719b2465af042","TypeScript","2026-06-13T10:17:55.299Z",{"_id":273,"name":274,"created_at":275,"updated_at":275,"id":238},"6a2d2e5358b719b2465af045","MongoDB","2026-06-13T10:17:55.527Z",{"_id":277,"name":278,"created_at":279,"updated_at":279,"id":202},"6a2d2e5358b719b2465af048","Typegoose","2026-06-13T10:17:55.782Z",{"_id":281,"name":282,"created_at":283,"updated_at":283,"id":166},"6a2d2e5458b719b2465af04b","Redis","2026-06-13T10:17:56.097Z",{"_id":285,"name":286,"created_at":287,"updated_at":287,"id":161},"6a2d2e5458b719b2465af04e","JWT","2026-06-13T10:17:56.307Z",{"_id":289,"name":290,"created_at":291,"updated_at":291,"id":157},"6a2d2e5458b719b2465af051","缓存","2026-06-13T10:17:56.525Z",{"_id":293,"name":294,"created_at":295,"updated_at":295,"id":153},"6a2d2e5558b719b2465af054","事件驱动","2026-06-13T10:17:57.206Z",{"_id":297,"name":298,"created_at":299,"updated_at":299,"id":149},"6a2d2e5558b719b2465af057","对象存储","2026-06-13T10:17:57.520Z",{"_id":301,"name":302,"created_at":303,"updated_at":303,"id":145},"6a2d2e5558b719b2465af05a","S3","2026-06-13T10:17:57.741Z",{"_id":305,"name":306,"created_at":307,"updated_at":307,"id":141},"6a2d2e5558b719b2465af05d","Nuxt","2026-06-13T10:17:57.962Z",{"_id":309,"name":310,"created_at":311,"updated_at":311,"id":137},"6a2d2e5658b719b2465af060","Vue","2026-06-13T10:17:58.188Z",{"_id":313,"name":314,"created_at":315,"updated_at":315,"id":133},"6a2d2e5658b719b2465af063","SSR","2026-06-13T10:17:58.773Z",{"_id":317,"name":318,"created_at":319,"updated_at":319,"id":129},"6a2d2e5658b719b2465af066","React","2026-06-13T10:17:58.987Z",{"_id":321,"name":322,"created_at":323,"updated_at":323,"id":125},"6a2d2e5758b719b2465af069","Hooks","2026-06-13T10:17:59.708Z",{"_id":325,"name":326,"created_at":327,"updated_at":327,"id":121},"6a2d2e5758b719b2465af06c","Ant Design","2026-06-13T10:17:59.977Z",{"_id":329,"name":330,"created_at":331,"updated_at":331,"id":117},"6a2d2e5858b719b2465af06f","Vite","2026-06-13T10:18:00.564Z",{"_id":333,"name":334,"created_at":335,"updated_at":335,"id":113},"6a2d2e5858b719b2465af072","SSE","2026-06-13T10:18:00.795Z",{"_id":337,"name":338,"created_at":339,"updated_at":339,"id":109},"6a2d2e5958b719b2465af075","axios","2026-06-13T10:18:01.032Z",{"_id":341,"name":342,"created_at":343,"updated_at":343,"id":101},"6a2d2e5958b719b2465af078","CORS","2026-06-13T10:18:01.254Z",{"_id":345,"name":346,"created_at":347,"updated_at":347,"id":89},"6a2d2e5958b719b2465af07b","浏览器","2026-06-13T10:18:01.556Z",{"_id":349,"name":350,"created_at":351,"updated_at":351,"id":77},"6a2d2e5958b719b2465af07e","前端","2026-06-13T10:18:01.788Z",{"_id":353,"name":354,"created_at":355,"updated_at":355,"id":62},"6a2d2e5a58b719b2465af081","Cloudflare Workers","2026-06-13T10:18:02.088Z",{"_id":357,"name":358,"created_at":359,"updated_at":359,"id":58},"6a2d2e5a58b719b2465af084","RAG","2026-06-13T10:18:02.652Z",{"_id":361,"name":362,"created_at":363,"updated_at":363,"id":48},"6a2d2e5b58b719b2465af087","Agent","2026-06-13T10:18:03.286Z",{"_id":365,"name":366,"created_at":367,"updated_at":367,"id":105},"6a2d2e5c58b719b2465af08a","LLM","2026-06-13T10:18:04.531Z",{"_id":369,"name":370,"created_at":371,"updated_at":371,"id":97},"6a2d2e5d58b719b2465af08d","DeepSeek","2026-06-13T10:18:05.180Z",{"_id":373,"name":374,"created_at":375,"updated_at":375,"id":85},"6a2d2e5d58b719b2465af090","向量检索","2026-06-13T10:18:05.708Z",{"_id":377,"name":378,"created_at":379,"updated_at":379,"id":73},"6a2d2e5e58b719b2465af093","限流","2026-06-13T10:18:06.357Z",{"_id":381,"name":382,"created_at":383,"updated_at":383,"id":69},"6a2d2e5e58b719b2465af096","Docker","2026-06-13T10:18:06.690Z",{"_id":385,"name":386,"created_at":387,"updated_at":387,"id":51},"6a2d2e5e58b719b2465af099","容器","2026-06-13T10:18:06.970Z",{"_id":389,"name":390,"created_at":391,"updated_at":391,"id":93},"6a2d2e5f58b719b2465af09c","镜像加速","2026-06-13T10:18:07.955Z",{"_id":393,"name":394,"created_at":395,"updated_at":395,"id":81},"6a2d2e6058b719b2465af09f","阿里云","2026-06-13T10:18:08.227Z",{"_id":397,"name":398,"created_at":399,"updated_at":399,"id":65},"6a2d2e6058b719b2465af0a2","Docker Compose","2026-06-13T10:18:08.502Z",{"_id":401,"name":402,"created_at":403,"updated_at":403,"id":54},"6a2d2e6058b719b2465af0a5","Nginx","2026-06-13T10:18:08.726Z",{"_id":405,"name":406,"created_at":407,"updated_at":407,"id":408},"6a2d2e6058b719b2465af0a8","HTTP\u002F3","2026-06-13T10:18:08.965Z",49,{"_id":410,"name":411,"created_at":412,"updated_at":412,"id":413},"6a2d2e6158b719b2465af0ab","CI-CD","2026-06-13T10:18:09.908Z",50,{"_id":415,"name":416,"created_at":417,"updated_at":417,"id":418},"6a2d2e6258b719b2465af0ae","Jenkins","2026-06-13T10:18:10.270Z",51,{"_id":420,"name":421,"created_at":422,"updated_at":422,"id":423},"6a2d2e6258b719b2465af0b1","DevOps","2026-06-13T10:18:10.500Z",52,{"_id":425,"name":426,"created_at":427,"updated_at":427,"id":428},"6a2d2e6258b719b2465af0b4","PM2","2026-06-13T10:18:10.721Z",53,{"_id":430,"name":431,"created_at":432,"updated_at":432,"id":433},"6a2d2e6258b719b2465af0b7","进程管理","2026-06-13T10:18:10.987Z",54,{"_id":435,"name":436,"created_at":437,"updated_at":437,"id":438},"6a2d2e6358b719b2465af0ba","acme.sh","2026-06-13T10:18:11.890Z",55,{"_id":440,"name":441,"created_at":442,"updated_at":442,"id":443},"6a2d2e6458b719b2465af0bd","HTTPS","2026-06-13T10:18:12.106Z",56,{"_id":445,"name":446,"created_at":447,"updated_at":447,"id":448},"6a2d2e6458b719b2465af0c0","架构","2026-06-13T10:18:12.320Z",57,{"_id":450,"name":451,"created_at":452,"updated_at":452,"id":453},"6a2d2e6458b719b2465af0c3","安全","2026-06-13T10:18:12.570Z",58,{"_id":455,"name":456,"created_at":457,"updated_at":457,"id":458},"6a2d2e6458b719b2465af0c6","性能","2026-06-13T10:18:12.781Z",59,{"_id":460,"name":461,"created_at":462,"updated_at":462,"id":463},"6a2d2e6558b719b2465af0c9","可观测性","2026-06-13T10:18:13.781Z",60,{"_id":465,"name":466,"created_at":467,"updated_at":467,"id":468},"6a2d2e6658b719b2465af0cc","Webhook","2026-06-13T10:18:14.708Z",61,{"_id":470,"name":471,"created_at":472,"updated_at":472,"id":473},"6a2d2e6658b719b2465af0cf","开源","2026-06-13T10:18:14.932Z",62,{"_id":475,"name":476,"created_at":477,"updated_at":477,"id":478},"6a2d2e6758b719b2465af0d2","Vim","2026-06-13T10:18:15.542Z",63,{"_id":480,"name":481,"created_at":482,"updated_at":482,"id":483},"6a2d2e6858b719b2465af0d5","Git","2026-06-13T10:18:16.214Z",64,{"_id":485,"name":486,"created_at":487,"updated_at":487,"id":488},"6a2d2e6858b719b2465af0d8","版本控制","2026-06-13T10:18:16.793Z",65,{"_id":490,"name":491,"created_at":492,"updated_at":492,"id":493},"6a2d2e6958b719b2465af0db","Zsh","2026-06-13T10:18:17.068Z",66,{"_id":495,"name":496,"created_at":497,"updated_at":497,"id":498},"6a2d2e6a58b719b2465af0de","macOS","2026-06-13T10:18:18.034Z",67,{"_id":500,"name":501,"created_at":502,"updated_at":502,"id":503},"6a2d2e6a58b719b2465af0e1","HomeBrew","2026-06-13T10:18:18.396Z",68,{"_id":505,"name":506,"created_at":507,"updated_at":507,"id":508},"6a2d2e6d58b719b2465af0e4","命令行","2026-06-13T10:18:21.173Z",69,{"_id":510,"name":511,"created_at":512,"updated_at":512,"id":513},"6a2d2e6d58b719b2465af0e7","环境配置","2026-06-13T10:18:21.484Z",70,{"_id":515,"name":516,"created_at":517,"updated_at":517,"id":518},"6a2d2e6e58b719b2465af0fc","ffmpeg","2026-06-13T10:18:22.067Z",71,{"_id":520,"name":521,"created_at":522,"updated_at":522,"id":523},"6a2d2e6e58b719b2465af0ff","音频","2026-06-13T10:18:22.281Z",72,{"_id":525,"name":526,"created_at":527,"updated_at":527,"id":528},"6a2d2e6e58b719b2465af102","效率","2026-06-13T10:18:22.783Z",73,{"_id":530,"name":531,"created_at":532,"updated_at":532,"id":533},"6a2d2e8158b719b2465af137","AI","2026-06-13T10:18:41.401Z",74,{"_id":535,"name":536,"created_at":537,"updated_at":537,"id":538},"6a2d2e8758b719b2465af180","自动化","2026-06-13T10:18:47.983Z",75,{"_id":540,"name":541,"created_at":542,"updated_at":542,"id":543},"6a2d2e8c58b719b2465af1a6","文档","2026-06-13T10:18:52.417Z",76,[545,559,574,588,602,616],{"_id":546,"title":53,"description":547,"cover":8,"created_date":47,"category_id":34,"tag_ids":548,"author_ids":549,"public":173,"status":173,"star":173,"like":550,"views":173,"created_at":551,"updated_at":552,"id":54,"category":553,"tags":554,"authors":558},"6a2d2e8c58b719b2465af1a9","把私有项目开源，写完代码只是开始。一份让人能跑起来的 README、一个明确的 LICENSE、一套「clone 即可复现」的最小启动路径，才是开源的诚意所在。",[473,543,69],[],0,"2026-06-13T10:18:52.642Z","2026-06-13T10:20:36.621Z",{"_id":30,"name":31,"description":32,"cover":8,"created_at":33,"updated_at":33,"id":34},[555,556,557],{"_id":470,"name":471,"created_at":472,"updated_at":472,"id":473},{"_id":540,"name":541,"created_at":542,"updated_at":542,"id":543},{"_id":381,"name":382,"created_at":383,"updated_at":383,"id":69},[],{"_id":560,"title":50,"description":561,"cover":8,"created_date":47,"category_id":28,"tag_ids":562,"author_ids":563,"public":173,"status":173,"star":564,"like":550,"views":173,"created_at":565,"updated_at":566,"id":51,"category":567,"tags":568,"authors":573},"6a2d2e8a58b719b2465af192","把一个私有项目开源前，最怕的是密钥泄露。一次真实的「.env 里混进了云厂商 AccessKey」事故，复盘从扫描、历史清理到凭证轮换的完整处置，以及那条最反直觉的铁律。",[453,473,413,483],[],2,"2026-06-13T10:18:50.615Z","2026-06-13T10:20:36.641Z",{"_id":24,"name":25,"description":26,"cover":8,"created_at":27,"updated_at":27,"id":28},[569,570,571,572],{"_id":450,"name":451,"created_at":452,"updated_at":452,"id":453},{"_id":470,"name":471,"created_at":472,"updated_at":472,"id":473},{"_id":410,"name":411,"created_at":412,"updated_at":412,"id":413},{"_id":480,"name":481,"created_at":482,"updated_at":482,"id":483},[],{"_id":575,"title":46,"description":576,"cover":8,"created_date":47,"category_id":22,"tag_ids":577,"author_ids":578,"public":173,"status":173,"star":173,"like":550,"views":173,"created_at":579,"updated_at":580,"id":48,"category":581,"tags":582,"authors":587},"6a2d2e8658b719b2465af171","一个公开的 AI 对话接口，不限流就是给钱包开了个无底洞。我用三层互补的限流——请求层防刷、会话层防滥用、网关层兜底花费——把「被薅羊毛」的风险摁住。",[73,62,453,105],[],"2026-06-13T10:18:46.543Z","2026-06-13T10:20:36.684Z",{"_id":18,"name":19,"description":20,"cover":8,"created_at":21,"updated_at":21,"id":22},[583,584,585,586],{"_id":377,"name":378,"created_at":379,"updated_at":379,"id":73},{"_id":353,"name":354,"created_at":355,"updated_at":355,"id":62},{"_id":450,"name":451,"created_at":452,"updated_at":452,"id":453},{"_id":365,"name":366,"created_at":367,"updated_at":367,"id":105},[],{"_id":589,"title":56,"description":590,"cover":8,"created_date":57,"category_id":22,"tag_ids":591,"author_ids":592,"public":173,"status":173,"star":173,"like":550,"views":173,"created_at":593,"updated_at":594,"id":58,"category":595,"tags":596,"authors":601},"6a2d2e8658b719b2465af16c","同一套提示词，DeepSeek 和 Gemini 表现出截然不同的「性格」——一个推理欲望强、爱多调工具，一个极度克制、走最短路径。聊聊这两种风格在 RAG 场景下各自要怎么调。",[105,97,58,48],[],"2026-06-13T10:18:46.203Z","2026-06-13T10:20:36.725Z",{"_id":18,"name":19,"description":20,"cover":8,"created_at":21,"updated_at":21,"id":22},[597,598,599,600],{"_id":365,"name":366,"created_at":367,"updated_at":367,"id":105},{"_id":369,"name":370,"created_at":371,"updated_at":371,"id":97},{"_id":357,"name":358,"created_at":359,"updated_at":359,"id":58},{"_id":361,"name":362,"created_at":363,"updated_at":363,"id":48},[],{"_id":603,"title":64,"description":604,"cover":8,"created_date":61,"category_id":34,"tag_ids":605,"author_ids":606,"public":173,"status":173,"star":173,"like":550,"views":173,"created_at":607,"updated_at":608,"id":65,"category":609,"tags":610,"authors":615},"6a2d2e8c58b719b2465af1a1","个人项目没有 SRE 团队，但「两眼一抹黑」更危险——尤其当系统里有按量付费的 LLM。聊聊用极低成本给个人项目加上可观测性：托管组件自带的日志、健康检查、用量看板。",[463,62,533,458],[],"2026-06-13T10:18:52.158Z","2026-06-13T10:20:40.790Z",{"_id":30,"name":31,"description":32,"cover":8,"created_at":33,"updated_at":33,"id":34},[611,612,613,614],{"_id":460,"name":461,"created_at":462,"updated_at":462,"id":463},{"_id":353,"name":354,"created_at":355,"updated_at":355,"id":62},{"_id":530,"name":531,"created_at":532,"updated_at":532,"id":533},{"_id":455,"name":456,"created_at":457,"updated_at":457,"id":458},[],{"_id":617,"title":60,"description":618,"cover":8,"created_date":61,"category_id":22,"tag_ids":619,"author_ids":620,"public":173,"status":173,"star":564,"like":550,"views":173,"created_at":621,"updated_at":622,"id":62,"category":623,"tags":624,"authors":629},"6a2d2e8558b719b2465af167","后台点一下「AI 管理」就被登出。排查发现是 Worker 回源到国内服务器验 token，触发了 530。解法不是修网络，而是换架构——把 JWT 验签搬到边缘本地做，彻底不回源。",[161,453,62,448],[],"2026-06-13T10:18:45.994Z","2026-06-13T10:20:40.930Z",{"_id":18,"name":19,"description":20,"cover":8,"created_at":21,"updated_at":21,"id":22},[625,626,627,628],{"_id":285,"name":286,"created_at":287,"updated_at":287,"id":161},{"_id":450,"name":451,"created_at":452,"updated_at":452,"id":453},{"_id":353,"name":354,"created_at":355,"updated_at":355,"id":62},{"_id":445,"name":446,"created_at":447,"updated_at":447,"id":448},[]]