集成 OpenHub 与 WeKnora Page AI
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
> 状态补充(2026-06-25):本稿为 OpenHub 初步融合稿;更完整的 OpenHub + WeKnora + MNote 取舍与实施主线由 `7-68-openhub-weknora-mnote-deep-fusion-v1.md` 接管。
|
||||
> 状态补充(2026-06-25):本稿为 OpenHub 初步融合稿,已被 `7-68-openhub-weknora-mnote-deep-fusion-v1.md` 覆盖。路线从“抽取/重写 OpenHub 组件 + MNote Rust adapter”改为“嵌入 OpenHub AI 面板 + 保留 OpenHub FastAPI/Redis/opencode client + WeKnora 工具/知识底座”。
|
||||
|
||||
# 7-67 OpenHub Page AI 深度融合设计 v1
|
||||
|
||||
@@ -10,23 +10,23 @@ Owner:07-ai / mnote-web / control-plane
|
||||
|
||||
`7-65` 的 opencode 官方 WebUI iframe 路线验证了 opencode runtime、同源反代、session binding、文件打开/刷新等接缝,但 UI 深度融合受 iframe 与官方 WebUI 结构限制。用户目标已经调整为:尽量复用成熟社区项目 OpenHub 的前端、消息库、权限、知识库 UI 和 opencode 接入模式,把 MNote Page AI 做成类似 VSCode + Cline 的一体化侧边栏,而不是 MNote 自研一个简陋聊天框。
|
||||
|
||||
当前 Page AI 新主路径:
|
||||
当前 Page AI 主路径以 `7-68` 为准:
|
||||
|
||||
```text
|
||||
MNote Rust SSR / control-plane / local workspace
|
||||
-> OpenHub Chat 子系统 UI(裁剪融合)
|
||||
-> MNote Rust adapter(兼容 OpenHub API 形状)
|
||||
-> opencode serve runtime
|
||||
-> WeKnora knowledge provider(长期知识库底座)
|
||||
-> OpenHub AI 面板(只暴露 AI 能力,裁剪非 AI 入口)
|
||||
-> OpenHub FastAPI + Redis + OpenHub SQLite session/skill/tool permission;MCP 由 MNote/WeKnora/opencode 工具配置承接
|
||||
-> OpenHub opencode client / opencode serve runtime
|
||||
-> WeKnora knowledge provider(唯一知识库底座)
|
||||
```
|
||||
|
||||
`7-65` 降级为 opencode runtime spike / fallback;不再把官方 opencode WebUI iframe 作为默认产品 UI。
|
||||
`7-65` 降级为 opencode runtime / 官方 iframe fallback;`7-66` 降级为 native UI fallback;本稿的 Rust adapter / 自建 message store 路线也冻结为参考,不再作为执行主线。
|
||||
|
||||
## 2. 硬边界
|
||||
|
||||
- 不恢复 Reasonix / ZCode / Hermes / Board / CodexMobile 为 Page AI 默认后端。
|
||||
- 不新增 Page AI Leptos island;Page AI 仍属于 `mnote-web` host runtime 与普通前端资源。
|
||||
- 不直接引入 OpenHub 登录、用户管理、admin 整站后端;用户、权限、workspace 真相归 MNote control-plane。
|
||||
- 不直接引入 OpenHub 登录、admin、FileManager、KnowledgeManager 等非 AI 入口;用户、权限、workspace 真相归 MNote control-plane。
|
||||
- 不把 OpenHub 自带 SQLite 文本知识库当作 MNote 长期知识库底座;长期知识库 provider 是 WeKnora。
|
||||
- 不使用 `--dangerously-skip-permissions` 作为默认路径。
|
||||
- 不把 opencode 原生 session 列表裸露给前端;所有 session 必须绑定 MNote 用户、rootUri、page path。
|
||||
@@ -53,7 +53,7 @@ MNote Rust SSR / control-plane / local workspace
|
||||
- SmartEntity / Team / Scheduler。
|
||||
- GitTimeMachine 的 restore 写入能力;可先只显示 diff / changed files。
|
||||
|
||||
### 3.2 后端模式
|
||||
### 3.2 后端模式(已由 7-68 覆盖)
|
||||
|
||||
可复用其 API contract 和 opencode 调用模式:
|
||||
|
||||
@@ -64,28 +64,28 @@ MNote Rust SSR / control-plane / local workspace
|
||||
- `/api/files/*`
|
||||
- opencode `/session?directory=<workspace>`、`/session/{id}/prompt_async?directory=<workspace>`、`/global/event?directory=<workspace>`
|
||||
|
||||
但实现落在 Rust `mnote-web` / control-plane,不新增常驻 FastAPI 后端。
|
||||
本稿原判断是“实现落在 Rust `mnote-web` / control-plane,不新增常驻 FastAPI 后端”。`7-68` 已更正:第一阶段保留 OpenHub FastAPI + Redis + opencode client 作为 AI 运行栈,MNote 只做登录态、scope 注入、入口裁剪、文件打开和 citation 回跳桥。
|
||||
|
||||
## 4. MNote 目标架构
|
||||
|
||||
### 4.1 UI 层
|
||||
|
||||
`sidebar-page-ai-runtime.js` 不再维护自研聊天消息渲染主链,而是挂载 OpenHub-derived Page AI micro frontend:
|
||||
`sidebar-page-ai-runtime.js` 不再维护自研聊天消息渲染主链,而是承载 `7-68` 的 OpenHub AI 面板嵌入:
|
||||
|
||||
- MNote-native host chrome:当前页、selection、workspace、授权状态、runtime 状态、changed file chips。
|
||||
- OpenHub-derived chat area:消息、tool call、diff、history、input、附件。
|
||||
- OpenHub AI 面板:消息、tool call、diff、history、input、skill/permission、WeKnora CLI/MCP tool 状态、运行日志。
|
||||
- Bridge:只处理 MNote 专属动作:`open-file`、`refresh-file`、`insert-context`、`session-ready`、`changed-files`。
|
||||
|
||||
### 4.2 Rust adapter 层
|
||||
### 4.2 Rust adapter 层(冻结为旧设想)
|
||||
|
||||
新增或重构 Page AI API:
|
||||
以下自建 session/message 表路线已被 `7-68` 覆盖,不作为当前执行主线:
|
||||
|
||||
- `page_ai_sessions`:MNote 用户维度的跨浏览器 session binding。
|
||||
- `page_ai_messages`:用户消息、assistant 消息、tool call、opencode ids、状态。
|
||||
- `page_ai_context_snapshots`:当前页标题、真实 Markdown 路径、selection、rootUri、allowed roots、知识摘要。
|
||||
- `page_ai_changed_files`:opencode event/diff 得到的 changed files 与 MNote resource mapping。
|
||||
|
||||
所有 API 必须读取 MNote 登录态,禁止由前端自由传入 user id 或任意 directory。
|
||||
当前主线是:OpenHub session/message 是 Page AI 会话真相;MNote control-plane 只保存 binding、scope、artifact/open-reference 索引,禁止复制消息全文主存储。
|
||||
|
||||
### 4.3 opencode runtime 层
|
||||
|
||||
@@ -167,4 +167,4 @@ MVP 完成条件:
|
||||
|
||||
## 7. 当前结论
|
||||
|
||||
OpenHub 是目前最适合 MNote Page AI 深度融合的参考实现。它不解决 opencode 内核级多用户隔离,也不提供完整知识库底座,但它提供了 MNote 当前最缺的成熟 Chat/UI/message/session/diff/file/knowledge 管理壳。正确路线不是整站照搬 OpenHub,而是把 OpenHub Page AI 子系统移植为 MNote 原生 Page AI UI,后端由 MNote Rust adapter 接 opencode 与 WeKnora。
|
||||
OpenHub 仍是目前最适合 MNote Page AI 深度融合的参考实现,但本文已被 `7-68` 覆盖。正确路线不是把 OpenHub Page AI 子系统重写成 MNote 原生 UI,也不是由 MNote Rust adapter 重写 opencode client,而是在 MNote 侧嵌入 OpenHub AI 面板,保留 OpenHub FastAPI/Redis/opencode client,由 MNote 提供登录态、workspace scope、文件打开、citation 回跳和 WeKnora 工具/知识底座边界。
|
||||
|
||||
Reference in New Issue
Block a user