- 添加多个工具卡片组件,包括 LsResultCard、BashResultCard、FileReadResultCard 和 ToolCallCard - 更新 ChatView 消息处理逻辑,支持工具消息的解析与展示 - 实现工具调用与结果处理机制,完善工具消息的归一化及合并逻辑 - 优化消息界面,新增工具调用列表与对应的样式调整 - 更新工具调用相关功能的状态管理与交互逻辑
2.9 KiB
2.9 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
项目概述
ARS(Agent Runtime Server)前端 Demo,一个基于 Vue 3 + Vite 的 SPA,为智能体运行时后端提供会话管理和消息展示界面。与 ars-backend 配合使用。
常用命令
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 生产构建
npm run build
# 运行所有测试
npm test
# 运行单个测试文件
npx vitest tests/chat-view.spec.js
# 运行匹配模式的测试
npx vitest -t "message.delta"
环境配置
VITE_API_BASE: 后端 API 基址,默认http://localhost:8000/api
架构概览
技术栈
- 框架: Vue 3 (Composition API +
<script setup>) - UI 库: Element Plus
- 路由: Vue Router 4
- HTTP: Axios
- Markdown: markdown-it + mermaid
- 测试: Vitest + Vue Test Utils + jsdom
目录结构
src/
├── main.js # 应用入口,初始化主题/路由/Element Plus
├── App.vue # 根布局:登录页布局 vs 管理后台布局(含侧边栏)
├── router/index.js # 路由配置
├── views/ # 页面组件
│ ├── LoginView.vue # 登录页
│ ├── WelcomeView.vue # 欢迎/仪表盘
│ ├── UsersView.vue # 用户管理
│ └── ChatView.vue # 会话详情(核心页面)
├── components/
│ ├── SessionSidebar.vue # 会话列表侧边栏
│ ├── NewChatButton.vue # 新建会话按钮
│ └── tools/ # 工具调用结果卡片组件
└── composables/
└── useTheme.js # 主题切换逻辑
tests/ # Vitest 测试文件
核心数据流
- 认证: JWT token 存储在
localStorage(ars-token) - 会话管理: 当前会话 ID 存储在
localStorage(ars-current-session) - 实时消息: 通过 SSE (Server-Sent Events) 接收增量消息
- 主题: 支持 light/dark/system,存储在
localStorage(ars-theme)
ChatView 消息处理逻辑
ChatView 是最复杂的组件,处理以下消息类型:
user.prompt: 用户输入agent.message: Agent 最终回复message.delta: 流式增量内容(打字机效果)run.status: 运行状态(RUNNING/DONE/FAILED)error: 系统错误
关键机制:
dedupe_key去重防止重复消息run_id将同一运行的 delta 和 final message 关联finalizedRunIds标记已完成的运行,忽略后续 delta- 打字机效果通过
typingStatesMap 管理
测试模式
测试使用 jsdom 环境,需要 mock:
axios的 HTTP 请求EventSource的 SSE 连接mermaid渲染window.scrollTo
样式约定
- 使用 CSS 变量定义主题色(见
style.css) - 组件使用
<style scoped> - 响应式断点:900px/960px