[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"categories":3,"tags":41,"articles-tag-5":368,"latest-articles":373},[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,46,50,54,58,63,68,73,78,83,88,93,98,103,108,113,118,123,128,133,138,143,148,153,158,163,168,173,178,183,188,193,198,203,208,213,218,223,228,233,238,243,248,253,258,263,268,273,278,283,288,293,298,303,308,313,318,323,328,333,338,343,348,353,358,363],{"_id":43,"id":16,"created_at":44,"updated_at":44,"name":45},"6a294c7a9fbda20eb7c62dea","2022-12-08T14:05:49.000Z","小记",{"_id":47,"name":48,"created_at":49,"updated_at":49,"id":28},"6a2d2e5258b719b2465af037","NestJS","2026-06-13T10:17:54.616Z",{"_id":51,"name":52,"created_at":53,"updated_at":53,"id":34},"6a2d2e5258b719b2465af03c","Fastify","2026-06-13T10:17:54.860Z",{"_id":55,"name":56,"created_at":57,"updated_at":57,"id":40},"6a2d2e5358b719b2465af03f","Node.js","2026-06-13T10:17:55.079Z",{"_id":59,"name":60,"created_at":61,"updated_at":61,"id":62},"6a2d2e5358b719b2465af042","TypeScript","2026-06-13T10:17:55.299Z",15,{"_id":64,"name":65,"created_at":66,"updated_at":66,"id":67},"6a2d2e5358b719b2465af045","MongoDB","2026-06-13T10:17:55.527Z",16,{"_id":69,"name":70,"created_at":71,"updated_at":71,"id":72},"6a2d2e5358b719b2465af048","Typegoose","2026-06-13T10:17:55.782Z",17,{"_id":74,"name":75,"created_at":76,"updated_at":76,"id":77},"6a2d2e5458b719b2465af04b","Redis","2026-06-13T10:17:56.097Z",18,{"_id":79,"name":80,"created_at":81,"updated_at":81,"id":82},"6a2d2e5458b719b2465af04e","JWT","2026-06-13T10:17:56.307Z",19,{"_id":84,"name":85,"created_at":86,"updated_at":86,"id":87},"6a2d2e5458b719b2465af051","缓存","2026-06-13T10:17:56.525Z",20,{"_id":89,"name":90,"created_at":91,"updated_at":91,"id":92},"6a2d2e5558b719b2465af054","事件驱动","2026-06-13T10:17:57.206Z",21,{"_id":94,"name":95,"created_at":96,"updated_at":96,"id":97},"6a2d2e5558b719b2465af057","对象存储","2026-06-13T10:17:57.520Z",22,{"_id":99,"name":100,"created_at":101,"updated_at":101,"id":102},"6a2d2e5558b719b2465af05a","S3","2026-06-13T10:17:57.741Z",23,{"_id":104,"name":105,"created_at":106,"updated_at":106,"id":107},"6a2d2e5558b719b2465af05d","Nuxt","2026-06-13T10:17:57.962Z",24,{"_id":109,"name":110,"created_at":111,"updated_at":111,"id":112},"6a2d2e5658b719b2465af060","Vue","2026-06-13T10:17:58.188Z",25,{"_id":114,"name":115,"created_at":116,"updated_at":116,"id":117},"6a2d2e5658b719b2465af063","SSR","2026-06-13T10:17:58.773Z",26,{"_id":119,"name":120,"created_at":121,"updated_at":121,"id":122},"6a2d2e5658b719b2465af066","React","2026-06-13T10:17:58.987Z",27,{"_id":124,"name":125,"created_at":126,"updated_at":126,"id":127},"6a2d2e5758b719b2465af069","Hooks","2026-06-13T10:17:59.708Z",28,{"_id":129,"name":130,"created_at":131,"updated_at":131,"id":132},"6a2d2e5758b719b2465af06c","Ant Design","2026-06-13T10:17:59.977Z",29,{"_id":134,"name":135,"created_at":136,"updated_at":136,"id":137},"6a2d2e5858b719b2465af06f","Vite","2026-06-13T10:18:00.564Z",30,{"_id":139,"name":140,"created_at":141,"updated_at":141,"id":142},"6a2d2e5858b719b2465af072","SSE","2026-06-13T10:18:00.795Z",31,{"_id":144,"name":145,"created_at":146,"updated_at":146,"id":147},"6a2d2e5958b719b2465af075","axios","2026-06-13T10:18:01.032Z",32,{"_id":149,"name":150,"created_at":151,"updated_at":151,"id":152},"6a2d2e5958b719b2465af078","CORS","2026-06-13T10:18:01.254Z",33,{"_id":154,"name":155,"created_at":156,"updated_at":156,"id":157},"6a2d2e5958b719b2465af07b","浏览器","2026-06-13T10:18:01.556Z",34,{"_id":159,"name":160,"created_at":161,"updated_at":161,"id":162},"6a2d2e5958b719b2465af07e","前端","2026-06-13T10:18:01.788Z",35,{"_id":164,"name":165,"created_at":166,"updated_at":166,"id":167},"6a2d2e5a58b719b2465af081","Cloudflare Workers","2026-06-13T10:18:02.088Z",36,{"_id":169,"name":170,"created_at":171,"updated_at":171,"id":172},"6a2d2e5a58b719b2465af084","RAG","2026-06-13T10:18:02.652Z",37,{"_id":174,"name":175,"created_at":176,"updated_at":176,"id":177},"6a2d2e5b58b719b2465af087","Agent","2026-06-13T10:18:03.286Z",38,{"_id":179,"name":180,"created_at":181,"updated_at":181,"id":182},"6a2d2e5c58b719b2465af08a","LLM","2026-06-13T10:18:04.531Z",39,{"_id":184,"name":185,"created_at":186,"updated_at":186,"id":187},"6a2d2e5d58b719b2465af08d","DeepSeek","2026-06-13T10:18:05.180Z",40,{"_id":189,"name":190,"created_at":191,"updated_at":191,"id":192},"6a2d2e5d58b719b2465af090","向量检索","2026-06-13T10:18:05.708Z",41,{"_id":194,"name":195,"created_at":196,"updated_at":196,"id":197},"6a2d2e5e58b719b2465af093","限流","2026-06-13T10:18:06.357Z",42,{"_id":199,"name":200,"created_at":201,"updated_at":201,"id":202},"6a2d2e5e58b719b2465af096","Docker","2026-06-13T10:18:06.690Z",43,{"_id":204,"name":205,"created_at":206,"updated_at":206,"id":207},"6a2d2e5e58b719b2465af099","容器","2026-06-13T10:18:06.970Z",44,{"_id":209,"name":210,"created_at":211,"updated_at":211,"id":212},"6a2d2e5f58b719b2465af09c","镜像加速","2026-06-13T10:18:07.955Z",45,{"_id":214,"name":215,"created_at":216,"updated_at":216,"id":217},"6a2d2e6058b719b2465af09f","阿里云","2026-06-13T10:18:08.227Z",46,{"_id":219,"name":220,"created_at":221,"updated_at":221,"id":222},"6a2d2e6058b719b2465af0a2","Docker Compose","2026-06-13T10:18:08.502Z",47,{"_id":224,"name":225,"created_at":226,"updated_at":226,"id":227},"6a2d2e6058b719b2465af0a5","Nginx","2026-06-13T10:18:08.726Z",48,{"_id":229,"name":230,"created_at":231,"updated_at":231,"id":232},"6a2d2e6058b719b2465af0a8","HTTP\u002F3","2026-06-13T10:18:08.965Z",49,{"_id":234,"name":235,"created_at":236,"updated_at":236,"id":237},"6a2d2e6158b719b2465af0ab","CI-CD","2026-06-13T10:18:09.908Z",50,{"_id":239,"name":240,"created_at":241,"updated_at":241,"id":242},"6a2d2e6258b719b2465af0ae","Jenkins","2026-06-13T10:18:10.270Z",51,{"_id":244,"name":245,"created_at":246,"updated_at":246,"id":247},"6a2d2e6258b719b2465af0b1","DevOps","2026-06-13T10:18:10.500Z",52,{"_id":249,"name":250,"created_at":251,"updated_at":251,"id":252},"6a2d2e6258b719b2465af0b4","PM2","2026-06-13T10:18:10.721Z",53,{"_id":254,"name":255,"created_at":256,"updated_at":256,"id":257},"6a2d2e6258b719b2465af0b7","进程管理","2026-06-13T10:18:10.987Z",54,{"_id":259,"name":260,"created_at":261,"updated_at":261,"id":262},"6a2d2e6358b719b2465af0ba","acme.sh","2026-06-13T10:18:11.890Z",55,{"_id":264,"name":265,"created_at":266,"updated_at":266,"id":267},"6a2d2e6458b719b2465af0bd","HTTPS","2026-06-13T10:18:12.106Z",56,{"_id":269,"name":270,"created_at":271,"updated_at":271,"id":272},"6a2d2e6458b719b2465af0c0","架构","2026-06-13T10:18:12.320Z",57,{"_id":274,"name":275,"created_at":276,"updated_at":276,"id":277},"6a2d2e6458b719b2465af0c3","安全","2026-06-13T10:18:12.570Z",58,{"_id":279,"name":280,"created_at":281,"updated_at":281,"id":282},"6a2d2e6458b719b2465af0c6","性能","2026-06-13T10:18:12.781Z",59,{"_id":284,"name":285,"created_at":286,"updated_at":286,"id":287},"6a2d2e6558b719b2465af0c9","可观测性","2026-06-13T10:18:13.781Z",60,{"_id":289,"name":290,"created_at":291,"updated_at":291,"id":292},"6a2d2e6658b719b2465af0cc","Webhook","2026-06-13T10:18:14.708Z",61,{"_id":294,"name":295,"created_at":296,"updated_at":296,"id":297},"6a2d2e6658b719b2465af0cf","开源","2026-06-13T10:18:14.932Z",62,{"_id":299,"name":300,"created_at":301,"updated_at":301,"id":302},"6a2d2e6758b719b2465af0d2","Vim","2026-06-13T10:18:15.542Z",63,{"_id":304,"name":305,"created_at":306,"updated_at":306,"id":307},"6a2d2e6858b719b2465af0d5","Git","2026-06-13T10:18:16.214Z",64,{"_id":309,"name":310,"created_at":311,"updated_at":311,"id":312},"6a2d2e6858b719b2465af0d8","版本控制","2026-06-13T10:18:16.793Z",65,{"_id":314,"name":315,"created_at":316,"updated_at":316,"id":317},"6a2d2e6958b719b2465af0db","Zsh","2026-06-13T10:18:17.068Z",66,{"_id":319,"name":320,"created_at":321,"updated_at":321,"id":322},"6a2d2e6a58b719b2465af0de","macOS","2026-06-13T10:18:18.034Z",67,{"_id":324,"name":325,"created_at":326,"updated_at":326,"id":327},"6a2d2e6a58b719b2465af0e1","HomeBrew","2026-06-13T10:18:18.396Z",68,{"_id":329,"name":330,"created_at":331,"updated_at":331,"id":332},"6a2d2e6d58b719b2465af0e4","命令行","2026-06-13T10:18:21.173Z",69,{"_id":334,"name":335,"created_at":336,"updated_at":336,"id":337},"6a2d2e6d58b719b2465af0e7","环境配置","2026-06-13T10:18:21.484Z",70,{"_id":339,"name":340,"created_at":341,"updated_at":341,"id":342},"6a2d2e6e58b719b2465af0fc","ffmpeg","2026-06-13T10:18:22.067Z",71,{"_id":344,"name":345,"created_at":346,"updated_at":346,"id":347},"6a2d2e6e58b719b2465af0ff","音频","2026-06-13T10:18:22.281Z",72,{"_id":349,"name":350,"created_at":351,"updated_at":351,"id":352},"6a2d2e6e58b719b2465af102","效率","2026-06-13T10:18:22.783Z",73,{"_id":354,"name":355,"created_at":356,"updated_at":356,"id":357},"6a2d2e8158b719b2465af137","AI","2026-06-13T10:18:41.401Z",74,{"_id":359,"name":360,"created_at":361,"updated_at":361,"id":362},"6a2d2e8758b719b2465af180","自动化","2026-06-13T10:18:47.983Z",75,{"_id":364,"name":365,"created_at":366,"updated_at":366,"id":367},"6a2d2e8c58b719b2465af1a6","文档","2026-06-13T10:18:52.417Z",76,{"data":369,"pagination":370},[],{"page":371,"page_size":28,"total":372,"total_page":372},1,0,[374,389,405,420,436,452],{"_id":375,"title":376,"description":377,"cover":8,"created_date":378,"category_id":34,"tag_ids":379,"author_ids":380,"public":371,"status":371,"star":371,"like":372,"views":371,"created_at":381,"updated_at":382,"id":227,"category":383,"tags":384,"authors":388},"6a2d2e8c58b719b2465af1a9","为开源准备一个项目：README、LICENSE 与最小可复现","把私有项目开源，写完代码只是开始。一份让人能跑起来的 README、一个明确的 LICENSE、一套「clone 即可复现」的最小启动路径，才是开源的诚意所在。","2026-06-13T00:00:00.000Z",[297,367,202],[],"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},[385,386,387],{"_id":294,"name":295,"created_at":296,"updated_at":296,"id":297},{"_id":364,"name":365,"created_at":366,"updated_at":366,"id":367},{"_id":199,"name":200,"created_at":201,"updated_at":201,"id":202},[],{"_id":390,"title":391,"description":392,"cover":8,"created_date":378,"category_id":28,"tag_ids":393,"author_ids":394,"public":371,"status":371,"star":395,"like":372,"views":371,"created_at":396,"updated_at":397,"id":207,"category":398,"tags":399,"authors":404},"6a2d2e8a58b719b2465af192","开源前的密钥治理：gitleaks + 历史清理 + 凭证轮换","把一个私有项目开源前，最怕的是密钥泄露。一次真实的「.env 里混进了云厂商 AccessKey」事故，复盘从扫描、历史清理到凭证轮换的完整处置，以及那条最反直觉的铁律。",[277,297,237,307],[],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},[400,401,402,403],{"_id":274,"name":275,"created_at":276,"updated_at":276,"id":277},{"_id":294,"name":295,"created_at":296,"updated_at":296,"id":297},{"_id":234,"name":235,"created_at":236,"updated_at":236,"id":237},{"_id":304,"name":305,"created_at":306,"updated_at":306,"id":307},[],{"_id":406,"title":407,"description":408,"cover":8,"created_date":378,"category_id":22,"tag_ids":409,"author_ids":410,"public":371,"status":371,"star":371,"like":372,"views":371,"created_at":411,"updated_at":412,"id":177,"category":413,"tags":414,"authors":419},"6a2d2e8658b719b2465af171","给 AI 对话做限流：Workers \u002F 会话 \u002F AI Gateway 三层防护","一个公开的 AI 对话接口，不限流就是给钱包开了个无底洞。我用三层互补的限流——请求层防刷、会话层防滥用、网关层兜底花费——把「被薅羊毛」的风险摁住。",[197,167,277,182],[],"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},[415,416,417,418],{"_id":194,"name":195,"created_at":196,"updated_at":196,"id":197},{"_id":164,"name":165,"created_at":166,"updated_at":166,"id":167},{"_id":274,"name":275,"created_at":276,"updated_at":276,"id":277},{"_id":179,"name":180,"created_at":181,"updated_at":181,"id":182},[],{"_id":421,"title":422,"description":423,"cover":8,"created_date":424,"category_id":22,"tag_ids":425,"author_ids":426,"public":371,"status":371,"star":371,"like":372,"views":371,"created_at":427,"updated_at":428,"id":172,"category":429,"tags":430,"authors":435},"6a2d2e8658b719b2465af16c","DeepSeek vs Gemini：RAG 场景的工具调用风格调优","同一套提示词，DeepSeek 和 Gemini 表现出截然不同的「性格」——一个推理欲望强、爱多调工具，一个极度克制、走最短路径。聊聊这两种风格在 RAG 场景下各自要怎么调。","2026-06-12T00:00:00.000Z",[182,187,172,177],[],"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},[431,432,433,434],{"_id":179,"name":180,"created_at":181,"updated_at":181,"id":182},{"_id":184,"name":185,"created_at":186,"updated_at":186,"id":187},{"_id":169,"name":170,"created_at":171,"updated_at":171,"id":172},{"_id":174,"name":175,"created_at":176,"updated_at":176,"id":177},[],{"_id":437,"title":438,"description":439,"cover":8,"created_date":440,"category_id":34,"tag_ids":441,"author_ids":442,"public":371,"status":371,"star":371,"like":372,"views":371,"created_at":443,"updated_at":444,"id":222,"category":445,"tags":446,"authors":451},"6a2d2e8c58b719b2465af1a1","个人项目也要做可观测性：AI Gateway 日志与用量","个人项目没有 SRE 团队，但「两眼一抹黑」更危险——尤其当系统里有按量付费的 LLM。聊聊用极低成本给个人项目加上可观测性：托管组件自带的日志、健康检查、用量看板。","2026-06-11T00:00:00.000Z",[287,167,357,282],[],"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},[447,448,449,450],{"_id":284,"name":285,"created_at":286,"updated_at":286,"id":287},{"_id":164,"name":165,"created_at":166,"updated_at":166,"id":167},{"_id":354,"name":355,"created_at":356,"updated_at":356,"id":357},{"_id":279,"name":280,"created_at":281,"updated_at":281,"id":282},[],{"_id":453,"title":454,"description":455,"cover":8,"created_date":440,"category_id":22,"tag_ids":456,"author_ids":457,"public":371,"status":371,"star":395,"like":372,"views":371,"created_at":458,"updated_at":459,"id":167,"category":460,"tags":461,"authors":466},"6a2d2e8558b719b2465af167","边缘鉴权：在 Worker 里本地验签 JWT，告别跨境回源","后台点一下「AI 管理」就被登出。排查发现是 Worker 回源到国内服务器验 token，触发了 530。解法不是修网络，而是换架构——把 JWT 验签搬到边缘本地做，彻底不回源。",[82,277,167,272],[],"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},[462,463,464,465],{"_id":79,"name":80,"created_at":81,"updated_at":81,"id":82},{"_id":274,"name":275,"created_at":276,"updated_at":276,"id":277},{"_id":164,"name":165,"created_at":166,"updated_at":166,"id":167},{"_id":269,"name":270,"created_at":271,"updated_at":271,"id":272},[]]