Files
dnd-claw/agent-console
2026-09-27 16:41:31 +08:00
..
2026-09-27 16:41:31 +08:00

智能体控制台 (agent-console)

一个类 Trae Work 的智能体控制台,基于 Electron + Vue 3 + TypeScript。 采用 electron-vite 三层架构(main / preload / renderer)。 综合智能体引擎 agent-core 独立于本项目,运行时通过 UDS/pipe + WebSocket 与前端通信。


快速开始

# 安装依赖(首次运行)
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 调用主进程:

// 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 与前端通信。

// 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 — 自研智能体引擎