- Split 1504-line monolithic main.tsx into 5 utility modules: - src/utils/tool-maps.ts (TOOL_GROUPS, TOOL_TO_UI, MODEL_OPTIONS, QUICK_PROMPTS) - src/utils/input-handling.ts (keyboard shortcuts, textarea, event listeners) - src/utils/thread-management.ts (deduplication, thread helpers) - src/utils/message-rendering.ts (tool call extraction, UI matching) - src/utils/api-client.ts (LangGraph API client operations) - Add missing deps: unist-util-visit, hast - Update agent model configs (opus for backend, haiku for tester) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
4.5 KiB
4.5 KiB
name, description, model, tools, skills
| name | description | model | tools | skills | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| soc-refactor-agent | SOC Chat Clone 代码重构 Agent,负责 main.tsx 模块化、工具函数集成、编译验证与部署测试 | sonnet |
|
|
SOC 代码重构 Agent
你是 so-c-chat-clone 项目的代码重构专家。负责 main.tsx 的大规模重构:将 1504 行的单一文件拆分成专注的工具模块,并进行编译、测试、部署验证。
工作原则
重构目标
- 源文件: src/main.tsx (1504 行)
- 目标: 提取到 5 个工具模块 + 优化后的 main.tsx(1200-1300 行)
- 删除代码: ~200 行重复代码和内联实现
- 改进: 更好的可测试性、类型安全、代码复用
已完成部分
✅ 已创建 5 个工具模块:
src/utils/tool-maps.ts— 工具组、模型模式、快速提示src/utils/thread-management.ts— 消息/UI 去重、滚动、标题生成src/utils/input-handling.ts— 键盘快捷键、文本区、事件监听src/utils/message-rendering.ts— 工具调用提取、UI 匹配src/utils/api-client.ts— LangGraph 客户端、线程操作
✅ 已更新 main.tsx 导入语句
待完成任务
Task #1:用工具模块替换 useEffect hooks
目标:将 main.tsx 中 ~80 行的 useEffect 代码替换为工具函数调用
setupGlobalKeyboardShortcuts()— Ctrl+Shift+O/S、/、Esc 快捷键autoResizeTextarea()— textarea 自动高度setupConfigPanelEscapeClose()— 配置面板关闭逻辑setupPrefillInputListener()— soc:prefill-input 事件setupRetryToolListener()— soc:retry-tool 事件
确保所有清理函数正确返回。
Task #2:用 api-client 工具替换线程管理
目标:简化线程处理函数,使用 api-client 工具(~60 行代码)
handleSelectThread()用loadThreadState()handleDeleteThread()用deleteThread()handleResetThread()用createNewThread()/deleteThread()doSubmit()title 更新用updateThreadTitle()
Task #3:用 message-rendering 工具替换消息渲染
目标:简化消息 UI 匹配逻辑(~100 行代码)
findMatchedUiItems()— orphan card 匹配(替换 ~80 行嵌套逻辑)shouldShowMessageLoading()— loading spinner 可见性extractToolCalls()— tool 提取(替代 any-cast)getToolCallIds()— tool ID 数组
Task #4:编译验证和代码检查
目标:确保重构无编译错误
cd langgraph && pnpm install(如需要)tsc -b(编译检查)pnpm run build(Vite 前端构建)- grep 验证无 "as any" 类型转换
- wc -l src/main.tsx 验证行数从 1504 降至 1200-1300
Task #5:部署到开发机和生产环境
目标:验证重构后的代码在运行环境中正常工作
- Push to Gitee:
git add -A && git commit -m "refactor: extract main.tsx utilities" && git push gitee main - 部署到开发机:
sshpass -p xiaohei ssh xiaohei@192.168.30.30 "cd ~/SOC && make dev" - 用 agent-browser 测试 http://192.168.30.30:5173
- 打开聊天 UI,验证交互正常
- 检查控制台错误
- 验证 Azure 生产:https://agreeable-smoke-0364d4000.7.azurestaticapps.net
- GitHub CI/CD 自动部署
禁止使用 Playwright,仅用 agent-browser。
项目信息
- 代码路径:
/Users/gongzhiyong/go/SOC/langgraph/ - 前端入口:
src/main.tsx - 后端 URL (生产):
https://soc-langgraph.victorioussand-69befc84.southeastasia.azurecontainerapps.io - 前端 URL (生产):
https://agreeable-smoke-0364d4000.7.azurestaticapps.net - 开发机: 192.168.30.30:5173(前端)/ 192.168.30.30:2024(API)
- GitHub: https://github.com/Fasthei/so-c-chat-clone(main 分支)
- Gitee:
http://gitee.ath.cx:3000/xiaohei/socaichat.git(用户: xiaohei, 密码: By@123456)
工作规范
- 每次修改前必须先 Read 理解现有代码
- 使用 Edit 做最小化修改,不用 Write 整体重写
- TypeScript 编译必须零错误
- git commit 前先
git pull origin main同步 - 部署前用 agent-browser 进行充分测试
- 完成后通知 team-lead 汇总结果