Portal Wiki 集成
从 Agent Portal 门户平台 拆分。
WikiTab 显示修复(2026-04-07)
Portal 的 Wiki 页面无法显示新编译的 43 篇 topic 类型文件。
根因
前端 WikiTab.tsx 侧边栏 GROUPS 数组硬编码了 4 个 type:project / bot / concept / synthesis。新编译的 43 篇 topic 文件 frontmatter 都是 type: topic,不在预定义分组中,完全不显示。
另外还有 23 篇无 type 的页面也被过滤掉了。
排查过程
- 最初怀疑是缓存问题 — 检查发现 Portal 的 Wiki API(
/api/wiki/pages)是直接读本地文件系统~/.openclaw/wiki/,不走数据库 - 排查容器 vs 宿主机 — 容器内跑的是旧版
server.js(1479行),无 Wiki 功能;宿主机的server.cjs(3559行)有 Wiki API。但开发环境portal.dev.dora不是容器部署 - 最终定位到前端 WikiTab 的 type 过滤是真正原因
修复方案
移除 type 过滤,改为动态分组:API 返回什么 type 就显示什么分组。已知 type 有预设图标和中文名(项目📁、Bot🤖、概念💡、综合分析📊),未知 type 自动用文件名 humanize 做标签。
修复后 Portal Wiki 侧边栏显示全部 97 篇页面,分为 6 组:项目(8)、Bot(15)、概念(1)、综合分析(7)、主题(43)、其他(23)。
Wiki 目录与 Portal 集成(2026-04-10)
Wiki 数据架构
Portal 的 Wiki Tab 通过后端 API 直接读取 ~/.openclaw/wiki/ 目录下的文件:
| 数据源 | 文件数 | 大小 | 说明 |
|---|---|---|---|
pages-v2/ | 92 | 580KB | 核心 Wiki 内容(项目、Bot、概念、综合分析等) |
graphify-out/ | 5 | 68KB | 知识图谱数据(graph.json + clawline-timeline.md) |
daily/ | 12 | 48KB | 日报 |
Wiki API 端点
| 端点 | 功能 |
|---|---|
GET /api/wiki/pages | 页面列表(path、title、type、tags、parent) |
GET /api/wiki/pages/{path} | 单页内容(frontmatter + markdown) |
GET /api/wiki/search?q= | 全文搜索 |
知识图谱可视化
通过 Graphify (v0.3.17) 对 pages-v2/ 做语义提取,生成交互式 D3.js 图谱:
- 地址:https://portal.dev.dora.restry.cn/knowledge-graph.html
- 规模:48 节点 · 47 边 · 5 超边
- 功能:搜索、类型筛选、拖拽、缩放、悬停详情
- 覆盖:项目、技术栈、Agent、服务器
目录清洁问题
Wiki 目录共 570 个文件,但核心产出仅约 100 个,raw/ 目录有 ~470 个可清理的旧文件(旧版 Wiki 残留、已消化的 Mattermost 原始聊天、旧版 topics)。
增量更新现状
- Wiki Skill 定义了
/wiki ingest [source]命令,支持手动触发从 MM API 拉新消息 - 尚无基于 Clawline
cl_messages表的自动化增量更新 - 历史记录中提到
wiki-ingest.js脚本(从 Supabase 查询 → LLM 摘要 → 生成 Wiki),但不在 wiki 目录中
生产 vs 开发环境不一致
| 环境 | 地址 | Wiki API |
|---|---|---|
| 开发版 | portal.dev.dora.restry.cn | ✅ 有(server.cjs 3559 行) |
| 生产版 | agent-project.clawlines.net | ❌ 无(容器内旧版 server.js 1479 行) |