架构概览
WesCraft 的技术架构概览,面向需要理解系统内部运作的用户和开发者。
整体架构
WesCraft 采用 Electron 桌面应用架构,内嵌 Go 后端和 wesgine v1.0 引擎:
┌─────────────────────────────────────────────┐
│ Electron 桌面应用 │
│ ┌────────────────────────────────────────┐ │
│ │ React 19 + Vite + Tailwind 4 │ │
│ │ (前端 UI 层) │ │
│ └────────────────┬───────────────────────┘ │
│ │ HTTP │
│ ┌────────────────▼───────────────────────┐ │
│ │ Go 后端 (:3100) │ │
│ │ ┌──────────────────────────────────┐ │ │
│ │ │ wesgine v1.0 (go mod 嵌入) │ │ │
│ │ │ Hypervisor + Cell │ │ │
│ │ └──────────────────────────────────┘ │ │
│ └────────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
技术栈
| 层 | 技术 |
|---|---|
| 框架 | React 19 + TypeScript |
| 构建 | Vite 6.x |
| 样式 | Tailwind 4 |
| 动画 | framer-motion |
| 状态 | Zustand |
| 路由 | React Router v7 |
| 组件基元 | Radix UI |
| 块编辑器 | BlockNote |
| i18n | i18next + react-i18next |
| AI 引擎 | wesgine v1.0(go mod 嵌入) |
| 存储 | SQLite + FTS5 |
Go 后端模块
wescraft.git/
├── cmd/wescraft/ # 入口(serve / init)
├── internal/
│ ├── content/ # 内容管理引擎(页面 CRUD + Block CRUD)
│ ├── knowledge/ # 知识引擎(6-Stage 管线)
│ ├── fileintel/ # 文件智能引擎(本地文件索引)
│ ├── capture/ # 采集引擎(多源输入 → 收集箱)
│ ├── export/ # 输出引擎(PDF/Word/MD/公众号)
│ ├── tools/ # 19 个 wescraft 专属工具
│ ├── engine/ # wesgine 初始化(Hypervisor + Cell)
│ ├── deviceagent/ # Electron device agent MCP server
│ └── store/ # 应用层存储(wescraft.db)
├── builtinskills.go # //go:embed skills
├── skills/ # 预装 Tier C 技能
└── extension/ # 浏览器扩展
Cell 模型
WesCraft 基于 wesgine 的 Cell 隔离模型,提供两种部署形态:
个人版
cell, _ := hyp.Cells().GetOrCreate(ctx, wesgine.CellSpec{
ID: "personal",
Timezone: "Asia/Shanghai",
Locale: "zh-CN",
ProviderStrategy: "own_only",
Compliance: "standard",
})
团队版
cell, _ := hyp.Cells().GetOrCreate(ctx, wesgine.CellSpec{
ID: "team-" + teamID,
Governance: mapTeamGovernance(team),
Compliance: team.Compliance,
})
Cell 边界选型
选择 Cell 粒度的三个维度:
| 维度 | 问题 | 决策 |
|---|---|---|
| 数据边界 | 一个人的数据 vs 一家公司的数据? | 选后者的粒度 |
| 合规边界 | GDPR 请求给一个人 vs 一家公司? | 选后者 |
| 计费边界 | 谁付账? | 谁的粒度 |
五大引擎
1. 内容管理引擎(internal/content/)
负责页面和 Block 的 CRUD 操作:
- 页面创建、编辑、删除(含递归子页面)
- Block 级别操作(read/write/edit/delete/move/transform)
- 版本管理(
wc_page_versions表) - FTS5 全文搜索索引同步
2. 知识引擎(internal/knowledge/)
6-Stage 知识管线:
采集 → 清洗 → 分块 → 索引 → 标签 → 关联
- 支持多格式文件导入
- 自动分块和语义索引
- AI 驱动的标签生成和关联检测
3. 文件智能引擎(internal/fileintel/)
本地文件索引系统(per-cell 隔离):
- 关注目录管理(
wc_watched_paths表) - fsnotify 文件变更监听
- 后台自动索引
- AgenticRAG 模型驱动检索
4. 采集引擎(internal/capture/)
多源内容采集:
- 浏览器扩展剪藏
- 剪贴板
- URL 抓取
- 文件拖拽
- 截图
5. 输出引擎(internal/export/)
多格式导出:
- PDF 导出(
export_pdf) - Word 导出(
export_docx) - 公众号格式(
export_wxpub)
数据目录结构
$XDG_DATA_HOME/wescraft/ # macOS: ~/Library/Application Support/wescraft/
├── hypervisor.db # Cell 注册表
├── cells/personal/ # 个人版 Cell
│ ├── meta.db # Cell 元数据
│ ├── sessions.db # 会话与记忆
│ ├── state.db # 运行时状态
│ ├── knowledge/ # 知识库文件
│ └── skills/ # Tier C 技能包
├── wescraft.db # 应用层数据(页面、Block、收集箱等)
└── db/wescode_auth.db # 登录 session(跨 Cell 共享)
工具体系
WesCraft 的 19 个专属工具通过 cell.Tools().Register() 装到 Cell:
| 类别 | 工具名 | 数量 |
|---|---|---|
| Block 操作 | read_block / write_block / edit_block / delete_block / move_block / transform_block | 6 |
| 文件智能 | search_files / read_local_file / find_related_files / file_overview / assemble_from_files | 5 |
| 输出 | export_pdf / export_docx / export_wxpub | 3 |
| 其他 | capture_url / note_summarize / create_doc / db_query / db_insert / db_update | 5 |
所有工具都是 Tier C(Cell 级),装到对应的 Cell 中,不同 Cell 之间工具互不可见。
SDK 层关系
wesgine 引擎内核
wesui 前端渲染(零 fetch / 零 store / 零路由)
wesapp 公共 Go 库
weisyn/sdk 平台客户端
▲
产品:wesclaw | wescode | wescraft | teleclaw
产品之间互不 import
WesCraft 通过 go mod replace 引用 wesgine 和 wesapp,不导入其他产品仓代码。公共 Go 能力只进 wesapp;公共 UI 能力进 wesui。
安全边界
- Cell 隔离:不同 Cell 之间物理隔离(独立数据库文件)
- 路径校验:使用
filepath.EvalSymlinks防止符号链接逃逸 - 文件只读:FileIntelligence 永不修改用户本地文件
- 治理链:wesgine Governance 管控工具执行
- Actor 隔离:团队版中不同用户的记忆、会话物理隔离