--- name: remaining_long_files_to_split description: 当需要继续拆分项目中的过长单个文件时,应该索引本记忆 --- # 仍需拆分的长文件清单 > 更新于 2026-06-20。 > 已完成的拆分:`server/chat/`、`server/status/`、`server/tasks/`、`utils/context_manager/`、`utils/conversation_manager/`、`modules/file_manager/`、`modules/persistent_terminal/`、`modules/terminal_ops/`、`modules/mcp_client_manager/`、`core/main_terminal_parts/context/`、前端 `static/src/app/methods/{ui,message,upload,taskPolling,conversation}/`。 > `static/src/components/chat/monitor/MonitorDirector.ts` 按用户要求不参与拆分。 下列文件仍是单个文件且超过约 500 行,后续可视维护需求继续拆分。优先拆**业务逻辑重、复用价值高、边界清晰**的文件;Vue SFC 文件因模板-样式-脚本耦合较深,拆分风险较高,建议先抽离 composable / 子组件,而非直接切分 `.vue`。 ## 后端 Python(高优先级) | 文件 | 行数 | 建议拆分方向 | |------|------|--------------| | `core/main_terminal_parts/tools_execution.py` | ~1911 | 按执行阶段拆:准备 / 工具调度 / 结果处理 / 错误恢复 / 流式输出 | | `server/chat_flow_task_main.py` | ~1739 | 拆为消息处理、guidance 队列、流式响应、任务生命周期、历史保存等 mixin | | `server/conversation.py` | ~1981 | 拆为对话 CRUD、回顾(review)、压缩(compression)、待办联动等模块 | | `server/chat_flow_tool_loop.py` | ~1391 | 按循环阶段拆:参数检查、工具调用、结果合并、循环终止 | | `core/main_terminal_parts/tools_definition.py` | ~1195 | 按工具类别拆:文件、终端、搜索、网络、子智能体、自定义工具等 | | `utils/tool_result_formatter.py` | ~1198 | 按工具类型拆 formatter | | `utils/api_client.py` | ~1296 | 拆为 provider 基类、流式处理、重试/降级、工具调用解析 | | `server/app_legacy.py` | ~1431 | 它是 legacy 入口,改动频繁则优先拆为注册/中间件/路由聚合 | ## 后端 Python(中优先级) | 文件 | 行数 | 建议拆分方向 | |------|------|--------------| | `core/main_terminal.py` | ~661 | 拆 init / 状态 / 主循环 / 事件处理 mixin | | `core/web_terminal.py` | ~710 | 拆轮询任务 / Socket.IO / REST 接口 / 前端状态同步 | | `core/main_terminal_parts/commands.py` | ~877 | 拆命令解析、分发、内置命令处理 | | `server/context.py` | ~725 | 拆 terminal/workspace 资源获取、会话装饰器、错误处理 | | `server/admin.py` | ~728 | 按管理领域拆:用户/模型/策略/日志/系统配置 | | `server/api_v1.py` | ~704 | 按资源拆子 blueprint | | `modules/background_command_manager.py` | ~727 | 拆生命周期、输出流、持久化 | | `modules/personalization_manager.py` | ~805 | 拆读取/合并/保存/校验 | | `modules/terminal_manager.py` | ~756 | 拆会话池、命令执行、输出缓存 | | `modules/user_manager.py` | ~779 | 拆认证、工作区管理、host/web 双路径 | | `modules/versioning_manager.py` | ~842 | 拆版本记录、快照、回滚、清理 | ## 前端 TypeScript / Vue(高优先级) | 文件 | 行数 | 建议拆分方向 | |------|------|--------------| | `static/src/components/input/InputComposer.vue` | ~2824 | **高风险**:先抽离 composable(输入状态、快捷键、粘贴处理)、子组件(附件列表、工具按钮),保留 `.vue` 外壳 | | `static/src/components/personalization/PersonalizationDrawer.vue` | ~3547 | **高风险**:按设置分组拆成子组件 / tab panels,抽离表单校验 composable | | `static/src/components/chat/ChatArea.vue` | ~1728 | 抽离消息列表、滚动行为、空状态、错误状态为子组件或 composable | | `static/src/composables/useLegacySocket.ts` | ~1885 | 按事件类型拆为多个 handler 模块 | | `static/src/admin/AdminDashboardApp.vue` | ~1959 | 按 admin 子页面拆为独立组件 | | `static/src/admin/PolicyApp.vue` | ~1601 | 按策略维度拆为子表单 / 子组件 | | `static/src/app/bootstrap.ts` | ~1339 | 按初始化阶段拆:配置加载、store 初始化、路由恢复、终端重建 | ## 前端 TypeScript / Vue(中优先级) | 文件 | 行数 | 建议拆分方向 | |------|------|--------------| | `static/src/components/chat/actions/ToolAction.vue` | ~1532 | 拆工具状态展示、参数/结果渲染、审批交互 | | `static/src/components/chat/actions/toolRenderers.ts` | ~1044 | 按工具类型拆 renderer | | `static/src/App.vue` | ~882 | 抽离布局壳、侧边栏、全局弹窗 | | `static/src/stores/personalization.ts` | ~924 | 按功能域拆 actions | | `static/src/stores/task.ts` | ~632 | 若继续增长可拆任务/审批/队列 | | `static/src/stores/tutorial.ts` | ~749 | 拆 tutorial 步骤、状态、触发逻辑 | | `static/src/stores/monitor.ts` | ~677 | 目前可接受,继续增长再拆 | ## CLI | 文件 | 行数 | 建议拆分方向 | |------|------|--------------| | `cli/src/App.tsx` | ~704 | 拆 views / screens / hooks | ## 拆分原则(与 AGENTS.md 一致) - 优先用 **mixin / 子包** 模式,保持 `from xxx import Xxx` 兼容入口。 - 拆 Flask blueprint 时,`__init__.py` 创建唯一 blueprint,子模块从包导入并保留装饰器。 - 拆分后检查**跨模块共享函数/常量/类属性**,必要时抽到 `common.py` 或显式导入。 - 前端 methods 拆完后,入口 `index.ts` 必须用 `...methodGroup` 平铺,避免嵌套对象导致 `this.xxx` 不存在。 - 每次拆分后必须: ```bash python3 -m py_compile <对应包>/*.py python -m unittest test.test_server_refactor_smoke npm run build --silent 2>&1 | tail -n 5 ```