{"id":51450965,"url":"https://github.com/haveniceda/my-notion","last_synced_at":"2026-07-05T21:00:16.119Z","repository":{"id":333466488,"uuid":"1136303045","full_name":"HaveNiceDa/My-Notion","owner":"HaveNiceDa","description":"基于现代前端与 AI 技术栈构建的个性化 Notion 应用","archived":false,"fork":false,"pushed_at":"2026-07-03T03:31:26.000Z","size":10821,"stargazers_count":11,"open_issues_count":0,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-05T20:03:35.157Z","etag":null,"topics":["agent","ai","blocknote","convex","langchain","mcp","monorepo","nextjs","node","notion","playwright","pnpm","rag","react","reactnative","shadcn-ui","tailwindcss","typescript","vercel","vitest"],"latest_commit_sha":null,"homepage":"https://notion-j9zj.vercel.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HaveNiceDa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-17T12:50:45.000Z","updated_at":"2026-07-03T03:31:08.000Z","dependencies_parsed_at":"2026-03-29T09:02:50.117Z","dependency_job_id":null,"html_url":"https://github.com/HaveNiceDa/My-Notion","commit_stats":null,"previous_names":["haveniceda/notion","haveniceda/my-notion"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/HaveNiceDa/My-Notion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HaveNiceDa%2FMy-Notion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HaveNiceDa%2FMy-Notion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HaveNiceDa%2FMy-Notion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HaveNiceDa%2FMy-Notion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HaveNiceDa","download_url":"https://codeload.github.com/HaveNiceDa/My-Notion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HaveNiceDa%2FMy-Notion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35168795,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-05T02:00:06.290Z","response_time":100,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","ai","blocknote","convex","langchain","mcp","monorepo","nextjs","node","notion","playwright","pnpm","rag","react","reactnative","shadcn-ui","tailwindcss","typescript","vercel","vitest"],"created_at":"2026-07-05T21:00:15.096Z","updated_at":"2026-07-05T21:00:16.101Z","avatar_url":"https://github.com/HaveNiceDa.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My-Notion\n\n定制化个人版 Notion。它不是单纯的编辑器 demo，而是一套把 Web 文档编辑、移动端工作区、AI Agent、RAG/Memory、CLI/Skills/MCP Agent 生态放在同一个 pnpm monorepo 里的完整工程。\n\n**线上体验：** \u003chttps://notion-j9zj.vercel.app/\u003e\n\n## 项目概览\n\n- **产品闭环完整**：Web 编辑器、移动端工作区、AI 侧边栏、文档树、发布、收藏、归档、回收站都在同一个业务系统里。\n- **Agent 工程化充分**：Web Agent 已覆盖 ReAct Loop、RAG、Memory、文档读写 dry-run、确认式写入、Plan、流式续跑和 tool result 契约。\n- **外部 Agent 可用**：`@mynotion/cli`、`@mynotion/mcp` 和 Skills 已形成独立使用链路，支持外部 Agent 安全读写 My-Notion 文档。\n- **跨端架构清晰**：Web 和 Mobile 共享 AI、业务状态、Convex schema 与文档逻辑，移动端正在补齐 Agent Stream、弱网恢复和编辑器深水区。\n\n## 快速入口\n\n| 关注方向 | 文档 |\n| --- | --- |\n| 项目全貌和当前状态 | 本 README、[AGENTS.md](./AGENTS.md)、[milestones/README.md](./milestones/README.md) |\n| Web Agent / RAG / Memory | [apps/web/README.md](./apps/web/README.md)、[docs/ai-chat-refactor-plan.md](./docs/ai-chat-refactor-plan.md)、[docs/agent-stream-resume-protocol.md](./docs/agent-stream-resume-protocol.md) |\n| Mobile 客户端路线 | [apps/mobile/README.md](./apps/mobile/README.md)、[docs/web-mobile-gap-analysis.md](./docs/web-mobile-gap-analysis.md) |\n| CLI / MCP / Skills | [packages/my-notion-cli/README.md](./packages/my-notion-cli/README.md)、[packages/my-notion-mcp/README.md](./packages/my-notion-mcp/README.md)、[packages/my-notion-skills/README.md](./packages/my-notion-skills/README.md) |\n\n## 项目入口\n\n- [Web 应用说明](./apps/web/README.md)：Next.js Web 端、BlockNote 编辑器、AI Agent、CLI 授权页和机器 API。\n- [Mobile 应用说明](./apps/mobile/README.md)：Expo 移动端、文档工作区、移动 AI Chat 和跨端共享架构。\n- [My-Notion CLI](./packages/my-notion-cli/README.md)：已发布 npm 包 [`@mynotion/cli`](https://www.npmjs.com/package/@mynotion/cli)，提供 `my-notion` 命令。\n- [My-Notion MCP Server](./packages/my-notion-mcp/README.md)：独立 MCP STDIO server，提供 Agent 文档工具和 `my_notion_readme`。\n- [My-Notion Skills](./packages/my-notion-skills/README.md)：供 Agent 调用 CLI/MCP 的 Skills 源文件与同步规则。\n- [里程碑索引](./milestones/README.md)：稳定阶段结论和下一步路线。\n- [Docs 索引](./docs/README.md)：当前维护方案、操作手册、发布检查和外部 AI 参考入口。\n- [Web / Mobile 差距](./docs/web-mobile-gap-analysis.md)：当前双端能力差距和后续 backlog。\n\n## 核心能力\n\n- **Web 文档编辑**：Next.js + Convex + Clerk + BlockNote，支持文档树、编辑器 AI、公开预览、收藏、归档、回收站和设置页。\n- **Web Agent**：ReAct Loop、结构感知 RAG、Memory MVP、联网搜索、网页抽取、文档读写 dry-run、确认式写入、`task_plan`、受控 MCP adapter、`tool-result-v1` 契约和流式续跑可用闭环。\n- **Mobile 工作区**：Expo + React Native，支持移动文档树、文档编辑、AI Chat、会话管理、模型选择、深度思考展示和安全代理。\n- **CLI / Skills / MCP**：`@mynotion/cli@latest` 负责浏览器 Device Flow 登录、文档 CRUD、导入导出和随包发布的 Agent Skills；`@mynotion/mcp` 独立提供 MCP STDIO 工具。\n- **共享包**：`packages/ai`、`packages/business`、`packages/convex` 收敛 AI、业务状态、i18n、Convex schema 和文档逻辑。\n- **验证链路**：覆盖 Web typecheck/build/lint、Agent 单测、AI smoke、CLI E2E、MCP E2E、Skills 漂移检查和 npm pack/publish 验证。\n\n## 架构总览\n\n```text\n用户 / Agent\n  ├─ Web UI: apps/web\n  ├─ Mobile UI: apps/mobile\n  ├─ CLI: @mynotion/cli / packages/my-notion-cli\n  ├─ MCP: @mynotion/mcp / packages/my-notion-mcp\n  └─ Skills: packages/my-notion-skills\n\n共享包\n  ├─ packages/ai        # RAG、Embedding、Agent、AI 配置\n  ├─ packages/business  # Zustand、i18n、共享类型和工具函数\n  ├─ packages/convex    # Convex schema、文档、Chat、CLI Token 逻辑\n  └─ packages/my-notion-agent-tools # CLI/MCP 内部共享 Machine API client 和 Agent 工具契约\n\n后端与服务\n  ├─ Convex             # 实时数据库 + HTTP Actions / Machine API\n  ├─ Clerk              # 登录认证\n  ├─ Qdrant             # 向量数据库\n  ├─ DashScope          # LLM、Embedding、工具调用\n  └─ EdgeStore          # 文件与图片存储\n```\n\n## 目录结构\n\n```text\nMy-Notion/\n├── apps/\n│   ├── web/                    # Next.js Web 应用\n│   └── mobile/                 # Expo 移动应用\n├── packages/\n│   ├── ai/                     # AI、RAG、Embeddings、Agent 服务端逻辑\n│   ├── business/               # Zustand Stores、i18n、类型、工具函数\n│   ├── convex/                 # Convex Schema、Documents、Chat、CLI Token 逻辑\n│   ├── my-notion-agent-tools/  # CLI/MCP 内部共享 Machine API client 和 Agent 工具契约\n│   ├── my-notion-cli/          # @mynotion/cli 源码与 npm 包内容\n│   ├── my-notion-mcp/          # @mynotion/mcp 独立 MCP STDIO server\n│   └── my-notion-skills/       # Agent Skills 源文件\n├── docs/                       # 当前方案、发布检查、AI 外部文档索引\n├── milestones/                 # 稳定阶段结论\n├── progress/                   # 压缩后的阶段进展记录\n├── scripts/                    # E2E、skills sync、发布辅助脚本\n└── .trae/skills/               # 同步后的本地 Agent Skills\n```\n\n## 快速开始\n\n```bash\npnpm i\n\n# Web\npnpm start:web\n\n# Mobile\npnpm start:mobile\n\n# 本地 RAG / Agent 调试通常需要先启动 Qdrant\ndocker compose -f my-notion-go/docker-compose.yml up -d qdrant\n```\n\n## CLI / MCP Quick Start\n\nCLI 已发布到 npm latest：[`@mynotion/cli`](https://www.npmjs.com/package/@mynotion/cli)。\n\n```bash\nnpm install -g @mynotion/cli@latest\nnpm install -g @mynotion/mcp@latest\nnpx skills add @mynotion/cli -y -g\nmy-notion install --check\nmy-notion config init\nmy-notion auth login\n```\n\nAgent 场景使用：\n\n```bash\nmy-notion auth login --no-open\nmy-notion config init --check --format json\nmy-notion docs create --title \"Agent Doc\" --content-file /tmp/doc.md --format json\nmy-notion-mcp --transport stdio\n```\n\n约定：Agent 必须把授权 URL 以 Markdown 可点击链接发给用户；写入已有文档优先使用 append；MCP 写工具默认保持 `dryRun: true`。\n\n## 常用验证\n\n```bash\n# Web\npnpm --filter @notion/web typecheck\npnpm --filter @notion/web lint\npnpm --filter @notion/web build\npnpm ci:ai-smoke\n\n# CLI / MCP / Skills\npnpm --filter @mynotion/cli test\npnpm --filter @mynotion/cli typecheck\npnpm --filter @mynotion/cli build\npnpm e2e:cli\npnpm e2e:cli:errors\npnpm e2e:mcp\npnpm e2e:mcp:client\npnpm sync:skills\npnpm sync:skills:package\npnpm sync:skills:check\n\n# 全局\npnpm test\npnpm exec playwright test\n```\n\n## 当前主线\n\n- P0：Web Agent 基础操作闭环已完成，覆盖 ReAct、RAG、Memory、文档读写 dry-run、确认式写入、Plan 模式、受控 MCP adapter、`tool-result-v1`、强类型 `sources` 和流式续跑；续跑协议见 [Agent Stream Resume Protocol](./docs/agent-stream-resume-protocol.md)。\n- P0：Agent 交互治理已收口，包含生成中禁用确认型 tool 操作、发送后滚动收口、Memory 保存反馈、`document_write` 空白文档预览、MCP `docs_fetch` ID 防护，以及 Convex/Clerk 短时不可用时的主链路降级。\n- P0：独立 `@mynotion/mcp` 已拆出并发布，CLI 保留兼容入口；CLI/MCP 默认线上 `prod`，本地调试必须显式 `--local`。\n- P1：Mobile 已接入 Agent Stream、checkpoint/resume 基础链路和当前文档上下文；下一步聚焦真机验证、正文图片上传、弱网恢复和移动编辑器复杂 block 降级。\n- P2：Harness、Trace Replay、Storybook、Memory/RAG 真实质量评估继续后置。\n- 发布：[`@mynotion/cli@0.1.2`](https://www.npmjs.com/package/@mynotion/cli) 与 [`@mynotion/mcp@0.1.3`](https://www.npmjs.com/package/@mynotion/mcp) 已发布到 `latest`；稳定版发布前参考 [CLI Release Checklist](./docs/my-notion-cli-release-checklist.md) 和 [MCP Release Checklist](./docs/my-notion-mcp-release-checklist.md)。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaveniceda%2Fmy-notion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhaveniceda%2Fmy-notion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaveniceda%2Fmy-notion/lists"}