用户场景故事
作为开发者,我希望能够在浏览器或桌面应用中使用图形化界面与 NeoCode AI Coding Agent 交互,而不仅仅是通过终端 TUI。这样可以提供更直观的体验,特别是对于:
- 不熟悉终端操作的用户
- 需要可视化文件树和代码变更的用户
- 希望在桌面环境中无缝集成的用户
- 需要多会话管理和历史记录查看的用户
核心功能实现
-
API 层 (web/src/api/)
gateway.ts: Gateway 业务 API 客户端,支持认证、会话管理、工具调用等
wsClient.ts: WebSocket 全双工通道客户端
protocol.ts: 完整的 Gateway RPC 协议类型定义
-
状态管理 (web/src/stores/)
useChatStore.ts: 聊天消息、权限请求、token 用量、运行状态
useSessionStore.ts: 会话列表、项目分组、会话切换
useGatewayStore.ts: Gateway 连接状态
useUIStore.ts: UI 状态(侧边栏、面板、toast 等)
-
组件实现 (web/src/components/)
chat/: ChatPanel, MessageList, ChatInput, MessageItem, ToolCallCard, ModelSelector, CodeBlock, MarkdownContent
layout/: AppLayout, Sidebar
panels/: FileTreePanel, FileChangePanel
status/: StatusBar
permission/: PermissionDialog
ui/: ToastContainer
-
页面实现 (web/src/pages/)
ChatPage.tsx: 主聊天页面
ConnectPage.tsx: 浏览器端 Gateway 连接配置页
-
运行时上下文 (web/src/context/)
RuntimeProvider.tsx: Gateway 连接管理、WebSocket 事件桥接
-
双模式支持
- Electron 模式:桌面应用,内嵌 Gateway
- 浏览器模式:连接远程 Gateway 或通过 Vite 插件启动本地 Gateway
-
核心交互
- 实时消息流式输出
- 工具调用可视化展示
- 权限请求处理(拒绝/允许一次/本会话允许)
- 会话管理(新建、重命名、归档)
- 文件树展示
- 文件变更展示
- 模型选择
- 错误边界和重试机制
实现目标
阶段一:基础功能完善(当前阶段)
阶段二:功能增强
阶段三:发布准备
实现的大致描述
架构设计
Web UI 遵循 NeoCode 的主链路架构:
用户输入(Web UI) -> Gateway API -> Runtime -> Tools -> 结果回传 -> UI 展示
分层隔离
- Web UI 作为 Gateway 的客户端,不直接依赖 Runtime 或 Provider
- 通过 WebSocket 全双工通道与 Gateway 通信
- 状态集中管理,不分散到组件
模块边界
api/: Gateway 协议适配层
stores/: 状态管理层
components/: UI 组件层
pages/: 页面层
context/: 运行时上下文
技术决策
-
状态管理选择 Zustand
- 轻量级、API 简洁
- 支持 TypeScript
- 适合中小型应用
-
样式方案
- 使用 CSS 变量实现主题系统
- 内联样式(当前实现)便于快速开发
- 未来可迁移到 CSS Modules 或 Tailwind CSS
-
构建工具选择 Vite
- 快速的开发体验
- 良好的 TypeScript 支持
- Electron 插件生态完善
-
双模式支持
- Electron 模式:桌面应用,可内嵌 Gateway
- 浏览器模式:连接远程 Gateway,便于开发和测试
开发流程
-
开发环境
cd web
npm install
npm run dev # 浏览器模式
npm run dev:electron # Electron 模式
-
构建
npm run build # 浏览器构建
npm run build:electron # Electron 构建
-
测试
npm run test # 运行测试
npm run test:ui # 测试 UI
npm run coverage # 覆盖率报告
验收标准
功能验收
质量验收
文档验收
发布验收
用户场景故事
作为开发者,我希望能够在浏览器或桌面应用中使用图形化界面与 NeoCode AI Coding Agent 交互,而不仅仅是通过终端 TUI。这样可以提供更直观的体验,特别是对于:
核心功能实现
API 层 (
web/src/api/)gateway.ts: Gateway 业务 API 客户端,支持认证、会话管理、工具调用等wsClient.ts: WebSocket 全双工通道客户端protocol.ts: 完整的 Gateway RPC 协议类型定义状态管理 (
web/src/stores/)useChatStore.ts: 聊天消息、权限请求、token 用量、运行状态useSessionStore.ts: 会话列表、项目分组、会话切换useGatewayStore.ts: Gateway 连接状态useUIStore.ts: UI 状态(侧边栏、面板、toast 等)组件实现 (
web/src/components/)chat/: ChatPanel, MessageList, ChatInput, MessageItem, ToolCallCard, ModelSelector, CodeBlock, MarkdownContentlayout/: AppLayout, Sidebarpanels/: FileTreePanel, FileChangePanelstatus/: StatusBarpermission/: PermissionDialogui/: ToastContainer页面实现 (
web/src/pages/)ChatPage.tsx: 主聊天页面ConnectPage.tsx: 浏览器端 Gateway 连接配置页运行时上下文 (
web/src/context/)RuntimeProvider.tsx: Gateway 连接管理、WebSocket 事件桥接双模式支持
核心交互
实现目标
阶段一:基础功能完善(当前阶段)
阶段二:功能增强
阶段三:发布准备
实现的大致描述
架构设计
Web UI 遵循 NeoCode 的主链路架构:
分层隔离
模块边界
api/: Gateway 协议适配层stores/: 状态管理层components/: UI 组件层pages/: 页面层context/: 运行时上下文技术决策
状态管理选择 Zustand
样式方案
构建工具选择 Vite
双模式支持
开发流程
开发环境
构建
测试
验收标准
功能验收
质量验收
文档验收
发布验收