[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80728":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":14,"stars7d":14,"stars30d":14,"stars90d":15,"forks30d":15,"starsTrendScore":16,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":15,"starSnapshotCount":15,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},80728,"deepmemo","YeyezhizzZ\u002Fdeepmemo","YeyezhizzZ","本地优先的 Markdown 知识库创作与问答工作台","",null,"Python",44,70,1,0,3,5.55,"MIT License",false,"main",[],"2026-06-12 02:04:06","\u003Cdiv align=\"center\">\n\n# DeepMemo\n\n**本地优先的 Markdown 知识库创作与问答工作台**\n\n不要高估一天的产出，也不要小看一周的积淀。DeepMemo 帮你把每天零散的学习记录、工程经验、研究想法和灵感片段，沉淀成可编辑、可检索、可追溯的个人知识系统。\n\n![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.11+-3776AB?style=flat-square&logo=python&logoColor=white)\n![FastAPI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-0.110+-009688?style=flat-square&logo=fastapi&logoColor=white)\n![React](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReact-18-61DAFB?style=flat-square&logo=react&logoColor=111111)\n![Vite](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVite-6-646CFF?style=flat-square&logo=vite&logoColor=white)\n![Local First](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLocal--first-Markdown-2F80ED?style=flat-square)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg?style=flat-square)](LICENSE)\n\n\u003C\u002Fdiv>\n\n---\n\n## Why DeepMemo\n\nAI 时代的信息流像多线程任务一样不断抢占注意力：课程、科研、工程实践、技术追新、内容创作和生活本身都在同时运行。DeepMemo 的目标不是再造一个封闭笔记软件，而是给个人 Markdown 知识库加上一层透明的 AI 工作台。\n\n- **文件在你手里**：`data\u002F` 下的 `.md` 文件是唯一真值，离开 DeepMemo 也能继续用编辑器、Git 或 Obsidian 打开。\n- **创作和检索闭环**：编辑器模式负责记录和整理，问答模式负责激活和串联。\n- **回答可追溯**：DeepMemo 不只给结论，还会把回答绑定到本地 Markdown 片段，使用 `[1]`、`[2]` 这样的引用回到源文件。\n- **适合个人长期积累**：可以按目录自然生长，不需要一开始就设计复杂知识库。\n\n---\n\n## Screenshots\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docx\u002Fscreenshots\u002Feditor-mode.png\" alt=\"DeepMemo Editor Mode\" width=\"850\" \u002F>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docx\u002Fscreenshots\u002Fqa-mode.png\" alt=\"DeepMemo Q&A Mode\" width=\"850\" \u002F>\n\u003C\u002Fp>\n\n---\n\n## Features\n\n### 文件系统驱动的编辑器\n\n- 左侧 Data Explorer 直接映射本地 `data\u002F` 目录。\n- 支持读取、创建、保存 Markdown 文件和创建文件夹。\n- 文件状态使用 `synced`、`dirty`、`draft`、`processing`、`error` 标记，便于区分本地变更状态。\n- 内置基础格式化和面向当前文档的 AI 补完入口。\n\n### 本地知识库问答\n\n- `LocalSearchAgent` 会在 `data\u002F**\u002F*.md` 中检索相关片段，将本地 Markdown 相关信息交给 LLM 生成回答。\n- 回答正文中的 `[1]`、`[2]` 引用会绑定到具体文件片段，右侧 Source Panel 可查看原文上下文。\n- 支持查询引用了当前文件的历史会话，方便从文件回到对话。\n\n### 可选的外部信息补充\n\n- WebSearchAgent 默认关闭，只有配置后才会在本地证据不足且问题依赖外部实时信息时 fallback。\n- 回答侧会区分本地知识库证据和外部搜索补充，避免把外部信息误认为个人记录。\n---\n\n## Demo Data\n\n仓库只发布可公开的 mock 知识库数据：\n\n- `data\u002Fmock\u002Fexample1.md`：DeepMemo 的产品定位和问答流程示例。\n- `data\u002Fmock\u002Fexample2.md`：AI 时代个人多线程学习和记录压力的案例故事。\n\n真实个人知识库会被 `.gitignore` 忽略，只有 `data\u002Fmock\u002F` 会进入 Git。启动后可以在问答模式尝试：\n\n---\n\n## Quick Start\n\n### Requirements\n\n- Python 3.11+\n- Node.js 18+\n- [uv](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv)\n- [ripgrep](https:\u002F\u002Fgithub.com\u002FBurntSushi\u002Fripgrep)，本地 Markdown 检索依赖 `rg`\n\n### 1. Install\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FYeyezhizzZ\u002Fdeepmemo.git\ncd DeepMemo\n\nuv sync\n\ncd app\nnpm install\ncd ..\n```\n\n### 2. Configure LLM\n\n创建 `config\u002Fllm_api.yaml`。该文件已被 `.gitignore` 忽略，不要提交真实 API Key。\n\n```yaml\nmodel_provider:\n  api_key: \"sk-...\"\n  api_base: \"https:...\"\n  model: \"model_name\"\n  max_tokens: 1000\n  temperature: 0.7\n```\n\n`LLMService` 会读取 YAML 中的第一个 provider，因此 provider 名称可以按你的服务商调整，只要保留 `api_key`、`api_base` 和 `model` 字段即可。\n\n### 3. Run\n\n> 所有命令默认从项目根目录 `DeepMemo\u002F` 执行。\n\n后端 API，默认端口 `8000`：\n\n```bash\nuv run uvicorn src.app.main:app --reload\n\n前端应用，默认端口 `5173`：\n\n```bash\ncd app\nnpm run dev\n```\n\n打开 http:\u002F\u002F127.0.0.1:5173 使用 DeepMemo。后端 API 文档位于 http:\u002F\u002F127.0.0.1:8000\u002Fdocs。\n\n---\n\n## Project Structure\n\n```text\nDeepMemo\u002F\n├── app\u002F                    # React + Vite + TypeScript 前端\n│   └── src\u002F\n├── src\u002F                    # FastAPI 后端\n│   ├── ai\u002F                 # RAG、检索、回答生成、WebSearch fallback\n│   ├── app\u002F                # 应用入口、数据库、文件监听\n│   ├── routers\u002F            # chat、fs、diary、pulse、citations API\n│   └── services\u002F           # LLM provider 封装\n├── data\u002F\n│   └── mock\u002F               # 可公开示例知识库\n├── config\u002F\n│   └── example.yaml        # 配置占位\n```\n\n---\n\n## Architecture\n\n```text\nUser Question\n  -> QueryRewriter\n  -> QueryRouter\n  -> LocalSearchAgent\n       -> glob_files\n       -> grep_content\n       -> read_lines\n  -> WebSearchAgent fallback, optional\n  -> AnswerComposer\n  -> Markdown answer with citations\n```\n\nDeepMemo 当前采用轻量 RAG 思路：先不引入 embedding 和向量数据库，而是使用安全封装的本地搜索工具在 Markdown 文件中召回证据。这样更适合个人 MB 级知识库，也降低了索引维护成本。\n\n---\n\n## Tech Stack\n\n- Frontend：React 18、TypeScript、Vite、Lucide React\n- Backend：FastAPI、Pydantic、SQLite\n- AI：OpenAI-compatible Chat Completions API\n- Local search：ripgrep + 受控文件读取工具\n- Optional web search：Tavily、Open-WebSearch MCP\n\n---\n\n## Security Notes\n\n- `data\u002F*` 默认不提交，只发布 `data\u002Fmock\u002F**`。\n- `config\u002Fllm_api.yaml`、`.env`、`*.db`、`.claude\u002F` 已被 `.gitignore` 忽略。\n- 本地检索工具只允许访问 `data\u002F` 下的 Markdown 文件，并会校验路径，避免 `..\u002F` 越界读取。\n- 发布前请确认没有把真实日记、API Key、私有记忆或本地 agent 配置加入 Git。\n\n---\n\n## License\n\nDeepMemo is open-sourced under the [MIT License](LICENSE).\n","DeepMemo 是一个本地优先的 Markdown 知识库创作与问答工作台。该项目利用 FastAPI 和 React 技术栈，结合 AI 功能，帮助用户将日常学习记录、工程经验等整理成结构化的个人知识系统。其核心功能包括文件系统的驱动编辑器和本地知识库问答，支持对 Markdown 文件进行创建、编辑、保存及检索操作，并通过 AI 生成可追溯的回答，增强信息的关联性和可用性。此外，DeepMemo 还提供了外部信息补充选项，但默认情况下仅依赖本地数据。这款工具特别适合需要长期积累知识并频繁查阅特定领域信息的研究者、工程师以及内容创作者使用。",2,"2026-06-11 04:01:48","CREATED_QUERY"]