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