架构
┌─────────────────────────────────────────────────┐
│ 宿主层 │
│ ┌───────────┐ ┌───────────┐ ┌─────────────┐ │
│ │ 桌面端 │ │ HTTP 服务 │ │ MCP 服务 │ │
│ │ (Wails) │ │ (Gin) │ │ (stdio/SSE) │ │
│ └─────┬─────┘ └─────┬─────┘ └──────┬──────┘ │
│ └───────────────┼───────────────┘ │
│ ┌────┴────┐ │
│ │ engine │ ← 唯一入口 │
│ └────┬────┘ │
│ ┌───────────────┼───────────────┐ │
│ ┌────┴────┐ ┌──────┴──────┐ ┌─────┴─────┐ │
│ │toolloop │ │conversation │ │ llm │ │
│ └─────────┘ └─────────────┘ └───────────┘ │
│ core/ │
├─────────────────────────────────────────────────┤
│ gateway (OpenAPI) mcp (MCP 协议) │
│ bootstrap (初始化助手) │
└─────────────────────────────────────────────────┘分层
| 层 | 包 | 职责 |
|---|---|---|
| core/ | toolloop, conversation, llm | 纯逻辑层:工具循环、会话管理、LLM 客户端。零外部依赖。 |
| engine/ | engine | 宿主唯一入口,隔离 core 内部实现。 |
| service/ | service | 共享业务逻辑:Target CRUD、配置管理、LLM 设置。 |
| gateway/ | gateway | 解析 OpenAPI spec,构建 LLM 工具定义,执行 HTTP 调用。 |
| mcp/ | mcp | 双向 MCP 支持:对外暴露工具或消费外部 MCP 服务。 |
| bootstrap/ | bootstrap | 初始化助手:发现工具、构建系统提示词、连接各组件。 |
宿主
所有宿主通过 engine/ 访问核心,不直接碰 toolloop 或 conversation。
- HTTP 服务 (
server/) — 基于 Gin 的 REST + SSE 流式响应。 - 桌面端 (
desktop/) — Wails v2 应用,React 前端。独立 Go module。 - MCP 服务 — 通过 MCP stdio/SSE 暴露 NLUI 工具,供 Claude Desktop 等客户端使用。