<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>文件系统 | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《Mirage：AI Agent的统一虚拟文件系统》</title><link>https://channel.meo-ai.com/posts/629</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/629</guid><pubDate>Fri, 08 May 2026 23:24:01 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《Mirage：AI Agent的统一虚拟文件系统》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23AI_Tools&quot; title=&quot;#AI_Tools&quot;&gt;#AI_Tools&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23AI_Agent&quot; title=&quot;#AI_Agent&quot;&gt;#AI_Agent&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F&quot; title=&quot;#文件系统&quot;&gt;#文件系统&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Python&quot; title=&quot;#Python&quot;&gt;#Python&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TypeScript&quot; title=&quot;#TypeScript&quot;&gt;#TypeScript&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23SDK&quot; title=&quot;#SDK&quot;&gt;#SDK&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23S3&quot; title=&quot;#S3&quot;&gt;#S3&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Slack&quot; title=&quot;#Slack&quot;&gt;#Slack&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23GitHub&quot; title=&quot;#GitHub&quot;&gt;#GitHub&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Redis&quot; title=&quot;#Redis&quot;&gt;#Redis&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E7%BC%93%E5%AD%98&quot; title=&quot;#缓存&quot;&gt;#缓存&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23OpenAI&quot; title=&quot;#OpenAI&quot;&gt;#OpenAI&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Vercel_AI_SDK&quot; title=&quot;#Vercel_AI_SDK&quot;&gt;#Vercel_AI_SDK&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23LangChain&quot; title=&quot;#LangChain&quot;&gt;#LangChain&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;Mirage 是一个专为 AI Agent 设计的统一虚拟文件系统，它将 S3、Google Drive、Slack、Gmail、Redis 等数十种后端服务挂载到同一棵文件树下。Agent 只需用熟悉的 Unix/bash 工具（如 grep、cat、cp）就能跨服务读写数据，无需学习 N 个 SDK 或 MCP。支持 Python/TypeScript SDK 和 CLI，可嵌入 FastAPI、Express 等应用，并内置双层缓存（索引缓存 + 文件缓存）减少网络开销，兼容 OpenAI Agents SDK、Vercel AI SDK、LangChain 等主流框架。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;- 统一挂载，万物皆文件：把 S3、GDrive、Slack、GitHub、MongoDB、Redis 等后端并排挂载到同一个根目录下，Agent 看到的始终只有一棵树&lt;br /&gt;- 零学习成本：任何懂 bash 的 LLM 都能直接上手，用 &lt;code&gt;grep&lt;/code&gt;、&lt;code&gt;cat&lt;/code&gt;、&lt;code&gt;cp&lt;/code&gt;、&lt;code&gt;wc&lt;/code&gt; 这些经典命令跨服务操作，不用记新 API&lt;br /&gt;- 双层缓存省流量：自带索引缓存（目录列表）和文件缓存（对象字节），默认用内存，也可切 Redis 共享给多进程/多机器&lt;br /&gt;- 多语言 SDK + CLI：提供 Python 和 TypeScript（Node / Browser / Core）SDK，以及轻量 CLI，可嵌入你的 FastAPI、Express 或浏览器应用&lt;br /&gt;- 主流框架即插即用：已适配 OpenAI Agents SDK、Vercel AI SDK、LangChain、Pydantic AI、CAMEL、OpenHands 等&lt;br /&gt;- 工作空间可移植：支持克隆、快照、版本化管理，Agent 运行环境能在机器间迁移而不必重新配置&lt;br /&gt;&lt;br /&gt;文章URL：&lt;a href=&quot;https://github.com/strukto-ai/mirage&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://github.com/strukto-ai/mirage&quot;&gt;https://github.com/strukto-ai/mirage&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://github.com/strukto-ai/mirage&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;The World&apos;s First Virtual Terminal for AI Agents. Contribute to strukto-ai/mirage development by creating an account on GitHub.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;GitHub&lt;/div&gt;
  
  &lt;div class=&quot;link_preview_title&quot;&gt;GitHub - strukto-ai/mirage: The World&apos;s First Virtual Terminal for AI Agents&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;The World&apos;s First Virtual Terminal for AI Agents. Contribute to strukto-ai/mirage development by creating an account on GitHub.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>#文章 探讨了本地优先应用未能广泛流行的原因，主要是因为同步数据难度大</title><link>https://channel.meo-ai.com/posts/469</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/469</guid><pubDate>Fri, 26 Sep 2025 05:51:31 GMT</pubDate><content:encoded>&lt;a href=&quot;/search/result?q=%23%E6%96%87%E7%AB%A0&quot; title=&quot;#文章&quot;&gt;#文章&lt;/a&gt; 探讨了本地优先应用未能广泛流行的原因，主要是因为同步数据难度大。作者介绍了分布式系统中事件排序和冲突解决的两大挑战，并提出了混合逻辑时钟（HLCs）和无冲突复制数据类型（CRDTs）作为解决方案。同时，强调了SQLite在本地优先应用中的优势，并提出了相关开发建议。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://marcobambini.substack.com/p/why-local-first-apps-havent-become&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://marcobambini.substack.com/p/why-local-first-apps-havent-become&quot;&gt;https://marcobambini.substack.com/p/why-local-first-apps-havent-become&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://marcobambini.substack.com/p/why-local-first-apps-havent-become&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Offline-first apps promise instant loading and privacy, but in practice, very few apps get offline support because getting sync right is surprisingly hard.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Substack&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Why Local-First Apps Haven’t Become Popular?&quot; src=&quot;/static/https://cdn4.telesco.pe/file/NKQ_7vCrdPDVyXLnQFsVortUnANH-cZSn1sNvMYDg-UvAecYqIXk3xYDvo0YCKKEVuo04Jgyet5K4n59e_F7IlnzG-4RK1V4dIqlhmeELvSlZAiD3TmjAITX5Q2jaJDuTQkCi3Wd9Ub5d9xpycnxRV4tsI1_w6Sy68l0s3hKRskZzAVHZwevM4vjTqarL_zPl-rG3PDmL8HqAgpAoOYF73PPdngvgGdLod1VoXakVZfcTjEBkpfMtFyFOOdZrMTPSvKp67xnSk6GLd3HqdKtlyVykxIQ3FU5Hr4K2_DEBiy4XcL7qj8FEDIEIMJy80viYEYlLT4k5EHHiUNV3p8hTw.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;Why Local-First Apps Haven’t Become Popular?&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Offline-first apps promise instant loading and privacy, but in practice, very few apps get offline support because getting sync right is surprisingly hard.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>#React #文章 Reshaped 把 Figma 与 React 的组件、Token、状态一次性对齐，内置主题引擎（含深色模式）、无障碍与响应式规范，并提供原子级扩展接口，让团队在“零翻译”设计稿的同时，一句话切换全局主题、保持交互一致，还保留 20 % 的灵活拼装空间，直接省掉 80 % 的 UI 基建成本</title><link>https://channel.meo-ai.com/posts/461</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/461</guid><pubDate>Tue, 16 Sep 2025 01:19:01 GMT</pubDate><content:encoded>&lt;a href=&quot;/search/result?q=%23React&quot; title=&quot;#React&quot;&gt;#React&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%96%87%E7%AB%A0&quot; title=&quot;#文章&quot;&gt;#文章&lt;/a&gt; Reshaped 把 Figma 与 React 的组件、Token、状态一次性对齐，内置主题引擎（含深色模式）、无障碍与响应式规范，并提供原子级扩展接口，让团队在“零翻译”设计稿的同时，一句话切换全局主题、保持交互一致，还保留 20 % 的灵活拼装空间，直接省掉 80 % 的 UI 基建成本。&lt;br /&gt;两年前，Reshaped 迈出了第一步，将 React 包免费开放。这一举措不仅使得独立开发者可以免费使用，也让已经购买源代码许可证的团队可以直接从 npm 安装。如今，Reshaped 宣布全面开源，React 库的源代码已经托管在 GitHub 上，Figma 库也在 Figma 社区中提供。这一转变让创始人感到兴奋，因为他希望这能促进设计与工程社区之间的交流，共同学习如何构建可扩展且保持简洁的设计系统。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://reshaped.so/blog/reshaped-oss&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://reshaped.so/blog/reshaped-oss&quot;&gt;https://reshaped.so/blog/reshaped-oss&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://reshaped.so/blog/reshaped-oss&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;After five years of closed-source, Reshaped is finally open for all – both in React and Figma.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Reshaped&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Reshaped is now open-source - Reshaped&quot; src=&quot;/static/https://cdn4.telesco.pe/file/TV_CbbeFjS_NXuRAYDw2wW2PBsx4wXrdcPO122SHSTCpIQ6koqIc8shBU64vxxWn1xUAkm6oM8irKLAH23xf2Vl11rbYU2KMP1AtWrUq0H3M2pPxHEA21vZGIev4IBErh9k8N2Wylk-L0KtMWj-oZ9fIu8kyW6kMBI1x65jnHPMet9Ej7Rof7jdbEEe6u3ybiByD0SVN0jITWYYSnxakNCvKK-UzU-EY6q8JyYq_yMKYTSMvLp9Ema-LAaYiV5jEHeH4aSZeVW_W9zchwye059gVCDkfDnB2CQWWkfPP1YO3v__7f0utIwT9argPS_sPATswalVoQRdeiZDNd7wb-w.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;Reshaped is now open-source - Reshaped&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;After five years of closed-source, Reshaped is finally open for all – both in React and Figma.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>#文章 深入剖析了在复杂创意软件中打造直观且可靠的撤销/重做系统的全过程，从设计思路到实现细节，再到面临的挑战与未来改进方向，为开发者提供了极具价值的实战经验与技术洞察，极具启发性</title><link>https://channel.meo-ai.com/posts/400</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/400</guid><pubDate>Sat, 28 Jun 2025 06:10:08 GMT</pubDate><content:encoded>&lt;a href=&quot;/search/result?q=%23%E6%96%87%E7%AB%A0&quot; title=&quot;#文章&quot;&gt;#文章&lt;/a&gt; 深入剖析了在复杂创意软件中打造直观且可靠的撤销/重做系统的全过程，从设计思路到实现细节，再到面临的挑战与未来改进方向，为开发者提供了极具价值的实战经验与技术洞察，极具启发性。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://mlacast.com/projects/undo-redo&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://mlacast.com/projects/undo-redo&quot;&gt;https://mlacast.com/projects/undo-redo&lt;/a&gt;</content:encoded></item><item><title>#React #文章 “分层 React 结构”（Layered React Structure，简称 LRS）是一种经过实践验证的 React 项目组织方式，可以帮助开发者更好地管理大型项目</title><link>https://channel.meo-ai.com/posts/310</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/310</guid><pubDate>Thu, 17 Apr 2025 01:46:35 GMT</pubDate><content:encoded>&lt;a href=&quot;/search/result?q=%23React&quot; title=&quot;#React&quot;&gt;#React&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%96%87%E7%AB%A0&quot; title=&quot;#文章&quot;&gt;#文章&lt;/a&gt; “分层 React 结构”（Layered React Structure，简称 LRS）是一种经过实践验证的 React 项目组织方式，可以帮助开发者更好地管理大型项目。它通过明确的分层和组件职责划分，提高了代码的可维护性和可扩展性。如果你正在寻找一种更系统的方式来组织你的 React 项目，LRS 值得一试。&lt;br /&gt;&lt;br /&gt;值得注意：文章提到了文件命名的方式，推荐是`kebob-case`&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://playfulprogramming.com/posts/layered-react-structure&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://playfulprogramming.com/posts/layered-react-structure&quot;&gt;https://playfulprogramming.com/posts/layered-react-structure&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://playfulprogramming.com/posts/layered-react-structure&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;Learn how to scale your React project using Layered React Structure (LRS). Take your app from small-time to enterprise grade by organizing your code better.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Playful Programming&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;Scale Your Project with Layered React Structure&quot; src=&quot;/static/https://cdn4.telesco.pe/file/SsICTDB-29cH-L-is5ZJXn3RuKyfpUtp0C6dXNaIFgIZ9CQN0OSe2QgDBYCMAJhdkuFeMWEAXod1VxyZehAYMEo14QIvj1zQs49cPCvd21sDB7UMgeKG2gUVWoHp5GIJW_vkTJfUDzVHMaHz5T9UXq842vgi_JEPSKFaKNElfbim8WTMp0jGHT7PJ5CyfljNKgzf3JOToTy-HZlKSocmXiV3Nsgczr69UnW65A4H0yceziIxtDsXIp0rV0kDME8_ljGXjWlOaDFNGQr1jl14obkUpJq_xqg2EnpIwaQ0UmU04S48MDc97HRARwjT55qarKC97ZtX54epukE853eAiw.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;Scale Your Project with Layered React Structure&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;Learn how to scale your React project using Layered React Structure (LRS). Take your app from small-time to enterprise grade by organizing your code better.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>#文章 HeadlessUI 流行趋势和选型理由：</title><link>https://channel.meo-ai.com/posts/24</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/24</guid><pubDate>Tue, 05 Nov 2024 16:44:31 GMT</pubDate><content:encoded>&lt;a href=&quot;/search/result?q=%23%E6%96%87%E7%AB%A0&quot; title=&quot;#文章&quot;&gt;#文章&lt;/a&gt; HeadlessUI 流行趋势和选型理由：&lt;br /&gt;1. 定义：无头组件是无样式的UI开发构建块，功能逻辑的复用。&lt;br /&gt;2. 优势：无头组件库默认不包含样式，开发者可以轻松定制样式，避免了与预设样式的竞争。&lt;br /&gt;3. 流行原因： 传统的组件库难以定制样式，而无头库如Radix简化了样式定制过程，使得开发者可以更专注于构建功能而非与组件库作斗争。&lt;br /&gt;4. shadcn：Shadcn提供了基于Radix和Tailwind CSS的可复制组件库，进一步简化了自定义设计系统的搭建过程。&lt;br /&gt;5. 过去流行的组件库如 Material UI 和 AntD 将样式和功能捆绑在一起，虽然开发速度快，但难以定制样式。目前Material 正在开发自己的 headless 版本。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.subframe.com/blog/how-headless-components-became-the-future-for-building-ui-libraries&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://www.subframe.com/blog/how-headless-components-became-the-future-for-building-ui-libraries&quot;&gt;https://www.subframe.com/blog/how-headless-components-became-the-future-for-building-ui-libraries&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://subframe.com/blog/how-headless-components-became-the-future-for-building-ui-libraries&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;A brief history of one of React&apos;s most influential innovations in recent years.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;Subframe&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;How headless components became the future for building UI libraries&quot; src=&quot;/static/https://cdn4.telesco.pe/file/DvTMIKv7nskEhkTyedIfntC-MphgCoUV7_iezu1g0rCv0xgxO7fO7bFAHkquMrFlTsHzqphO_vNIHJhwCZNwluYxbPp8pRpJaawOEYRyFq-8Pdtlk5yKppulNFhcyyEeGDIigOlsXepglWWjV3z1kbPfjCCueCJHWKfSRlCm4779Z1BL0hmjEsse4fTJ7h1gcIEQYtk7A47AQKyw2QQDXIK1Enanw_r32BSzjhS3HmJZRgplikSzD1AkYqF526MYlJCAYFWXqnRX19jVW1-Ng1m05wbUuif1u3ie6rwXereRgv2VXcgPCGNj-sn-u8SoxLiAl5oXPbbNLdPQJdGyzQ.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;How headless components became the future for building UI libraries&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;A brief history of one of React&apos;s most influential innovations in recent years.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item></channel></rss>