---
name: remaining_long_files_to_split
description: 当需要继续拆分项目中的过长单个文件时，应该索引本记忆
---

# 仍需拆分的长文件清单

> 更新于 2026-06-21。
> 已完成的拆分：`server/chat/`、`server/status/`、`server/tasks/`、`utils/context_manager/`、`utils/conversation_manager/`、`utils/api_client/`、`utils/tool_result_formatter/`、`modules/file_manager/`、`modules/persistent_terminal/`、`modules/terminal_ops/`、`modules/mcp_client_manager/`、`core/main_terminal_parts/context/`、`core/main_terminal_parts/tools_definition/`、前端 `static/src/app/methods/{ui,message,upload,taskPolling,conversation}/`。
> `static/src/components/chat/monitor/MonitorDirector.ts` 按用户要求不参与拆分。

下列文件仍是单个文件且超过约 500 行，**但 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 | 按循环阶段拆：参数检查、工具调用、结果合并、循环终止 |
| `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
  ```
