[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-wesm--msgvault":3,"tool-wesm--msgvault":65},[4,23,32,40,49,57],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":22},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,2,"2026-04-05T10:45:23",[13,14,15,16,17,18,19,20,21],"图像","数据工具","视频","插件","Agent","其他","语言模型","开发框架","音频","ready",{"id":24,"name":25,"github_repo":26,"description_zh":27,"stars":28,"difficulty_score":29,"last_commit_at":30,"category_tags":31,"status":22},2181,"OpenHands","OpenHands\u002FOpenHands","OpenHands 是一个专注于 AI 驱动开发的开源平台，旨在让智能体（Agent）像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点，通过自动化流程显著提升开发速度。\n\n无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员，还是需要快速原型验证的技术团队，都能从中受益。OpenHands 提供了灵活多样的使用方式：既可以通过命令行（CLI）或本地图形界面在个人电脑上轻松上手，体验类似 Devin 的流畅交互；也能利用其强大的 Python SDK 自定义智能体逻辑，甚至在云端大规模部署上千个智能体并行工作。\n\n其核心技术亮点在于模块化的软件智能体 SDK，这不仅构成了平台的引擎，还支持高度可组合的开发模式。此外，OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩，证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能，支持与 Slack、Jira 等工具集成，并提供细粒度的权限管理，适合从个人开发者到大型企业的各类用户场景。",70612,3,"2026-04-05T11:12:22",[19,17,20,16],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":10,"last_commit_at":38,"category_tags":39,"status":22},3074,"gpt4free","xtekky\u002Fgpt4free","gpt4free 是一个由社区驱动的开源项目，旨在聚合多种可访问的大型语言模型（LLM）和媒体生成接口，让用户能更灵活、便捷地使用前沿 AI 能力。它解决了直接调用各类模型时面临的接口分散、门槛高或成本昂贵等痛点，通过统一的标准将不同提供商的资源整合在一起。\n\n无论是希望快速集成 AI 功能的开发者、需要多模型对比测试的研究人员，还是想免费体验最新技术的普通用户，都能从中受益。gpt4free 提供了丰富的使用方式：既包含易于上手的 Python 和 JavaScript 客户端库，也支持部署本地图形界面（GUI），更提供了兼容 OpenAI 标准的 REST API，方便无缝替换现有应用后端。\n\n其技术亮点在于强大的多提供商支持架构，能够动态调度包括 Opus、Gemini、DeepSeek 等多种主流模型资源，并支持 Docker 一键部署及本地推理。项目秉持社区优先原则，在降低使用门槛的同时，也为贡献者提供了扩展新接口的便利框架，是探索和利用多样化 AI 资源的实用工具。",65970,"2026-04-04T01:02:03",[16,19,17],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":46,"last_commit_at":47,"category_tags":48,"status":22},2234,"scikit-learn","scikit-learn\u002Fscikit-learn","scikit-learn 是一个基于 Python 构建的开源机器学习库，依托于 SciPy、NumPy 等科学计算生态，旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口，涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具，内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。\n\n对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言，scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点，让用户无需重复造轮子，只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。\n\n其核心技术亮点在于高度一致的 API 设计风格，所有估算器（Estimator）均遵循相同的调用逻辑，极大地降低了学习成本并提升了代码的可读性与可维护性。此外，它还提供了强大的模型选择与评估工具，如交叉验证和网格搜索，帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目，scikit-learn 以其稳定性、详尽的文档和活跃的社区支持，成为连接理论学习与工业级应用的最",65628,1,"2026-04-05T10:10:46",[20,18,14],{"id":50,"name":51,"github_repo":52,"description_zh":53,"stars":54,"difficulty_score":10,"last_commit_at":55,"category_tags":56,"status":22},51,"gstack","garrytan\u002Fgstack","gstack 是 Y Combinator CEO Garry Tan 亲自开源的一套 AI 工程化配置，旨在将 Claude Code 升级为你的虚拟工程团队。面对单人开发难以兼顾产品战略、架构设计、代码审查及质量测试的挑战，gstack 提供了一套标准化解决方案，帮助开发者实现堪比二十人团队的高效产出。\n\n这套配置特别适合希望提升交付效率的创始人、技术负责人，以及初次尝试 Claude Code 的开发者。gstack 的核心亮点在于内置了 15 个具有明确职责的 AI 角色工具，涵盖 CEO、设计师、工程经理、QA 等职能。用户只需通过简单的斜杠命令（如 `\u002Freview` 进行代码审查、`\u002Fqa` 执行测试、`\u002Fplan-ceo-review` 规划功能），即可自动化处理从需求分析到部署上线的全链路任务。\n\n所有操作基于 Markdown 和斜杠命令，无需复杂配置，完全免费且遵循 MIT 协议。gstack 不仅是一套工具集，更是一种现代化的软件工厂实践，让单人开发者也能拥有严谨的工程流程。",64261,"2026-04-05T11:08:43",[17,16],{"id":58,"name":59,"github_repo":60,"description_zh":61,"stars":62,"difficulty_score":10,"last_commit_at":63,"category_tags":64,"status":22},3364,"keras","keras-team\u002Fkeras","Keras 是一个专为人类设计的深度学习框架，旨在让构建和训练神经网络变得简单直观。它解决了开发者在不同深度学习后端之间切换困难、模型开发效率低以及难以兼顾调试便捷性与运行性能的痛点。\n\n无论是刚入门的学生、专注算法的研究人员，还是需要快速落地产品的工程师，都能通过 Keras 轻松上手。它支持计算机视觉、自然语言处理、音频分析及时间序列预测等多种任务。\n\nKeras 3 的核心亮点在于其独特的“多后端”架构。用户只需编写一套代码，即可灵活选择 TensorFlow、JAX、PyTorch 或 OpenVINO 作为底层运行引擎。这一特性不仅保留了 Keras 一贯的高层易用性，还允许开发者根据需求自由选择：利用 JAX 或 PyTorch 的即时执行模式进行高效调试，或切换至速度最快的后端以获得最高 350% 的性能提升。此外，Keras 具备强大的扩展能力，能无缝从本地笔记本电脑扩展至大规模 GPU 或 TPU 集群，是连接原型开发与生产部署的理想桥梁。",63927,"2026-04-04T15:24:37",[20,14,18],{"id":66,"github_repo":67,"name":68,"description_en":69,"description_zh":70,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":81,"owner_email":82,"owner_twitter":83,"owner_website":84,"owner_url":85,"languages":86,"stars":109,"forks":110,"last_commit_at":111,"license":112,"difficulty_score":10,"env_os":113,"env_gpu":114,"env_ram":114,"env_deps":115,"category_tags":121,"github_topics":82,"view_count":10,"oss_zip_url":82,"oss_zip_packed_at":82,"status":22,"created_at":122,"updated_at":123,"faqs":124,"releases":155},2890,"wesm\u002Fmsgvault","msgvault","Archive a lifetime of email and chat. Offline search, analytics, and AI query over your full message history. Powered by DuckDB","msgvault 是一款专为归档和检索个人通信历史设计的开源工具，支持将 Gmail、IMAP 邮箱以及本地邮件文件（如 MBOX、Apple Mail）完整备份至本地。它解决了用户长期依赖云端界面查询邮件的痛点，让数十年的邮件往来、附件及元数据完全脱离网络限制，实现毫秒级的离线搜索与数据分析。\n\n这款软件特别适合注重数据隐私的个人用户、需要分析大量通信记录的研究人员，以及希望将个人知识库接入 AI 助手的开发者。通过内置的 MCP 服务器，用户可以直接在 Claude Desktop 等 AI 代理中快速调用全部历史消息，让 AI“读懂”你的过往沟通。\n\n技术层面，msgvault 基于 DuckDB 构建，利用 Parquet 格式存储数据，即便面对数十万封邮件也能瞬间完成复杂聚合查询。它支持类似 Gmail 的高级全文检索语法，具备增量同步、断点续传及附件去重等功能。此外，其交互式终端界面（TUI）提供了直观的数据钻取分析能力。作为一款 Alpha 阶段的软件，msgvault 正致力于打造一个完全由用户掌控、安全高效的终身消息档案库。","# msgvault\n\n[![Go 1.25+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGo-1.25+-00ADD8?logo=go)](https:\u002F\u002Fgo.dev)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](LICENSE)\n[![Docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocs-msgvault.io-blue)](https:\u002F\u002Fmsgvault.io)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join-5865F2?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FfDnmxB8Wkq)\n\n[Documentation](https:\u002F\u002Fmsgvault.io) · [Setup Guide](https:\u002F\u002Fmsgvault.io\u002Fguides\u002Foauth-setup\u002F) · [Interactive TUI](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Ftui\u002F)\n\n> **Alpha software.** APIs, storage format, and CLI flags may change without notice. Back up your data.\n\nArchive a lifetime of email. Analytics and search in milliseconds, entirely offline.\n\n## Why msgvault?\n\nYour messages are yours. Decades of correspondence, attachments, and history shouldn't be locked behind a web interface or an API. msgvault downloads a complete local copy and then everything runs offline. Search, analytics, and the MCP server all work against local data with no network access required.\n\nCurrently supports Gmail and IMAP sync, plus offline imports from MBOX exports and Apple Mail (.emlx) directories.\n\n## Features\n\n- **Full Gmail backup**: raw MIME, attachments, labels, and metadata\n- **IMAP sync**: archive mail from any standard IMAP server\n- **MBOX \u002F Apple Mail import**: import email from MBOX exports or Apple Mail (.emlx) directories\n- **Interactive TUI**: drill-down analytics over your entire message history, powered by DuckDB over Parquet — connects to a remote `msgvault serve` instance or runs locally\n- **Full-text search**: FTS5 with Gmail-like query syntax (`from:`, `has:attachment`, date ranges)\n- **MCP server**: access your full archive at the speed of thought in Claude Desktop and other MCP-capable AI agents\n- **DuckDB analytics**: millisecond aggregate queries across hundreds of thousands of messages in the TUI, CLI, and MCP server\n- **Incremental sync**: History API picks up only new and changed messages\n- **Multi-account**: archive several Gmail and IMAP accounts in a single database\n- **Resumable**: interrupted syncs resume from the last checkpoint\n- **Content-addressed attachments**: deduplicated by SHA-256\n\n## Installation\n\n**macOS \u002F Linux:**\n```bash\ncurl -fsSL https:\u002F\u002Fmsgvault.io\u002Finstall.sh | bash\n```\n\n**Windows (PowerShell):**\n```powershell\npowershell -ExecutionPolicy ByPass -c \"irm https:\u002F\u002Fmsgvault.io\u002Finstall.ps1 | iex\"\n```\n\nThe installer detects your OS and architecture, downloads the latest release from [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Freleases), verifies the SHA-256 checksum, and installs the binary. You can review the script ([bash](https:\u002F\u002Fmsgvault.io\u002Finstall.sh), [PowerShell](https:\u002F\u002Fmsgvault.io\u002Finstall.ps1)) before running, or download a release binary directly from GitHub.\n\nTo build from source instead (requires **Go 1.25+** and a C\u002FC++ compiler for CGO and to statically link DuckDB):\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault.git\ncd msgvault\nmake install\n```\n\n**Conda-Forge:**\n\nYou can install msgvault [from conda-forge](https:\u002F\u002Fprefix.dev\u002Fchannels\u002Fconda-forge\u002Fpackages\u002Fmsgvault) using Pixi or Conda:\n\n```bash\npixi global install msgvault\nconda install -c conda-forge msgvault\n```\n\n## Quick Start\n\n> **Prerequisites:** You need a Google Cloud OAuth credential before adding an account.\n> Follow the **[OAuth Setup Guide](https:\u002F\u002Fmsgvault.io\u002Fguides\u002Foauth-setup\u002F)** to create one (~5 minutes).\n\n```bash\nmsgvault init-db\nmsgvault add-account you@gmail.com          # opens browser for OAuth\nmsgvault sync-full you@gmail.com --limit 100\nmsgvault tui\n```\n\n## Commands\n\n| Command | Description |\n|---------|-------------|\n| `init-db` | Create the database |\n| `add-account EMAIL` | Authorize a Gmail account (use `--headless` for servers) or add an IMAP account |\n| `sync-full EMAIL` | Full sync (`--limit N`, `--after`\u002F`--before` for date ranges) |\n| `sync EMAIL` | Sync only new\u002Fchanged messages |\n| `tui` | Launch the interactive TUI (`--account` to filter, `--local` to force local) |\n| `search QUERY` | Search messages (`--account` to filter, `--json` for machine output) |\n| `show-message ID` | View full message details (`--json` for machine output) |\n| `mcp` | Start the MCP server for AI assistant integration |\n| `serve` | Run daemon with scheduled sync and HTTP API for remote TUI |\n| `stats` | Show archive statistics |\n| `list-accounts` | List synced email accounts |\n| `verify EMAIL` | Verify archive integrity against Gmail |\n| `export-eml` | Export a message as `.eml` |\n| `import-mbox` | Import email from an MBOX export or `.zip` of MBOX files |\n| `import-emlx` | Import email from an Apple Mail directory tree |\n| `build-cache` | Rebuild the Parquet analytics cache |\n| `update` | Update msgvault to the latest version |\n| `setup` | Interactive first-run configuration wizard |\n| `repair-encoding` | Fix UTF-8 encoding issues |\n| `list-senders` \u002F `list-domains` \u002F `list-labels` | Explore metadata |\n\nSee the [CLI Reference](https:\u002F\u002Fmsgvault.io\u002Fcli-reference\u002F) for full details.\n\n## Importing from MBOX or Apple Mail\n\nImport email from providers that offer MBOX exports or from a local Apple Mail data directory:\n\n```bash\nmsgvault init-db\nmsgvault import-mbox you@example.com \u002Fpath\u002Fto\u002Fexport.mbox\nmsgvault import-mbox you@example.com \u002Fpath\u002Fto\u002Fexport.zip   # zip of MBOX files\nmsgvault import-emlx                                        # auto-discover Apple Mail accounts\nmsgvault import-emlx you@example.com ~\u002FLibrary\u002FMail\u002FV10     # explicit path\n```\n\n## Configuration\n\nAll data lives in `~\u002F.msgvault\u002F` by default (override with `MSGVAULT_HOME`).\n\n```toml\n# ~\u002F.msgvault\u002Fconfig.toml\n[oauth]\nclient_secrets = \"\u002Fpath\u002Fto\u002Fclient_secret.json\"\n\n[sync]\nrate_limit_qps = 5\n```\n\nSee the [Configuration Guide](https:\u002F\u002Fmsgvault.io\u002Fconfiguration\u002F) for all options.\n\n### Multiple OAuth Apps (Google Workspace)\n\nSome Google Workspace organizations require OAuth apps within their org.\nTo use multiple OAuth apps, add named apps to `config.toml`:\n\n```toml\n[oauth]\nclient_secrets = \"\u002Fpath\u002Fto\u002Fdefault_secret.json\"   # for personal Gmail\n\n[oauth.apps.acme]\nclient_secrets = \"\u002Fpath\u002Fto\u002Facme_workspace_secret.json\"\n```\n\nThen specify the app when adding accounts:\n\n```bash\nmsgvault add-account you@acme.com --oauth-app acme\nmsgvault add-account personal@gmail.com              # uses default\n```\n\nTo switch an existing account to a different OAuth app:\n\n```bash\nmsgvault add-account you@acme.com --oauth-app acme   # re-authorizes\n```\n\n## MCP Server\n\nmsgvault includes an MCP server that lets AI assistants search, analyze, and read your archived messages. Connect it to Claude Desktop or any MCP-capable agent and query your full message history conversationally. See the [MCP documentation](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Fchat\u002F) for setup instructions.\n\n## Daemon Mode (NAS\u002FServer)\n\nRun msgvault as a long-running daemon for scheduled syncs and remote access:\n\n```bash\nmsgvault serve\n```\n\nConfigure scheduled syncs in `config.toml`:\n\n```toml\n[[accounts]]\nemail = \"you@gmail.com\"\nschedule = \"0 2 * * *\"   # 2am daily (cron)\nenabled = true\n\n[server]\napi_port = 8080\nbind_addr = \"0.0.0.0\"\napi_key = \"your-secret-key\"\n```\n\nThe TUI can connect to a remote server by configuring `[remote].url`. Use `--local` to force local database when remote is configured. See [docs\u002Fapi.md](docs\u002Fapi.md) for the HTTP API reference.\n\n## Documentation\n\n- [Setup Guide](https:\u002F\u002Fmsgvault.io\u002Fguides\u002Foauth-setup\u002F): OAuth, first sync, headless servers\n- [Searching](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Fsearching\u002F): query syntax and operators\n- [Interactive TUI](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Ftui\u002F): keybindings, views, deletion staging\n- [CLI Reference](https:\u002F\u002Fmsgvault.io\u002Fcli-reference\u002F): all commands and flags\n- [Multi-Account](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Fmulti-account\u002F): managing multiple Gmail accounts\n- [Configuration](https:\u002F\u002Fmsgvault.io\u002Fconfiguration\u002F): config file and environment variables\n- [Architecture](https:\u002F\u002Fmsgvault.io\u002Farchitecture\u002Fstorage\u002F): SQLite, Parquet, and attachment storage\n- [MCP Server](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Fchat\u002F): AI assistant integration\n- [Troubleshooting](https:\u002F\u002Fmsgvault.io\u002Ftroubleshooting\u002F): common issues and fixes\n- [Development](https:\u002F\u002Fmsgvault.io\u002Fdevelopment\u002F): contributing, testing, building\n\n## Community\n\nJoin the [msgvault Discord](https:\u002F\u002Fdiscord.gg\u002FfDnmxB8Wkq) to ask questions, share feedback, report issues, and connect with other users.\n\n## Development\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault.git\ncd msgvault\nmake install-hooks  # install pre-commit hook (requires prek)\nmake test           # run tests\nmake lint           # run linter (auto-fix)\nmake install        # build and install\n```\n\nPre-commit hooks are managed by [prek](https:\u002F\u002Fprek.j178.dev\u002F) (`brew install prek`).\n\n## License\n\nMIT. See [LICENSE](LICENSE) for details.\n","# msgvault\n\n[![Go 1.25+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGo-1.25+-00ADD8?logo=go)](https:\u002F\u002Fgo.dev)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](LICENSE)\n[![Docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocs-msgvault.io-blue)](https:\u002F\u002Fmsgvault.io)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join-5865F2?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FfDnmxB8Wkq)\n\n[文档](https:\u002F\u002Fmsgvault.io) · [设置指南](https:\u002F\u002Fmsgvault.io\u002Fguides\u002Foauth-setup\u002F) · [交互式 TUI](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Ftui\u002F)\n\n> **Alpha 软件。** API、存储格式和 CLI 标志可能会在未经通知的情况下发生变化。请务必备份您的数据。\n\n归档您一生的电子邮件。分析与搜索可在毫秒内完成，完全离线进行。\n\n## 为什么选择 msgvault？\n\n您的消息属于您。数十年的通信记录、附件和历史不应被锁定在网页界面或 API 后面。msgvault 会下载一份完整的本地副本，之后所有操作都在离线状态下进行。搜索、分析以及 MCP 服务器均可基于本地数据运行，无需网络连接。\n\n目前支持 Gmail 和 IMAP 同步，还支持从 MBOX 导出文件和 Apple Mail (.emlx) 目录中进行离线导入。\n\n## 功能\n\n- **完整 Gmail 备份**：原始 MIME、附件、标签和元数据\n- **IMAP 同步**：从任何标准 IMAP 服务器归档邮件\n- **MBOX \u002F Apple Mail 导入**：从 MBOX 导出文件或 Apple Mail (.emlx) 目录中导入邮件\n- **交互式 TUI**：基于 DuckDB 和 Parquet 的钻取式分析，可深入查看您的整个消息历史——可连接到远程 `msgvault serve` 实例，也可在本地运行\n- **全文搜索**：使用 FTS5 引擎，支持类似 Gmail 的查询语法（from:、has:attachment、日期范围等）\n- **MCP 服务器**：在 Claude Desktop 及其他支持 MCP 的 AI 助手上，以极快的速度访问您的完整归档\n- **DuckDB 分析**：在 TUI、CLI 和 MCP 服务器中，对数十万封邮件进行毫秒级聚合查询\n- **增量同步**：History API 只抓取新增和更改的消息\n- **多账户支持**：在一个数据库中归档多个 Gmail 和 IMAP 账户\n- **断点续传**：中断的同步任务可从上次检查点继续\n- **内容寻址的附件**：通过 SHA-256 去重\n\n## 安装\n\n**macOS \u002F Linux:**\n```bash\ncurl -fsSL https:\u002F\u002Fmsgvault.io\u002Finstall.sh | bash\n```\n\n**Windows (PowerShell):**\n```powershell\npowershell -ExecutionPolicy ByPass -c \"irm https:\u002F\u002Fmsgvault.io\u002Finstall.ps1 | iex\"\n```\n\n安装脚本会检测您的操作系统和架构，从 [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Freleases) 下载最新版本，验证 SHA-256 校验和，并安装二进制文件。您可以在运行前查看脚本（[bash](https:\u002F\u002Fmsgvault.io\u002Finstall.sh)、[PowerShell](https:\u002F\u002Fmsgvault.io\u002Finstall.ps1)），或者直接从 GitHub 下载发布版二进制文件。\n\n如果您想从源码构建（需要 **Go 1.25+** 和 C\u002FC++ 编译器以支持 CGO 并静态链接 DuckDB）：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault.git\ncd msgvault\nmake install\n```\n\n**Conda-Forge:**\n\n您可以通过 Pixi 或 Conda 从 conda-forge 安装 msgvault：\n\n```bash\npixi global install msgvault\nconda install -c conda-forge msgvault\n```\n\n## 快速入门\n\n> **先决条件：** 在添加账户之前，您需要一个 Google Cloud OAuth 凭证。\n> 请按照 **[OAuth 设置指南](https:\u002F\u002Fmsgvault.io\u002Fguides\u002Foauth-setup\u002F)** 创建一个 (~5 分钟)。\n\n```bash\nmsgvault init-db\nmsgvault add-account you@gmail.com          # 打开浏览器进行 OAuth 授权\nmsgvault sync-full you@gmail.com --limit 100\nmsgvault tui\n```\n\n## 命令\n\n| 命令       | 描述                           |\n|------------|--------------------------------|\n| `init-db`  | 创建数据库                     |\n| `add-account EMAIL` | 授权 Gmail 账户（使用 `--headless` 可用于服务器）或添加 IMAP 账户 |\n| `sync-full EMAIL` | 全量同步（`--limit N`、`--after`\u002F`--before` 用于指定日期范围） |\n| `sync EMAIL` | 只同步新增或更改的消息         |\n| `tui`      | 启动交互式 TUI（`--account` 用于筛选，`--local` 强制使用本地数据） |\n| `search QUERY` | 搜索消息（`--account` 用于筛选，`--json` 用于机器输出） |\n| `show-message ID` | 查看完整消息详情（`--json` 用于机器输出） |\n| `mcp`      | 启动 MCP 服务器，用于 AI 助手集成 |\n| `serve`    | 运行守护进程，定时同步并提供 HTTP API 供远程 TUI 使用 |\n| `stats`    | 显示归档统计信息               |\n| `list-accounts` | 列出已同步的邮箱账户           |\n| `verify EMAIL` | 验证归档完整性，与 Gmail 对比   |\n| `export-eml` | 将消息导出为 `.eml` 文件        |\n| `import-mbox` | 从 MBOX 导出文件或包含 MBOX 文件的 `.zip` 文件中导入邮件 |\n| `import-emlx` | 从 Apple Mail 目录树中导入邮件 |\n| `build-cache` | 重建 Parquet 分析缓存           |\n| `update`   | 更新 msgvault 到最新版本        |\n| `setup`    | 交互式首次运行配置向导         |\n| `repair-encoding` | 修复 UTF-8 编码问题             |\n| `list-senders` \u002F `list-domains` \u002F `list-labels` | 浏览元数据                     |\n\n更多详细信息请参阅 [CLI 参考](https:\u002F\u002Fmsgvault.io\u002Fcli-reference\u002F)。\n\n## 从 MBOX 或 Apple Mail 导入\n\n您可以从提供 MBOX 导出功能的邮件服务商，或从本地的 Apple Mail 数据目录中导入邮件：\n\n```bash\nmsgvault init-db\nmsgvault import-mbox you@example.com \u002Fpath\u002Fto\u002Fexport.mbox\nmsgvault import-mbox you@example.com \u002Fpath\u002Fto\u002Fexport.zip   # 包含 MBOX 文件的 ZIP 文件\nmsgvault import-emlx                                        # 自动发现 Apple Mail 账户\nmsgvault import-emlx you@example.com ~\u002FLibrary\u002FMail\u002FV10     # 指定路径\n```\n\n## 配置\n\n默认情况下，所有数据都存储在 `~\u002F.msgvault\u002F` 中（可通过 `MSGVAULT_HOME` 环境变量覆盖）。\n\n```toml\n# ~\u002F.msgvault\u002Fconfig.toml\n[oauth]\nclient_secrets = \"\u002Fpath\u002Fto\u002Fclient_secret.json\"\n\n[sync]\nrate_limit_qps = 5\n```\n\n有关所有选项，请参阅 [配置指南](https:\u002F\u002Fmsgvault.io\u002Fconfiguration\u002F)。\n\n### 多个 OAuth 应用程序（Google Workspace）\n\n某些 Google Workspace 组织要求在其内部使用特定的 OAuth 应用程序。\n要使用多个 OAuth 应用程序，可以在 `config.toml` 中添加命名的应用程序：\n\n```toml\n[oauth]\nclient_secrets = \"\u002Fpath\u002Fto\u002Fdefault_secret.json\"   # 用于个人 Gmail\n\n[oauth.apps.acme]\nclient_secrets = \"\u002Fpath\u002Fto\u002Facme_workspace_secret.json\"\n```\n\n然后在添加账户时指定应用：\n\n```bash\nmsgvault add-account you@acme.com --oauth-app acme\nmsgvault add-account personal@gmail.com              # 使用默认应用\n```\n\n如果要将现有账户切换到不同的 OAuth 应用程序：\n\n```bash\nmsgvault add-account you@acme.com --oauth-app acme   # 重新授权\n```\n\n## MCP 服务器\n\nmsgvault 内置了一个 MCP 服务器，允许 AI 助手搜索、分析和阅读您归档的消息。将其连接到 Claude Desktop 或任何支持 MCP 的助手，即可通过对话方式查询您的完整消息历史。有关设置说明，请参阅 [MCP 文档](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Fchat\u002F)。\n\n## 守护进程模式（NAS\u002F服务器）\n\n将 msgvault 作为长期运行的守护进程，用于计划同步和远程访问：\n\n```bash\nmsgvault serve\n```\n\n在 `config.toml` 中配置计划同步：\n\n```toml\n[[accounts]]\nemail = \"you@gmail.com\"\nschedule = \"0 2 * * *\"   # 每天凌晨2点（cron）\nenabled = true\n\n[server]\napi_port = 8080\nbind_addr = \"0.0.0.0\"\napi_key = \"your-secret-key\"\n```\n\n通过配置 `[remote].url`，TUI 可以连接到远程服务器。如果已配置远程服务器，可使用 `--local` 强制使用本地数据库。有关 HTTP API 的参考信息，请参阅 [docs\u002Fapi.md](docs\u002Fapi.md)。\n\n## 文档\n\n- [设置指南](https:\u002F\u002Fmsgvault.io\u002Fguides\u002Foauth-setup\u002F)：OAuth、首次同步、无头服务器\n- [搜索](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Fsearching\u002F)：查询语法和运算符\n- [交互式 TUI](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Ftui\u002F)：快捷键、视图、删除暂存\n- [CLI 参考](https:\u002F\u002Fmsgvault.io\u002Fcli-reference\u002F)：所有命令和标志\n- [多账户](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Fmulti-account\u002F)：管理多个 Gmail 账户\n- [配置](https:\u002F\u002Fmsgvault.io\u002Fconfiguration\u002F)：配置文件和环境变量\n- [架构](https:\u002F\u002Fmsgvault.io\u002Farchitecture\u002Fstorage\u002F)：SQLite、Parquet 和附件存储\n- [MCP 服务器](https:\u002F\u002Fmsgvault.io\u002Fusage\u002Fchat\u002F)：AI 助手集成\n- [故障排除](https:\u002F\u002Fmsgvault.io\u002Ftroubleshooting\u002F)：常见问题及解决方法\n- [开发](https:\u002F\u002Fmsgvault.io\u002Fdevelopment\u002F)：贡献、测试、构建\n\n## 社区\n\n加入 [msgvault Discord](https:\u002F\u002Fdiscord.gg\u002FfDnmxB8Wkq)，提问、分享反馈、报告问题，并与其他用户交流。\n\n## 开发\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault.git\ncd msgvault\nmake install-hooks  # 安装 pre-commit 钩子（需要 prek）\nmake test           # 运行测试\nmake lint           # 运行 linter（自动修复）\nmake install        # 构建并安装\n```\n\npre-commit 钩子由 [prek](https:\u002F\u002Fprek.j178.dev\u002F) 管理（`brew install prek`）。\n\n## 许可证\n\nMIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。","# msgvault 快速上手指南\n\nmsgvault 是一款开源的本地邮件归档与分析工具，支持 Gmail、IMAP、MBOX 及 Apple Mail 数据导入。它能在离线环境下提供毫秒级搜索、数据分析，并支持通过 MCP 协议与 AI 助手集成。\n\n> **注意**：当前为 Alpha 版本，API 和存储格式可能变更，请务必备份重要数据。\n\n## 环境准备\n\n### 系统要求\n- **操作系统**：macOS、Linux 或 Windows (PowerShell)\n- **架构**：自动检测并适配当前系统架构\n\n### 前置依赖\n1. **Google Cloud OAuth 凭证**（仅限 Gmail 用户）：\n   - 在添加 Gmail 账户前，需先在 Google Cloud Console 创建 OAuth 凭证。\n   - 请参考官方 [OAuth 设置指南](https:\u002F\u002Fmsgvault.io\u002Fguides\u002Foauth-setup\u002F)（约需 5 分钟）。\n2. **编译源码可选依赖**（仅当从源码构建时）：\n   - Go 1.25+\n   - C\u002FC++ 编译器（用于 CGO 和静态链接 DuckDB）\n\n## 安装步骤\n\n### 方式一：一键脚本安装（推荐）\n\n**macOS \u002F Linux:**\n```bash\ncurl -fsSL https:\u002F\u002Fmsgvault.io\u002Finstall.sh | bash\n```\n\n**Windows (PowerShell):**\n```powershell\npowershell -ExecutionPolicy ByPass -c \"irm https:\u002F\u002Fmsgvault.io\u002Finstall.ps1 | iex\"\n```\n*脚本会自动下载最新 release、校验 SHA-256 并安装二进制文件。*\n\n### 方式二：包管理器安装\n\n**使用 Conda-Forge (Pixi 或 Conda):**\n```bash\npixi global install msgvault\n# 或\nconda install -c conda-forge msgvault\n```\n\n### 方式三：从源码构建\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault.git\ncd msgvault\nmake install\n```\n\n## 基本使用\n\n以下流程演示如何初始化数据库、授权 Gmail 账户、同步邮件并启动交互式界面。\n\n### 1. 初始化数据库\n创建本地存储数据库：\n```bash\nmsgvault init-db\n```\n\n### 2. 添加账户\n授权你的 Gmail 账户（将自动打开浏览器进行 OAuth 认证）：\n```bash\nmsgvault add-account you@gmail.com\n```\n*注：若是 IMAP 账户或无图形界面服务器，可添加 `--headless` 参数。*\n\n### 3. 同步邮件\n执行全量同步（示例中限制同步最近 100 封邮件以快速测试）：\n```bash\nmsgvault sync-full you@gmail.com --limit 100\n```\n*移除 `--limit` 参数即可同步所有历史邮件。*\n\n### 4. 启动交互式界面 (TUI)\n launches 基于 DuckDB 的分析界面，可查看统计信息及进行搜索：\n```bash\nmsgvault tui\n```\n\n### 其他常用命令\n- **搜索邮件**：\n  ```bash\n  msgvault search \"from:github has:attachment\"\n  ```\n- **启动 MCP 服务**（供 Claude Desktop 等 AI 助手调用）：\n  ```bash\n  msgvault mcp\n  ```\n- **导入 MBOX\u002FApple Mail 数据**：\n  ```bash\n  msgvault import-mbox you@example.com \u002Fpath\u002Fto\u002Fexport.mbox\n  msgvault import-emlx you@example.com ~\u002FLibrary\u002FMail\u002FV10\n  ```\n\n所有数据默认存储在 `~\u002F.msgvault\u002F` 目录下，可通过 `MSGVAULT_HOME` 环境变量自定义路径。详细配置请参考 [配置指南](https:\u002F\u002Fmsgvault.io\u002Fconfiguration\u002F)。","资深数据科学家李工需要复盘过去五年与全球团队的所有项目沟通记录，以提取关键决策路径并训练专属的个人知识助手。\n\n### 没有 msgvault 时\n- **数据孤岛严重**：邮件分散在 Gmail 网页版、本地 Outlook 缓存和旧电脑的 MBOX 文件中，无法统一检索，查找特定附件往往需要登录多个账号翻找数小时。\n- **分析能力缺失**：面对数十万封历史邮件，无法快速统计“某项目期间的沟通频率”或“特定联系人的回复延迟”，只能依靠人工抽样估算，效率极低且不准确。\n- **AI 赋能受阻**：由于隐私顾虑和网络限制，无法将完整的离线邮件历史安全地投喂给本地运行的 AI 模型（如 Claude Desktop），导致 AI 助手缺乏上下文，无法回答基于历史对话的深度问题。\n- **搜索体验割裂**：原生搜索不支持复杂的组合查询（如“包含附件且来自特定域名”），常常漏掉关键信息，且每次搜索都依赖网络连接，速度慢且不稳定。\n\n### 使用 msgvault 后\n- **全域数据归档**：msgvault 一键同步了 Gmail、IMAP 服务器及本地 MBOX\u002FApple Mail 数据，将所有历史邮件、附件和元数据完整存储为本地 Parquet 文件，彻底打破数据孤岛。\n- **毫秒级深度分析**：依托内置的 DuckDB 引擎，李工通过交互式 TUI 瞬间完成跨五年数据的聚合分析，精准生成项目沟通趋势图和关键节点报告。\n- **无缝 AI 集成**：通过 msgvault 提供的 MCP 服务器，本地 AI 助手能直接“思考”全量离线档案，李工可随时询问“去年 Q3 关于架构重构的最终结论是什么”，获得基于完整上下文的精准回答。\n- **强大离线检索**：支持类 Gmail 的高级全文搜索语法，即使在无网环境下也能毫秒级定位包含特定关键词、日期范围或附件类型的邮件，检索体验流畅且私密。\n\nmsgvault 将沉睡的历史通信数据转化为可即时查询、分析和驱动 AI 的本地核心资产，让个人知识管理真正实现了离线化与智能化。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fwesm_msgvault_241cf4e7.png","wesm","Wes McKinney","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fwesm_540563da.jpg","Principal Architect at https:\u002F\u002Fposit.co. Creator of Python pandas and Ibis. Co-creator Apache Arrow. @apache Member and Apache Parquet PMC","@posit-pbc","Nashville, TN",null,"wesmckinn","https:\u002F\u002Fwesmckinney.com","https:\u002F\u002Fgithub.com\u002Fwesm",[87,91,95,99,103,106],{"name":88,"color":89,"percentage":90},"Go","#00ADD8",98.9,{"name":92,"color":93,"percentage":94},"Shell","#89e051",0.5,{"name":96,"color":97,"percentage":98},"PowerShell","#012456",0.3,{"name":100,"color":101,"percentage":102},"Makefile","#427819",0.1,{"name":104,"color":105,"percentage":102},"Dockerfile","#384d54",{"name":107,"color":108,"percentage":102},"Nix","#7e7eff",1608,92,"2026-04-03T14:28:38","MIT","Linux, macOS, Windows","未说明",{"notes":116,"python":114,"dependencies":117},"该工具主要基于 Go 语言开发，非 Python 项目。从源码编译需要 Go 1.25+ 版本及支持 CGO 的 C\u002FC++ 编译器以静态链接 DuckDB。数据存储默认位于 ~\u002F.msgvault\u002F 目录。使用前需配置 Google Cloud OAuth 凭证。支持通过 Conda-Forge (Pixi\u002FConda) 安装预编译二进制文件。",[118,119,120],"Go 1.25+","C\u002FC++ compiler (for CGO)","DuckDB (statically linked)",[14,16],"2026-03-27T02:49:30.150509","2026-04-06T05:17:00.928458",[125,130,135,140,145,150],{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},13369,"如何在无头（headless）Linux 服务器上设置 msgvault 账户？","由于 Google 的 OAuth 设备流不支持 Gmail 范围，无法直接在无头服务器上授权。请按以下步骤操作：\n1. 在带有浏览器的机器上运行：msgvault add-account user@gmail.com\n2. 将生成的令牌文件复制到无头服务器：scp ~\u002F.msgvault\u002Ftokens\u002Fuser@gmail.com.json user@server:~\u002F.msgvault\u002Ftokens\u002F\n3. 在无头服务器上再次运行注册命令：msgvault add-account user@gmail.com\n系统检测到令牌后会自动注册账户，无需浏览器。之后所有命令（sync, tui 等）均可正常使用。","https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fissues\u002F31",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},13370,"Windows 命令行中使用 --config 或 --home 参数时报错怎么办？","Windows 命令行处理单引号的方式特殊（通常应使用双引号），可能导致解析错误。解决方案：\n1. 升级到 v0.6.3 或更高版本，该版本已增加逻辑以自动剥离单引号，提高兼容性。\n2. 在旧版本中，尝试直接使用双引号指定路径，例如：msgvault.exe --home \"C:\\Users\\username\\testing\" stats\n如果仍遇到 'invalid escape in string' 错误，请确保路径中的反斜杠已正确转义或使用正斜杠。","https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fissues\u002F86",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},13371,"如何配置多个邮箱账户进行同步，而不必每次手动修改 config.toml？","现在支持在单个 config.toml 中配置多个账户的令牌。您可以参考官方文档的多账户设置指南：https:\u002F\u002Fwww.msgvault.io\u002Fguides\u002Foauth-setup\u002F#multiple-accounts\n配置完成后，可以直接通过指定邮箱地址来同步特定账户，例如：msgvault sync \"fo@gmail.com\"，无需再手动切换令牌路径。如果您的 GCP 账户策略强制要求每个账户使用独立的 OAuth 应用，请联系维护者以获取对命名 OAuth 应用的支持。","https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fissues\u002F201",{"id":141,"question_zh":142,"answer_zh":143,"source_url":144},13372,"import-emlx 命令无法从 Apple Mail 目录导入邮件怎么办？","这是一个已知的解析问题，特别是在 Apple Mail V10 版本的目录结构下。虽然工具声称支持递归查找，但可能无法正确识别嵌套的 .emlx 文件。\n建议方案：\n1. 检查是否有社区提交的修复补丁（如 PR #166）并尝试应用。\n2. 确认文件权限已完全授予（Full Disk Access），并验证 emlx 文件在终端中可见。\n3. 如果问题依旧，可能需要等待官方更新修复针对 V10 目录结构的解析逻辑。","https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fissues\u002F157",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},13373,"TUI 界面中搜索时输入框内容消失或搜索结果不显示是怎么回事？","这是早期版本中存在的搜索、指标和分页相关的 Bug。当输入部分搜索词（如 'subj'）时，界面可能会错误地清空内容。\n解决方法：请将 msgvault 升级到 v0.6.0 或更高版本。维护者在 #71 中修复了大量相关 Bug，升级后搜索功能将更加稳定可靠。","https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fissues\u002F42",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},13374,"msgvault 是否支持 iCloud、Fastmail 等非 Gmail 的 IMAP 服务？","是的，IMAP 支持（包括 iCloud 和 Fastmail）已经合并到主分支并发布。您现在可以使用 msgvault 连接并同步这些非 Gmail 账户。请确保您使用的是最新版本，以便享受完整的 IMAP 支持功能。","https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fissues\u002F14",[156,161,166,171,176,181,186,191,196,201,206,211,216,221,226,231,236,241,246,251],{"id":157,"version":158,"summary_zh":159,"released_at":160},72061,"v0.11.0","- 支持 Google Workspace 组织使用多个 Google OAuth 应用。\n- 在 `search` 和 `show-message` 的 JSON 输出中添加 `source_conversation_id` 字段。\n\n- 在账户设置过程中输入 IMAP 密码时，以 `*` 号显示遮掩密码。\n- 在 SQLite 状态损坏或分析缓存数据为空时，更好地保护本地数据和缓存的处理。\n\n- 修复 `add-imap` 中 IPv6 地址的 IMAP 主机解析问题。\n- 通过移除针对 IMAP4rev1 服务器的 `ESEARCH RETURN (ALL)` 命令，提升 IMAP 兼容性。","2026-03-25T00:26:46",{"id":162,"version":163,"summary_zh":164,"released_at":165},72062,"v0.10.0","- 增加远程 TUI 支持，使终端界面能够连接到远程 `msgvault` 服务器。\n- 添加 IMAP 账户支持，用于从标准 IMAP 服务器同步邮件。\n- 在 `search` 命令中新增 `--account` 参数，以便将搜索结果限定于特定账户。\n\n- 导入设置过程中自动发现 Apple Mail 账户。\n- 缩短过长的 MIME 解析错误信息，以保持终端输出的可读性。\n\n- 修复 Apple Mail v10 的导入兼容性问题。\n- 防止同步时重新认证导致不同账户的令牌相互混淆。","2026-03-18T18:50:31",{"id":167,"version":168,"summary_zh":169,"released_at":170},72063,"v0.9.0","- 导入时支持现代 Apple Mail V10 目录布局。\n- 添加 `create-subset` 命令，用于从现有归档中生成较小的子集数据库。\n- 添加 `remove-account` 命令，用于删除账户及其关联的本地数据。\n\n- 自动触发重新认证以处理已过期或被撤销的 OAuth 令牌，并新增 `--force` 标志用于手动重新认证。\n- 更新 README 中关于 MBOX 和 Apple Mail 工作流的导入文档。\n\n- 修复导入过程中可能中断导入的外键约束失败问题。","2026-02-26T20:48:02",{"id":172,"version":173,"summary_zh":174,"released_at":175},72064,"v0.8.0","- 新增 `import-mbox` 命令，用于将本地 MBOX 归档导入 msgvault。\n- 新增 `import-emlx` 命令，用于导入 Apple Mail 导出的 `.emlx` 文件。\n- 为自托管归档部署添加 NAS 和 Docker 部署支持。\n- 为 Claude 辅助的分阶段邮件清理功能新增 MCP `stage_deletion`。\n\n- 添加针对其他包管理器的安装说明。\n- 更新 Docker Compose 模板，使其符合当前 Compose 的行为规范。\n- 更新 Docker 及 CI\u002F发布依赖项，以提升构建和发布的可靠性。\n\n- 修复 TUI 标签搜索功能，使标签过滤器能够返回预期结果。\n- 修复聚合搜索行为，确保组合查询返回一致的结果。","2026-02-25T02:52:20",{"id":177,"version":178,"summary_zh":179,"released_at":180},72065,"v0.7.0","## 变更内容\n* @EconoBen 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F77 中添加了 HTTP API 服务器和带计划同步的守护进程模式。\n* @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F102 中新增了忽略 `.gocache\u002F.gopath` 的功能，并添加了“每轮提交一次”的规则。\n* @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F104 中为查询添加了 Gmail 线程 ID，强化了缓存验证机制，并清理了 API 层代码。\n* @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F105 中将安全机器人整合为每次推送仅发布一条评论。\n* @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F106 中进一步增强了安全机器人的鲁棒性。\n* @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F108 中优化了增量同步，并强化了缓存逻辑。\n* @socksy 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F74 中添加了 Nix Flake，并实现了 `vendorHash` 的自动化维护。\n* @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F109 中新增了“隐藏已删除”过滤器，并重构了过滤器模态窗口。\n* @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F111 中修复了批量删除中的 CPU 绑定及用户体验问题。\n* @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F112 中移除了 GitHub Actions 安全审查机器人。\n* @robelkin 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F110 中为 MCP 搜索、列表和聚合工具添加了账号过滤器。\n\n## 新贡献者\n* @EconoBen 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F77 中完成了首次贡献。\n* @socksy 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F74 中完成了首次贡献。\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.6.5...v0.7.0","2026-02-09T03:16:18",{"id":182,"version":183,"summary_zh":184,"released_at":185},72066,"v0.6.5","## 变更内容\n* 修复同步过程中出现的无效 UTF-8 编码问题，并在出错时建议使用修复编码功能，由 @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F98 中完成。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.6.4...v0.6.5","2026-02-07T13:05:32",{"id":187,"version":188,"summary_zh":189,"released_at":190},72067,"v0.6.4","## 变更内容\n* 在同步过程中填充 FTS5 索引，并由 @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F94 中完成对现有数据库的回填\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.6.3...v0.6.4","2026-02-06T20:58:35",{"id":192,"version":193,"summary_zh":194,"released_at":195},72068,"v0.6.3","## 变更内容\n* 由 @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F91 中对 Windows CMD 的 CLI 路径去除了周围的引号\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.6.2...v0.6.3","2026-02-06T14:37:10",{"id":197,"version":198,"summary_zh":199,"released_at":200},72069,"v0.6.2","## 变更内容\n* 修复页面上下滚动时光标位置丢失的问题，由 @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F90 中完成。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.6.1...v0.6.2","2026-02-06T13:18:25",{"id":202,"version":203,"summary_zh":204,"released_at":205},72070,"v0.6.1","## 变更内容\n* 由 @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F75 中添加了 Discord 社区徽章及 README 部分。\n* 由 @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F78 中添加了安全审查机器人和供应链分析功能。\n* 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F79 中将 actions\u002Fsetup-go 从 5.6.0 升级至 6.2.0。\n* 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F81 中将 actions\u002Fupload-artifact 从 4.6.2 升级至 6.0.0。\n* 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F82 中将 actions\u002Fdownload-artifact 从 4.3.0 升级至 7.0.0。\n* 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F83 中将 actions\u002Fsetup-python 从 5.6.0 升级至 6.2.0。\n* 由 @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F85 中将 dependabot[bot] 加入安全审查可信列表。\n* 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F80 中将 softprops\u002Faction-gh-release 从 26994186c0ac3ef5cae75ac16aa32e8153525f77 更新至 de2c0eb89ae2a093876385947365aca7b0e5f844。\n* 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F84 中对 minor-and-patch 分组进行了包含 6 次更新的升级。\n* 由 @wesm 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F87 中添加了 --home CLI 标志，并为 Windows 系统提供了 TOML 转义符错误提示。\n\n## 新贡献者\n* @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F79 中完成了首次贡献。\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.6.0...v0.6.1","2026-02-06T00:30:38",{"id":207,"version":208,"summary_zh":209,"released_at":210},72071,"v0.6.0","## What's Changed\n* Windows update support: .zip archives, .exe binary, testable pipeline by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F67\n* Command Injection Risk in OAuth Browser Launch (CRITICAL) by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F68\n* Fix silent error swallowing in repair_encoding.go by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F70\n* Fix search & navigation bugs: pagination, scroll, stats, and zero-result handling by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F71\n* Add cross-platform secure file permissions with Windows DACL support by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F73\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.5.2...v0.6.0","2026-02-05T17:03:15",{"id":212,"version":213,"summary_zh":214,"released_at":215},72072,"v0.5.2","## What's Changed\n* Bug symlink path travesal by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F59\n* Fix path traversal bug in attachments by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F60\n* Fix missing bounds check in MCP handlers by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F61\n* Bug panic rethrow crashes program by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F62\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.5.1...v0.5.2","2026-02-05T03:26:54",{"id":217,"version":218,"summary_zh":219,"released_at":220},72073,"v0.5.1","## What's Changed\n* Windows support: installer fix, sqlite_scanner elimination, CI, test fixes by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F66\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.5.0...v0.5.1","2026-02-05T02:45:29",{"id":222,"version":223,"summary_zh":224,"released_at":225},72074,"v0.5.0","## What's Changed\n* Add Windows known-issues notice to README by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F46\n* Fix non-functional sync limit by @etbyrd in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F43\n* Windows support: installer, config path fixes, and --config flag by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F48\n* Fix incremental export losing junction table data by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F54\n* Fixed path traversal bug by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F47\n* Bug mime date parse by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F50\n* Bug sql injection by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F49\n* MCP: EmbeddedResource attachments, export_attachment tool, DuckDB type fixes, MIME date fix by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F55\n* Account CLI updates by @etbyrd in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F24\n* Fix cache after deletion by @robelkin in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F53\n* Add export-attachment and export-attachments CLI commands, consolidate shared export logic by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F56\n\n## New Contributors\n* @robelkin made their first contribution in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F53\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.4.0...v0.5.0","2026-02-05T00:42:29",{"id":227,"version":228,"summary_zh":229,"released_at":230},72075,"v0.4.0","## What's Changed\n* Refactoring cleanup: improve code quality with roborev analyze by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F32\n* Add --list flag to delete-staged command by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F33\n* Replace broken --headless device flow with setup instructions by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F34\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.3.0...v0.4.0","2026-02-03T16:42:06",{"id":232,"version":233,"summary_zh":234,"released_at":235},72076,"v0.3.0","## What's Changed\n* Fix broken documentation links in README by @galligan in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F20\n* Add missing rows.Err() check in EnsureParticipantsBatch by @etbyrd in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F10\n* Chore file permission 644 by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F21\n* Allow sync and sync-full to run without args, syncing all accounts by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F25\n* Fix deletion bugs: scope escalation, checkpoint recovery, progress UX by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F26\n\n## New Contributors\n* @galligan made their first contribution in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F20\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.2.0...v0.3.0","2026-02-03T02:46:20",{"id":237,"version":238,"summary_zh":239,"released_at":240},72077,"v0.2.0","## What's Changed\n* Overhaul test suite: shared fixtures, deterministic timing, and reduced boilerplate by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F17\n* chore: Memory efficient string-join by @hughdbrown in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F16\n* Remove built-in chat command in favor of MCP server by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F18\n\n## New Contributors\n* @hughdbrown made their first contribution in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F16\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.1.5...v0.2.0","2026-02-02T23:21:36",{"id":242,"version":243,"summary_zh":244,"released_at":245},72078,"v0.1.4","## What's Changed\n* Show helpful OAuth setup instructions when client_secrets is missing by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F5\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.1.3...v0.1.4","2026-02-02T17:28:07",{"id":247,"version":248,"summary_zh":249,"released_at":250},72079,"v0.1.3","## What's Changed\n* Rename sync-incremental to sync, fix sync elapsed time, TUI and build polish by @wesm in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F2\n\n## New Contributors\n* @wesm made their first contribution in https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fpull\u002F2\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.1.2...v0.1.3","2026-02-02T17:15:27",{"id":252,"version":253,"summary_zh":254,"released_at":255},72080,"v0.1.2","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fwesm\u002Fmsgvault\u002Fcompare\u002Fv0.1.1...v0.1.2","2026-02-02T12:23:55"]