[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-zilliztech--memsearch":3,"tool-zilliztech--memsearch":62},[4,18,26,36,46,54],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",160784,2,"2026-04-19T11:32:54",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":42,"last_commit_at":43,"category_tags":44,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,45],"插件",{"id":47,"name":48,"github_repo":49,"description_zh":50,"stars":51,"difficulty_score":32,"last_commit_at":52,"category_tags":53,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"id":55,"name":56,"github_repo":57,"description_zh":58,"stars":59,"difficulty_score":32,"last_commit_at":60,"category_tags":61,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[45,13,15,14],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":78,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":95,"forks":96,"last_commit_at":97,"license":98,"difficulty_score":42,"env_os":99,"env_gpu":100,"env_ram":101,"env_deps":102,"category_tags":111,"github_topics":112,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":130,"updated_at":131,"faqs":132,"releases":160},9867,"zilliztech\u002Fmemsearch","memsearch","A Markdown-first memory system, a standalone library for any AI agent. Inspired by OpenClaw.","memsearch 是一款专为 AI 编程助手打造的跨平台语义记忆系统。它旨在解决不同 AI 代理之间记忆孤立、上下文无法共享的痛点，让用户在 Claude Code、OpenClaw、OpenCode 或 Codex CLI 等任意平台上的对话内容，都能自动转化为可被其他平台检索的知识库，实现“一次记录，处处可用”。\n\n无论是希望提升工作效率的 AI 重度用户，还是致力于构建智能体的开发者，都能从中受益。普通用户只需安装对应插件，即可零配置获得持久的记忆能力；开发者则可通过其提供的 CLI 工具和 Python API，灵活地将记忆工程集成到自己的应用中。\n\nmemsearch 的独特之处在于坚持\"Markdown 优先”理念，所有记忆均以人类可读、可版本控制的 `.md` 文件形式存储，确保数据透明可控。技术层面，它支持混合搜索（结合向量与关键词）、智能去重及文件实时监听同步，并通过三层渐进式检索机制，确保 AI 能精准召回历史上下文。作为一个轻量级独立库，memsearch 让 AI 真正拥有了连贯且可迁移的长期记忆。","\u003Ch1 align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzilliztech_memsearch_readme_6e2e1f7a6e8a.jpg\" alt=\"\" width=\"100\" valign=\"middle\">\n  &nbsp;\n  memsearch\n\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>Cross-platform semantic memory for AI coding agents.\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fmemsearch\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fmemsearch?style=flat-square&color=blue\" alt=\"PyPI\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fclaude-code\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FClaude_Code-plugin-c97539?style=flat-square&logo=claude&logoColor=white\" alt=\"Claude Code\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fopenclaw\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenClaw-plugin-4a9eff?style=flat-square\" alt=\"OpenClaw\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fopencode\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenCode-plugin-22c55e?style=flat-square\" alt=\"OpenCode\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fcodex\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCodex_CLI-plugin-ff6b35?style=flat-square\" alt=\"Codex CLI\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fmemsearch\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-%3E%3D3.10-blue?style=flat-square&logo=python&logoColor=white\" alt=\"Python\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzilliztech\u002Fmemsearch\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fzilliztech\u002Fmemsearch?style=flat-square\" alt=\"License\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzilliztech\u002Fmemsearch\u002Factions\u002Fworkflows\u002Ftest.yml\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fzilliztech\u002Fmemsearch\u002Ftest.yml?branch=main&style=flat-square\" alt=\"Tests\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-memsearch-blue?style=flat-square\" alt=\"Docs\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzilliztech\u002Fmemsearch\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fzilliztech\u002Fmemsearch?style=flat-square\" alt=\"Stars\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.com\u002Finvite\u002FFG6hMJStWu\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-chat-7289da?style=flat-square&logo=discord&logoColor=white\" alt=\"Discord\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fx.com\u002Fzilliz_universe\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ffollow-%40zilliz__universe-000000?style=flat-square&logo=x&logoColor=white\" alt=\"X (Twitter)\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzilliztech_memsearch_readme_bbfb3b230904.png\" alt=\"memsearch demo\" width=\"800\">\n\u003C\u002Fp>\n\n### Why memsearch?\n\n- 🌐 **All Platforms, One Memory** — memories flow across [Claude Code](plugins\u002Fclaude-code\u002FREADME.md), [OpenClaw](plugins\u002Fopenclaw\u002FREADME.md), [OpenCode](plugins\u002Fopencode\u002FREADME.md), and [Codex CLI](plugins\u002Fcodex\u002FREADME.md). A conversation in one agent becomes searchable context in all others — no extra setup\n- 👥 **For Agent Users**, install a plugin and get persistent memory with zero effort; **for Agent Developers**, use the full [CLI](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fcli\u002F) and [Python API](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fpython-api\u002F) to build memory and harness engineering into your own agents\n- 📄 **Markdown is the source of truth** — inspired by [OpenClaw](https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw). Your memories are just `.md` files — human-readable, editable, version-controllable. Milvus is a \"shadow index\": a derived, rebuildable cache\n- 🔍 **Progressive retrieval, hybrid search, smart dedup, live sync** — 3-layer recall (search → expand → transcript); dense vector + BM25 sparse + RRF reranking; SHA-256 content hashing skips unchanged content; file watcher auto-indexes in real time\n\n---\n\n## 🧑‍💻 For Agent Users\n\nPick your platform, install the plugin, and you're done. Each plugin captures conversations automatically and provides semantic recall with zero configuration.\n\n### For Claude Code Users\n\n```bash\n# Install\n\u002Fplugin marketplace add zilliztech\u002Fmemsearch\n\u002Fplugin install memsearch\n# Restart Claude Code to activate the plugin\n```\n\nAfter restarting, just chat with Claude Code as usual. The plugin captures every conversation turn automatically.\n\n**Verify it's working** — after a few conversations, check your memory files:\n\n```bash\nls .memsearch\u002Fmemory\u002F          # you should see daily .md files\ncat .memsearch\u002Fmemory\u002F$(date +%Y-%m-%d).md\n```\n\n**Recall memories** — two ways to trigger:\n\n```\n\u002Fmemory-recall what did we discuss about Redis?\n```\nOr just ask naturally — Claude auto-invokes the skill when it senses the question needs history:\n```\nWe discussed Redis caching before, what was the TTL we chose?\n```\n\n> 📖 [Claude Code Plugin docs](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fclaude-code\u002F) · [Troubleshooting](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fclaude-code\u002Ftroubleshooting\u002F)\n\n### For OpenClaw Users\n\n```bash\n# Install from ClawHub\nopenclaw plugins install clawhub:memsearch\nopenclaw gateway restart\n```\n\nAfter installing, chat in TUI as usual. The plugin captures each turn automatically.\n\n**Verify it's working** — memory files are stored in your agent's workspace:\n\n```bash\n# For the main agent:\nls ~\u002F.openclaw\u002Fworkspace\u002F.memsearch\u002Fmemory\u002F\n# For other agents (e.g. work):\nls ~\u002F.openclaw\u002Fworkspace-work\u002F.memsearch\u002Fmemory\u002F\n```\n\n**Recall memories** — two ways to trigger:\n\n```\n\u002Fmemory-recall what was the batch size limit we set?\n```\nOr just ask naturally — the LLM auto-invokes memory tools when it senses the question needs history:\n```\nWe discussed batch size limits before, what did we decide?\n```\n\n> 📖 [OpenClaw Plugin docs](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fopenclaw\u002F)\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🔧 For OpenCode Users\u003C\u002Fb>\u003C\u002Fsummary>\n\n```json\n\u002F\u002F In ~\u002F.config\u002Fopencode\u002Fopencode.json\n{ \"plugin\": [\"@zilliz\u002Fmemsearch-opencode\"] }\n```\n\nAfter installing, chat in TUI as usual. A background daemon captures conversations.\n\n**Verify it's working:**\n\n```bash\nls .memsearch\u002Fmemory\u002F    # daily .md files appear after a few conversations\n```\n\n**Recall memories** — two ways to trigger:\n\n```\n\u002Fmemory-recall what did we discuss about authentication?\n```\nOr just ask naturally — the LLM auto-invokes memory tools when it senses the question needs history:\n```\nWe discussed the authentication flow before, what was the approach?\n```\n\n> 📖 [OpenCode Plugin docs](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fopencode\u002F)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🔧 For Codex CLI Users\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\n# Install\nbash memsearch\u002Fplugins\u002Fcodex\u002Fscripts\u002Finstall.sh\ncodex --yolo  # needed for ONNX model network access\n```\n\nAfter installing, chat as usual. Hooks capture and summarize each turn.\n\n**Verify it's working:**\n\n```bash\nls .memsearch\u002Fmemory\u002F\n```\n\n**Recall memories** — use the skill:\n\n```\n$memory-recall what did we discuss about deployment?\n```\n\n> 📖 [Codex CLI Plugin docs](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fcodex\u002F)\n\n\u003C\u002Fdetails>\n\n### ⚙️ Configuration (all platforms)\n\nAll plugins share the same memsearch backend. Configure once, works everywhere.\n\n#### Embedding\n\nDefaults to **ONNX bge-m3** — runs locally on CPU, no API key, no cost. On first launch the model (~558 MB) is downloaded from HuggingFace Hub.\n\n```bash\nmemsearch config set embedding.provider onnx     # default — local, free\nmemsearch config set embedding.provider openai   # needs OPENAI_API_KEY\nmemsearch config set embedding.provider ollama   # local, any model\n```\n\n> All providers and models: [Configuration — Embedding Provider](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fhome\u002Fconfiguration\u002F#embedding-provider)\n\n#### Milvus Backend\n\nJust change `milvus_uri` (and optionally `milvus_token`) to switch between deployment modes:\n\n**Milvus Lite** (default) — zero config, single file. Great for getting started:\n\n```bash\n# Works out of the box, no setup needed\nmemsearch config get milvus.uri   # → ~\u002F.memsearch\u002Fmilvus.db\n```\n\n⭐ **Zilliz Cloud** (recommended) — fully managed, [free tier available](https:\u002F\u002Fcloud.zilliz.com\u002Fsignup?utm_source=github&utm_medium=referral&utm_campaign=memsearch-readme) — [sign up](https:\u002F\u002Fcloud.zilliz.com\u002Fsignup?utm_source=github&utm_medium=referral&utm_campaign=memsearch-readme) 👇:\n\n```bash\nmemsearch config set milvus.uri \"https:\u002F\u002Fin03-xxx.api.gcp-us-west1.zillizcloud.com\"\nmemsearch config set milvus.token \"your-api-key\"\n```\n\n\u003Cdetails>\n\u003Csummary>⭐ Sign up for a free Zilliz Cloud cluster\u003C\u002Fsummary>\n\nYou can [sign up](https:\u002F\u002Fcloud.zilliz.com\u002Fsignup?utm_source=github&utm_medium=referral&utm_campaign=memsearch-readme) on Zilliz Cloud to get a free cluster and API key.\n\n![Sign up and get API key](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzilliztech_memsearch_readme_d66df5e37ce0.png)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>Self-hosted Milvus Server (Docker) — for advanced users\u003C\u002Fsummary>\n\nFor multi-user or team environments with a dedicated Milvus instance. Requires Docker. See the [official installation guide](https:\u002F\u002Fmilvus.io\u002Fdocs\u002Finstall_standalone-docker-compose.md).\n\n```bash\nmemsearch config set milvus.uri http:\u002F\u002Flocalhost:19530\n```\n\n\u003C\u002Fdetails>\n\n> 📖 Full configuration guide: [Configuration](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fhome\u002Fconfiguration\u002F) · [Platform comparison](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002F)\n\n---\n\n## 🛠️ For Agent Developers\n\nBeyond ready-to-use plugins, memsearch provides a complete **CLI and Python API** for building memory into your own agents. Whether you're adding persistent context to a custom agent, building a memory-augmented RAG pipeline, or doing harness engineering — the same core engine that powers the plugins is available as a library.\n\n### 🏗️ Architecture Overview\n\n```\n┌──────────────────────────────────────────────────────────────┐\n│                  🧑‍💻 For Agent Users (Plugins)                │\n│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ ┌──────┐ │\n│  │ Claude   │ │ OpenClaw │ │ OpenCode │ │ Codex  │ │ Your │ │\n│  │ Code     │ │ Plugin   │ │ Plugin   │ │ Plugin │ │ App  │ │\n│  └────┬─────┘ └────┬─────┘ └────┬─────┘ └───┬────┘ └──┬───┘ │\n│       └─────────────┴────────────┴───────────┴────────┘     │\n├────────────────────────────┬─────────────────────────────────┤\n│  🛠️ For Agent Developers   │  Build your own with ↓          │\n│  ┌─────────────────────────┴──────────────────────────────┐  │\n│  │           memsearch CLI \u002F Python API                   │  │\n│  │      index · search · expand · watch · compact         │  │\n│  └─────────────────────────┬──────────────────────────────┘  │\n│  ┌─────────────────────────┴──────────────────────────────┐  │\n│  │           Core: Chunker → Embedder → Milvus            │  │\n│  │        Hybrid Search (BM25 + Dense + RRF)              │  │\n│  └────────────────────────────────────────────────────────┘  │\n├──────────────────────────────────────────────────────────────┤\n│  📄 Markdown Files (Source of Truth)                         │\n│  memory\u002F2026-03-27.md · memory\u002F2026-03-26.md · ...           │\n└──────────────────────────────────────────────────────────────┘\n```\n\nPlugins sit on top of the CLI\u002FAPI layer. The API handles indexing, searching, and Milvus sync. Markdown files are always the source of truth — Milvus is a rebuildable shadow index. Everything below the plugin layer is what you use as an agent developer.\n\n### How Plugins Work (Claude Code as example)\n\n**Capture — after each conversation turn:**\n\n```\nUser asks question → Agent responds → Stop hook fires\n                                          │\n                     ┌────────────────────┘\n                     ▼\n              Parse last turn\n                     │\n                     ▼\n         LLM summarizes (haiku)\n         \"- User asked about X.\"\n         \"- Claude did Y.\"\n                     │\n                     ▼\n         Append to memory\u002F2026-03-27.md\n         with \u003C!-- session:UUID --> anchor\n                     │\n                     ▼\n         memsearch index → Milvus\n```\n\n**Recall — 3-layer progressive search:**\n\n```\nUser: \"What did we discuss about batch size?\"\n                     │\n                     ▼\n  L1  memsearch search \"batch size\"    → ranked chunks\n                     │ (need more?)\n                     ▼\n  L2  memsearch expand \u003Cchunk_hash>    → full .md section\n                     │ (need original?)\n                     ▼\n  L3  parse-transcript \u003Csession.jsonl> → raw dialogue\n```\n\n### 📄 Markdown as Source of Truth\n\n```\n  Plugins append ──→  .md files  ←── human editable\n                          │\n                          ▼\n                  memsearch watch (live watcher)\n                          │\n                  detects file change\n                          │\n                          ▼\n                  re-chunk changed .md\n                          │\n                  hash each chunk (SHA-256)\n                          │\n              ┌───────────┴───────────┐\n              ▼                       ▼\n       hash unchanged?          hash is new\u002Fchanged?\n       → skip (no API call)     → embed → upsert to Milvus\n              │                       │\n              └───────────┬───────────┘\n                          ▼\n                ┌──────────────────┐\n                │  Milvus (shadow) │\n                │  always in sync  │\n                │  rebuildable     │\n                └──────────────────┘\n```\n\n### 📦 Installation\n\n```bash\n# Install as a global CLI tool — recommended when you mainly use the\n# `memsearch` command or any of the agent plugins (Claude Code, Codex,\n# OpenClaw, OpenCode), which all shell out to the CLI.\nuv tool install memsearch       # via uv\npipx install memsearch          # via pipx\npip install memsearch           # plain pip\n\n# Install as a project dependency — use this if you want to import\n# `memsearch` from your own Python code (e.g. via the MemSearch class).\nuv add memsearch                # via uv, adds to pyproject.toml\npip install memsearch           # into an activated venv\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Optional embedding providers\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\n# As a CLI tool (recommended — local ONNX, no API key)\nuv tool install \"memsearch[onnx]\"\npipx install \"memsearch[onnx]\"\npip install \"memsearch[onnx]\"\n\n# As a project dependency\nuv add \"memsearch[onnx]\"\n\n# Other options: [openai], [google], [voyage], [jina], [mistral], [ollama], [local], [all]\n```\n\n\u003C\u002Fdetails>\n\n### 🐍 Python API — Give Your Agent Memory\n\n```python\nfrom memsearch import MemSearch\n\nmem = MemSearch(paths=[\".\u002Fmemory\"])\n\nawait mem.index()                                      # index markdown files\nresults = await mem.search(\"Redis config\", top_k=3)    # semantic search\nscoped = await mem.search(\"pricing\", top_k=3, source_prefix=\".\u002Fmemory\u002Fproduct\")\nprint(results[0][\"content\"], results[0][\"score\"])       # content + similarity\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Full example — agent with memory (OpenAI)\u003C\u002Fb> — click to expand\u003C\u002Fsummary>\n\n```python\nimport asyncio\nfrom datetime import date\nfrom pathlib import Path\nfrom openai import OpenAI\nfrom memsearch import MemSearch\n\nMEMORY_DIR = \".\u002Fmemory\"\nllm = OpenAI()                                        # your LLM client\nmem = MemSearch(paths=[MEMORY_DIR])                    # memsearch handles the rest\n\ndef save_memory(content: str):\n    \"\"\"Append a note to today's memory log (OpenClaw-style daily markdown).\"\"\"\n    p = Path(MEMORY_DIR) \u002F f\"{date.today()}.md\"\n    p.parent.mkdir(parents=True, exist_ok=True)\n    with open(p, \"a\") as f:\n        f.write(f\"\\n{content}\\n\")\n\nasync def agent_chat(user_input: str) -> str:\n    # 1. Recall — search past memories for relevant context\n    memories = await mem.search(user_input, top_k=3)\n    context = \"\\n\".join(f\"- {m['content'][:200]}\" for m in memories)\n\n    # 2. Think — call LLM with memory context\n    resp = llm.chat.completions.create(\n        model=\"gpt-4o-mini\",\n        messages=[\n            {\"role\": \"system\", \"content\": f\"You have these memories:\\n{context}\"},\n            {\"role\": \"user\", \"content\": user_input},\n        ],\n    )\n    answer = resp.choices[0].message.content\n\n    # 3. Remember — save this exchange and index it\n    save_memory(f\"## {user_input}\\n{answer}\")\n    await mem.index()\n\n    return answer\n\nasync def main():\n    # Seed some knowledge\n    save_memory(\"## Team\\n- Alice: frontend lead\\n- Bob: backend lead\")\n    save_memory(\"## Decision\\nWe chose Redis for caching over Memcached.\")\n    await mem.index()  # or mem.watch() to auto-index in the background\n\n    # Agent can now recall those memories\n    print(await agent_chat(\"Who is our frontend lead?\"))\n    print(await agent_chat(\"What caching solution did we pick?\"))\n\nasyncio.run(main())\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Anthropic Claude example\u003C\u002Fb> — click to expand\u003C\u002Fsummary>\n\n```bash\npip install memsearch anthropic\n```\n\n```python\nimport asyncio\nfrom datetime import date\nfrom pathlib import Path\nfrom anthropic import Anthropic\nfrom memsearch import MemSearch\n\nMEMORY_DIR = \".\u002Fmemory\"\nllm = Anthropic()\nmem = MemSearch(paths=[MEMORY_DIR])\n\ndef save_memory(content: str):\n    p = Path(MEMORY_DIR) \u002F f\"{date.today()}.md\"\n    p.parent.mkdir(parents=True, exist_ok=True)\n    with open(p, \"a\") as f:\n        f.write(f\"\\n{content}\\n\")\n\nasync def agent_chat(user_input: str) -> str:\n    # 1. Recall\n    memories = await mem.search(user_input, top_k=3)\n    context = \"\\n\".join(f\"- {m['content'][:200]}\" for m in memories)\n\n    # 2. Think — call Claude with memory context\n    resp = llm.messages.create(\n        model=\"claude-sonnet-4-5-20250929\",\n        max_tokens=1024,\n        system=f\"You have these memories:\\n{context}\",\n        messages=[{\"role\": \"user\", \"content\": user_input}],\n    )\n    answer = resp.content[0].text\n\n    # 3. Remember\n    save_memory(f\"## {user_input}\\n{answer}\")\n    await mem.index()\n    return answer\n\nasync def main():\n    save_memory(\"## Team\\n- Alice: frontend lead\\n- Bob: backend lead\")\n    await mem.index()\n    print(await agent_chat(\"Who is our frontend lead?\"))\n\nasyncio.run(main())\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Ollama (fully local, no API key)\u003C\u002Fb> — click to expand\u003C\u002Fsummary>\n\n```bash\npip install \"memsearch[ollama]\"\nollama pull nomic-embed-text          # embedding model\nollama pull llama3.2                  # chat model\n```\n\n```python\nimport asyncio\nfrom datetime import date\nfrom pathlib import Path\nfrom ollama import chat\nfrom memsearch import MemSearch\n\nMEMORY_DIR = \".\u002Fmemory\"\nmem = MemSearch(paths=[MEMORY_DIR], embedding_provider=\"ollama\")\n\ndef save_memory(content: str):\n    p = Path(MEMORY_DIR) \u002F f\"{date.today()}.md\"\n    p.parent.mkdir(parents=True, exist_ok=True)\n    with open(p, \"a\") as f:\n        f.write(f\"\\n{content}\\n\")\n\nasync def agent_chat(user_input: str) -> str:\n    # 1. Recall\n    memories = await mem.search(user_input, top_k=3)\n    context = \"\\n\".join(f\"- {m['content'][:200]}\" for m in memories)\n\n    # 2. Think — call Ollama locally\n    resp = chat(\n        model=\"llama3.2\",\n        messages=[\n            {\"role\": \"system\", \"content\": f\"You have these memories:\\n{context}\"},\n            {\"role\": \"user\", \"content\": user_input},\n        ],\n    )\n    answer = resp.message.content\n\n    # 3. Remember\n    save_memory(f\"## {user_input}\\n{answer}\")\n    await mem.index()\n    return answer\n\nasync def main():\n    save_memory(\"## Team\\n- Alice: frontend lead\\n- Bob: backend lead\")\n    await mem.index()\n    print(await agent_chat(\"Who is our frontend lead?\"))\n\nasyncio.run(main())\n```\n\n\u003C\u002Fdetails>\n\n> 📖 Full Python API reference: [Python API docs](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fpython-api\u002F)\n\n### ⌨️ CLI Usage\n\n**Setup:**\n\n```bash\nmemsearch config init                              # interactive setup wizard\nmemsearch config set embedding.provider onnx       # switch embedding provider\nmemsearch config set milvus.uri http:\u002F\u002Flocalhost:19530  # switch Milvus backend\n```\n\n**Index & Search:**\n\n```bash\nmemsearch index .\u002Fmemory\u002F                          # index markdown files\nmemsearch index .\u002Fmemory\u002F .\u002Fnotes\u002F --force         # re-embed everything\nmemsearch search \"Redis caching\"                   # hybrid search (BM25 + vector)\nmemsearch search \"auth flow\" --top-k 10 --json-output  # JSON for scripting\nmemsearch expand \u003Cchunk_hash>                      # show full section around a chunk\n```\n\n**Live Sync & Maintenance:**\n\n```bash\nmemsearch watch .\u002Fmemory\u002F                          # live file watcher (auto-index on change)\nmemsearch compact                                  # LLM-powered chunk summarization\nmemsearch stats                                    # show indexed chunk count\nmemsearch reset --yes                              # drop all indexed data and rebuild\n```\n\n> 📖 Full CLI reference with all flags: [CLI docs](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fcli\u002F)\n\n## ⚙️ Configuration\n\nEmbedding and Milvus backend settings → [Configuration (all platforms)](#️-configuration-all-platforms)\n\nSettings priority: Built-in defaults → `~\u002F.memsearch\u002Fconfig.toml` → `.memsearch.toml` → CLI flags.\n\n> 📖 Full config guide: [Configuration](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fhome\u002Fconfiguration\u002F)\n\n## 🔗 Links\n\n- 📖 [Documentation](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002F) — full guides, API reference, and architecture details\n- 🔌 [Platform Plugins](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002F) — Claude Code, OpenClaw, OpenCode, Codex CLI\n- 💡 [Design Philosophy](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fdesign-philosophy\u002F) — why markdown, why Milvus, competitor comparison\n- 🦞 [OpenClaw](https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw) — the memory architecture that inspired memsearch\n- 🗄️ [Milvus](https:\u002F\u002Fmilvus.io\u002F) | [Zilliz Cloud](https:\u002F\u002Fcloud.zilliz.com\u002Fsignup?utm_source=github&utm_medium=referral&utm_campaign=memsearch-readme) — the vector database powering memsearch\n\n## 🤝 Contributing\n\nBug reports, feature requests, and pull requests are welcome! See the [Contributing Guide](CONTRIBUTING.md) for development setup, testing, and plugin development instructions. For questions and discussions, join us on [Discord](https:\u002F\u002Fdiscord.com\u002Finvite\u002FFG6hMJStWu).\n\n## 📄 License\n\n[MIT](LICENSE)\n","\u003Ch1 align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzilliztech_memsearch_readme_6e2e1f7a6e8a.jpg\" alt=\"\" width=\"100\" valign=\"middle\">\n  &nbsp;\n  memsearch\n\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>跨平台语义记忆，专为AI编码代理设计。\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fmemsearch\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fmemsearch?style=flat-square&color=blue\" alt=\"PyPI\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fclaude-code\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FClaude_Code-plugin-c97539?style=flat-square&logo=claude&logoColor=white\" alt=\"Claude Code\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fopenclaw\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenClaw-plugin-4a9eff?style=flat-square\" alt=\"OpenClaw\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fopencode\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpenCode-plugin-22c55e?style=flat-square\" alt=\"OpenCode\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fcodex\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCodex_CLI-plugin-ff6b35?style=flat-square\" alt=\"Codex CLI\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fmemsearch\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-%3E%3D3.10-blue?style=flat-square&logo=python&logoColor=white\" alt=\"Python\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzilliztech\u002Fmemsearch\u002Fblob\u002Fmain\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fzilliztech\u002Fmemsearch?style=flat-square\" alt=\"License\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzilliztech\u002Fmemsearch\u002Factions\u002Fworkflows\u002Ftest.yml\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fzilliztech\u002Fmemsearch\u002Ftest.yml?branch=main&style=flat-square\" alt=\"Tests\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-memsearch-blue?style=flat-square\" alt=\"Docs\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fzilliztech\u002Fmemsearch\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fzilliztech\u002Fmemsearch?style=flat-square\" alt=\"Stars\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.com\u002Finvite\u002FFG6hMJStWu\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-chat-7289da?style=flat-square&logo=discord&logoColor=white\" alt=\"Discord\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fx.com\u002Fzilliz_universe\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ffollow-%40zilliz__universe-000000?style=flat-square&logo=x&logoColor=white\" alt=\"X (Twitter)\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzilliztech_memsearch_readme_bbfb3b230904.png\" alt=\"memsearch演示\" width=\"800\">\n\u003C\u002Fp>\n\n### 为什么选择 memsearch？\n\n- 🌐 **全平台，一内存** — 记忆可在 [Claude Code](plugins\u002Fclaude-code\u002FREADME.md)、[OpenClaw](plugins\u002Fopenclaw\u002FREADME.md)、[OpenCode](plugins\u002Fopencode\u002FREADME.md) 和 [Codex CLI](plugins\u002Fcodex\u002FREADME.md) 之间无缝流转。在一个代理中的对话内容会成为其他所有代理中可搜索的上下文——无需额外配置。\n- 👥 **对于代理用户而言**，只需安装插件即可获得持久化记忆，几乎零操作；**对于代理开发者而言**，可以使用完整的 [CLI](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fcli\u002F) 和 [Python API](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fpython-api\u002F) 来构建记忆系统，并将其集成到自己的代理中。\n- 📄 **Markdown 是唯一可信的数据源** — 受 [OpenClaw](https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw) 启发。你的记忆以 `.md` 文件形式存储，既人类可读、可编辑，又能进行版本控制。Milvus 则是一个“影子索引”：一个派生且可重建的缓存。\n- 🔍 **渐进式检索、混合搜索、智能去重、实时同步** — 三层召回机制（搜索 → 扩展 → 转录）；稠密向量 + BM25 稀疏向量 + RRF 重排序；通过 SHA-256 内容哈希跳过未更改的内容；文件监听器可实时自动索引。\n\n---\n\n## 🧑‍💻 对于代理用户\n\n选择你的平台，安装相应的插件，一切就绪。每个插件都会自动捕获对话，并提供语义化的记忆检索功能，无需任何配置。\n\n### 对于 Claude Code 用户\n\n```bash\n# 安装\n\u002Fplugin marketplace add zilliztech\u002Fmemsearch\n\u002Fplugin install memsearch\n# 重启 Claude Code 以激活插件\n```\n\n重启后，你只需像往常一样与 Claude Code 对话即可。插件会自动记录每一轮对话。\n\n**验证是否正常工作** — 进行几次对话后，检查你的记忆文件：\n\n```bash\nls .memsearch\u002Fmemory\u002F          # 应该能看到每日生成的 .md 文件\ncat .memsearch\u002Fmemory\u002F$(date +%Y-%m-%d).md\n```\n\n**回忆记忆** — 触发方式有两种：\n\n```\n\u002Fmemory-recall 我们之前讨论过 Redis 的哪些内容？\n```\n或者直接自然地提问——当 Claude 感知到问题需要历史背景时，会自动调用该技能：\n```\n我们之前讨论过 Redis 缓存，当时选择的 TTL 是多少？\n```\n\n> 📖 [Claude Code 插件文档](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fclaude-code\u002F) · [故障排除](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fclaude-code\u002Ftroubleshooting\u002F)\n\n### 对于 OpenClaw 用户\n\n```bash\n# 从 ClawHub 安装\nopenclaw plugins install clawhub:memsearch\nopenclaw gateway restart\n```\n\n安装完成后，你可以像往常一样在 TUI 中进行对话。插件会自动记录每一回合的交流。\n\n**验证是否正常工作** — 记忆文件会保存在你的代理工作目录中：\n\n```bash\n# 对主代理：\nls ~\u002F.openclaw\u002Fworkspace\u002F.memsearch\u002Fmemory\u002F\n# 对其他代理（如工作代理）：\nls ~\u002F.openclaw\u002Fworkspace-work\u002F.memsearch\u002Fmemory\u002F\n```\n\n**回忆记忆** — 触发方式有两种：\n\n```\n\u002Fmemory-recall 我们设置的批量大小上限是多少？\n```\n或者直接自然地提问——当 LLM 感知到问题需要历史信息时，会自动调用记忆工具：\n```\n我们之前讨论过批量大小限制，最终决定的是什么？\n```\n\n> 📖 [OpenClaw 插件文档](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fopenclaw\u002F)\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🔧 对于 OpenCode 用户\u003C\u002Fb>\u003C\u002Fsummary>\n\n```json\n\u002F\u002F 在 ~\u002F.config\u002Fopencode\u002Fopencode.json 中添加\n{ \"plugin\": [\"@zilliz\u002Fmemsearch-opencode\"] }\n```\n\n安装完成后，你可以在 TUI 中像往常一样进行对话。后台守护进程会自动捕获对话内容。\n\n**验证是否正常工作：**\n\n```bash\nls .memsearch\u002Fmemory\u002F    # 经过几次对话后，会生成每日的 .md 文件\n```\n\n**回忆记忆** — 触发方式有两种：\n\n```\n\u002Fmemory-recall 我们之前讨论过身份验证的哪些内容？\n```\n或者直接自然地提问——当 LLM 感知到问题需要历史背景时，会自动调用记忆工具：\n```\n我们之前讨论过身份验证流程，具体采用了哪种方式？\n```\n\n> 📖 [OpenCode 插件文档](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fopencode\u002F)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🔧 对于 Codex CLI 用户\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\n# 安装\nbash memsearch\u002Fplugins\u002Fcodex\u002Fscripts\u002Finstall.sh\ncodex --yolo  # 用于 ONNX 模型网络访问\n```\n\n安装完成后，你可以照常进行对话。钩子会捕获并总结每一轮交流。\n\n**验证是否正常工作：**\n\n```bash\nls .memsearch\u002Fmemory\u002F\n```\n\n**回忆记忆** — 使用以下技能：\n\n```\n$memory-recall 我们之前讨论过部署的哪些内容？\n```\n\n> 📖 [Codex CLI 插件文档](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002Fcodex\u002F)\n\n\u003C\u002Fdetails>\n\n### ⚙️ 配置（所有平台）\n\n所有插件共享同一个 memsearch 后端。只需配置一次，即可在所有地方使用。\n\n#### 嵌入模型\n\n默认为 **ONNX bge-m3** — 在本地 CPU 上运行，无需 API 密钥，不产生费用。首次启动时，模型文件（约 558 MB）将从 HuggingFace Hub 下载。\n\n```bash\nmemsearch config set embedding.provider onnx     # 默认 — 本地，免费\nmemsearch config set embedding.provider openai   # 需要 OPENAI_API_KEY\nmemsearch config set embedding.provider ollama   # 本地，任意模型\n```\n\n> 所有提供商和模型：[配置 — 嵌入模型提供商](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fhome\u002Fconfiguration\u002F#embedding-provider)\n\n#### Milvus 后端\n\n只需更改 `milvus_uri`（以及可选的 `milvus_token`），即可切换部署模式：\n\n**Milvus Lite**（默认）— 无需配置，单文件部署。非常适合快速上手：\n\n```bash\n# 开箱即用，无需任何设置\nmemsearch config get milvus.uri   # → ~\u002F.memsearch\u002Fmilvus.db\n```\n\n⭐ **Zilliz Cloud**（推荐）— 全托管服务，提供[免费层级](https:\u002F\u002Fcloud.zilliz.com\u002Fsignup?utm_source=github&utm_medium=referral&utm_campaign=memsearch-readme) — [注册](https:\u002F\u002Fcloud.zilliz.com\u002Fsignup?utm_source=github&utm_medium=referral&utm_campaign=memsearch-readme) 👇：\n\n```bash\nmemsearch config set milvus.uri \"https:\u002F\u002Fin03-xxx.api.gcp-us-west1.zillizcloud.com\"\nmemsearch config set milvus.token \"your-api-key\"\n```\n\n\u003Cdetails>\n\u003Csummary>⭐ 注册 Zilliz Cloud 免费集群\u003C\u002Fsummary>\n\n您可以在 Zilliz Cloud [注册](https:\u002F\u002Fcloud.zilliz.com\u002Fsignup?utm_source=github&utm_medium=referral&utm_campaign=memsearch-readme)，获取免费集群和 API 密钥。\n\n![注册并获取 API 密钥](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzilliztech_memsearch_readme_d66df5e37ce0.png)\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>自托管 Milvus 服务器（Docker）— 适用于高级用户\u003C\u002Fsummary>\n\n适用于多用户或团队环境，并拥有专用的 Milvus 实例。需要 Docker。请参阅[官方安装指南](https:\u002F\u002Fmilvus.io\u002Fdocs\u002Finstall_standalone-docker-compose.md)。\n\n```bash\nmemsearch config set milvus.uri http:\u002F\u002Flocalhost:19530\n```\n\n\u003C\u002Fdetails>\n\n> 📖 完整配置指南：[配置](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fhome\u002Fconfiguration\u002F) · [平台对比](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002F)\n\n---\n\n## 🛠️ 适用于智能体开发者\n\n除了开箱即用的插件之外，memsearch 还提供了完整的 **CLI 和 Python API**，用于将记忆功能集成到您自己的智能体中。无论您是为自定义智能体添加持久化上下文、构建基于记忆增强的 RAG 流程，还是一些框架相关的工程工作，驱动插件的核心引擎都可以作为库直接使用。\n\n### 🏗️ 架构概览\n\n```\n┌──────────────────────────────────────────────────────────────┐\n│                  🧑‍💻 适用于智能体用户（插件）                │\n│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ ┌──────┐ │\n│  │ Claude   │ │ OpenClaw │ │ OpenCode │ │ Codex  │ │ Your │ │\n│  │ Code     │ │ Plugin   │ │ Plugin   │ │ Plugin │ │ App  │ │\n│  └────┬─────┘ └────┬─────┘ └────┬─────┘ └───┬────┘ └──┬───┘ │\n│       └─────────────┴────────────┴───────────┴────────┘     │\n├────────────────────────────┬─────────────────────────────────┤\n│  🛠️ 适用于智能体开发者   │  使用 ↓ 自行构建                 │\n│  ┌─────────────────────────┴──────────────────────────────┐  │\n│  │           memsearch CLI \u002F Python API                   │  │\n│  │      index · search · expand · watch · compact         │  │\n│  └─────────────────────────┬──────────────────────────────┘  │\n│  ┌─────────────────────────┴──────────────────────────────┐  │\n│  │           核心：分块器 → 嵌入模型 → Milvus            │  │\n│  │        混合搜索（BM25 + 稠密向量 + RRF）              │  │\n│  └────────────────────────────────────────────────────────┘  │\n├──────────────────────────────────────────────────────────────┤\n│  📄 Markdown 文件（事实来源）                         │\n│  memory\u002F2026-03-27.md · memory\u002F2026-03-26.md · ...           │\n└──────────────────────────────────────────────────────────────┘\n```\n\n插件位于 CLI\u002FAPI 层之上。API 负责索引、搜索以及与 Milvus 的同步。Markdown 文件始终是事实来源——Milvus 是一个可重建的影子索引。插件层以下的部分，正是智能体开发者所使用的部分。\n\n### 插件的工作原理（以 Claude Code 为例）\n\n**捕获 — 每次对话轮次结束后：**\n\n```\n用户提问 → 智能体回复 → 停止钩子触发\n                                          │\n                     ┌────────────────────┘\n                     ▼\n              解析最后一轮对话\n                     │\n                     ▼\n         大语言模型总结（俳句风格）\n         \"- 用户询问了 X。\"\n         \"- Claude 回答了 Y。\"\n                     │\n                     ▼\n         追加到 memory\u002F2026-03-27.md\n         并附带 \u003C!-- session:UUID --> 标记\n                     │\n                     ▼\n         memsearch 索引 → Milvus\n```\n\n**召回 — 三层渐进式搜索：**\n\n```\n用户：“我们之前讨论过批处理大小吗？”\n                     │\n                     ▼\n  L1  memsearch 搜索“批处理大小”    → 排序后的文本片段\n                     │ （还需要更多吗？）\n                     ▼\n  L2  memsearch 展开 \u003Cchunk_hash>    → 整个 .md 片段\n                     │ （需要原始内容吗？）\n                     ▼\n  L3  解析转录本 \u003Csession.jsonl> → 原始对话记录\n```\n\n### 📄 Markdown 作为事实来源\n\n```\n  插件追加 ──→  .md 文件  ←── 可由人工编辑\n                          │\n                          ▼\n                  memsearch 监视器（实时监视）\n                          │\n                  检测到文件变更\n                          │\n                          ▼\n                  重新对变更的 .md 文件进行分块\n                          │\n                  对每个分块计算哈希值（SHA-256）\n                          │\n              ┌───────────┴───────────┐\n              ▼                       ▼\n       分块未变？          分块是新生成的还是已更改？\n       → 跳过（无需 API 调用）     → 嵌入 → 更新至 Milvus\n              │                       │\n              └───────────┬───────────┘\n                          ▼\n                ┌──────────────────┐\n                │  Milvus（影子索引） │\n                │  始终保持同步  │\n                │  可重建         │\n                └──────────────────┘\n```\n\n### 📦 安装\n\n```bash\n# 作为全局 CLI 工具安装 — 当您主要使用 `memsearch` 命令，或者使用任何智能体插件（Claude Code、Codex、OpenClaw、OpenCode）时，建议采用此方式。这些插件都会调用 CLI。\nuv tool install memsearch       # 通过 uv\npipx install memsearch          # 通过 pipx\npip install memsearch           # 通过普通 pip\n\n# 作为项目依赖项安装 — 如果您希望导入\n\n# 从您自己的 Python 代码中使用 `memsearch`（例如通过 MemSearch 类）。\nuv add memsearch                # 使用 uv，添加到 pyproject.toml\npip install memsearch           # 安装到已激活的虚拟环境中\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>可选的嵌入提供商\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\n# 作为 CLI 工具（推荐——本地 ONNX，无需 API 密钥）\nuv tool install \"memsearch[onnx]\"\npipx install \"memsearch[onnx]\"\npip install \"memsearch[onnx]\"\n\n# 作为项目依赖项\nuv add \"memsearch[onnx]\"\n\n# 其他选项：[openai]、[google]、[voyage]、[jina]、[mistral]、[ollama]、[local]、[all]\n```\n\n\u003C\u002Fdetails>\n\n### 🐍 Python API — 为您的代理赋予记忆能力\n\n```python\nfrom memsearch import MemSearch\n\nmem = MemSearch(paths=[\".\u002Fmemory\"])\n\nawait mem.index()                                      # 索引 Markdown 文件\nresults = await mem.search(\"Redis 配置\", top_k=3)    # 语义搜索\nscoped = await mem.search(\"定价\", top_k=3, source_prefix=\".\u002Fmemory\u002Fproduct\")\nprint(results[0][\"content\"], results[0][\"score\"])       # 内容 + 相似度\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>完整示例——带有记忆的代理（OpenAI）\u003C\u002Fb>——点击展开\u003C\u002Fsummary>\n\n```python\nimport asyncio\nfrom datetime import date\nfrom pathlib import Path\nfrom openai import OpenAI\nfrom memsearch import MemSearch\n\nMEMORY_DIR = \".\u002Fmemory\"\nllm = OpenAI()                                        # 您的 LLM 客户端\nmem = MemSearch(paths=[MEMORY_DIR])                    # MemSearch 处理其余部分\n\ndef save_memory(content: str):\n    \"\"\"将笔记追加到今天的记忆日志中（类似于 OpenClaw 的每日 Markdown 格式）。\"\"\"\n    p = Path(MEMORY_DIR) \u002F f\"{date.today()}.md\"\n    p.parent.mkdir(parents=True, exist_ok=True)\n    with open(p, \"a\") as f:\n        f.write(f\"\\n{content}\\n\")\n\nasync def agent_chat(user_input: str) -> str:\n    # 1. 回忆——搜索过往记忆以获取相关上下文\n    memories = await mem.search(user_input, top_k=3)\n    context = \"\\n\".join(f\"- {m['content'][:200]}\" for m in memories)\n\n    # 2. 思考——调用 LLM 并结合记忆上下文\n    resp = llm.chat.completions.create(\n        model=\"gpt-4o-mini\",\n        messages=[\n            {\"role\": \"system\", \"content\": f\"你有以下记忆：\\n{context}\"},\n            {\"role\": \"user\", \"content\": user_input},\n        ],\n    )\n    answer = resp.choices[0].message.content\n\n    # 3. 记住——保存此次对话并将其索引\n    save_memory(f\"## {user_input}\\n{answer}\")\n    await mem.index()\n\n    return answer\n\nasync def main():\n    # 预先存储一些知识\n    save_memory(\"## 团队\\n- Alice：前端负责人\\n- Bob：后端负责人\")\n    save_memory(\"## 决策\\n我们选择了 Redis 作为缓存方案，而非 Memcached。\")\n    await mem.index()  # 或者使用 mem.watch() 在后台自动索引\n\n    # 代理现在可以回忆起这些记忆\n    print(await agent_chat(\"我们的前端负责人是谁？\"))\n    print(await agent_chat(\"我们选择了哪种缓存方案？\"))\n\nasyncio.run(main())\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Anthropic Claude 示例\u003C\u002Fb>——点击展开\u003C\u002Fsummary>\n\n```bash\npip install memsearch anthropic\n```\n\n```python\nimport asyncio\nfrom datetime import date\nfrom pathlib import Path\nfrom anthropic import Anthropic\nfrom memsearch import MemSearch\n\nMEMORY_DIR = \".\u002Fmemory\"\nllm = Anthropic()\nmem = MemSearch(paths=[MEMORY_DIR])\n\ndef save_memory(content: str):\n    p = Path(MEMORY_DIR) \u002F f\"{date.today()}.md\"\n    p.parent.mkdir(parents=True, exist_ok=True)\n    with open(p, \"a\") as f:\n        f.write(f\"\\n{content}\\n\")\n\nasync def agent_chat(user_input: str) -> str:\n    # 1. 回忆\n    memories = await mem.search(user_input, top_k=3)\n    context = \"\\n\".join(f\"- {m['content'][:200]}\" for m in memories)\n\n    # 2. 思考——调用 Claude 并结合记忆上下文\n    resp = llm.messages.create(\n        model=\"claude-sonnet-4-5-20250929\",\n        max_tokens=1024,\n        system=f\"你有以下记忆：\\n{context}\",\n        messages=[{\"role\": \"用户\", \"内容\": user输入}],\n    )\n    answer = resp.content[0].text\n\n    # 3. 记住\n    save_memory(f\"## {user输入}\\n{答案}\")\n    await mem.index()\n    return answer\n\nasync def main():\n    save_memory(\"## 团队\\n- Alice：前端负责人\\n- Bob：后端负责人\")\n    await mem.index()\n    print(await agent_chat(\"我们的前端负责人是谁？\"))\n\nasyncio.run(main())\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Ollama（完全本地，无需 API 密钥）\u003C\u002Fb>——点击展开\u003C\u002Fsummary>\n\n```bash\npip install \"memsearch[ollama]\"\nollama pull nomic-embed-text          # 嵌入模型\nollama pull llama3.2                  # 对话模型\n```\n\n```python\nimport asyncio\nfrom datetime import date\nfrom pathlib import Path\nfrom ollama import chat\nfrom memsearch import MemSearch\n\nMEMORY_DIR = \".\u002Fmemory\"\nmem = MemSearch(paths=[MEMORY_DIR], embedding_provider=\"ollama\")\n\ndef save_memory(content: str):\n    p = Path(MEMORY_DIR) \u002F f\"{date.today()}.md\"\n    p.parent.mkdir(parents=True, exist_ok=True)\n    with open(p, \"a\") as f:\n        f.write(f\"\\n{content}\\n\")\n\nasync def agent_chat(user_input: str) -> str:\n    # 1. 回忆\n    memories = await mem.search(user_input, top_k=3)\n    context = \"\\n\".join(f\"- {m['content'][:200]}\" for m in memories)\n\n    # 2. 思考——在本地调用 Ollama\n    resp = chat(\n        model=\"llama3.2\",\n        messages=[\n            {\"role\": \"系统\", \"内容\": f\"你有以下记忆：\\n{context}\"},\n            {\"role\": \"用户\", \"内容\": user输入},\n        ],\n    )\n    answer = resp.message.content\n\n    # 3. 记住\n    save_memory(f\"## {user输入}\\n{答案}\")\n    await mem.index()\n    return answer\n\nasync def main():\n    save_memory(\"## 团队\\n- Alice：前端负责人\\n- Bob：后端负责人\")\n    await mem.index()\n    print(await agent_chat(\"我们的前端负责人是谁？\"))\n\nasyncio.run(main())\n```\n\n\u003C\u002Fdetails>\n\n> 📖 完整的 Python API 参考文档：[Python API 文档](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fpython-api\u002F)\n\n### ⌨️ CLI 使用方法\n\n**设置：**\n\n```bash\nmemsearch config init                              # 交互式设置向导\nmemsearch config set embedding.provider onnx       # 切换嵌入提供商\nmemsearch config set milvus.uri http:\u002F\u002Flocalhost:19530  # 切换 Milvus 后端\n```\n\n**索引与搜索：**\n\n```bash\nmemsearch index .\u002Fmemory\u002F                          # 索引 Markdown 文件\nmemsearch index .\u002Fmemory\u002F .\u002Fnotes\u002F --force         # 重新嵌入所有内容\nmemsearch search \"Redis 缓存\"                   # 混合搜索（BM25 + 向量）\nmemsearch search \"认证流程\" --top-k 10 --json-output  # 输出 JSON 格式以便脚本处理\nmemsearch expand \u003Cchunk_hash>                      # 显示某个分块周围的完整段落\n```\n\n**实时同步与维护：**\n\n```bash\nmemsearch watch .\u002Fmemory\u002F                          # 实时文件监视器（文件更改时自动索引）\nmemsearch compact                                  # 基于 LLM 的分块摘要\nmemsearch stats                                    # 显示已索引的分块数量\nmemsearch reset --yes                              # 清除所有已索引的数据并重新构建\n```\n\n> 📖 包含所有标志的完整 CLI 参考文档：[CLI 文档](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fcli\u002F)\n\n## ⚙️ 配置\n\n嵌入模型和 Milvus 后端设置 → [配置（所有平台）](#️-configuration-all-platforms)\n\n设置优先级：内置默认值 → `~\u002F.memsearch\u002Fconfig.toml` → `.memsearch.toml` → CLI 标志。\n\n> 📖 完整配置指南：[配置](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fhome\u002Fconfiguration\u002F)\n\n## 🔗 链接\n\n- 📖 [文档](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002F) — 完整指南、API 参考和架构细节\n- 🔌 [平台插件](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fplatforms\u002F) — Claude Code、OpenClaw、OpenCode、Codex CLI\n- 💡 [设计哲学](https:\u002F\u002Fzilliztech.github.io\u002Fmemsearch\u002Fdesign-philosophy\u002F) — 为什么使用 Markdown、为什么选择 Milvus、竞争对手对比\n- 🦞 [OpenClaw](https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw) — 激发 memsearch 灵感的内存架构\n- 🗄️ [Milvus](https:\u002F\u002Fmilvus.io\u002F) | [Zilliz Cloud](https:\u002F\u002Fcloud.zilliz.com\u002Fsignup?utm_source=github&utm_medium=referral&utm_campaign=memsearch-readme) — 为 memsearch 提供支持的向量数据库\n\n## 🤝 贡献\n\n欢迎提交 bug 报告、功能请求和拉取请求！请参阅 [贡献指南](CONTRIBUTING.md)，了解开发环境搭建、测试以及插件开发的相关说明。如有疑问或想参与讨论，请加入我们的 [Discord](https:\u002F\u002Fdiscord.com\u002Finvite\u002FFG6hMJStWu) 社区。\n\n## 📄 许可证\n\n[MIT](LICENSE)","# memsearch 快速上手指南\n\n**memsearch** 是一款跨平台的 AI 编程助手语义记忆工具。它能让 Claude Code、OpenClaw、OpenCode 和 Codex CLI 等不同代理共享同一份记忆上下文，无需额外配置即可实现对话内容的自动捕获与语义检索。\n\n## 环境准备\n\n*   **操作系统**：支持 Windows、macOS、Linux（跨平台）。\n*   **Python 版本**：>= 3.10。\n*   **前置依赖**：\n    *   已安装你常用的 AI 代理工具（如 Claude Code、OpenClaw 等）。\n    *   网络连接：首次运行时会自动从 HuggingFace 下载嵌入模型（约 558 MB），或使用本地\u002F云端向量数据库。\n\n## 安装步骤\n\n根据你的使用场景选择以下一种方式：\n\n### 方案 A：作为插件安装（推荐普通用户）\n\n直接在你使用的 AI 代理中安装插件，即可自动启用记忆功能。\n\n**1. Claude Code 用户**\n```bash\n\u002Fplugin marketplace add zilliztech\u002Fmemsearch\n\u002Fplugin install memsearch\n# 安装后请重启 Claude Code 以激活插件\n```\n\n**2. OpenClaw 用户**\n```bash\nopenclaw plugins install clawhub:memsearch\nopenclaw gateway restart\n```\n\n**3. OpenCode 用户**\n在 `~\u002F.config\u002Fopencode\u002Fopencode.json` 中添加：\n```json\n{ \"plugin\": [\"@zilliz\u002Fmemsearch-opencode\"] }\n```\n\n**4. Codex CLI 用户**\n```bash\nbash memsearch\u002Fplugins\u002Fcodex\u002Fscripts\u002Finstall.sh\ncodex --yolo  # 需要此参数以允许 ONNX 模型访问网络\n```\n\n### 方案 B：独立安装（推荐开发者）\n\n如果你需要直接使用 CLI 或 Python API 构建自己的代理：\n\n```bash\npip install memsearch\n```\n\n## 基本使用\n\n安装完成后，memsearch 会自动在后台运行，无需复杂配置。\n\n### 1. 验证运行状态\n进行几次正常的对话后，检查是否生成了记忆文件（Markdown 格式）：\n\n```bash\n# 查看生成的每日记忆文件\nls .memsearch\u002Fmemory\u002F\ncat .memsearch\u002Fmemory\u002F$(date +%Y-%m-%d).md\n```\n\n### 2. 触发记忆检索\n你可以通过两种方式让 AI 回顾历史上下文：\n\n*   **显式命令**：直接调用记忆技能。\n    ```text\n    \u002Fmemory-recall 我们之前讨论过 Redis 的什么内容？\n    ```\n*   **自然提问**：直接询问历史细节，AI 会自动感知并调用记忆工具。\n    ```text\n    我们之前讨论过 Redis 缓存，当时设置的 TTL 是多少？\n    ```\n\n### 3. 核心配置（可选）\n\n所有插件共享同一套后端配置，修改一次即可全局生效。\n\n**切换嵌入模型提供者 (Embedding Provider)**\n默认使用本地免费的 **ONNX bge-m3** 模型。如需切换：\n```bash\n# 使用 OpenAI (需设置 OPENAI_API_KEY)\nmemsearch config set embedding.provider openai\n\n# 使用本地 Ollama\nmemsearch config set embedding.provider ollama\n```\n\n**切换向量数据库后端 (Milvus Backend)**\n默认使用 **Milvus Lite**（单文件模式，零配置）。如需使用云端或自建服务：\n\n*   **使用 Zilliz Cloud (推荐，有免费额度)**\n    ```bash\n    memsearch config set milvus.uri \"https:\u002F\u002Fin03-xxx.api.gcp-us-west1.zillizcloud.com\"\n    memsearch config set milvus.token \"your-api-key\"\n    ```\n*   **使用自建 Milvus (Docker)**\n    ```bash\n    memsearch config set milvus.uri http:\u002F\u002Flocalhost:19530\n    ```\n\n> **提示**：记忆数据以 `.md` 文件为唯一真实源（Source of Truth），Milvus 仅作为可重建的索引缓存，支持人工编辑和版本控制。","资深全栈工程师小李正在同时使用 Claude Code 和 Codex CLI 维护一个复杂的微服务架构，他需要在不同会话中频繁切换上下文并复用之前的决策逻辑。\n\n### 没有 memsearch 时\n- **记忆断层严重**：在 Claude Code 中讨论确定的数据库重构方案，切换到 Codex CLI 时需要重新粘贴大量背景信息，否则新会话对历史一无所知。\n- **检索效率低下**：想要查找上周关于“支付网关超时”的排查结论，只能依靠模糊的记忆手动翻阅聊天记录或本地笔记，耗时且容易遗漏。\n- **知识难以沉淀**：关键的架构决策散落在各次对话的临时上下文中，无法形成可版本控制的文档，新人接手项目时极易重复踩坑。\n- **多工具协同割裂**：不同 AI 助手之间如同孤岛，无法共享语义记忆，导致每次切换工具都像是在重新开始一个新项目。\n\n### 使用 memsearch 后\n- **跨平台记忆无缝流转**：在 Claude Code 中生成的架构决策自动同步为 Markdown 文件，Codex CLI 能立即感知并基于此继续开发，实现“一处对话，全局可用”。\n- **语义检索精准高效**：只需输入自然语言如“支付网关超时怎么解决的”，memsearch 即可通过混合搜索（向量 + 关键词）瞬间定位到相关历史片段和代码建议。\n- **知识资产自动化管理**：所有记忆以 `.md` 文件形式存储，天然支持 Git 版本控制，团队可随时审查、编辑并沉淀为永久性的项目知识库。\n- **实时同步零配置**：后台文件监听器自动索引新增内容，无需手动触发更新，确保所有连接的 AI 代理始终拥有最新的项目上下文。\n\nmemsearch 将分散的 AI 对话转化为可持久化、可检索且跨平台流通的团队核心知识资产，彻底打破了智能体间的记忆孤岛。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzilliztech_memsearch_bbfb3b23.gif","zilliztech","Zilliz","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fzilliztech_c42ecbb4.png","Vector Database for Enterprise-grade AI and LLM applications",null,"info@zilliz.com","zilliz_universe","https:\u002F\u002Fzilliz.com\u002Fcloud","https:\u002F\u002Fgithub.com\u002Fzilliztech",[83,87,91],{"name":84,"color":85,"percentage":86},"Python","#3572A5",62.5,{"name":88,"color":89,"percentage":90},"Shell","#89e051",25.5,{"name":92,"color":93,"percentage":94},"TypeScript","#3178c6",12,1257,116,"2026-04-19T15:43:08","MIT","Linux, macOS, Windows","非必需。默认使用 ONNX bge-m3 模型，可在 CPU 上运行；若使用其他提供商（如 Ollama）则取决于具体模型需求","未说明（默认本地模型约 558 MB，建议常规开发内存即可）",{"notes":103,"python":104,"dependencies":105},"跨平台工具，支持 Claude Code、OpenClaw、OpenCode 和 Codex CLI。默认嵌入模型为 ONNX bge-m3（约 558 MB），首次运行时从 HuggingFace 下载。存储后端默认为 Milvus Lite（单文件数据库），也可配置为 Zilliz Cloud 或自托管 Milvus。记忆以 Markdown 文件形式存储，Milvus 仅作为可重建的索引缓存。",">=3.10",[106,107,108,109,110],"milvus-lite","onnxruntime","bge-m3 (via HuggingFace)","openai (可选)","ollama (可选)",[14,13,45],[113,114,115,116,117,6,118,119,120,121,122,123,124,125,126,127,38,128,129],"agent-memory","claude-code","claude-code-plugin","clawdbot","memory","progressive-disclosure","rag","agent","embeddings","milvus","semantic-search","ai-agents","harness","hybrid-search","long-term-memory","reranker","skills","2026-03-27T02:49:30.150509","2026-04-20T07:17:57.418791",[133,138,143,148,152,156],{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},44315,"当存在多个工作目录（如临时目录）时，memory-recall 技能为何会搜索错误的集合？","这是因为 memsearch 默认将主工作目录视为项目根目录来推导集合名称。如果主目录是临时目录（如 \u002Ftmp），且其中不包含 .memsearch\u002F 文件夹，会导致集合名称错误。\n\n解决方案：\n1. 将临时工作空间从 \u002Ftmp 移动到项目本地路径（例如：将 `mkdir -p \u002Ftmp\u002Fmulti-plan-*` 改为 `mkdir -p .claude\u002Fmulti-plan-workspace`）。\n2. 确保主工作目录始终指向包含 .memsearch\u002F 的真实项目根目录。\n3. 在工作流结束时清理临时目录（如 `rm -rf .claude\u002Fmulti-plan-workspace`）。\n\n注意：目前 Claude Code 尚未向 hooks\u002Fskills 暴露完整的工作目录列表，因此这是推荐的变通方法。","https:\u002F\u002Fgithub.com\u002Fzilliztech\u002Fmemsearch\u002Fissues\u002F199",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},44316,"在 macOS 上使用 Lite 模式时，memsearch index 命令卡住不动怎么办？","该问题是由依赖库 `pymilvus` 版本 2.6.10 中的一个 Bug 引起的，该版本在创建 gRPC 通道时缺少地址参数，导致无限挂起。\n\n解决方法：\n1. 升级 memsearch 到 v0.1.17 或更高版本，该版本已排除有问题的 pymilvus 版本：\n   ```bash\n   pip install --upgrade memsearch\n   # 或者\n   uvx memsearch@latest --help\n   ```\n2. 如果无法立即升级，可以手动降级 pymilvus 到 2.6.10 以下的版本（如 2.5.18）：\n   ```bash\n   pip install \"pymilvus\u003C2.6.10\"\n   ```\n3. 清理残留的锁文件（通常位于 ~\u002F.openclaw\u002Fmemsearch\u002F.elite-memory.db.lock 或类似路径）并杀死残留的 milvus 进程后重试。","https:\u002F\u002Fgithub.com\u002Fzilliztech\u002Fmemsearch\u002Fissues\u002F203",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},44317,"memsearch 是否支持基于知识图谱的事实与关系推理功能？","不支持。memsearch 目前不采用提取实体和关系的知识图谱（KG）方式。\n\n项目坚持“Markdown 优先”的设计理念，主要依赖混合检索策略（稠密向量 + BM25 + RRF 倒数排名融合）来实现记忆召回。这种方式轻量、快速且无需额外依赖。\n\n虽然基于模型的重排序（Model-based reranking，如 Cohere Rerank 或 BGE Reranker）能提供更精确的结果，但会增加延迟和成本。目前该功能仅在路线图中作为可选的高级特性考虑，并非核心方向。","https:\u002F\u002Fgithub.com\u002Fzilliztech\u002Fmemsearch\u002Fissues\u002F93",{"id":149,"question_zh":150,"answer_zh":151,"source_url":147},44318,"RRF（倒数排名融合）与基于模型的重排序相比有什么优缺点？","RRF（当前默认方案）：\n- 优点：轻量、快速、无额外依赖，不需要调用额外的模型接口。它通过简单的公式合并稠密检索和 BM25 的结果。\n- 适用场景：会话记忆召回，其中文本块较短且查询相对直接。\n\n基于模型的重排序（如 Cross-encoders）：\n- 优点：理论上结果更精准，特别是对于细微差别或模糊的查询，因为它能捕捉查询与文档间细粒度的语义交互。\n- 缺点：会增加延迟（每次搜索需额外推理）、增加依赖项，且如果是 API 服务还会产生费用。\n\n结论：对于大多数常规用例，RRF 已经表现良好；只有在对精度有极高要求且能接受额外开销时才考虑模型重排序。",{"id":153,"question_zh":154,"answer_zh":155,"source_url":142},44319,"遇到 milvus_lite 文件被占用错误（\"file has been opened by another program\"）如何处理？","这通常是因为之前的 memsearch 进程非正常退出，导致锁文件或进程残留。\n\n解决步骤：\n1. 找到并删除残留的锁文件。路径通常在数据库文件附近，例如 `~\u002F.openclaw\u002Fmemsearch\u002F.elite-memory.db.lock` 或 `~\u002F.memsearch\u002F.milvus.db.lock`。\n2. 检查并杀死所有残留的 `milvus` 或 `milvus_lite` 进程。\n3. 重新运行 `memsearch index` 命令。\n\n预防建议：确保使用排除了 pymilvus 2.6.10 版本的 memsearch（v0.1.17+），以避免因底层 Bug 导致的进程挂起和锁文件未释放问题。",{"id":157,"question_zh":158,"answer_zh":159,"source_url":142},44320,"如何配置 memsearch 使用本地的 Ollama 作为嵌入模型提供者？","可以在配置文件中指定 embedding provider 为 ollama，并设置对应的模型名称。示例配置如下（TOML 格式）：\n\n```toml\n[milvus]\nuri = \"~\u002F.openclaw\u002Fmemsearch\u002Felite-memory.db\"\ncollection = \"elite_memory_chunks\"\n\n[embedding]\nprovider = \"ollama\"\nmodel = \"nomic-embed-text\"\n```\n\n使用前请确保：\n1. `ollama serve` 正在运行。\n2. 所需的嵌入模型（如 `nomic-embed-text`）已通过 `ollama pull` 下载并在本地可用。\n3. 运行索引命令时带上 provider 参数（如果需要覆盖配置）：`memsearch index .\u002FMEMORY.md .\u002Fmemory --provider ollama`。",[161,166,171,176,181,186,191,196,201,206,211],{"id":162,"version":163,"summary_zh":164,"released_at":165},351863,"v0.3.1","## 变更内容\n\n- chore: 升级 memsearch 0.3.1、claude-code 插件 0.3.6 和 openclaw 0.2.1 (#413)\n- fix(chunker): 不再按 ASCII 标点符号拆分工程文本 (#412)\n- docs(readme): 澄清 CLI 工具与项目依赖的安装路径 (#411)\n- feat(plugins): 展示内存结构而非原始尾部数据 (#410)\n- fix(watch): 将 _on_change 的异常捕获范围扩大至 Exception (#409)\n- fix: 对配置和 Milvus 相关问题显示面向用户的 CLI 错误 (#336)\n- fix: 加强 Codex 钩子对当前 CLI 负载的处理能力 (#333)\n- fix: 在安装过程中保留现有的 Codex 钩子 (#334)\n- feat: 在 index 和 watch CLI 中公开 max_chunk_size 参数 (#335)\n- 扩展记忆召回技能描述，以提高触发覆盖率 (#353)\n- fix(plugins): 尊重 MEMSEARCH_DIR 环境变量的覆盖设置 (#408)\n","2026-04-16T10:18:37",{"id":167,"version":168,"summary_zh":169,"released_at":170},351864,"v0.3.0","## 变更内容\n\n- chore: 升级 memsearch 至 0.3.0，升级 claude-code 插件至 0.3.5 (#348)\n- feat: 添加 Jina 和 Mistral 嵌入模型提供商 (#346)\n- docs: 在对比功能矩阵中添加嵌入模型提供商和重排序器行 (#343)\n- docs: 验证对比页面，简化文案，并添加 Claude Code 原生基线 (#342)\n- docs: 优化“与替代方案对比”部分（修复 qmd 文件，移除强制分组）(#339)\n- docs: 新增“与替代方案对比”和“嵌入模型评估”页面 (#338)\n- fix: 将 git-root 数据集修复应用到 codex\u002Fopencode；修复异步会话结束问题 (#331)\n- fix: 从 git 根目录派生记忆召回数据集 (#324) (#330)\n- docs: 更新 OpenClaw 捕获架构，改为使用 agent_end (#323)","2026-04-14T10:09:09",{"id":172,"version":173,"summary_zh":174,"released_at":175},351865,"v0.2.4","## 变更内容\n\n- chore: 将 memsearch 升级至 0.2.4，将 OpenClaw 插件升级至 0.2.0 (#322)\n- refactor: OpenClaw 插件 — 移除 child_process，简化捕获逻辑，修复 CLI 注册问题 (#321)\n- fix: 为 hybrid_search 添加保护，防止在空集合情况下因 BM25 导致的崩溃 (#316)\n- style: 修复 openai 嵌入提供者中的 ruff 格式问题 (#304)\n","2026-04-10T02:47:21",{"id":177,"version":178,"summary_zh":179,"released_at":180},351866,"v0.2.3","## 变更内容\n\n- chore: 将 memsearch 升级至 0.2.3，Claude Code 插件升级至 0.3.4 (#303)\n- fix: 验证紧凑型提示模板 (#233)\n- fix: 对兼容 OpenAI 的端点强制使用 encoding_format=float 格式 (#302)\n- test: 覆盖剩余 CLI 子命令的帮助输出 (#268)\n- test: 覆盖紧凑型提示文件的 CLI 路径 (#235)\n- test: 覆盖回滚后 chunker 的尾部刷新逻辑 (#283)\n- test: 覆盖 chunker 中相邻注释的清理逻辑 (#284)\n- fix: 在插件钩子中对 macOS 使用可移植的 stdin 超时设置 (#288)\n- fix: 合并 index_file 中的两次 stat() 调用 (#292)\n- docs: 更新竞争对手对比表，并简化隔离部分的内容 (#287)\n- docs: 修复文档中的失效链接 (#286)\n- style: 修复 ruff 格式违规 (#285)\n- fix: 解决 chunker 中 ruff 格式的回归问题 (#269)\n- test: 覆盖配置键验证的分支逻辑 (#280)\n- test: 覆盖 config path 中 expanduser 的处理逻辑 (#279)\n- test: 覆盖配置字典转换的边界情况 (#278)\n- test: 覆盖扫描器的隐藏文件默认行为 (#276)\n- test: 覆盖紧凑型源代码归一化的边界情况 (#271)\n- test: 覆盖 CLI 配置辅助映射逻辑 (#270)\n- docs: 在 README 中用 GIF 替换演示视频 (#275)\n- fix: 在 chunker 中强制拆分没有空行的长段落 (#267)","2026-04-08T07:55:53",{"id":182,"version":183,"summary_zh":184,"released_at":185},351867,"v0.2.2","## 变更内容\n\n- chore: 将 memsearch 升级至 0.2.2，Claude Code 插件升级至 0.3.3 (#265)\n- feat: 添加 --source-prefix 选项，以按目录范围进行搜索 (#264)\n- docs: 强调跨平台内存共享，修复升级命令 (#263)\n- chore: 将 Claude Code 插件升级至 0.3.2，OpenClaw 升级至 0.1.1，OpenCode 升级至 0.1.1 (#262)\n- docs: 更新 OpenCode 锚点格式及 OpenClaw 集合命名 (#261)\n- fix: 在 OpenClaw 集合命名中使用 deriveCollectionName (#260)\n- feat: 改进跨平台 L3 转录回忆在记忆回忆技能中的召回效果 (#259)\n- chore: 将 Claude Code 插件升级至 0.3.1 (#258)\n- chore: 精简 CLAUDE.md 文件并更新项目结构 (#257)\n- fix: 修复 Docker 中的 CRLF 换行符以及子目录中的 .memsearch 目录问题 (#256)","2026-03-31T11:26:09",{"id":187,"version":188,"summary_zh":189,"released_at":190},351868,"v0.2.1","## 变更内容\n\n- chore: 将 memsearch 升级至 0.2.1 (#255)\n- feat: 添加交叉编码器重排序模块（默认禁用）(#254)\n- feat: 添加 MPS 设备检测，并更新已知模型维度 (#253)\n- fix: 支持 Google 嵌入的 Vertex AI (#225)\n- docs: 为 OpenCode 插件添加召回调用示例 (#251)\n- docs: 添加手动和自动技能调用示例 (#250)\n- docs: 添加重启步骤，并使用简短的技能名称 (#249)\n- fix: 使用 contextlib.suppress 处理 ruff SIM105 静态代码检查 (#248)","2026-03-31T03:48:01",{"id":192,"version":193,"summary_zh":194,"released_at":195},351869,"v0.2.0","## 变更内容\n\n- chore: 将 memsearch 升级至 0.2.0，Claude Code 插件升级至 0.3.0 (#247)\n- docs: 更新 ClawHub 和 npm 的插件安装说明 (#246)\n- chore: 将 OpenCode 插件发布到 npm，包名为 @zilliz\u002Fmemsearch-opencode (#245)\n- chore: 为 ClawHub 发布添加 OpenClaw 兼容元数据 (#244)\n- docs: 将平台相关页面拆分为子页面，并补充丰富的内容 (#243)\n- docs: 增加渐进式检索、架构中的“您的应用”部分以及 Zilliz Cloud 链接 (#242)\n- docs: 改进 Markdown 同步示意图，扩充 CLI 部分，并更新 CONTRIBUTING 文件 (#241)\n- docs: 优化 README，添加快速入门指南并改善结构 (#240)\n- docs: 在配置中突出 Zilliz Cloud，并为代理用户新增配置章节 (#239)\n- feat: 支持多平台插件 — Codex、OpenClaw、OpenCode (#238)\n- fix: 当 macOS 上无法使用 `timeout` 命令时，改用 `cat` 作为备用方案 (#223)\n- fix: 修复 Zilliz Cloud 对比表格和注册区块的文档渲染问题 (#220)\n- docs: 新增 Zilliz Cloud 对比表格、决策指南和注册流程 (#219)","2026-03-30T10:02:13",{"id":197,"version":198,"summary_zh":199,"released_at":200},351870,"v0.1.19","## 变更内容\n\n- chore: 将 memsearch 升级至 0.1.19，将 ccplugin 升级至 0.2.9 (#218)\n- docs: 更新 compact --source 的路径规范化示例 (#217)\n- fix: 在 CLI 中规范化 compact --source 的路径 (#213)\n","2026-03-23T03:03:57",{"id":202,"version":203,"summary_zh":204,"released_at":205},351871,"v0.1.18","## 变更内容\n\n- chore: 将 memsearch 升级至 0.1.18，将 ccplugin 升级至 0.2.8 (#216)\n- fix: 按文件隔离索引错误，并降低 OpenAI 的默认批处理大小 (#215)\n- fix(hooks): 防止 session-start.sh 在 WSL 2 中无限挂起 (#209)\n- fix(hooks): 防止在 Lite 模式下出现孤立的 memsearch 索引和 milvus_lite 进程 (#201)\n- 修复 stop.sh，使其在检查 API 密钥时回退到配置文件 (#200)\n","2026-03-22T07:05:57",{"id":207,"version":208,"summary_zh":209,"released_at":210},351872,"v0.1.17","## 变更内容\n\n- 功能：在嵌入向量前清理分块内容，以提升向量质量 (#206)\n- 修复：排除 pymilvus 2.6.10 版本，防止 Milvus Lite 卡死 (#205)\n- 杂项：将 ccplugin 版本升级至 0.2.5 (#198)\n- 修复：在 parse-transcript.sh 中处理数组格式的用户消息内容 (#197)\n- 文档：在 ccplugin 的 README 中添加 GitHub 星标徽章 (#193)\n- 杂项：将 ccplugin 版本升级至 0.2.4 (#192)\n- 文档：添加 ONNX 默认变更说明及升级指南 (#191)\n- 修复：在报告 API 密钥缺失之前，先检查配置文件中是否已存在 API 密钥 (#190)\n- 修复：解决所有工作流中的 CI 失败问题 (#189)\n- 杂项：移除未使用的 examples 目录 (#188)\n- CI：在所有工作流中使用 uv，并收紧权限 (#129)\n- CI：添加过期议题和 PR 工作流 (#128)\n- CI：将 Python 3.13 加入测试矩阵 (#130)\n- 文档：在端到端示例中将中文注释翻译为英文 (#131)\n- CI：为 ruff 代码检查和格式化添加 pre-commit 钩子 (#179)\n- 修复：防止每日记忆文件中出现重复的会话头信息 (#175)\n- 测试：添加分块 ID 格式测试 (#164)\n\n## 功能特性\n\n- 功能：ONNX 嵌入提供者 + ccplugin 零配置默认设置 (#187)\n","2026-03-19T09:57:45",{"id":212,"version":213,"summary_zh":214,"released_at":215},351873,"v0.1.16","## What's Changed\n\n- feat(ccplugin): show upgrade command in version update hint (#172)\n- style: apply ruff format to test_transcript.py (#171)\n- docs: fix hybrid search diagrams, split claude-plugin into subpages (#169)\n- test(transcript): add coverage for parser helpers and context (#121)\n- ci: add release-drafter, update actions, and issue templates (#119)\n- ci: add test coverage reporting (#113)\n- style: apply ruff lint fixes and formatting (#116)\n- ci: add ruff config and lint workflow (#115)\n- chore: expand .gitignore with missing patterns (#118)\n- fix: remove dead code — unused method, import, and dataclass field (#108)\n- release: memsearch v0.1.15, ccplugin v0.2.2 (#110)\n- feat: add collection description support (#106)\n- docs: remove language convention from CLAUDE.md (#105)\n- Feat\u002Fcustom OpenAI endpoint for compact (#101)\n- docs: add test workflow badge to README (#100)\n- ci: add pytest workflow for push and pull requests (#99)\n- feat: add configurable OpenAI-compatible embedding endpoints (#98)\n- fix(ccplugin): fix realpath -m incompatibility on macOS (#96)\n- fix(ccplugin): add role labels to transcript parser to prevent summarizer role confusion (#94)\n- fix: add Windows support guard for milvus-lite (#90)\n- fix: add empty chunks guard in compact_chunks() (#92)\n- chore: decouple ccplugin versioning and document release flow (#87)\n- docs(ccplugin): add use cases section and fix mermaid diagram (#86)\n- fix(ccplugin): rewrite stop hook to summarize last turn only (#85)\n- chore: bump version to 0.1.13 (#84)\n- fix: add embedding batch size support to prevent API limit errors (#83)\n- chore: bump version to 0.1.12 (#82)\n- fix: use persistent event loop in watcher to prevent loop-closed crash (#76)\n- fix: escape backslashes in Milvus filter expressions for Windows paths (#71)\n- fix(ccplugin): proper watch lifecycle for Server and Lite backends (#81)\n- feat(ccplugin): per-project collection isolation (#79)\n- docs: redraw systemMessage mockup to match real TUI (#65)\n- docs: simplify auto-install note (#64)\n- docs: move systemMessage mockup to Troubleshooting (#63)\n- docs: fix claude-mem comparison, add systemMessage mockup (#62)\n- ccplugin: add python3 fallback for jq dependency (#61)\n- docs: rewrite Troubleshooting as systematic observability guide (#60)\n- docs: add UPDATE troubleshooting with upgrade instructions (#59)\n- bump version to 0.1.11 (#58)\n- ccplugin: check PyPI for updates in SessionStart status (#57)\n- ccplugin: show version in status, auto-upgrade uvx on bootstrap (#56)\n- docs: update SessionStart and Troubleshooting for provider-aware status (#55)\n- ccplugin: provider-aware API key check and status display (#54)\n- ccplugin: replace push-based memory with skill-based recall (#53)\n- docs: remove manual install step, add troubleshooting for missing API key (#52)\n- ccplugin: use systemMessage for API key warning (#51)\n- ccplugin: show API key warning via Claude, skip stop-hook summarization (#50)\n- ccplugin: output API key warning to stderr instead of additionalContext (#49)\n- ccplugin: warn user when OPENAI_API_KEY is missing (#48)\n- ccplugin: bootstrap memsearch via uvx instead of uv run --project (#47)\n- Add uv install hints alongside pip in embedding provider messages (#45)\n- Docs: add missing links and fix mermaid colors for light mode (#44)\n- Show truncation hint in search output (#43)\n- Auto-detect embedding dimension for all providers (#42)\n- Add plugin development section to CONTRIBUTING.md (#41)\n- Add CLAUDE.md, CONTRIBUTING.md, and agent symlinks (#40)\n- Reorder CLI docs to lead with config init, expand README CLI section (#39)\n- Remove video from docs page (#38)\n- Add demo video and expand ccplugin README (#37)\n- Add FAQ page: per-user isolation, multi-dev workflow, dedup (#34)\n- Add cross-references and external links across docs (#33)\n- Move Development Mode to end of plugin docs (#32)\n- Replace plugin docs intro with before\u002Fafter diagram (#31)\n- Replace Chinese examples with English in plugin docs (#30)\n- Show default model names in config wizard (#29)\n- Add real-world examples to progressive disclosure docs (#28)\n- Add LlamaIndex and CrewAI integration examples (#27)\n- Add LangChain and LangGraph integration docs (#26)\n- Rename ms to mem in docs, examples, and tests (#25)\n- Fix watch not indexing existing files on startup (#24)\n- Make top navigation tabs sticky on scroll (#23)\n- Fix mermaid diagram line breaks in docs (#22)\n- Add Python API reference to docs site (#21)\n- Restructure README: lead with Python API, simplify layout (#20)\n- Bump version to 0.1.5 (#18)\n- Update LICENSE copyright to Zilliz Inc. (#17)\n- Fix dimension mismatch, remove env var overrides, suppress local noise (#16)\n- Slim down README, link to docs site (#15)\n- Fix Python 3.10 compat and marketplace format (#13)\n- Add plugin marketplace and update install instructions (#12)\n- Fix docs accuracy and add --output-dir to compact CLI (#11)\n- Add badges to README (#10)\n- Update README: logo-title layout and demo ","2026-03-09T04:18:46"]