本项目集成了先进的 AI Agent 系统,为用户提供智能化的代码开发辅助功能。系统通过 SSE (Server-Sent Events) 实现实时通信,支持流式对话和工具调用。
负责管理与服务器的实时连接:
- 自动重连机制
- 连接状态监控
- 消息分发和处理
- 错误恢复策略
文件管理 Hook (hooks/useAppDevFileManagement.ts)
- 项目文件树管理
- 文件内容缓存和同步
- 文件修改状态跟踪
- 自动保存机制
开发服务器 Hook (hooks/useAppDevServer.ts)
- 开发环境自动启动
- 服务器状态监控
- 保活机制
- 端口自动分配
聊天系统 Hook (hooks/useAppDevChat.ts)
- SSE 实时连接管理
- 消息流式处理
- AI 思考过程展示
- 工具调用状态管理
处理不同类型的 AI 消息:
agent_thought_chunk: AI 思考过程agent_message_chunk: AI 回复内容tool_call: 工具调用通知prompt_end: 会话结束
- 会话 ID 生成和管理
- 多会话并发支持
- 会话状态持久化
interface ChatMessage {
id: string;
type: 'ai' | 'user' | 'button' | 'section' | 'thinking' | 'tool_call';
content?: string;
sessionId?: string;
isStreaming?: boolean;
}- 实时显示 AI 思考过程
- 上下文理解展示
- 推理路径可视化
- 自动执行开发任务
- 文件操作自动化
- 代码生成和修改
- 实时文本流显示
- 打字机效果
- 增量内容更新
文件树组件 (pages/AppDev/components/FileTree/index.tsx)
- 支持文件夹展开/折叠
- 文件选择和编辑
- 文件创建、删除操作
- 拖拽操作支持
- 右键菜单功能
文件内容管理
- 文件内容缓存机制
- 修改状态实时跟踪
- 自动保存功能
- 文件类型识别
Monaco Editor 集成 (pages/AppDev/components/MonacoEditor/index.tsx)
- 支持多种编程语言语法高亮
- TypeScript/JavaScript 智能提示
- 自定义主题配置
- 实时内容同步
- 代码折叠和格式化
预览组件 (pages/AppDev/components/Preview/index.tsx)
- iframe 嵌入式预览
- 自动刷新功能
- 全屏预览支持
- 错误状态处理
- 加载状态显示
服务器生命周期管理
- 自动启动开发环境
- 自动端口分配 (3000-4000 范围)
- 服务器状态实时监控
- 保活机制防止服务中断
- 错误恢复和重试机制
开发环境错误处理
- 后端服务不可用时的前端开发支持
- URL 参数控制 (
?mock=true/false) - localStorage 持久化配置
- 模拟网络延迟 (300ms)
- 完整的 API 端点模拟
const response = await sendChatMessage({
user_id: 'app-dev-user',
prompt: userInput,
project_id: workspace.projectId,
session_id: sessionId,
request_id: generateRequestId(),
});await cancelAgentTask(workspace.projectId, sessionId);interface AgentThoughtData {
thinking: string;
timestamp: string;
context?: string;
}interface AgentMessageData {
content: {
text: string;
reasoning?: string;
suggestions?: string[];
};
is_final: boolean;
}- 代码生成和补全
- Bug 修复建议
- 代码重构指导
- 项目结构分析
- 技术选型建议
- 最佳实践推荐
- 概念解释
- 实例演示
- 渐进式学习路径
- 错误诊断
- 性能优化
- 架构设计
前端项目开发
- React/Next.js 项目快速搭建
- 组件开发和调试
- 样式和布局调整
- 实时预览和测试
全栈应用开发
- 前后端联调
- API 接口测试
- 数据库操作
- 部署和发布
教学和演示
- 代码示例展示
- 交互式编程教学
- 技术概念验证
- 原型快速开发
团队协作
- 代码审查和讨论
- 问题排查和解决
- 知识分享和传递
- 最佳实践推广
const aiConfig = {
model: 'deepseek-v3',
temperature: 0.7,
maxTokens: 4000,
streamEnabled: true,
};const sseConfig = {
baseUrl: 'http://localhost:8000',
timeout: 30000,
retryAttempts: 3,
retryDelay: 1000,
};开发服务器配置
const devServerConfig = {
portRange: [3000, 4000],
keepAliveInterval: 30000,
maxRetryAttempts: 3,
startupTimeout: 60000,
};文件管理配置
const fileManagementConfig = {
autoSaveDelay: 2000,
maxFileSize: 10 * 1024 * 1024, // 10MB
supportedFileTypes: ['.js', '.ts', '.jsx', '.tsx', '.css', '.less', '.html'],
cacheExpiration: 300000, // 5分钟
};Monaco Editor 配置
const monacoConfig = {
theme: 'vs-dark',
fontSize: 14,
tabSize: 2,
wordWrap: 'on',
minimap: { enabled: true },
automaticLayout: true,
};错误恢复配置
const errorRecoveryConfig = {
enabled: process.env.NODE_ENV === 'development',
networkDelay: 300,
retryAttempts: 3,
persistentStorage: true,
};- 明确具体的任务描述
- 提供充分的上下文信息
- 使用结构化的输入格式
- 保持会话的连续性
- 适时创建新的会话
- 及时清理无用会话
- 优雅处理网络中断
- 提供用户友好的错误信息
- 实现自动重试机制
- 合理控制消息频率
- 避免过长的对话历史
- 及时清理无用数据
文件管理
- 合理组织项目文件结构
- 及时保存文件修改
- 使用有意义的文件名
- 避免过大的文件
开发服务器
- 定期重启服务器释放资源
- 监控服务器运行状态
- 合理配置端口范围
- 及时处理服务器错误
代码编辑
- 使用 TypeScript 提高代码质量
- 合理配置编辑器主题和字体
- 利用代码提示和自动补全
- 定期格式化代码
预览调试
- 充分利用实时预览功能
- 及时处理预览错误
- 使用浏览器开发者工具
- 测试不同设备和屏幕尺寸
错误恢复开发
- 在开发环境优先使用错误恢复机制
- 合理配置错误处理策略
- 定期同步真实 API 接口
- 注意错误恢复和真实环境的差异
- 敏感信息脱敏
- 数据传输加密
- 访问权限控制
- 恶意输入检测
- 内容长度限制
- 格式规范验证
- 有害内容过滤
- 代码安全检查
- 版权合规验证
- 在
services/appDev.ts中添加新的 API 接口 - 在 SSE Manager 中注册新的消息类型
- 在组件中添加对应的处理逻辑
- 更新 TypeScript 类型定义
const customAgentConfig = {
personality: 'professional',
responseStyle: 'detailed',
specializedDomain: 'web-development',
};interface ExternalAIService {
sendMessage(prompt: string): Promise<AIResponse>;
cancelRequest(requestId: string): Promise<void>;
streamResponse(prompt: string): AsyncGenerator<StreamChunk>;
}添加新的文件类型支持
- 在
utils/appDevUtils.ts中添加文件类型识别逻辑 - 在
utils/monacoConfig.ts中添加语言映射 - 在 MonacoEditor 组件中添加对应的语言支持
- 更新文件图标和预览逻辑
自定义编辑器主题
const customTheme = {
name: 'custom-dark',
base: 'vs-dark',
inherit: true,
rules: [
{ token: 'comment', foreground: '6A9955' },
{ token: 'keyword', foreground: '569CD6' },
],
colors: {
'editor.background': '#1e1e1e',
'editor.foreground': '#d4d4d4',
},
};扩展文件操作功能
- 在
hooks/useAppDevFileManagement.ts中添加新的文件操作 - 在
services/appDev.ts中添加对应的 API 接口 - 在 FileTree 组件中添加 UI 交互
- 更新文件状态管理逻辑
自定义预览组件
interface CustomPreviewProps {
fileType: string;
content: string;
onError?: (error: string) => void;
onLoad?: () => void;
}
const CustomPreview: React.FC<CustomPreviewProps> = ({
fileType,
content,
onError,
onLoad,
}) => {
// 自定义预览逻辑
};添加新的开发服务器类型
- 在
services/appDev.ts中添加新的服务器启动逻辑 - 在
hooks/useAppDevServer.ts中添加服务器类型支持 - 更新服务器配置和状态管理
- 添加对应的错误处理和重试机制
- 响应时间统计
- 成功率监控
- 资源使用情况
- 请求/响应日志
- 错误日志记录
- 用户行为分析
- 消息流可视化
- 连接状态监控
- 性能分析工具
- 连接中断: 检查网络连接和服务器状态
- 响应超时: 调整超时配置或检查服务器负载
- 消息丢失: 验证会话 ID 和消息格式
- 性能问题: 优化消息处理逻辑和数据结构
开发服务器问题
- 服务器启动失败: 检查端口占用情况,尝试手动指定端口
- 服务器无响应: 重启服务器,检查服务器日志
- 端口冲突: 修改端口范围配置,清理占用端口的进程
- 保活失败: 检查网络连接,调整保活间隔时间
文件管理问题
- 文件保存失败: 检查文件权限,验证文件路径
- 文件内容丢失: 检查自动保存配置,恢复缓存内容
- 文件树不更新: 刷新页面,检查文件系统状态
- 文件上传失败: 检查文件大小限制,验证文件格式
编辑器问题
- 语法高亮异常: 检查语言配置,重新加载编辑器
- 代码提示不工作: 验证 TypeScript 配置,重启编辑器
- 主题显示异常: 重置编辑器主题,检查 CSS 样式
- 编辑器卡顿: 检查文件大小,优化编辑器配置
预览问题
- 预览无法加载: 检查开发服务器状态,验证 URL 配置
- 预览内容错误: 检查文件内容,重新构建项目
- 预览样式异常: 检查 CSS 文件,验证样式加载
- 预览响应慢: 优化项目构建,检查网络延迟
- 使用浏览器开发者工具
- 启用详细日志记录
- 监控网络请求状态
- 分析内存使用情况
- 使用浏览器开发者工具
- 检查控制台错误信息
- 验证 API 接口响应
- 监控服务器运行状态
- 多模态交互支持
- 代码智能审查
- 自动化测试生成
- 性能优化建议
编辑器增强
- 多文件标签页支持
- 代码折叠和大纲视图
- 智能代码重构
- 实时协作编辑
项目管理
- 项目模板和脚手架
- 依赖管理和版本控制
- 项目部署和发布
- 团队协作功能
调试和测试
- 集成调试器
- 单元测试运行器
- 性能分析工具
- 错误追踪和报告
扩展生态
- 插件系统
- 主题市场
- 代码片段库
- 第三方工具集成
- 更高效的通信协议
- 更智能的上下文管理
- 更强大的工具集成
- 更好的用户体验
- WebAssembly 支持
- 虚拟文件系统
- 增量编译
- 智能缓存策略
本 AI Agent 系统为用户提供了强大的智能化开发辅助功能,通过实时通信和流式处理,实现了自然、高效的交互体验。系统具备良好的扩展性和可维护性,能够适应不断变化的业务需求。
开发效率提升
- 一站式开发环境,无需本地安装
- 实时预览和调试,快速迭代
- AI 辅助编程,智能代码生成
- 云端协作,团队无缝配合
技术栈现代化
- 基于 React 18 + TypeScript 的现代前端架构
- Monaco Editor 提供专业级代码编辑体验
- SSE 实时通信,低延迟交互
- 模块化设计,易于扩展和维护
用户体验优化
- 直观的界面设计,降低学习成本
- 响应式布局,适配各种设备
- 完善的错误处理和用户反馈
- 离线开发能力
通过持续的技术创新和功能完善,AppDev Web IDE 将成为开发者进行 Web 应用开发的强大工具,为用户提供更加智能、高效的开发体验。
- 组件目录: 使用 PascalCase,如
FileTree/、MonacoEditor/ - 组件文件:
index.tsx或ComponentName.tsx - 样式文件:
index.less或ComponentName.less - 类型文件:
type.ts或ComponentName.types.ts
- 页面目录: 使用 PascalCase,如
AppDev/、EditAgent/ - 页面文件:
index.tsx - 页面样式:
index.less - 页面组件: 放在
components/子目录下
- Hook 文件:
useHookName.ts,如useAppDevChat.ts - Hook 类型: 在同一个文件中定义或单独的
types.ts
- 服务文件:
serviceName.ts,如appDev.ts、userService.ts - API 接口: 使用动词开头,如
getUserInfo、createProject
- 工具文件:
utilityName.ts,如appDevUtils.ts、monacoConfig.ts - 常量文件:
constants.ts或constantName.ts
// 组件名使用 PascalCase
const FileTree = () => { ... };
const MonacoEditor = () => { ... };
// 组件 Props 接口
interface FileTreeProps {
files: FileNode[];
onFileSelect: (file: FileNode) => void;
}// Hook 名以 use 开头,使用 camelCase
const useAppDevChat = () => { ... };
const useFileManagement = () => { ... };
// Hook 返回值使用描述性命名
const { messages, sendMessage, isLoading } = useAppDevChat();// 状态变量使用描述性命名
const [isLoading, setIsLoading] = useState(false);
const [activeFile, setActiveFile] = useState<FileNode | null>(null);
const [devServerUrl, setDevServerUrl] = useState<string | null>(null);// API 函数使用动词开头
export const getProjectContent = async (projectId: string) => { ... };
export const uploadAndStartProject = async (files: File[]) => { ... };
export const startDev = async (projectId: string) => { ... };src/pages/
├── AppDev/ # 应用开发页面
│ ├── components/ # 页面专用组件
│ ├── index.tsx # 页面入口
│ └── index.less # 页面样式
├── EditAgent/ # 编辑智能体页面
└── ... # 其他页面
职责:
- 页面级路由和布局
- 页面级状态管理
- 页面级组件组合
src/components/
├── base/ # 基础组件
│ ├── Button/ # 按钮组件
│ ├── Input/ # 输入框组件
│ └── ... # 其他基础组件
├── business-component/ # 业务组件
│ ├── CardWrapper/ # 卡片包装器
│ └── ... # 其他业务组件
└── ... # 其他通用组件
职责:
- 可复用的 UI 组件
- 组件级逻辑封装
- 组件级样式定义
src/hooks/
├── useAppDevChat.ts # AI 聊天逻辑
├── useAppDevFileManagement.ts # 文件管理逻辑
├── useAppDevServer.ts # 开发服务器逻辑
└── ... # 其他业务逻辑
职责:
- 业务逻辑封装
- 状态管理
- 副作用处理
src/services/
├── appDev.ts # 应用开发相关 API
├── userService.ts # 用户相关 API
├── agentService.ts # 智能体相关 API
└── ... # 其他服务
职责:
- API 接口封装
- 数据转换
- 错误处理
src/models/
├── appDev.ts # 应用开发状态模型
├── user.ts # 用户状态模型
└── ... # 其他状态模型
职责:
- 全局状态管理
- 数据模型定义
- 状态持久化
src/utils/
├── appDevUtils.ts # 应用开发工具函数
├── monacoConfig.ts # Monaco 编辑器配置
├── sseManager.ts # SSE 连接管理
└── ... # 其他工具函数
职责:
- 工具函数封装
- 配置管理
- 通用逻辑
src/types/
├── interfaces/ # 接口类型定义
│ ├── appDev.ts # 应用开发接口
│ ├── user.ts # 用户接口
│ └── ... # 其他接口
└── ... # 其他类型定义
职责:
- TypeScript 类型定义
- 接口规范
- 类型安全
Pages → Components → Hooks → Services → Utils
↓ ↓ ↓ ↓ ↓
Models ← Types ← Constants ← Styles ← Locales
- 页面层 可以依赖所有其他层
- 组件层 可以依赖 Hooks、Services、Utils、Types
- 业务逻辑层 可以依赖 Services、Utils、Types
- 服务层 可以依赖 Utils、Types
- 工具层 只能依赖 Types、Constants
- 类型层 不依赖任何其他层
- 组件不能直接依赖 Models
- Hooks 不能直接依赖 Components
- Services 不能依赖 Hooks
- Utils 不能依赖 Services
// 1. 导入外部依赖
import React from 'react';
import { Button } from 'antd';
// 2. 导入内部依赖
import { useAppDevChat } from '@/hooks/useAppDevChat';
import type { ChatMessage } from '@/types/interfaces/appDev';
// 3. 类型定义
interface ComponentProps {
// props 定义
}
// 4. 组件实现
const Component: React.FC<ComponentProps> = ({ ...props }) => {
// 组件逻辑
return (
// JSX
);
};
// 5. 导出
export default Component;ComponentName/
├── index.tsx # 组件入口
├── index.less # 组件样式
├── components/ # 子组件
│ └── SubComponent/
├── hooks/ # 组件专用 hooks
├── types.ts # 组件类型定义
└── README.md # 组件文档