[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"categories":3,"songs":41,"article-58":1193,"comments-58":1241},[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,51,58,65,71,77,83,89,95,101,107,113,119,125,131,138,145,152,159,166,172,179,186,193,200,207,214,220,227,234,241,248,255,262,269,276,283,290,297,304,311,318,325,332,339,346,353,360,367,374,381,388,395,402,409,416,423,429,436,443,450,456,463,470,477,484,490,497,504,510,516,522,528,535,542,549,556,563,570,577,584,591,597,604,611,618,625,632,639,646,653,660,666,672,678,684,690,697,703,710,717,724,731,737,744,751,758,764,771,777,783,789,796,803,810,817,824,831,838,845,852,859,866,873,880,887,894,901,908,915,922,929,936,943,950,957,964,971,977,983,990,997,1004,1011,1018,1025,1032,1039,1045,1052,1058,1065,1072,1079,1086,1093,1100,1106,1112,1119,1126,1132,1139,1146,1153,1160,1167,1174,1180,1187],{"_id":43,"name":44,"artist":45,"url":46,"cover":47,"sort":48,"created_at":49,"updated_at":49,"id":50},"6a3141fa73c9eb8a9b458b0d","Star Unkind(Lanfranchi & Farina Radio).mp3","2Someone","\u002Fmusic\u002F2Someone%20-%20Star%20Unkind%28Lanfranchi%20%26%20Farina%20Radio%29.mp3","\u002Fblog\u002Fasdf-avatar.jpg",0,"2026-06-16T12:30:50.509Z",1,{"_id":52,"name":53,"artist":54,"url":55,"cover":47,"sort":50,"created_at":56,"updated_at":56,"id":57},"6a3141fa73c9eb8a9b458b1d","Right Now (Na Na Na).mp3","Akon","\u002Fmusic\u002FAkon%20-%20Right%20Now%20%28Na%20Na%20Na%29.mp3","2026-06-16T12:30:50.587Z",2,{"_id":59,"name":60,"artist":61,"url":62,"cover":47,"sort":57,"created_at":63,"updated_at":63,"id":64},"6a3141fa73c9eb8a9b458b22","All Falls Down.mp3","Alan Walker","\u002Fmusic\u002FAlan%20Walker%20-%20All%20Falls%20Down.mp3","2026-06-16T12:30:50.608Z",3,{"_id":66,"name":67,"artist":61,"url":68,"cover":47,"sort":64,"created_at":69,"updated_at":69,"id":70},"6a3141fa73c9eb8a9b458b25","Alone, Pt. II.mp3","\u002Fmusic\u002FAlan%20Walker%20-%20Alone%2C%20Pt.%20II.mp3","2026-06-16T12:30:50.637Z",4,{"_id":72,"name":73,"artist":61,"url":74,"cover":47,"sort":70,"created_at":75,"updated_at":75,"id":76},"6a3141fa73c9eb8a9b458b28","Darkside.mp3","\u002Fmusic\u002FAlan%20Walker%20-%20Darkside.mp3","2026-06-16T12:30:50.652Z",5,{"_id":78,"name":79,"artist":61,"url":80,"cover":47,"sort":76,"created_at":81,"updated_at":81,"id":82},"6a3141fa73c9eb8a9b458b2b","Lost Control.mp3","\u002Fmusic\u002FAlan%20Walker%20-%20Lost%20Control.mp3","2026-06-16T12:30:50.668Z",6,{"_id":84,"name":85,"artist":61,"url":86,"cover":47,"sort":82,"created_at":87,"updated_at":87,"id":88},"6a3141fa73c9eb8a9b458b2e","On My Way.mp3","\u002Fmusic\u002FAlan%20Walker%20-%20On%20My%20Way.mp3","2026-06-16T12:30:50.676Z",7,{"_id":90,"name":91,"artist":61,"url":92,"cover":47,"sort":88,"created_at":93,"updated_at":93,"id":94},"6a3141fa73c9eb8a9b458b31","The Spectre.mp3","\u002Fmusic\u002FAlan%20Walker%20-%20The%20Spectre.mp3","2026-06-16T12:30:50.684Z",8,{"_id":96,"name":97,"artist":98,"url":99,"cover":47,"sort":94,"created_at":100,"updated_at":100,"id":10},"6a3141fa73c9eb8a9b458b34","Scars To Your Beautiful.mp3","Alessia Cara","\u002Fmusic\u002FAlessia%20Cara%20-%20Scars%20To%20Your%20Beautiful.mp3","2026-06-16T12:30:50.693Z",{"_id":102,"name":103,"artist":104,"url":105,"cover":47,"sort":10,"created_at":106,"updated_at":106,"id":16},"6a3141fa73c9eb8a9b458b37","Hear Me Now.mp3","Alok","\u002Fmusic\u002FAlok%20-%20Hear%20Me%20Now.mp3","2026-06-16T12:30:50.702Z",{"_id":108,"name":109,"artist":110,"url":111,"cover":47,"sort":16,"created_at":112,"updated_at":112,"id":22},"6a3141fa73c9eb8a9b458b3a","Meant To Be.mp3","Arc North","\u002Fmusic\u002FArc%20North%20-%20Meant%20To%20Be.mp3","2026-06-16T12:30:50.709Z",{"_id":114,"name":115,"artist":116,"url":117,"cover":47,"sort":22,"created_at":118,"updated_at":118,"id":28},"6a3141fa73c9eb8a9b458b3d","Breath and Life.mp3","Audiomachine","\u002Fmusic\u002FAudiomachine%20-%20Breath%20and%20Life.mp3","2026-06-16T12:30:50.715Z",{"_id":120,"name":121,"artist":122,"url":123,"cover":47,"sort":28,"created_at":124,"updated_at":124,"id":34},"6a3141fa73c9eb8a9b458b40","Lonely Dance.mp3","Augus","\u002Fmusic\u002FAugus%20-%20Lonely%20Dance.mp3","2026-06-16T12:30:50.722Z",{"_id":126,"name":127,"artist":128,"url":129,"cover":47,"sort":34,"created_at":130,"updated_at":130,"id":40},"6a3141fa73c9eb8a9b458b43","My Head & My Heart.mp3","Ava Max","\u002Fmusic\u002FAva%20Max%20-%20My%20Head%20%26%20My%20Heart.mp3","2026-06-16T12:30:50.728Z",{"_id":132,"name":133,"artist":134,"url":135,"cover":47,"sort":40,"created_at":136,"updated_at":136,"id":137},"6a3141fa73c9eb8a9b458b46","DDU-DU DDU-DU.mp3","BLACKPINK","\u002Fmusic\u002FBLACKPINK%20-%20DDU-DU%20DDU-DU.mp3","2026-06-16T12:30:50.735Z",15,{"_id":139,"name":140,"artist":141,"url":142,"cover":47,"sort":137,"created_at":143,"updated_at":143,"id":144},"6a3141fa73c9eb8a9b458b49","Apologize.mp3","Besomorph","\u002Fmusic\u002FBesomorph%20-%20Apologize.mp3","2026-06-16T12:30:50.741Z",16,{"_id":146,"name":147,"artist":148,"url":149,"cover":47,"sort":144,"created_at":150,"updated_at":150,"id":151},"6a3141fa73c9eb8a9b458b4c","Dream With You.mp3","Blvmenkind","\u002Fmusic\u002FBlvmenkind%20-%20Dream%20With%20You.mp3","2026-06-16T12:30:50.748Z",17,{"_id":153,"name":154,"artist":155,"url":156,"cover":47,"sort":151,"created_at":157,"updated_at":157,"id":158},"6a3141fa73c9eb8a9b458b4f","Wrap Me In Plastic.mp3","CHROMANCE","\u002Fmusic\u002FCHROMANCE%20-%20Wrap%20Me%20In%20Plastic.mp3","2026-06-16T12:30:50.754Z",18,{"_id":160,"name":161,"artist":162,"url":163,"cover":47,"sort":158,"created_at":164,"updated_at":164,"id":165},"6a3141fa73c9eb8a9b458b52","Outside.mp3","Calvin Harris","\u002Fmusic\u002FCalvin%20Harris%20-%20Outside.mp3","2026-06-16T12:30:50.760Z",19,{"_id":167,"name":168,"artist":162,"url":169,"cover":47,"sort":165,"created_at":170,"updated_at":170,"id":171},"6a3141fa73c9eb8a9b458b55","This Is What You Came For.mp3","\u002Fmusic\u002FCalvin%20Harris%20-%20This%20Is%20What%20You%20Came%20For.mp3","2026-06-16T12:30:50.766Z",20,{"_id":173,"name":174,"artist":175,"url":176,"cover":47,"sort":171,"created_at":177,"updated_at":177,"id":178},"6a3141fa73c9eb8a9b458b58","How To Love.mp3","Cash Cash","\u002Fmusic\u002FCash%20Cash%20-%20How%20To%20Love.mp3","2026-06-16T12:30:50.774Z",21,{"_id":180,"name":181,"artist":182,"url":183,"cover":47,"sort":178,"created_at":184,"updated_at":184,"id":185},"6a3141fa73c9eb8a9b458b5b","We Don't Talk Anymore.mp3","Charlie Puth","\u002Fmusic\u002FCharlie%20Puth%20-%20We%20Don%27t%20Talk%20Anymore.mp3","2026-06-16T12:30:50.785Z",22,{"_id":187,"name":188,"artist":189,"url":190,"cover":47,"sort":185,"created_at":191,"updated_at":191,"id":192},"6a3141fa73c9eb8a9b458b5e","Try.mp3","Colbie Caillat","\u002Fmusic\u002FColbie%20Caillat%20-%20Try.mp3","2026-06-16T12:30:50.792Z",23,{"_id":194,"name":195,"artist":196,"url":197,"cover":47,"sort":192,"created_at":198,"updated_at":198,"id":199},"6a3141fa73c9eb8a9b458b61","BINGBIAN病变.mp3","Cubi","\u002Fmusic\u002FCubi%20-%20BINGBIAN%E7%97%85%E5%8F%98.mp3","2026-06-16T12:30:50.798Z",24,{"_id":201,"name":202,"artist":203,"url":204,"cover":47,"sort":199,"created_at":205,"updated_at":205,"id":206},"6a3141fa73c9eb8a9b458b64","You Know I'll Go Get.mp3","DJ Haning","\u002Fmusic\u002FDJ%20Haning%20-%20You%20Know%20I%27ll%20Go%20Get.mp3","2026-06-16T12:30:50.805Z",25,{"_id":208,"name":209,"artist":210,"url":211,"cover":47,"sort":206,"created_at":212,"updated_at":212,"id":213},"6a3141fa73c9eb8a9b458b67","Let Me Love You.mp3","DJ Snake","\u002Fmusic\u002FDJ%20Snake%20-%20Let%20Me%20Love%20You.mp3","2026-06-16T12:30:50.812Z",26,{"_id":215,"name":168,"artist":216,"url":217,"cover":47,"sort":213,"created_at":218,"updated_at":218,"id":219},"6a3141fa73c9eb8a9b458b6a","Dame Dame","\u002Fmusic\u002FDame%20Dame%20-%20This%20Is%20What%20You%20Came%20For.mp3","2026-06-16T12:30:50.818Z",27,{"_id":221,"name":222,"artist":223,"url":224,"cover":47,"sort":219,"created_at":225,"updated_at":225,"id":226},"6a3141fa73c9eb8a9b458b6d","Coming Home.mp3","Dash Berlin","\u002Fmusic\u002FDash%20Berlin%20-%20Coming%20Home.mp3","2026-06-16T12:30:50.824Z",28,{"_id":228,"name":229,"artist":230,"url":231,"cover":47,"sort":226,"created_at":232,"updated_at":232,"id":233},"6a3141fa73c9eb8a9b458b70","Flames.mp3","David Guetta","\u002Fmusic\u002FDavid%20Guetta%20-%20Flames.mp3","2026-06-16T12:30:50.831Z",29,{"_id":235,"name":236,"artist":237,"url":238,"cover":47,"sort":233,"created_at":239,"updated_at":239,"id":240},"6a3141fa73c9eb8a9b458b73","Betty Boop.mp3","DeeJay Ghost","\u002Fmusic\u002FDeeJay%20Ghost%20-%20Betty%20Boop.mp3","2026-06-16T12:30:50.839Z",30,{"_id":242,"name":243,"artist":244,"url":245,"cover":47,"sort":240,"created_at":246,"updated_at":246,"id":247},"6a3141fa73c9eb8a9b458b76","World.mp3","Denioo","\u002Fmusic\u002FDenioo%20-%20World.mp3","2026-06-16T12:30:50.846Z",31,{"_id":249,"name":250,"artist":251,"url":252,"cover":47,"sort":247,"created_at":253,"updated_at":253,"id":254},"6a3141fa73c9eb8a9b458b79","祝大家快乐.mp3","Dj海洋","\u002Fmusic\u002FDj%E6%B5%B7%E6%B4%8B%20-%20%E7%A5%9D%E5%A4%A7%E5%AE%B6%E5%BF%AB%E4%B9%90.mp3","2026-06-16T12:30:50.852Z",32,{"_id":256,"name":257,"artist":258,"url":259,"cover":47,"sort":254,"created_at":260,"updated_at":260,"id":261},"6a3141fa73c9eb8a9b458b7c","지나갈 테니 (Been Through).mp3","EXO","\u002Fmusic\u002FEXO%20-%20%E1%84%8C%E1%85%B5%E1%84%82%E1%85%A1%E1%84%80%E1%85%A1%E1%86%AF%20%E1%84%90%E1%85%A6%E1%84%82%E1%85%B5%20%28Been%20Through%29.mp3","2026-06-16T12:30:50.859Z",33,{"_id":263,"name":264,"artist":265,"url":266,"cover":47,"sort":261,"created_at":267,"updated_at":267,"id":268},"6a3141fa73c9eb8a9b458b7f","Love Me Like You Do.mp3","Ellie Goulding","\u002Fmusic\u002FEllie%20Goulding%20-%20Love%20Me%20Like%20You%20Do.mp3","2026-06-16T12:30:50.866Z",34,{"_id":270,"name":271,"artist":272,"url":273,"cover":47,"sort":268,"created_at":274,"updated_at":274,"id":275},"6a3141fa73c9eb8a9b458b82","Umbrella (3).mp3","Ember Island","\u002Fmusic\u002FEmber%20Island%20-%20Umbrella%20%283%29.mp3","2026-06-16T12:30:50.872Z",35,{"_id":277,"name":278,"artist":279,"url":280,"cover":47,"sort":275,"created_at":281,"updated_at":281,"id":282},"6a3141fa73c9eb8a9b458b85","Lost & Found.mp3","Embody","\u002Fmusic\u002FEmbody%20-%20Lost%20%26%20Found.mp3","2026-06-16T12:30:50.878Z",36,{"_id":284,"name":285,"artist":286,"url":287,"cover":47,"sort":282,"created_at":288,"updated_at":288,"id":289},"6a3141fa73c9eb8a9b458b88","The Monster.mp3","Eminem","\u002Fmusic\u002FEminem%20-%20The%20Monster.mp3","2026-06-16T12:30:50.885Z",37,{"_id":291,"name":292,"artist":293,"url":294,"cover":47,"sort":289,"created_at":295,"updated_at":295,"id":296},"6a3141fa73c9eb8a9b458b8b","Burak Yeter.mp3","Fallinf","\u002Fmusic\u002FFallinf%20-%20Burak%20Yeter.mp3","2026-06-16T12:30:50.892Z",38,{"_id":298,"name":299,"artist":300,"url":301,"cover":47,"sort":296,"created_at":302,"updated_at":302,"id":303},"6a3141fa73c9eb8a9b458b8e","Worth It.mp3","Fifth Harmony","\u002Fmusic\u002FFifth%20Harmony%20-%20Worth%20It.mp3","2026-06-16T12:30:50.898Z",39,{"_id":305,"name":306,"artist":307,"url":308,"cover":47,"sort":303,"created_at":309,"updated_at":309,"id":310},"6a3141fa73c9eb8a9b458b91","Jealousy(Dance Radio).mp3","French Kiss","\u002Fmusic\u002FFrench%20Kiss%20-%20Jealousy%28Dance%20Radio%29.mp3","2026-06-16T12:30:50.905Z",40,{"_id":312,"name":313,"artist":314,"url":315,"cover":47,"sort":310,"created_at":316,"updated_at":316,"id":317},"6a3141fa73c9eb8a9b458b94","1,2,3,4(One, Two, Three, Four).mp3","Funbeat","\u002Fmusic\u002FFunbeat%20-%201%2C2%2C3%2C4%28One%2C%20Two%2C%20Three%2C%20Four%29.mp3","2026-06-16T12:30:50.912Z",41,{"_id":319,"name":320,"artist":321,"url":322,"cover":47,"sort":317,"created_at":323,"updated_at":323,"id":324},"6a3141fa73c9eb8a9b458b97","Somebody That I Used to Know.mp3","Gotye","\u002Fmusic\u002FGotye%20-%20Somebody%20That%20I%20Used%20to%20Know.mp3","2026-06-16T12:30:50.918Z",42,{"_id":326,"name":327,"artist":328,"url":329,"cover":47,"sort":324,"created_at":330,"updated_at":330,"id":331},"6a3141fa73c9eb8a9b458b9a","Bulletproof.mp3","Griffin Oskar","\u002Fmusic\u002FGriffin%20Oskar%20-%20Bulletproof.mp3","2026-06-16T12:30:50.924Z",43,{"_id":333,"name":334,"artist":335,"url":336,"cover":47,"sort":331,"created_at":337,"updated_at":337,"id":338},"6a3141fa73c9eb8a9b458b9d","Sold Out.mp3","Hawk Nelson","\u002Fmusic\u002FHawk%20Nelson%20-%20Sold%20Out.mp3","2026-06-16T12:30:50.930Z",44,{"_id":340,"name":341,"artist":342,"url":343,"cover":47,"sort":338,"created_at":344,"updated_at":344,"id":345},"6a3141fa73c9eb8a9b458ba0","Sound of Walking Away.mp3","ILLENIUM","\u002Fmusic\u002FILLENIUM%20-%20Sound%20of%20Walking%20Away.mp3","2026-06-16T12:30:50.937Z",45,{"_id":347,"name":348,"artist":349,"url":350,"cover":47,"sort":345,"created_at":351,"updated_at":351,"id":352},"6a3141fa73c9eb8a9b458ba3","Shots.mp3","Imagine Dragons","\u002Fmusic\u002FImagine%20Dragons%20-%20Shots.mp3","2026-06-16T12:30:50.944Z",46,{"_id":354,"name":355,"artist":356,"url":357,"cover":47,"sort":352,"created_at":358,"updated_at":358,"id":359},"6a3141fa73c9eb8a9b458ba6","Power(In Your Soul).mp3","Interupt","\u002Fmusic\u002FInterupt%20-%20Power%28In%20Your%20Soul%29.mp3","2026-06-16T12:30:50.952Z",47,{"_id":361,"name":362,"artist":363,"url":364,"cover":47,"sort":359,"created_at":365,"updated_at":365,"id":366},"6a3141fa73c9eb8a9b458ba9","Mi Gente.mp3","J. Balvin","\u002Fmusic\u002FJ.%20Balvin%20-%20Mi%20Gente.mp3","2026-06-16T12:30:50.959Z",48,{"_id":368,"name":369,"artist":370,"url":371,"cover":47,"sort":366,"created_at":372,"updated_at":372,"id":373},"6a3141fa73c9eb8a9b458bac","Infinity.mp3","Jaymes Young","\u002Fmusic\u002FJaymes%20Young%20-%20Infinity.mp3","2026-06-16T12:30:50.964Z",49,{"_id":375,"name":376,"artist":377,"url":378,"cover":47,"sort":373,"created_at":379,"updated_at":379,"id":380},"6a3141fa73c9eb8a9b458baf","Blame.mp3","John Newman","\u002Fmusic\u002FJohn%20Newman%20-%20Blame.mp3","2026-06-16T12:30:50.971Z",50,{"_id":382,"name":383,"artist":384,"url":385,"cover":47,"sort":380,"created_at":386,"updated_at":386,"id":387},"6a3141fa73c9eb8a9b458bb2","As Long As You Love Me.mp3","Justin Bieber","\u002Fmusic\u002FJustin%20Bieber%20-%20As%20Long%20As%20You%20Love%20Me.mp3","2026-06-16T12:30:50.977Z",51,{"_id":389,"name":390,"artist":391,"url":392,"cover":47,"sort":387,"created_at":393,"updated_at":393,"id":394},"6a3141fa73c9eb8a9b458bb5","Play.mp3","K-391","\u002Fmusic\u002FK-391%20-%20Play.mp3","2026-06-16T12:30:50.983Z",52,{"_id":396,"name":397,"artist":398,"url":399,"cover":47,"sort":394,"created_at":400,"updated_at":400,"id":401},"6a3141fa73c9eb8a9b458bb8","Daydreamer(Radio Edit).mp3","KarlK","\u002Fmusic\u002FKarlK%20-%20Daydreamer%28Radio%20Edit%29.mp3","2026-06-16T12:30:50.989Z",53,{"_id":403,"name":404,"artist":405,"url":406,"cover":47,"sort":401,"created_at":407,"updated_at":407,"id":408},"6a3141fa73c9eb8a9b458bbb","Monsters.mp3","Katie Sky","\u002Fmusic\u002FKatie%20Sky%20-%20Monsters.mp3","2026-06-16T12:30:50.995Z",54,{"_id":410,"name":411,"artist":412,"url":413,"cover":47,"sort":408,"created_at":414,"updated_at":414,"id":415},"6a3141fb73c9eb8a9b458bbe","Stronger (What Doesn't Kill You).mp3","Kelly Clarkson","\u002Fmusic\u002FKelly%20Clarkson%20-%20Stronger%20%28What%20Doesn%27t%20Kill%20You%29.mp3","2026-06-16T12:30:51.002Z",55,{"_id":417,"name":418,"artist":419,"url":420,"cover":47,"sort":415,"created_at":421,"updated_at":421,"id":422},"6a3141fb73c9eb8a9b458bc1","Forever Yours.mp3","Kygo","\u002Fmusic\u002FKygo%20-%20Forever%20Yours.mp3","2026-06-16T12:30:51.019Z",56,{"_id":424,"name":425,"artist":419,"url":426,"cover":47,"sort":422,"created_at":427,"updated_at":427,"id":428},"6a3141fb73c9eb8a9b458bc4","It Ain't Me.mp3","\u002Fmusic\u002FKygo%20-%20It%20Ain%27t%20Me.mp3","2026-06-16T12:30:51.025Z",57,{"_id":430,"name":431,"artist":432,"url":433,"cover":47,"sort":428,"created_at":434,"updated_at":434,"id":435},"6a3141fb73c9eb8a9b458bc7","The Cure.mp3","Lady Gaga","\u002Fmusic\u002FLady%20Gaga%20-%20The%20Cure.mp3","2026-06-16T12:30:51.031Z",58,{"_id":437,"name":438,"artist":439,"url":440,"cover":47,"sort":435,"created_at":441,"updated_at":441,"id":442},"6a3141fb73c9eb8a9b458bca","The Show.mp3","Lenka","\u002Fmusic\u002FLenka%20-%20The%20Show.mp3","2026-06-16T12:30:51.038Z",59,{"_id":444,"name":445,"artist":446,"url":447,"cover":47,"sort":442,"created_at":448,"updated_at":448,"id":449},"6a3141fb73c9eb8a9b458bcd","Are You With Me(ARNXT041).mp3","Lost Frequencies","\u002Fmusic\u002FLost%20Frequencies%20-%20Are%20You%20With%20Me%28ARNXT041%29.mp3","2026-06-16T12:30:51.045Z",60,{"_id":451,"name":452,"artist":446,"url":453,"cover":47,"sort":449,"created_at":454,"updated_at":454,"id":455},"6a3141fb73c9eb8a9b458bd0","Reality.mp3","\u002Fmusic\u002FLost%20Frequencies%20-%20Reality.mp3","2026-06-16T12:30:51.054Z",61,{"_id":457,"name":458,"artist":459,"url":460,"cover":47,"sort":455,"created_at":461,"updated_at":461,"id":462},"6a3141fb73c9eb8a9b458bd3","Slow Down.mp3","Madnap","\u002Fmusic\u002FMadnap%20-%20Slow%20Down.mp3","2026-06-16T12:30:51.062Z",62,{"_id":464,"name":465,"artist":466,"url":467,"cover":47,"sort":462,"created_at":468,"updated_at":468,"id":469},"6a3141fb73c9eb8a9b458bd6","Lean On.mp3","Major Lazer","\u002Fmusic\u002FMajor%20Lazer%20-%20Lean%20On.mp3","2026-06-16T12:30:51.068Z",63,{"_id":471,"name":472,"artist":473,"url":474,"cover":47,"sort":469,"created_at":475,"updated_at":475,"id":476},"6a3141fb73c9eb8a9b458bd9","Superstar.mp3","Mandee","\u002Fmusic\u002FMandee%20-%20Superstar.mp3","2026-06-16T12:30:51.079Z",64,{"_id":478,"name":479,"artist":480,"url":481,"cover":47,"sort":476,"created_at":482,"updated_at":482,"id":483},"6a3141fb73c9eb8a9b458bdc","Animals.mp3","Maroon 5","\u002Fmusic\u002FMaroon%205%20-%20Animals.mp3","2026-06-16T12:30:51.085Z",65,{"_id":485,"name":486,"artist":480,"url":487,"cover":47,"sort":483,"created_at":488,"updated_at":488,"id":489},"6a3141fb73c9eb8a9b458bdf","Maps.mp3","\u002Fmusic\u002FMaroon%205%20-%20Maps.mp3","2026-06-16T12:30:51.097Z",66,{"_id":491,"name":492,"artist":493,"url":494,"cover":47,"sort":489,"created_at":495,"updated_at":495,"id":496},"6a3141fb73c9eb8a9b458be2","FRIENDS.mp3","Marshmello","\u002Fmusic\u002FMarshmello%20-%20FRIENDS.mp3","2026-06-16T12:30:51.110Z",67,{"_id":498,"name":499,"artist":500,"url":501,"cover":47,"sort":496,"created_at":502,"updated_at":502,"id":503},"6a3141fb73c9eb8a9b458be5","Drown(feat. Clinton Kane).mp3","Martin Garrix","\u002Fmusic\u002FMartin%20Garrix%20-%20Drown%28feat.%20Clinton%20Kane%29.mp3","2026-06-16T12:30:51.136Z",68,{"_id":505,"name":506,"artist":500,"url":507,"cover":47,"sort":503,"created_at":508,"updated_at":508,"id":509},"6a3141fb73c9eb8a9b458be8","High On Life.mp3","\u002Fmusic\u002FMartin%20Garrix%20-%20High%20On%20Life.mp3","2026-06-16T12:30:51.156Z",69,{"_id":511,"name":512,"artist":500,"url":513,"cover":47,"sort":509,"created_at":514,"updated_at":514,"id":515},"6a3141fb73c9eb8a9b458beb","Hold On(feat. Michel Zitron).mp3","\u002Fmusic\u002FMartin%20Garrix%20-%20Hold%20On%28feat.%20Michel%20Zitron%29.mp3","2026-06-16T12:30:51.168Z",70,{"_id":517,"name":518,"artist":500,"url":519,"cover":47,"sort":515,"created_at":520,"updated_at":520,"id":521},"6a3141fb73c9eb8a9b458bee","So Far Away.mp3","\u002Fmusic\u002FMartin%20Garrix%20-%20So%20Far%20Away.mp3","2026-06-16T12:30:51.178Z",71,{"_id":523,"name":524,"artist":500,"url":525,"cover":47,"sort":521,"created_at":526,"updated_at":526,"id":527},"6a3141fb73c9eb8a9b458bf1","There For You.mp3","\u002Fmusic\u002FMartin%20Garrix%20-%20There%20For%20You.mp3","2026-06-16T12:30:51.188Z",72,{"_id":529,"name":530,"artist":531,"url":532,"cover":47,"sort":527,"created_at":533,"updated_at":533,"id":534},"6a3141fb73c9eb8a9b458bf4","Solo Dance.mp3","Martin Jensen","\u002Fmusic\u002FMartin%20Jensen%20-%20Solo%20Dance.mp3","2026-06-16T12:30:51.200Z",73,{"_id":536,"name":537,"artist":538,"url":539,"cover":47,"sort":534,"created_at":540,"updated_at":540,"id":541},"6a3141fb73c9eb8a9b458bf7","Once upon a Time.mp3","Max Oazo","\u002Fmusic\u002FMax%20Oazo%20-%20Once%20upon%20a%20Time.mp3","2026-06-16T12:30:51.213Z",74,{"_id":543,"name":544,"artist":545,"url":546,"cover":47,"sort":541,"created_at":547,"updated_at":547,"id":548},"6a3141fb73c9eb8a9b458bfa","Play Date.mp3","Melanie Martinez","\u002Fmusic\u002FMelanie%20Martinez%20-%20Play%20Date.mp3","2026-06-16T12:30:51.223Z",75,{"_id":550,"name":551,"artist":552,"url":553,"cover":47,"sort":548,"created_at":554,"updated_at":554,"id":555},"6a3141fb73c9eb8a9b458bfd","Tu vivi nell'aria.mp3","Miani","\u002Fmusic\u002FMiani%20-%20Tu%20vivi%20nell%27aria.mp3","2026-06-16T12:30:51.242Z",76,{"_id":557,"name":558,"artist":559,"url":560,"cover":47,"sort":555,"created_at":561,"updated_at":561,"id":562},"6a3141fb73c9eb8a9b458c00","The Ocean.mp3","Mike Perry","\u002Fmusic\u002FMike%20Perry%20-%20The%20Ocean.mp3","2026-06-16T12:30:51.260Z",77,{"_id":564,"name":565,"artist":566,"url":567,"cover":47,"sort":562,"created_at":568,"updated_at":568,"id":569},"6a3141fb73c9eb8a9b458c03","Move Up(Lost Gravity).mp3","Mr. Polska","\u002Fmusic\u002FMr.%20Polska%20-%20Move%20Up%28Lost%20Gravity%29.mp3","2026-06-16T12:30:51.269Z",78,{"_id":571,"name":572,"artist":573,"url":574,"cover":47,"sort":569,"created_at":575,"updated_at":575,"id":576},"6a3141fb73c9eb8a9b458c06","DuskTillDawn.mp3","Nike","\u002Fmusic\u002FNike%20-%20DuskTillDawn.mp3","2026-06-16T12:30:51.279Z",79,{"_id":578,"name":579,"artist":580,"url":581,"cover":47,"sort":576,"created_at":582,"updated_at":582,"id":583},"6a3141fb73c9eb8a9b458c09","That Girl.mp3","Olly Murs","\u002Fmusic\u002FOlly%20Murs%20-%20That%20Girl.mp3","2026-06-16T12:30:51.291Z",80,{"_id":585,"name":586,"artist":587,"url":588,"cover":47,"sort":583,"created_at":589,"updated_at":589,"id":590},"6a3141fb73c9eb8a9b458c0c","Closer.mp3","R3hab","\u002Fmusic\u002FR3hab%20-%20Closer.mp3","2026-06-16T12:30:51.302Z",81,{"_id":592,"name":593,"artist":587,"url":594,"cover":47,"sort":590,"created_at":595,"updated_at":595,"id":596},"6a3141fb73c9eb8a9b458c0f","Sakura.mp3","\u002Fmusic\u002FR3hab%20-%20Sakura.mp3","2026-06-16T12:30:51.314Z",82,{"_id":598,"name":599,"artist":600,"url":601,"cover":47,"sort":596,"created_at":602,"updated_at":602,"id":603},"6a3141fb73c9eb8a9b458c12","Lone Ranger.mp3","Rachel Platten","\u002Fmusic\u002FRachel%20Platten%20-%20Lone%20Ranger.mp3","2026-06-16T12:30:51.327Z",83,{"_id":605,"name":606,"artist":607,"url":608,"cover":47,"sort":603,"created_at":609,"updated_at":609,"id":610},"6a3141fb73c9eb8a9b458c15","Колыбельная.mp3","Rauf & Faik","\u002Fmusic\u002FRauf%20%26%20Faik%20-%20%D0%9A%D0%BE%D0%BB%D1%8B%D0%B1%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F.mp3","2026-06-16T12:30:51.337Z",84,{"_id":612,"name":613,"artist":614,"url":615,"cover":47,"sort":610,"created_at":616,"updated_at":616,"id":617},"6a3141fb73c9eb8a9b458c18","Diamonds.mp3","Rihanna","\u002Fmusic\u002FRihanna%20-%20Diamonds.mp3","2026-06-16T12:30:51.346Z",85,{"_id":619,"name":620,"artist":621,"url":622,"cover":47,"sort":617,"created_at":623,"updated_at":623,"id":624},"6a3141fb73c9eb8a9b458c1b","Light.mp3","San Holo","\u002Fmusic\u002FSan%20Holo%20-%20Light.mp3","2026-06-16T12:30:51.355Z",86,{"_id":626,"name":627,"artist":628,"url":629,"cover":47,"sort":624,"created_at":630,"updated_at":630,"id":631},"6a3141fb73c9eb8a9b458c1e","Dancing With Your Ghost.mp3","Sasha Sloan","\u002Fmusic\u002FSasha%20Sloan%20-%20Dancing%20With%20Your%20Ghost.mp3","2026-06-16T12:30:51.365Z",87,{"_id":633,"name":634,"artist":635,"url":636,"cover":47,"sort":631,"created_at":637,"updated_at":637,"id":638},"6a3141fb73c9eb8a9b458c21","Limitless（无限）.mp3","SeVen.13","\u002Fmusic\u002FSeVen.13%20-%20Limitless%EF%BC%88%E6%97%A0%E9%99%90%EF%BC%89.mp3","2026-06-16T12:30:51.371Z",88,{"_id":640,"name":641,"artist":642,"url":643,"cover":47,"sort":638,"created_at":644,"updated_at":644,"id":645},"6a3141fb73c9eb8a9b458c24","Wolves.mp3","Selena Gomez","\u002Fmusic\u002FSelena%20Gomez%20-%20Wolves.mp3","2026-06-16T12:30:51.394Z",89,{"_id":647,"name":648,"artist":649,"url":650,"cover":47,"sort":645,"created_at":651,"updated_at":651,"id":652},"6a3141fb73c9eb8a9b458c27","Señorita.mp3","Shawn Mendes","\u002Fmusic\u002FShawn%20Mendes%20-%20Sen%CC%83orita.mp3","2026-06-16T12:30:51.400Z",90,{"_id":654,"name":655,"artist":656,"url":657,"cover":47,"sort":652,"created_at":658,"updated_at":658,"id":659},"6a3141fb73c9eb8a9b458c2a","Chandelier.mp3","Sia","\u002Fmusic\u002FSia%20-%20Chandelier.mp3","2026-06-16T12:30:51.406Z",91,{"_id":661,"name":662,"artist":656,"url":663,"cover":47,"sort":659,"created_at":664,"updated_at":664,"id":665},"6a3141fb73c9eb8a9b458c2d","Cheap Thrills.mp3","\u002Fmusic\u002FSia%20-%20Cheap%20Thrills.mp3","2026-06-16T12:30:51.411Z",92,{"_id":667,"name":668,"artist":656,"url":669,"cover":47,"sort":665,"created_at":670,"updated_at":670,"id":671},"6a3141fb73c9eb8a9b458c30","Move Your Body.mp3","\u002Fmusic\u002FSia%20-%20Move%20Your%20Body.mp3","2026-06-16T12:30:51.418Z",93,{"_id":673,"name":674,"artist":656,"url":675,"cover":47,"sort":671,"created_at":676,"updated_at":676,"id":677},"6a3141fb73c9eb8a9b458c33","The Greatest.mp3","\u002Fmusic\u002FSia%20-%20The%20Greatest.mp3","2026-06-16T12:30:51.423Z",94,{"_id":679,"name":680,"artist":656,"url":681,"cover":47,"sort":677,"created_at":682,"updated_at":682,"id":683},"6a3141fb73c9eb8a9b458c36","Unstoppable.mp3","\u002Fmusic\u002FSia%20-%20Unstoppable.mp3","2026-06-16T12:30:51.429Z",95,{"_id":685,"name":222,"artist":686,"url":687,"cover":47,"sort":683,"created_at":688,"updated_at":688,"id":689},"6a3141fb73c9eb8a9b458c39","Skylar Grey","\u002Fmusic\u002FSkylar%20Grey%20-%20Coming%20Home.mp3","2026-06-16T12:30:51.435Z",96,{"_id":691,"name":692,"artist":693,"url":694,"cover":47,"sort":689,"created_at":695,"updated_at":695,"id":696},"6a3141fb73c9eb8a9b458c3c","So Long (feat. Madi).mp3","Slushii","\u002Fmusic\u002FSlushii%20-%20So%20Long%20%28feat.%20Madi%29.mp3","2026-06-16T12:30:51.448Z",97,{"_id":698,"name":431,"artist":699,"url":700,"cover":47,"sort":696,"created_at":701,"updated_at":701,"id":702},"6a3141fb73c9eb8a9b458c3f","Spiros Hamza","\u002Fmusic\u002FSpiros%20Hamza%20-%20The%20Cure.mp3","2026-06-16T12:30:51.453Z",98,{"_id":704,"name":705,"artist":706,"url":707,"cover":47,"sort":702,"created_at":708,"updated_at":708,"id":709},"6a3141fb73c9eb8a9b458c42","Middle Of The Night.mp3","Taiga","\u002Fmusic\u002FTaiga%20-%20Middle%20Of%20The%20Night.mp3","2026-06-16T12:30:51.463Z",99,{"_id":711,"name":712,"artist":713,"url":714,"cover":47,"sort":709,"created_at":715,"updated_at":715,"id":716},"6a3141fb73c9eb8a9b458c45","Da Da Da.mp3","Tanir","\u002Fmusic\u002FTanir%20-%20Da%20Da%20Da.mp3","2026-06-16T12:30:51.469Z",100,{"_id":718,"name":719,"artist":720,"url":721,"cover":47,"sort":716,"created_at":722,"updated_at":722,"id":723},"6a3141fb73c9eb8a9b458c48","Welcome To New York.mp3","Taylor Swift","\u002Fmusic\u002FTaylor%20Swift%20-%20Welcome%20To%20New%20York.mp3","2026-06-16T12:30:51.474Z",101,{"_id":725,"name":726,"artist":727,"url":728,"cover":47,"sort":723,"created_at":729,"updated_at":729,"id":730},"6a3141fb73c9eb8a9b458c4b","Don't Let Me Down.mp3","The Chainsmokers","\u002Fmusic\u002FThe%20Chainsmokers%20-%20Don%27t%20Let%20Me%20Down.mp3","2026-06-16T12:30:51.484Z",102,{"_id":732,"name":733,"artist":727,"url":734,"cover":47,"sort":730,"created_at":735,"updated_at":735,"id":736},"6a3141fb73c9eb8a9b458c4e","Something Just Like This.mp3","\u002Fmusic\u002FThe%20Chainsmokers%20-%20Something%20Just%20Like%20This.mp3","2026-06-16T12:30:51.489Z",103,{"_id":738,"name":739,"artist":740,"url":741,"cover":47,"sort":736,"created_at":742,"updated_at":742,"id":743},"6a3141fb73c9eb8a9b458c51","Watch Me Work.mp3","Tinashe","\u002Fmusic\u002FTinashe%20-%20Watch%20Me%20Work.mp3","2026-06-16T12:30:51.495Z",104,{"_id":745,"name":746,"artist":747,"url":748,"cover":47,"sort":743,"created_at":749,"updated_at":749,"id":750},"6a3141fb73c9eb8a9b458c54","Fearless Pt. II.mp3","Tule","\u002Fmusic\u002FTule%20-%20Fearless%20Pt.%20II.mp3","2026-06-16T12:30:51.503Z",105,{"_id":752,"name":753,"artist":754,"url":755,"cover":47,"sort":750,"created_at":756,"updated_at":756,"id":757},"6a3141fb73c9eb8a9b458c57","All For Love.mp3","Tungevaag & Raaban","\u002Fmusic\u002FTungevaag%20%26%20Raaban%20-%20All%20For%20Love.mp3","2026-06-16T12:30:51.509Z",106,{"_id":759,"name":760,"artist":754,"url":761,"cover":47,"sort":757,"created_at":762,"updated_at":762,"id":763},"6a3141fb73c9eb8a9b458c5a","Samsara.mp3","\u002Fmusic\u002FTungevaag%20%26%20Raaban%20-%20Samsara.mp3","2026-06-16T12:30:51.516Z",107,{"_id":765,"name":766,"artist":767,"url":768,"cover":47,"sort":763,"created_at":769,"updated_at":769,"id":770},"6a3141fb73c9eb8a9b458c5d","Nevada.mp3","Vicetone","\u002Fmusic\u002FVicetone%20-%20Nevada.mp3","2026-06-16T12:30:51.525Z",108,{"_id":772,"name":773,"artist":767,"url":774,"cover":47,"sort":770,"created_at":775,"updated_at":775,"id":776},"6a3141fb73c9eb8a9b458c60","Walk Thru Fire (1).mp3","\u002Fmusic\u002FVicetone%20-%20Walk%20Thru%20Fire%20%281%29.mp3","2026-06-16T12:30:51.537Z",109,{"_id":778,"name":779,"artist":767,"url":780,"cover":47,"sort":776,"created_at":781,"updated_at":781,"id":782},"6a3141fb73c9eb8a9b458c63","Walk Thru Fire.mp3","\u002Fmusic\u002FVicetone%20-%20Walk%20Thru%20Fire.mp3","2026-06-16T12:30:51.545Z",110,{"_id":784,"name":785,"artist":767,"url":786,"cover":47,"sort":782,"created_at":787,"updated_at":787,"id":788},"6a3141fb73c9eb8a9b458c66","Way Back.mp3","\u002Fmusic\u002FVicetone%20-%20Way%20Back.mp3","2026-06-16T12:30:51.551Z",111,{"_id":790,"name":791,"artist":792,"url":793,"cover":47,"sort":788,"created_at":794,"updated_at":794,"id":795},"6a3141fb73c9eb8a9b458c69","Falling Down.mp3","Wild Cards","\u002Fmusic\u002FWild%20Cards%20-%20Falling%20Down.mp3","2026-06-16T12:30:51.557Z",112,{"_id":797,"name":798,"artist":799,"url":800,"cover":47,"sort":795,"created_at":801,"updated_at":801,"id":802},"6a3141fb73c9eb8a9b458c6c","NUMB.mp3","XXXTentacion","\u002Fmusic\u002FXXXTentacion%20-%20NUMB.mp3","2026-06-16T12:30:51.563Z",113,{"_id":804,"name":805,"artist":806,"url":807,"cover":47,"sort":802,"created_at":808,"updated_at":808,"id":809},"6a3141fb73c9eb8a9b458c6f","Dusk Till Dawn.mp3","ZAYN","\u002Fmusic\u002FZAYN%20-%20Dusk%20Till%20Dawn.mp3","2026-06-16T12:30:51.568Z",114,{"_id":811,"name":812,"artist":813,"url":814,"cover":47,"sort":809,"created_at":815,"updated_at":815,"id":816},"6a3141fb73c9eb8a9b458c72","East of Eden.mp3","Zella Day","\u002Fmusic\u002FZella%20Day%20-%20East%20of%20Eden.mp3","2026-06-16T12:30:51.574Z",115,{"_id":818,"name":819,"artist":820,"url":821,"cover":47,"sort":816,"created_at":822,"updated_at":822,"id":823},"6a3141fb73c9eb8a9b458c75","18 Mne Uzhe.mp3","ai8","\u002Fmusic\u002Fai8%20-%2018%20Mne%20Uzhe.mp3","2026-06-16T12:30:51.580Z",116,{"_id":825,"name":826,"artist":827,"url":828,"cover":47,"sort":823,"created_at":829,"updated_at":829,"id":830},"6a3141fb73c9eb8a9b458c78","gone.mp3","convolk","\u002Fmusic\u002Fconvolk%20-%20gone.mp3","2026-06-16T12:30:51.587Z",117,{"_id":832,"name":833,"artist":834,"url":835,"cover":47,"sort":830,"created_at":836,"updated_at":836,"id":837},"6a3141fb73c9eb8a9b458c7b","내가 웃는게 아니야.mp3","리쌍","\u002Fmusic\u002F%E1%84%85%E1%85%B5%E1%84%8A%E1%85%A1%E1%86%BC%20-%20%E1%84%82%E1%85%A2%E1%84%80%E1%85%A1%20%E1%84%8B%E1%85%AE%E1%86%BA%E1%84%82%E1%85%B3%E1%86%AB%E1%84%80%E1%85%A6%20%E1%84%8B%E1%85%A1%E1%84%82%E1%85%B5%E1%84%8B%E1%85%A3.mp3","2026-06-16T12:30:51.592Z",118,{"_id":839,"name":840,"artist":841,"url":842,"cover":47,"sort":837,"created_at":843,"updated_at":843,"id":844},"6a3141fb73c9eb8a9b458c7e","Summer.mp3","久石让","\u002Fmusic\u002F%E4%B9%85%E7%9F%B3%E8%AE%A9%20-%20Summer.mp3","2026-06-16T12:30:51.598Z",119,{"_id":846,"name":847,"artist":848,"url":849,"cover":47,"sort":844,"created_at":850,"updated_at":850,"id":851},"6a3141fb73c9eb8a9b458c81","빙고.mp3","乌龟组合","\u002Fmusic\u002F%E4%B9%8C%E9%BE%9F%E7%BB%84%E5%90%88%20-%20%E1%84%87%E1%85%B5%E1%86%BC%E1%84%80%E1%85%A9.mp3","2026-06-16T12:30:51.608Z",120,{"_id":853,"name":854,"artist":855,"url":856,"cover":47,"sort":851,"created_at":857,"updated_at":857,"id":858},"6a3141fb73c9eb8a9b458c84","Drown.mp3","亿阳","\u002Fmusic\u002F%E4%BA%BF%E9%98%B3%20-%20Drown.mp3","2026-06-16T12:30:51.614Z",121,{"_id":860,"name":861,"artist":862,"url":863,"cover":47,"sort":858,"created_at":864,"updated_at":864,"id":865},"6a3141fb73c9eb8a9b458c87","Ring Ring Ring.mp3","何曼婷","\u002Fmusic\u002F%E4%BD%95%E6%9B%BC%E5%A9%B7%20-%20Ring%20Ring%20Ring.mp3","2026-06-16T12:30:51.620Z",122,{"_id":867,"name":868,"artist":869,"url":870,"cover":47,"sort":865,"created_at":871,"updated_at":871,"id":872},"6a3141fb73c9eb8a9b458c8a","微微.mp3","傅如乔","\u002Fmusic\u002F%E5%82%85%E5%A6%82%E4%B9%94%20-%20%E5%BE%AE%E5%BE%AE.mp3","2026-06-16T12:30:51.627Z",123,{"_id":874,"name":875,"artist":876,"url":877,"cover":47,"sort":872,"created_at":878,"updated_at":878,"id":879},"6a3141fb73c9eb8a9b458c8d","Be Your Sun.mp3","剑圣","\u002Fmusic\u002F%E5%89%91%E5%9C%A3%20-%20Be%20Your%20Sun.mp3","2026-06-16T12:30:51.633Z",124,{"_id":881,"name":882,"artist":883,"url":884,"cover":47,"sort":879,"created_at":885,"updated_at":885,"id":886},"6a3141fb73c9eb8a9b458c90","마리아 (Maria) (4416 Flac).mp3","华莎","\u002Fmusic\u002F%E5%8D%8E%E8%8E%8E%20-%2002%20%E1%84%92%E1%85%AA%E1%84%89%E1%85%A1%20-%20%E1%84%86%E1%85%A1%E1%84%85%E1%85%B5%E1%84%8B%E1%85%A1%20%28Maria%29%20%284416%20Flac%29.mp3","2026-06-16T12:30:51.638Z",125,{"_id":888,"name":889,"artist":890,"url":891,"cover":47,"sort":886,"created_at":892,"updated_at":892,"id":893},"6a3141fb73c9eb8a9b458c93","Soap.mp3","单依纯","\u002Fmusic\u002F%E5%8D%95%E4%BE%9D%E7%BA%AF%20-%20Soap.mp3","2026-06-16T12:30:51.648Z",126,{"_id":895,"name":896,"artist":897,"url":898,"cover":47,"sort":893,"created_at":899,"updated_at":899,"id":900},"6a3141fb73c9eb8a9b458c96","情歌王.mp3","古巨基","\u002Fmusic\u002F%E5%8F%A4%E5%B7%A8%E5%9F%BA%20-%20%E6%83%85%E6%AD%8C%E7%8E%8B.mp3","2026-06-16T12:30:51.658Z",127,{"_id":902,"name":903,"artist":904,"url":905,"cover":47,"sort":900,"created_at":906,"updated_at":906,"id":907},"6a3141fb73c9eb8a9b458c99","Summertime Sadnes.mp3","可爱的小团团","\u002Fmusic\u002F%E5%8F%AF%E7%88%B1%E7%9A%84%E5%B0%8F%E5%9B%A2%E5%9B%A2%20-%20Summertime%C2%A0Sadnes.mp3","2026-06-16T12:30:51.667Z",128,{"_id":909,"name":910,"artist":911,"url":912,"cover":47,"sort":907,"created_at":913,"updated_at":913,"id":914},"6a3141fb73c9eb8a9b458c9c","La la.mp3","安筱冷","\u002Fmusic\u002F%E5%AE%89%E7%AD%B1%E5%86%B7%20-%20La%20la.mp3","2026-06-16T12:30:51.676Z",129,{"_id":916,"name":917,"artist":918,"url":919,"cover":47,"sort":914,"created_at":920,"updated_at":920,"id":921},"6a3141fb73c9eb8a9b458c9f","信仰.mp3","小淼","\u002Fmusic\u002F%E5%B0%8F%E6%B7%BC%20-%20%E4%BF%A1%E4%BB%B0.mp3","2026-06-16T12:30:51.696Z",130,{"_id":923,"name":924,"artist":925,"url":926,"cover":47,"sort":921,"created_at":927,"updated_at":927,"id":928},"6a3141fb73c9eb8a9b458ca2","Antoine Chambe.mp3","废博","\u002Fmusic\u002F%E5%BA%9F%E5%8D%9A%20-%20Antoine%20Chambe.mp3","2026-06-16T12:30:51.706Z",131,{"_id":930,"name":931,"artist":932,"url":933,"cover":47,"sort":928,"created_at":934,"updated_at":934,"id":935},"6a3141fb73c9eb8a9b458ca5","What Lovers Do.mp3","抖音热歌DJ","\u002Fmusic\u002F%E6%8A%96%E9%9F%B3%E7%83%AD%E6%AD%8CDJ%20-%20What%20Lovers%20Do.mp3","2026-06-16T12:30:51.716Z",132,{"_id":937,"name":938,"artist":939,"url":940,"cover":47,"sort":935,"created_at":941,"updated_at":941,"id":942},"6a3141fb73c9eb8a9b458ca8","123我爱你.mp3","新乐尘符","\u002Fmusic\u002F%E6%96%B0%E4%B9%90%E5%B0%98%E7%AC%A6%20-%20123%E6%88%91%E7%88%B1%E4%BD%A0.mp3","2026-06-16T12:30:51.724Z",133,{"_id":944,"name":945,"artist":946,"url":947,"cover":47,"sort":942,"created_at":948,"updated_at":948,"id":949},"6a3141fb73c9eb8a9b458cab","燕无歇（DJ黑桃A）feat.是七叔呢.mp3","是七叔呢","\u002Fmusic\u002F%E6%98%AF%E4%B8%83%E5%8F%94%E5%91%A2%20-%20%E7%87%95%E6%97%A0%E6%AD%87%EF%BC%88DJ%E9%BB%91%E6%A1%83A%EF%BC%89feat.%E6%98%AF%E4%B8%83%E5%8F%94%E5%91%A2.mp3","2026-06-16T12:30:51.730Z",134,{"_id":951,"name":952,"artist":953,"url":954,"cover":47,"sort":949,"created_at":955,"updated_at":955,"id":956},"6a3141fb73c9eb8a9b458cae","I Want You To Know.mp3","晴诚","\u002Fmusic\u002F%E6%99%B4%E8%AF%9A%20-%20I%20Want%20You%20To%20Know.mp3","2026-06-16T12:30:51.738Z",135,{"_id":958,"name":959,"artist":960,"url":961,"cover":47,"sort":956,"created_at":962,"updated_at":962,"id":963},"6a3141fb73c9eb8a9b458cb1","Jar Of Love.mp3","曲婉婷","\u002Fmusic\u002F%E6%9B%B2%E5%A9%89%E5%A9%B7%20-%20Jar%20Of%20Love.mp3","2026-06-16T12:30:51.743Z",136,{"_id":965,"name":966,"artist":967,"url":968,"cover":47,"sort":963,"created_at":969,"updated_at":969,"id":970},"6a3141fb73c9eb8a9b458cb4","你在看孤独的风景.mp3","本兮","\u002Fmusic\u002F%E6%9C%AC%E5%85%AE%20-%20%E4%BD%A0%E5%9C%A8%E7%9C%8B%E5%AD%A4%E7%8B%AC%E7%9A%84%E9%A3%8E%E6%99%AF.mp3","2026-06-16T12:30:51.749Z",137,{"_id":972,"name":973,"artist":967,"url":974,"cover":47,"sort":970,"created_at":975,"updated_at":975,"id":976},"6a3141fb73c9eb8a9b458cb7","小明是个画家.mp3","\u002Fmusic\u002F%E6%9C%AC%E5%85%AE%20-%20%E5%B0%8F%E6%98%8E%E6%98%AF%E4%B8%AA%E7%94%BB%E5%AE%B6.mp3","2026-06-16T12:30:51.755Z",138,{"_id":978,"name":979,"artist":967,"url":980,"cover":47,"sort":976,"created_at":981,"updated_at":981,"id":982},"6a3141fb73c9eb8a9b458cba","我梦见我梦见我.mp3","\u002Fmusic\u002F%E6%9C%AC%E5%85%AE%20-%20%E6%88%91%E6%A2%A6%E8%A7%81%E6%88%91%E6%A2%A6%E8%A7%81%E6%88%91.mp3","2026-06-16T12:30:51.762Z",139,{"_id":984,"name":985,"artist":986,"url":987,"cover":47,"sort":982,"created_at":988,"updated_at":988,"id":989},"6a3141fb73c9eb8a9b458cbd","I am not angry anymore.mp3","李郝","\u002Fmusic\u002F%E6%9D%8E%E9%83%9D%20-%20I%20am%20not%20angry%20anymore.mp3","2026-06-16T12:30:51.768Z",140,{"_id":991,"name":992,"artist":993,"url":994,"cover":47,"sort":989,"created_at":995,"updated_at":995,"id":996},"6a3141fb73c9eb8a9b458cc0","Summertime Sadness.mp3","杳葵","\u002Fmusic\u002F%E6%9D%B3%E8%91%B5%20-%20Summertime%20Sadness.mp3","2026-06-16T12:30:51.775Z",141,{"_id":998,"name":999,"artist":1000,"url":1001,"cover":47,"sort":996,"created_at":1002,"updated_at":1002,"id":1003},"6a3141fb73c9eb8a9b458cc3","Tokyo.mp3","梅尼耶","\u002Fmusic\u002F%E6%A2%85%E5%B0%BC%E8%80%B6%20-%20Tokyo.mp3","2026-06-16T12:30:51.780Z",142,{"_id":1005,"name":1006,"artist":1007,"url":1008,"cover":47,"sort":1003,"created_at":1009,"updated_at":1009,"id":1010},"6a3141fb73c9eb8a9b458cc6","少年.mp3","梦然","\u002Fmusic\u002F%E6%A2%A6%E7%84%B6%20-%20%E5%B0%91%E5%B9%B4.mp3","2026-06-16T12:30:51.786Z",143,{"_id":1012,"name":1013,"artist":1014,"url":1015,"cover":47,"sort":1010,"created_at":1016,"updated_at":1016,"id":1017},"6a3141fb73c9eb8a9b458cc9","爱情的傀儡.mp3","橙子","\u002Fmusic\u002F%E6%A9%99%E5%AD%90%20-%20%E7%88%B1%E6%83%85%E7%9A%84%E5%82%80%E5%84%A1.mp3","2026-06-16T12:30:51.792Z",144,{"_id":1019,"name":1020,"artist":1021,"url":1022,"cover":47,"sort":1017,"created_at":1023,"updated_at":1023,"id":1024},"6a3141fb73c9eb8a9b458ccc","春娇与志明.mp3","欧阳耀莹","\u002Fmusic\u002F%E6%AC%A7%E9%98%B3%E8%80%80%E8%8E%B9%20-%20%E6%98%A5%E5%A8%87%E4%B8%8E%E5%BF%97%E6%98%8E.mp3","2026-06-16T12:30:51.799Z",145,{"_id":1026,"name":1027,"artist":1028,"url":1029,"cover":47,"sort":1024,"created_at":1030,"updated_at":1030,"id":1031},"6a3141fb73c9eb8a9b458ccf","我应该去爱你.mp3","汪东城","\u002Fmusic\u002F%E6%B1%AA%E4%B8%9C%E5%9F%8E%20-%20%E6%88%91%E5%BA%94%E8%AF%A5%E5%8E%BB%E7%88%B1%E4%BD%A0.mp3","2026-06-16T12:30:51.804Z",146,{"_id":1033,"name":1034,"artist":1035,"url":1036,"cover":47,"sort":1031,"created_at":1037,"updated_at":1037,"id":1038},"6a3141fb73c9eb8a9b458cd2","Redbone.mp3","沐泽","\u002Fmusic\u002F%E6%B2%90%E6%B3%BD%20-%20Redbone.mp3","2026-06-16T12:30:51.810Z",147,{"_id":1040,"name":1041,"artist":1035,"url":1042,"cover":47,"sort":1038,"created_at":1043,"updated_at":1043,"id":1044},"6a3141fb73c9eb8a9b458cd5","Take Me To Infinity.mp3","\u002Fmusic\u002F%E6%B2%90%E6%B3%BD%20-%20Take%20Me%20To%20Infinity.mp3","2026-06-16T12:30:51.816Z",148,{"_id":1046,"name":1047,"artist":1048,"url":1049,"cover":47,"sort":1044,"created_at":1050,"updated_at":1050,"id":1051},"6a3141fb73c9eb8a9b458cd8","不过人间.mp3","海来阿木","\u002Fmusic\u002F%E6%B5%B7%E6%9D%A5%E9%98%BF%E6%9C%A8%20-%20%E4%B8%8D%E8%BF%87%E4%BA%BA%E9%97%B4.mp3","2026-06-16T12:30:51.821Z",149,{"_id":1053,"name":161,"artist":1054,"url":1055,"cover":47,"sort":1051,"created_at":1056,"updated_at":1056,"id":1057},"6a3141fb73c9eb8a9b458cdb","潮妹","\u002Fmusic\u002F%E6%BD%AE%E5%A6%B9%20-%20Outside.mp3","2026-06-16T12:30:51.827Z",150,{"_id":1059,"name":1060,"artist":1061,"url":1062,"cover":47,"sort":1057,"created_at":1063,"updated_at":1063,"id":1064},"6a3141fb73c9eb8a9b458cde","目不转睛.mp3","王以太","\u002Fmusic\u002F%E7%8E%8B%E4%BB%A5%E5%A4%AA%20-%20%E7%9B%AE%E4%B8%8D%E8%BD%AC%E7%9D%9B.mp3","2026-06-16T12:30:51.833Z",151,{"_id":1066,"name":1067,"artist":1068,"url":1069,"cover":47,"sort":1064,"created_at":1070,"updated_at":1070,"id":1071},"6a3141fb73c9eb8a9b458ce1","Ke Cap Gap Ba Gia.mp3","王梦瑶","\u002Fmusic\u002F%E7%8E%8B%E6%A2%A6%E7%91%B6%20-%20Ke%20Cap%20Gap%20Ba%20Gia.mp3","2026-06-16T12:30:51.839Z",152,{"_id":1073,"name":1074,"artist":1075,"url":1076,"cover":47,"sort":1071,"created_at":1077,"updated_at":1077,"id":1078},"6a3141fb73c9eb8a9b458ce4","ДбкПя (原版).mp3","神皇仙人","\u002Fmusic\u002F%E7%A5%9E%E7%9A%87%E4%BB%99%E4%BA%BA%20-%20%D0%94%D0%B1%D0%BA%D0%9F%D1%8F%20%28%E5%8E%9F%E7%89%88%29.mp3","2026-06-16T12:30:51.845Z",153,{"_id":1080,"name":1081,"artist":1082,"url":1083,"cover":47,"sort":1078,"created_at":1084,"updated_at":1084,"id":1085},"6a3141fb73c9eb8a9b458ce7","Salt.mp3","精彩轩迪","\u002Fmusic\u002F%E7%B2%BE%E5%BD%A9%E8%BD%A9%E8%BF%AA%20-%20Salt.mp3","2026-06-16T12:30:51.851Z",154,{"_id":1087,"name":1088,"artist":1089,"url":1090,"cover":47,"sort":1085,"created_at":1091,"updated_at":1091,"id":1092},"6a3141fb73c9eb8a9b458cea","Xirali-3时尚歌曲串烧.mp3","舞曲帝","\u002Fmusic\u002F%E8%88%9E%E6%9B%B2%E5%B8%9D%20-%20Xirali-3%E6%97%B6%E5%B0%9A%E6%AD%8C%E6%9B%B2%E4%B8%B2%E7%83%A7.mp3","2026-06-16T12:30:51.856Z",155,{"_id":1094,"name":1095,"artist":1096,"url":1097,"cover":47,"sort":1092,"created_at":1098,"updated_at":1098,"id":1099},"6a3141fb73c9eb8a9b458ced","Leave Me Alone  Alan Walker.mp3","苏七岁","\u002Fmusic\u002F%E8%8B%8F%E4%B8%83%E5%B2%81%20-%20Leave%20Me%20Alone%20%20Alan%20Walker.mp3","2026-06-16T12:30:51.872Z",156,{"_id":1101,"name":586,"artist":1102,"url":1103,"cover":47,"sort":1099,"created_at":1104,"updated_at":1104,"id":1105},"6a3141fb73c9eb8a9b458cf0","苏静","\u002Fmusic\u002F%E8%8B%8F%E9%9D%99%20-%20Closer.mp3","2026-06-16T12:30:51.884Z",157,{"_id":1107,"name":140,"artist":1108,"url":1109,"cover":47,"sort":1105,"created_at":1110,"updated_at":1110,"id":1111},"6a3141fb73c9eb8a9b458cf3","苏鹤","\u002Fmusic\u002F%E8%8B%8F%E9%B9%A4%20-%20Apologize.mp3","2026-06-16T12:30:51.894Z",158,{"_id":1113,"name":1114,"artist":1115,"url":1116,"cover":47,"sort":1111,"created_at":1117,"updated_at":1117,"id":1118},"6a3141fb73c9eb8a9b458cf6","Dancer In The Dark.mp3","蒂娜","\u002Fmusic\u002F%E8%92%82%E5%A8%9C%20-%20Dancer%20In%20The%20Dark.mp3","2026-06-16T12:30:51.902Z",159,{"_id":1120,"name":1121,"artist":1122,"url":1123,"cover":47,"sort":1118,"created_at":1124,"updated_at":1124,"id":1125},"6a3141fb73c9eb8a9b458cf9","Senbonzakura.mp3","虞姬","\u002Fmusic\u002F%E8%99%9E%E5%A7%AC%20-%20Senbonzakura.mp3","2026-06-16T12:30:51.912Z",160,{"_id":1127,"name":1128,"artist":1122,"url":1129,"cover":47,"sort":1125,"created_at":1130,"updated_at":1130,"id":1131},"6a3141fb73c9eb8a9b458cfc","bboy danny.mp3","\u002Fmusic\u002F%E8%99%9E%E5%A7%AC%20-%20bboy%20danny.mp3","2026-06-16T12:30:51.921Z",161,{"_id":1133,"name":1134,"artist":1135,"url":1136,"cover":47,"sort":1131,"created_at":1137,"updated_at":1137,"id":1138},"6a3141fb73c9eb8a9b458cff","我爱你 Luv Is Luv.mp3","贺仙人","\u002Fmusic\u002F%E8%B4%BA%E4%BB%99%E4%BA%BA%20-%20%E6%88%91%E7%88%B1%E4%BD%A0%20Luv%20Is%20Luv.mp3","2026-06-16T12:30:51.930Z",162,{"_id":1140,"name":1141,"artist":1142,"url":1143,"cover":47,"sort":1138,"created_at":1144,"updated_at":1144,"id":1145},"6a3141fb73c9eb8a9b458d02","Despair (1).mp3","赵亦笙","\u002Fmusic\u002F%E8%B5%B5%E4%BA%A6%E7%AC%99%20-%20Despair%20%281%29.mp3","2026-06-16T12:30:51.941Z",163,{"_id":1147,"name":1148,"artist":1149,"url":1150,"cover":47,"sort":1145,"created_at":1151,"updated_at":1151,"id":1152},"6a3141fb73c9eb8a9b458d05","Lendo Calendo.mp3","迪嘉","\u002Fmusic\u002F%E8%BF%AA%E5%98%89%20-%20Lendo%20Calendo.mp3","2026-06-16T12:30:51.950Z",164,{"_id":1154,"name":1155,"artist":1156,"url":1157,"cover":47,"sort":1152,"created_at":1158,"updated_at":1158,"id":1159},"6a3141fb73c9eb8a9b458d08","想见你想见你想见你.mp3","阿冗","\u002Fmusic\u002F%E9%98%BF%E5%86%97%20-%20%E6%83%B3%E8%A7%81%E4%BD%A0%E6%83%B3%E8%A7%81%E4%BD%A0%E6%83%B3%E8%A7%81%E4%BD%A0.mp3","2026-06-16T12:30:51.956Z",165,{"_id":1161,"name":1162,"artist":1163,"url":1164,"cover":47,"sort":1159,"created_at":1165,"updated_at":1165,"id":1166},"6a3141fb73c9eb8a9b458d0b","热爱105°C的你.mp3","阿肆","\u002Fmusic\u002F%E9%98%BF%E8%82%86%20-%20%E7%83%AD%E7%88%B1105%C2%B0C%E7%9A%84%E4%BD%A0.mp3","2026-06-16T12:30:51.962Z",166,{"_id":1168,"name":1169,"artist":1170,"url":1171,"cover":47,"sort":1166,"created_at":1172,"updated_at":1172,"id":1173},"6a3141fb73c9eb8a9b458d0e","起风了 (1).mp3","青伊","\u002Fmusic\u002F%E9%9D%92%E4%BC%8A%20-%20%E8%B5%B7%E9%A3%8E%E4%BA%86%20%281%29.mp3","2026-06-16T12:30:51.967Z",167,{"_id":1175,"name":195,"artist":1176,"url":1177,"cover":47,"sort":1173,"created_at":1178,"updated_at":1178,"id":1179},"6a3141fb73c9eb8a9b458d11","鞠文娴","\u002Fmusic\u002F%E9%9E%A0%E6%96%87%E5%A8%B4%20-%20BINGBIAN%E7%97%85%E5%8F%98.mp3","2026-06-16T12:30:51.973Z",168,{"_id":1181,"name":1182,"artist":1183,"url":1184,"cover":47,"sort":1179,"created_at":1185,"updated_at":1185,"id":1186},"6a3141fb73c9eb8a9b458d14","红昭愿.mp3","音阙诗听","\u002Fmusic\u002F%E9%9F%B3%E9%98%99%E8%AF%97%E5%90%AC%20-%20%E7%BA%A2%E6%98%AD%E6%84%BF.mp3","2026-06-16T12:30:51.978Z",169,{"_id":1188,"name":537,"artist":1189,"url":1190,"cover":47,"sort":1186,"created_at":1191,"updated_at":1191,"id":1192},"6a3141fb73c9eb8a9b458d17","首席执行官小七","\u002Fmusic\u002F%E9%A6%96%E5%B8%AD%E6%89%A7%E8%A1%8C%E5%AE%98%E5%B0%8F%E4%B8%83%20-%20Once%20upon%20a%20Time.mp3","2026-06-16T12:30:51.985Z",170,{"_id":1194,"title":1195,"content":1196,"description":1197,"cover":1198,"created_date":1199,"category_id":22,"tag_ids":1200,"author_ids":1201,"public":50,"status":50,"star":50,"like":50,"views":352,"created_at":1202,"updated_at":1203,"id":435,"category":1204,"tags":1205,"authors":1210,"related":1216},"6a31012df8252e64bdbd4b15","Vibe Coding 工程化进阶（四）：用 Hooks 给 Agent 上\"自动护栏\"","> 前三篇给了 AI 记忆、规范、能力。但有一个致命问题：**Rules 和 AGENTS.md 都是\"建议\"，AI 大概率遵守，但不保证。** 当 AI 能真实地改文件、跑命令、调 MCP 工具时，\"大概率\"是不够的。Hooks 就是那条\"确定性的底线\"——不靠 AI 自觉，靠机器强制执行。\n\n## 一、Rules 和 Hooks 的本质区别\n\n这是理解 Hooks 的钥匙：\n\n> **Rules 是\"概率性\"的软约束（写进上下文，AI 倾向于遵守）；Hooks 是\"确定性\"的硬约束（在关键节点运行你的代码，AI 绕不过去）。**\n\n| | Rules | Hooks |\n|---|---|---|\n| 性质 | 提示 \u002F 建议 | 拦截 \u002F 强制 |\n| 执行者 | AI（可能忘、可能违背） | 你的脚本（每次必跑） |\n| 适合 | 风格、范式、偏好 | 安全红线、格式化、门禁、审计 |\n\n举个对比：你可以在 Rules 里写\"提交前请格式化代码\"——AI 有时会忘。但你也可以加一个 **Hook：每次 AI 编辑完文件，自动跑 Prettier**——这就不存在忘不忘的问题了。\n\n## 二、Hooks 是什么、怎么跑\n\n> **Hooks 是在 Agent 生命周期的特定事件上自动触发的脚本。** 它通过 stdin 收到一段描述当前动作的 JSON，可以**观察、放行、拦截、改写**这个动作，再通过 stdout 返回决定。\n\n在 Cursor 里，项目级 Hooks 配置在 `.cursor\u002Fhooks.json`（用户级在 `~\u002F.cursor\u002Fhooks.json`）。它能挂载的关键事件包括：\n\n| 事件 | 触发时机 | 典型用途 |\n|---|---|---|\n| `beforeShellExecution` | AI 执行终端命令前 | **拦截危险命令** |\n| `afterShellExecution` | 命令执行后 | 审计输出 |\n| `afterFileEdit` | AI 编辑文件后 | **自动格式化 \u002F lint** |\n| `beforeReadFile` | 读文件前 | 阻止读敏感文件 \u002F 脱敏 |\n| `beforeMCPExecution` | 调用 MCP 工具前 | 给外部工具调用加闸 |\n| `beforeSubmitPrompt` | 提示发送前 | **扫描密钥 \u002F 合规检查** |\n| `stop` | Agent 完成时 | 收尾 \u002F 触发后续流程 |\n\n（Claude Code 有对应的 `PreToolUse` \u002F `PostToolUse` \u002F `UserPromptSubmit` \u002F `Stop` 等事件，理念一致。）\n\n## 三、决策协议：怎么\"放行 \u002F 询问 \u002F 拦截\"\n\n命令型 Hook 读 stdin 的 JSON，按需在 stdout 返回 JSON 表达决定。以 `beforeShellExecution` 为例，可以返回：\n\n- `{\"permission\": \"allow\"}` —— 放行\n- `{\"permission\": \"ask\", \"user_message\": \"...\"}` —— 暂停，让你人工确认\n- `{\"permission\": \"deny\", \"agent_message\": \"...\"}` —— 拦截，并告诉 AI 为什么\n\n退出码也有约定：`0` 正常；**`2` 直接拦截**（等同 deny）；其它非零码默认\"放行不阻断\"（fail open），除非你设了 `failClosed: true`（脚本自己崩了也照样拦，安全场景务必打开）。\n\n## 四、实战护栏一：编辑后自动格式化\n\n最实用、零风险的入门 Hook。`.cursor\u002Fhooks.json`：\n\n```json\n{\n  \"version\": 1,\n  \"hooks\": {\n    \"afterFileEdit\": [\n      { \"command\": \".cursor\u002Fhooks\u002Fformat.sh\" }\n    ]\n  }\n}\n```\n\n`.cursor\u002Fhooks\u002Fformat.sh`：\n\n```bash\n#!\u002Fbin\u002Fbash\ninput=$(cat)\nfile=$(echo \"$input\" | jq -r '.file_path \u002F\u002F empty')\n\n# 只格式化前端文件，且文件确实存在\ncase \"$file\" in\n  *.ts|*.tsx|*.js|*.jsx|*.vue|*.css|*.json)\n    [ -f \"$file\" ] && npx prettier --write \"$file\" >\u002Fdev\u002Fnull 2>&1\n    ;;\nesac\nexit 0\n```\n\n从此 AI 写出来的代码**永远是格式化过的**，diff 干净、不再有\"风格噪声\"淹没真实改动。记得 `chmod +x` 让脚本可执行。\n\n## 五、实战护栏二：拦截危险命令\n\n防止 AI（或被提示注入诱导后）执行毁灭性命令。配置：\n\n```json\n{\n  \"version\": 1,\n  \"hooks\": {\n    \"beforeShellExecution\": [\n      { \"command\": \".cursor\u002Fhooks\u002Fguard-shell.sh\", \"failClosed\": true }\n    ]\n  }\n}\n```\n\n`.cursor\u002Fhooks\u002Fguard-shell.sh`：\n\n```bash\n#!\u002Fbin\u002Fbash\ninput=$(cat)\ncmd=$(echo \"$input\" | jq -r '.command \u002F\u002F empty')\n\n# 黑名单：删根、强推、重置硬盘、管道直跑网络脚本等\nif echo \"$cmd\" | grep -Eq 'rm -rf (\u002F|~|\\*)|git push .*--force|:\\(\\)\\{|mkfs|curl .*\\| *sh'; then\n  echo '{\"permission\":\"deny\",\"agent_message\":\"该命令被安全 Hook 拦截：包含高危操作。\"}'\n  exit 0\nfi\necho '{\"permission\":\"allow\"}'\nexit 0\n```\n\n> 这一个脚本，可能就帮你挡住一次\"AI 自信地 `rm -rf` 了不该删的目录\"的事故。`failClosed: true` 保证连脚本本身异常时也不放行。\n\n## 六、实战护栏三：提交前扫描密钥\n\n防止密钥被 AI 不小心写进代码或带进上下文。挂 `beforeSubmitPrompt` 或 `afterFileEdit`：\n\n```bash\n#!\u002Fbin\u002Fbash\ninput=$(cat)\ntext=$(echo \"$input\" | jq -r '.. | strings' 2>\u002Fdev\u002Fnull)\n\nif echo \"$text\" | grep -Eq '(AKIA[0-9A-Z]{16}|sk-[A-Za-z0-9]{20,}|-----BEGIN .*PRIVATE KEY-----)'; then\n  echo '{\"permission\":\"deny\",\"agent_message\":\"检测到疑似密钥，已拦截。请改用环境变量。\"}'\n  exit 0\nfi\necho '{\"permission\":\"allow\"}'\nexit 0\n```\n\n更进阶可以接 `gitleaks` 之类成熟工具，但核心思路一样：**把\"别提交密钥\"从一句口头叮嘱，变成一道机器闸门。**\n\n## 七、用好 Hooks 的几条原则\n\n1. **要快**：Hook 卡在每个动作前，慢了整个体验都拖垮。重活异步做，别在 Hook 里干几十秒的事。\n2. **想清楚失败语义**：安全类（拦截危险命令）用 `failClosed: true`，宁可错杀；体验类（格式化）失败就放过（fail open），别把人卡死。\n3. **事件选最窄的**：能用 `afterFileEdit` 就别用全量 `postToolUse`；能加 matcher 缩小范围就加。\n4. **确认依赖存在**：脚本里用到 `jq`\u002F`prettier`\u002F`node`，先确认它们在 Hook 运行环境的 `$PATH` 里，否则 Hook 静默失效。\n5. **项目 Hook 进 Git**：让整个团队共享同一套护栏——这正是\"团队级安全基线\"的落地方式。\n\n## 八、四块拼图合体\n\n到这里，工程化的四块拼图凑齐了，各司其职：\n\n| 拼图 | 角色 | 解决 |\n|---|---|---|\n| **AGENTS.md \u002F CLAUDE.md** | 记忆 | AI 知道\"项目是什么\" |\n| **Rules** | 规范 | AI 知道\"该怎么写\" |\n| **MCP** | 感官与手脚 | AI 能\"接触外部、动手干活\" |\n| **Hooks** | 护栏 | 关键动作\"被强制把关\" |\n\n记忆让它不跑偏，规范让它写得对，MCP 让它干得了，Hooks 让它出不了大事。**四者叠加，才把 Vibe Coding 从\"一个人手感好时的爽\"，变成\"一个团队、长期、可信赖的工程能力\"。**\n\n## 九、小结\n\n- Hooks 是**确定性硬约束**，补上 Rules\"靠自觉\"的漏洞。\n- 在 `hooks.json` 里挂事件（编辑后、执行命令前、提示发送前……），脚本通过 JSON 决定 allow\u002Fask\u002Fdeny，退出码 `2` 拦截，安全场景用 `failClosed`。\n- 三个高价值护栏：编辑后自动格式化、拦截危险命令、扫描密钥。\n- 原则：快、失败语义清晰、事件选窄、确认依赖、Hook 进版本库。\n\n---\n\n至此，《Vibe Coding 工程化进阶》系列完结。从给 AI 装记忆、立规范、接世界，到上护栏——你已经有了一整套把 AI 编程\"工程化、团队化、可信化\"的方法论。剩下的，就是在你自己的项目里把这四块拼图一块块拼起来。\n\n附件（我在 Lenovo 的相关分享文件）：\n[lenovo-vibe-stage.zip](\u002Fblog\u002Flenovo-vibe-stage.zip)\n","Rules 靠 AI\"自觉\"遵守，但自觉不可靠。Hooks 是确定性的护栏——在 Agent 读写文件、执行命令、调用工具的关键节点强制运行你的脚本：自动格式化、拦截危险命令、扫描密钥。讲清事件、配置、决策协议与一组实战脚本。","\u002Fblog\u002Fcover-04-hooks.png","2026-06-13T07:54:21.500Z",[541],[50],"2026-06-16T07:54:21.532Z","2026-06-17T15:31:42.378Z",{"_id":18,"name":19,"description":20,"cover":8,"created_at":21,"updated_at":21,"id":22},[1206],{"_id":1207,"name":1208,"created_at":1209,"updated_at":1209,"id":541},"6a2d2e8158b719b2465af137","AI","2026-06-13T10:18:41.401Z",[1211],{"name":1212,"avatar":1213,"email":1214,"description":1215,"role":254,"id":50},"Gavin","\u002Fblog\u002FWechatIMG133.jpeg","zzlwte@gmail.com","写代码的,也撸铁。白天搬 JavaScript 砖,晚上举铁,偶尔在这里写写技术沉淀和生活随想。",[1217,1221,1225,1229,1233,1237],{"title":1218,"cover":1219,"created_date":1220,"id":428},"Vibe Coding 工程化进阶（三）：用 MCP 给 AI 接上\"外部世界\"","\u002Fblog\u002Fcover-03-mcp.png","2026-06-12T07:53:52.400Z",{"title":1222,"cover":1223,"created_date":1224,"id":422},"Vibe Coding 工程化进阶（二）：用 Rules 把团队规范变成 AI 的\"条件反射\"","\u002Fblog\u002Fcover-02-rules.png","2026-06-11T07:53:34.400Z",{"title":1226,"cover":1227,"created_date":1228,"id":415},"Vibe Coding 工程化进阶（一）：用 CLAUDE.md \u002F AGENTS.md 给 AI 装上\"项目记忆\"","\u002Fblog\u002Fcover-01-memory.png","2026-06-10T07:53:17.400Z",{"title":1230,"cover":1231,"created_date":1232,"id":387},"前端工程师的 Vibe Coding 最佳实践（三）：质量保障与工程化","\u002Fblog\u002Fcover-03-quality.png","2026-06-04T07:07:15.200Z",{"title":1234,"cover":1235,"created_date":1236,"id":408},"AI 时代如何招前端工程师（三）：面试题库与评分标准","\u002Fblog\u002Fcover-03-questions.png","2026-05-29T07:24:04.100Z",{"title":1238,"cover":1239,"created_date":1240,"id":401},"AI 时代如何招前端工程师（二）：考察范围与面试流程设计","\u002Fblog\u002Fcover-02-process.png","2026-05-28T07:23:57.500Z",[]]