Files
dnd-claw/agent-console/README.md
T
2026-09-26 19:36:00 +08:00

143 lines
7.0 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 的智能体控制台前端,基于 **Vue 3 + Vite + TypeScript**。
采用三栏布局:左侧功能设置区 + 对话管理、中间对话面板、右侧文件预览。
主题配色取自参考 APP 的浅色/深色方案。
---
## 快速开始
```bash
# 安装依赖(首次运行)
npm install
# 启动开发服务器
npm run dev
# 构建生产版本
npm run build
# 预览生产构建
npm run preview
```
开发服务器默认地址:**http://localhost:5174/**
---
## 目录结构与文件说明
```
agent-console/
├── node_modules/ # npm 依赖包(约 61MB,由 npm install 自动生成,无需手动维护)
├── src/
│ ├── components/ # Vue 组件目录
│ │ ├── Sidebar.vue # 左侧栏:功能设置区 + 对话管理列表 + 主题切换
│ │ ├── ChatPanel.vue # 中间栏:消息列表 + 工具调用卡片 + 输入框
│ │ └── FilePreview.vue # 右侧栏:文件内容预览(点击工具调用"预览文件"打开)
│ ├── composables/ # 组合式函数
│ │ └── useTheme.ts # 主题状态管理(light/dark,持久化到 localStorage)
│ ├── styles/ # 全局样式
│ │ └── theme.css # 浅色/深色主题 CSS 变量 + 基础重置样式
│ ├── App.vue # 根组件:三栏布局 + 对话/预览联动
│ ├── main.ts # 应用入口:挂载 Vue 实例
│ ├── env.d.ts # TypeScript 环境声明(vue 文件类型、vite 客户端类型)
│ ├── mock.ts # 模拟数据:功能开关、会话列表、工具调用示例
│ └── types.ts # 全局类型定义:ToolCall / ChatMessage / Conversation / AgentSetting
├── index.html # Vite 入口 HTML(挂载 #app)
├── package.json # 项目元信息 + 依赖 + npm scripts
├── package-lock.json # 依赖版本锁定文件(保证可复现安装)
├── tsconfig.json # TypeScript 编译配置
└── vite.config.ts # Vite 构建配置(Vue 插件 + 端口 5174)
```
---
## 各文件详细作用
### 根目录配置文件
| 文件 | 作用 |
|------|------|
| `package.json` | 定义项目名称、版本、脚本命令(dev/build/preview)、运行时依赖(vue)和开发依赖(vite、@vitejs/plugin-vue、typescript、vue-tsc) |
| `package-lock.json` | 锁定所有依赖的精确版本号,确保团队安装结果一致。由 `npm install` 自动生成 |
| `vite.config.ts` | Vite 配置:启用 Vue 插件,开发服务器端口设为 `5174`,开启 host 以便局域网访问 |
| `tsconfig.json` | TypeScript 配置:目标 ES2020、bundler 模块解析、严格模式、包含 `src/**/*.ts` 和 `src/**/*.vue` |
| `index.html` | 单页应用入口 HTML,包含 `<div id="app">` 挂载点,通过 `<script type="module" src="/src/main.ts">` 加载 |
### `src/` 源码目录
| 文件 | 作用 |
|------|------|
| `main.ts` | 应用入口:创建 Vue 应用实例、引入全局主题样式、挂载到 `#app` |
| `App.vue` | 根组件:三栏 flex 布局;管理当前选中会话、右侧预览显隐;接收子组件事件联动 |
| `types.ts` | 集中定义 TypeScript 接口:`ToolCall`(工具调用)、`ChatMessage`(消息)、`Conversation`(会话)、`AgentSetting`(功能设置项) |
| `mock.ts` | 提供模拟数据:5 条功能开关设置、5 个示例会话(每个含用户消息 + 智能体回复 + 工具调用)。后续对接后端时替换此文件即可 |
| `env.d.ts` | 声明 `.vue` 模块类型,使 TypeScript 能正确识别 Vue 单文件组件;引入 `vite/client` 类型 |
### `src/components/` 组件目录
| 文件 | 作用 |
|------|------|
| `Sidebar.vue` | 左侧栏(固定 260px 宽)。包含:品牌区(含 🌙/☀️ 主题切换按钮)、功能设置区(5 个开关)、对话管理列表(含新建按钮、会话标题/模型/时间展示、当前选中高亮) |
| `ChatPanel.vue` | 中间对话面板(flex 自适应)。包含:顶部会话信息 + 运行按钮、消息列表(用户消息右对齐蓝色气泡、智能体消息左对齐含角色标签)、工具调用卡片(名称、状态徽章 done/running/error、参数、预览文件按钮)、底部输入框(Enter 发送) |
| `FilePreview.vue` | 右侧文件预览框(固定 320px 宽)。包含:文件头(文件名 + 关闭按钮)、代码块内容区(可滚动)。由 `App.vue` 通过 `v-if` 控制显隐 |
### `src/composables/` 组合式函数目录
| 文件 | 作用 |
|------|------|
| `useTheme.ts` | 主题状态管理:从 `localStorage` 读取主题、提供 `toggle()` 切换方法、通过 `watchEffect` 自动写入 `data-theme` 属性和 `localStorage`。返回 `theme` 响应式对象 |
### `src/styles/` 样式目录
| 文件 | 作用 |
|------|------|
| `theme.css` | 全局主题系统。定义 `:root` 主色/语义色变量;`[data-theme='light']` 浅色主题变量、`[data-theme='dark']` 深色主题变量;全局样式重置(box-sizing、字体、滚动条、按钮/输入框基础样式)。配色取自参考 APP 的 `theme.json` 与 `uni.scss` |
---
## node_modules 说明
- **位置**:`d:\dndClaw\agent-console\node_modules\`
- **作用**:存放 `npm install` 下载的所有依赖包(包括 `vue`、`vite`、`@vitejs/plugin-vue`、`typescript` 等及其传递依赖)
- **响应来源**:由 `package.json` 中声明的依赖项决定,执行 `npm install` 时从 npm 仓库下载并写入此目录
- **维护方式**:**不要手动编辑**。新增/删除依赖通过 `npm install <包名>` 或 `npm uninstall <包名>` 操作;此目录通常不纳入版本控制(应在 `.gitignore` 中排除)
---
## 主题配色
取自参考 APP(`D:\Danaodai_APP\APP_5.0`)的 `theme.json` 与 `uni.scss`:
| 变量 | 浅色 | 深色 | 用途 |
|------|------|------|------|
| `--primary` | `#007AFF` | `#007AFF` | 主色(按钮、选中态、链接) |
| `--success` | `#4CD964` | `#4CD964` | 成功状态 |
| `--warning` | `#F0AD4E` | `#F0AD4E` | 警告/执行中 |
| `--danger` | `#DD524D` | `#DD524D` | 错误/失败 |
| `--bg-app` | `#EFEFF4` | `#1F1F1F` | 应用背景 |
| `--bg-panel` | `#FFFFFF` | `#252526` | 面板背景 |
| `--bg-sidebar` | `#F8F8F8` | `#1A1A1A` | 侧栏背景 |
| `--text-primary` | `#1A1A1A` | `#EAEAEA` | 主文字 |
| `--text-muted` | `#999` | `#8A8A8A` | 辅助文字 |
| `--border` | `#E1E1E6` | `#333` | 边框 |
---
## 技术栈
- **Vue 3.5** — 组合式 API + `<script setup>`
- **Vite 6** — 开发服务器 + 构建
- **TypeScript 5.6** — 类型安全
- **纯 CSS 变量** — 主题切换(无额外 UI 框架依赖)
## 后续可扩展方向
1. 对接真实后端 API(替换 `mock.ts`)
2. 左/右栏宽度可拖拽调整
3. 智能体回复流式输出(打字机效果)
4. 右侧预览支持多文件 Tab
5. 工具调用状态实时更新(pending → running → done)