Files
dnd-claw/agent-console/README.md
T

161 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 智能体控制台 (agent-console)
一个类 Trae Work 的智能体控制台,基于 **Electron + Vue 3 + TypeScript**。
采用 electron-vite 三层架构(main / preload / renderer)。
综合智能体引擎 **agent-core** 独立于本项目,运行时通过 UDS/pipe + WebSocket 与前端通信。
---
## 快速开始
```bash
# 安装依赖(首次运行)
npm install
# 启动开发模式(Electron 窗口 + 热更新)
npm run dev
# 构建生产版本
npm run build
# 预览构建结果
npm run preview
```
---
## 目录结构
```
agent-console/
├── electron.vite.config.ts # electron-vite 配置(main/preload/renderer 三层)
├── package.json # 根依赖与脚本
├── tsconfig.json # TS 配置入口(引用 node + web)
├── tsconfig.node.json # 主进程/预加载 TS 配置
├── tsconfig.web.json # 渲染进程 TS 配置
│
├── src/
│ ├── main/ # Electron 主进程
│ │ └── index.ts # 创建窗口、IPC 注册
│ │
│ ├── preload/ # 预加载脚本(安全桥接)
│ │ └── index.ts # contextBridge 暴露 electronAPI
│ │
│ └── renderer/ # 渲染进程(Vue 前端)
│ ├── index.html
│ ├── main.ts # Vue 入口
│ ├── App.vue # 三栏主布局
│ ├── types.ts # 类型定义
│ ├── mock.ts # 模拟数据
│ ├── env.d.ts
│ ├── styles/theme.css # 浅/深主题 CSS 变量
│ ├── composables/
│ │ └── useTheme.ts # 主题状态
│ └── components/
│ ├── Sidebar.vue # 左:功能设置 + 对话管理
│ ├── ChatPanel.vue # 中:对话面板(SSE 流式)
│ ├── SettingsPanel.vue# 设置页(API 配置/工作流)
│ └── FilePreview.vue # 右:文件预览(可拖拽宽度)
```
> **agent-core** 综合智能体引擎为独立项目,位于 `../agent-core/`,
> 拥有单独运行时(操作 CLI),通过 UDS/pipe + WebSocket 与本前端通信。
---
## 三层架构说明
| 层 | 目录 | 职责 |
|----|------|------|
| **Main** | `src/main/` | Electron 主进程,创建窗口、管理生命周期、IPC 主端 |
| **Preload** | `src/preload/` | 预加载脚本,通过 contextBridge 安全暴露 API 给渲染进程 |
| **Renderer** | `src/renderer/` | Vue 3 前端,用户界面 |
### IPC 通信
渲染进程通过 `window.electronAPI` 调用主进程:
```ts
// preload/index.ts
contextBridge.exposeInMainWorld('electronAPI', {
ping: () => ipcRenderer.invoke('ping'),
getPaths: () => ipcRenderer.invoke('get-paths'),
getDbPath: () => ipcRenderer.invoke('get-db-path'),
callAgent: (input) => ipcRenderer.invoke('call-agent', input),
onAgentStream: (callback) => { ... }
})
```
### 用户数据目录(userData)
应用启动时自动创建以下目录结构:
```
<userData>/ # 项目内 .electron-userdata/
├── data/
│ ├── agent-console.db # SQLite 主数据库(WAL 模式)
│ ├── agent-console.db-wal # WAL 日志(自动创建)
│ └── agent-console.db-shm # 共享内存(自动创建)
├── workspaces/ # worktree 根目录
│ └── ws-{uuid}/ # 每个任务的工作区
├── backups/ # 数据库备份
└── logs/ # 运行日志
```
通过 `window.electronAPI.getPaths()` 获取所有路径,`getDbPath()` 获取数据库文件路径。
---
## agent-core 智能体引擎(独立项目)
位于 `d:\dndClaw\agent-core\`,与 agent-console 平级。
拥有独立运行时(操作 CLI),通过 **UDS/pipe + WebSocket** 与前端通信。
```ts
// agent-core/src/index.ts
import { createAgent } from './index'
const agent = createAgent({
provider: 'qianfan_v2',
baseUrl: 'https://qianfan.baidubce.com/v2/chat/completions',
authorization: 'Bearer xxx',
model: 'deepseek-v3.2',
temperature: 0.934
})
await agent.chat('你好', {
onToken: (token) => console.log(token),
onDone: (content) => console.log('完成:', content)
})
```
### 核心模块
| 模块 | 说明 |
|------|------|
| `llm/provider` | LLM 流式调用,支持文心千帆 v2 / OpenAI 兼容 |
| `tools/registry` | 工具注册中心,支持动态注册/执行 |
| `workflow/engine` | 工作流引擎,协调 LLM 与工具调用 |
---
## 主题配色
| 变量 | 浅色 | 深色 | 用途 |
|------|------|------|------|
| `--primary` | `#007AFF` | `#007AFF` | 主色 |
| `--bg-app` | `#EFEFF4` | `#1F1F1F` | 应用背景 |
| `--bg-panel` | `#FFFFFF` | `#252526` | 面板背景 |
| `--text-primary` | `#1A1A1A` | `#EAEAEA` | 主文字 |
| `--border` | `#E1E1E6` | `#333333` | 边框 |
---
## 技术栈
- **Electron** 33 — 桌面应用框架
- **electron-vite** 2 — 构建工具
- **Vue 3** + **TypeScript** — 前端框架
- **marked** — Markdown 渲染
- **agent-core** — 自研智能体引擎