# 迭代复盘:01-分仓管理工具 > 复盘日期:2026-08-28 | 迭代状态:已完成(R-002 验收通过) ## 迭代总结 实现了「分仓管理工具」第一个可用版本:DSH 插件(独立挂载)+ 三个策略 tab(全部持仓/网格策略持仓/做T持仓)+ 设置菜单(神之一手)+ 份额分配本地管理 + 服务端 HTTP API。 ## 事实记录(做了什么) 1. S1-S8 全部完成:插件骨架、数据源适配(QMT REST 直连)、设置管理、本地存储、分仓逻辑、服务端 API、客户端 tab、宿主挂载; 2. 客户端 UI:三个 conversation.view tab + settings.section 设置菜单; 3. 响应式布局:添加持仓组件支持宽/中/窄三种布局; 4. 构建链路:tsdown 构建 + __ModuleLoader__ 包装脚本。 ## 经验教训(复盘沉淀) ### 1. DSH 插件开发的「坑」(重要) - **RPC 通道冲突**:DSH 的 /api RPC 通道**只能一个 interceptor**(api-gateway 占用)—— 插件不能直接 intercept('/api'),应改用 **webServer 自开路由**; - **slots.register 签名**:component 必须是**第二参数**(register({...}, Component)),写在 options 里会导致 React #130 崩溃; - **客户端 bundle 格式**:必须 **window.__ModuleLoader__.load({id, factory})** 包装(CJS 格式),裸 ESM 无法加载; - **settings schema**:必须是 **schemastery z.object()**(函数式 schema),普通对象会报 "schema is not a function"; - **ctx 属性赋值**:Cordis 不允许直接给 ctx 设属性(ctx.xxx = ...),会报 "cannot set property without provide"。 ### 2. 插件安装与宿主集成 - 用 **dsh plugin add**(而非 pnpm add)—— 它会自动 reconcile bundles; - 插件的 dsh.bundle.patch(cordis.patch.yml)**顶层必须是 insert 操作**,不是裸插件行; - 客户端插件需要 **exports["./client"]** 指向 bundle,且 bundle 必须 __ModuleLoader__ 包装; - 修改宿主配置(bundles/cordis.patch.yml)在 session workspace 外,需要沙箱升级 + 用户批准。 ### 3. 需求讨论的价值 - 需求从「交易管理插件」→「智能交易辅助系统」→「分仓管理工具」多轮收敛; - 老师的关键输入:分仓=按策略(网格超市/手动做T)、份额拆分(1000股→网格600+做T400)、策略 tab 内编辑(添加/移出)、步进100+手动输入。 ## 下一步建议 1. **WebSocket 数据监控**(老师已提):插件可开启 WebSocket(webServer.registerUpgrade + ws 库),实现持仓/行情实时推送; 2. **策略配置完整管理**:网格参数(区间/格距/档位)等; 3. **做T 记录**:交易过程记录与复盘; 4. **设计约束补充**:本次沉淀的 DSH 插件开发规范(RPC 冲突、ModuleLoader、slots 签名等)应写入技术方案约束,供后续迭代参考。