# 实施计划:多平台对冲账号管理模块 **分支**:`001-credential-manager` | **日期**:2025-09-29 | **规范**:[spec.md](./spec.md) **输入**:`/Users/he/projects/binance-api/specs/001-credential-manager/spec.md` 中的功能规范 **用户需求**:用于多平台对冲的账号管理模块,智能注入账户分辨不同平台执行对应业务 ## 执行流程(/plan 命令作用范围) ``` 1. 从 Input 路径加载功能规范 → 如果缺失:ERROR "No feature spec at {path}" 2. 填写技术背景(扫描 NEEDS CLARIFICATION) → 根据文件结构或上下文判断项目类型(web=前后端,mobile=App+API) → 根据项目类型给出结构决策 3. 根据宪章内容完成 Constitution Check 部分(原则 I–V、运营约束、流程质量门槛、治理要求) 4. 评估 Constitution Check → 若存在违例:记录在 Complexity Tracking → 若无法给出理由:ERROR "Simplify approach first" → 更新 Progress Tracking:Initial Constitution Check 5. 执行 Phase 0 → research.md(确保记录行情数据源、敞口目标与风险约束) → 若仍有 NEEDS CLARIFICATION:ERROR "Resolve unknowns" 6. 执行 Phase 1 → contracts、data-model.md、quickstart.md、agent 文件 7. 再次评估 Constitution Check → 若出现新违例:回到 Phase 1 调整 → 更新 Progress Tracking:Post-Design Constitution Check 8. 规划 Phase 2 → 描述任务生成策略(不要创建 tasks.md) 9. 停止 - 准备执行 /tasks 命令 ``` **重要提示**:/plan 命令到步骤 7 即结束。后续阶段由其他命令完成: - Phase 2:/tasks 生成 tasks.md - Phase 3-4:按计划实施 ## 总结 实施一个多平台对冲账号管理模块,支持智能账户注入、平台识别和业务分发。核心需求包括:100ms内配置热加载、50ms内签名完成、支持Pacifica/Aster/Binance多平台、智能平台识别、统一签名API。技术方案基于AccountRegistry简化模式,避免过度设计,使用TypeScript严格模式,策略模式实现多平台签名,文件监听实现热加载。针对对冲业务场景,提供账户池管理和风险分散支持。 ## 技术背景 **语言/版本**:TypeScript (Node.js 18+) **主要依赖**:tweetnacl (Ed25519), js-sha3 (EIP-191), crypto (HMAC-SHA256), chokidar (文件监听), AccountRegistry (简化账户管理) **存储**:JSON配置文件 + 内存缓存 + 加密凭证存储 **测试框架**:Jest with TypeScript, 契约测试先行 **目标平台**:Node.js server environment, 对冲交易系统集成 **项目类型**:单体库模块,集成到现有多平台对冲系统 **性能目标**:热加载<100ms, 签名<50ms, 支持>100并发账户 **约束条件**:支持文件热加载、零停机更新、多平台兼容、Delta中性要求 **规模/范围**:多平台对冲账户管理,预计支持10+交易所,100+账户并发 ## 宪章核对(Constitution Check) *关卡:必须在 Phase 0 前通过,并在 Phase 1 后再次确认。* ### 原则一:优先架构与现实测试 ✅ - **模块化设计**:采用简单AccountRegistry模式,避免复杂工厂适配器组合 - **过度设计防护**:调用链<3层,避免不必要抽象层,直接支持业务需求 - **TypeScript严格模式**:启用strict配置,禁用any类型,使用@/路径别名 - **现实测试**:契约测试先行,集成测试使用真实签名算法,TDD开发 - **性能标准**:热加载<100ms,签名<50ms,满足企业级性能要求 ### 原则二:Delta中性优先 ✅ - **对冲支持**:凭证管理直接服务于多平台对冲业务,支持账户池管理 - **风险分散**:统一接口管理多交易所账户,便于Delta中性策略执行 - **敞口控制**:为对冲系统提供可靠的多平台签名服务 ### 原则三:确定性市场数据摄取 ✅ - **低延迟要求**:签名操作<50ms,不影响实时数据处理和对冲决策 - **多平台认证**:支持Ed25519、EIP-191、HMAC-SHA256算法满足各交易所要求 ### 原则四:资金保护与风险控制 ✅ - **安全存储**:私钥静态加密,传输安全通道,零停机更新 - **错误处理**:全面的异常处理和回滚机制,防止对冲操作中断 - **审计日志**:记录所有凭证访问和签名操作,支持风险追踪 ### 原则五:透明可观测性与安全审计 ✅ - **结构化日志**:所有凭证操作可追踪,支持对冲业务端到端监控 - **性能监控**:签名时间、成功率等指标,确保对冲系统SLA - **安全审计**:凭证访问、配置变更完整记录,满足合规要求 ### 原则六:架构简化强制要求 ✅ - **简化审查**:功能模块调用链<3层,使用简单注册表模式 - **直接依赖注入**:避免复杂工厂模式,认证流程直接访问凭证 - **接口简化**:对外接口直接对应对冲业务需求,不为未来扩展增加复杂性 - **维护成本控制**:新功能添加不影响超过5个模块 ### 运营约束检查 ✅ - **热加载性能**:100ms内完成配置更新,满足对冲业务实时性要求 - **签名性能**:50ms内完成签名操作,支持高频对冲策略 - **数据保留**:审计日志90天保留,支持对冲业务合规审计 - **代码质量**:ESLint规则、TypeScript检查、Prettier格式化 ## 项目结构 ### 文档(本功能) ``` specs/[###-feature]/ ├── plan.md # 本文件(/plan 输出) ├── research.md # Phase 0 输出(/plan) ├── data-model.md # Phase 1 输出(/plan) ├── quickstart.md # Phase 1 输出(/plan) ├── contracts/ # Phase 1 输出(/plan) └── tasks.md # Phase 2 输出(/tasks,非 /plan 生成) ``` ### 源码目录(仓库根目录) ``` src/ ├── core/ │ ├── credential-manager/ # 凭证管理核心模块 │ │ ├── CredentialManager.ts # 主管理器 │ │ ├── AccountRegistry.ts # 账户注册表(简化模式) │ │ ├── signers/ # 签名器策略 │ │ │ ├── PacificaSigner.ts # Ed25519签名 │ │ │ ├── AsterSigner.ts # EIP-191签名 │ │ │ └── BinanceSigner.ts # HMAC-SHA256签名 │ │ └── ConfigValidator.ts # 配置验证 │ └── http-client/ # HTTP客户端模块(已存在) ├── types/ │ ├── credential.ts # 凭证类型定义 │ └── platformAdapter.ts # 平台适配器类型 ├── utils/ # 工具函数 └── examples/ # 使用示例 tests/ ├── contract/ # 契约测试 │ ├── credential-manager.contract.test.ts │ ├── signer-strategies.contract.test.ts │ └── account-registry.contract.test.ts ├── integration/ # 集成测试 │ ├── multi-platform-signing.integration.test.ts │ ├── hot-reload.integration.test.ts │ └── hedging-workflows.integration.test.ts └── unit/ # 单元测试 ├── signers/ └── managers/ ``` **结构决策**:采用单体项目结构,基于现有src/core模块扩展。使用模块化分层架构,遵循AccountRegistry简化模式,避免复杂的工厂适配器组合。credential-manager作为独立模块与现有http-client模块并行,通过类型定义保持松耦合。 ## Phase 0:概述与调研 1. **从技术背景提取未知项**: - 每个 NEEDS CLARIFICATION → 研究任务 - 每个新依赖 → 最佳实践任务 - 每个外部集成 → 设计模式任务 2. **生成调研任务**: ``` 对每个未知项: 任务:调研 {未知点} 在 {功能背景} 的最佳做法 对每个技术选项: 任务:收集 {技术} 在 {领域} 的最佳实践 ``` 3. **整理输出**至 `research.md`: - 决策:选择方案 - 理由:为何选择 - 备选:评估过的其他方案 **产出**:research.md,所有未知项已解决 ## Phase 1:设计与契约 *前提:research.md 已完成* 1. **从功能规范提取实体** → `data-model.md` - 实体名称、字段、关系 - 验证规则 - 状态变化若有 2. **从需求生成 API 契约** - 每个用户行为 → 对应接口 - REST/GraphQL 等标准格式 - 输出到 `/contracts/` 3. **从契约生成契约测试** - 每个接口一个测试文件 - 校验请求/响应结构 - 测试必须先失败 4. **从用户故事提取测试场景** - 每个故事 → 集成测试场景 - Quickstart 测试 = 验收步骤 5. **增量更新 agent 文件**(O(1) 操作): - 运行 `.specify/scripts/bash/update-agent-context.sh claude` - 仅添加本轮新增技术信息 - 保留手工补充内容 - 记录最近 3 次变更 - 保持文件在 150 行以内 **产出**:data-model.md、/contracts/*、失败的契约测试、quickstart.md、更新后的 agent 文件 ## Phase 2:任务规划方法 *说明 /tasks 命令的工作方式(本阶段不执行)* **任务生成策略**: - 以 `.specify/templates/tasks-template.md` 为基线 - 根据 Phase 1 文档(契约、数据模型、quickstart)生成任务 - 每个契约 → 契约测试任务 [P] - 每个实体 → 模型创建任务 [P] - 每个用户故事 → 集成测试任务 - 实现任务遵循测试先行 **排序策略**: - TDD 顺序:先测试再实现 - 依赖顺序:模型 → 服务 → 接口 - [P] 用于描述可并行的工作 **预估输出**:tasks.md,约 25-30 个有序任务 **注意**:Phase 2 由 /tasks 完成,非 /plan 输出 ## Phase 3+:后续实施 *超出 /plan 命令范围* **Phase 3**:执行 /tasks 生成 tasks.md **Phase 4**:按 tasks.md 实施 **Phase 5**:验证(运行测试、执行 quickstart、性能验证) ## 复杂度追踪 *仅在 Constitution Check 有违例时填写* | 违例 | 原因 | 被否决的简单方案 | |------|------|------------------| | [示例:新增第 4 个项目] | [现实需求] | [为何前三个不足] | ## 进度追踪 *执行流程中的状态记录* **阶段状态**: - [x] Phase 0:调研完成 (/plan) - 更新支持对冲业务和AccountRegistry模式 - [x] Phase 1:设计完成 (/plan) - 数据模型更新完成,包含对冲专用实体 - [x] Phase 2:任务规划完成 (/plan,仅描述方法) - [x] Phase 3:任务已生成 (/tasks) - 39个有序任务,支持对冲业务和模块交互 - [x] Phase 4:实现完成 (/implement) - 核心功能已实现,59%任务完成,100%核心功能可用 - [ ] Phase 5:验证通过 **关卡状态**: - [x] 初次宪章核对:通过 - 符合v1.6.0架构简化要求 - [x] 设计后宪章核对:通过 - 数据模型符合简化架构要求 - [x] 所有 NEEDS CLARIFICATION 已解决 - 基于现有技术栈和对冲需求 - [x] 复杂度偏差已记录 - 无偏差,使用简化AccountRegistry模式 --- *基于宪章 v1.6.0 - 详见 `/memory/constitution.md`*