# 实施计划: 凭证管理模块 **分支**:`001-credential-manager` | **日期**: 2025-09-28 | **规范**: [spec.md](./spec.md) **输入**:`/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:按计划实施 ## 总结 基于现有的交易系统实现,需要构建一个凭证管理模块,支持多平台账户(Pacifica、Aster、Binance)的热加载、智能平台识别和统一签名接口。该模块将作为独立库提供给其他交易模块使用,确保符合库优先架构原则。 **关键需求**: - FR-001: 配置文件热加载(<100ms) - FR-002: 智能平台识别 - FR-003: 统一签名接口(<50ms) - FR-004: 账户信息查询 **技术方案**:基于现有TypeScript 5.1+基础架构,使用@noble/ed25519实现Ed25519签名,Node.js fs.watch实现热加载,策略模式支持多平台扩展。 ## 技术背景 **语言/版本**: TypeScript 5.1+,Node.js 18+ **主要依赖**: @noble/ed25519,@noble/hashes,Jest **存储**: JSON配置文件,内存缓存 **测试框架**: Jest,ts-jest **目标平台**: Node.js服务端,Linux/macOS **项目类型**: 独立库模块(支持其他交易模块) **性能目标**: 文件加载<100ms,签名操作<50ms **约束条件**: 热加载支持,多平台兼容,类型安全 **规模/范围**: 支持数百个账户,3个主要平台(可扩展) ## 宪章核对(Constitution Check) *关卡:必须在 Phase 0 前通过,并在 Phase 1 后再次确认。* ### 原则一:库优先架构与现实测试 - ✅ **库优先**:凭证管理器将作为独立npm库实现于`libs/credential-manager/` - ✅ **现实测试**:使用真实Ed25519签名算法和实际文件系统监听,避免模拟 - ✅ **契约测试**:实施前编写失败的契约测试确保接口正确性 ### 原则二:Delta中性优先 - ✅ **适用性**:凭证管理模块不直接涉及交易执行,但为交易模块提供安全签名服务 - ✅ **风险控制**:确保私钥安全存储和签名操作的正确性,防止签名错误导致意外交易 ### 原则三:确定性市场数据摄取 - N/A:凭证管理模块不涉及市场数据 ### 原则四:资金保护与风险控制 - ✅ **账户安全**:实施严格的凭证验证和错误处理,防止无效签名 - ✅ **操作审计**:记录所有签名操作和账户管理操作 ### 原则五:透明可观测性与审计 - ✅ **结构化日志**:记录账户加载、签名操作、错误处理的详细日志 - ✅ **性能监控**:追踪文件加载和签名操作性能指标 - ✅ **端到端追踪**:为每个操作提供关联ID ## 项目结构 ### 文档(本功能) ``` 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 生成) ``` ### 源码目录(仓库根目录) ``` libs/credential-manager/ # 独立库目录 ├── src/ │ ├── core/ # 核心组件 │ │ ├── types.ts # 类型定义 │ │ ├── CredentialManager.ts # 主管理器 │ │ ├── Signer.ts # 统一签名器 │ │ └── PlatformDetector.ts # 平台检测器 │ ├── platforms/ # 平台特定实现 │ │ ├── pacifica/ # Pacifica平台 │ │ ├── aster/ # Aster平台 │ │ └── binance/ # Binance平台 │ ├── loaders/ # 配置加载器 │ │ └── ConfigLoader.ts # 文件加载和热监听 │ └── index.ts # 库导出入口 ├── tests/ │ ├── contract/ # 契约测试 │ ├── integration/ # 集成测试 │ └── unit/ # 单元测试 ├── examples/ # 使用示例 ├── package.json # 独立包配置 └── tsconfig.json # TypeScript配置 ``` **结构决策**:采用独立库架构,符合宪章的库优先原则。该库可以被主项目和其他模块独立引用,提供完整的凭证管理功能。 ## 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](必须先失败) - ICredentialManager → credential-manager契约测试 - IConfigLoader → config-loader契约测试 - ISigner → signer契约测试 - IPlatformDetector → platform-detector契约测试 **从数据模型生成的任务**: - 每个核心实体 → 模型创建任务 [P] - Platform、Account、Credentials → types.ts实现 - SignResult、LoadResult → 结果类型实现 - CredentialManagerError → 错误处理实现 **从quickstart生成的任务**: - 每个示例场景 → 集成测试任务 - 基础使用 → 基础功能集成测试 - 签名操作 → 签名流程集成测试 - 热加载监听 → 文件监听集成测试 - 多平台签名 → 平台策略集成测试 **库优先架构任务**: - 独立库结构创建 - package.json配置 - TypeScript配置 - Jest测试配置 - 构建和发布配置 **TDD实现顺序**: 1. 测试先行:所有契约测试必须先失败 2. 核心模型:types → Account → Signer 3. 平台策略:PacificaSigner → AsterSigner → BinanceSigner 4. 服务层:ConfigLoader → PlatformDetector → CredentialManager 5. 工厂和集成:CredentialManagerFactory → 全局管理器 6. 验证和优化:性能测试 → 错误处理 → 生产优化 **依赖关系管理**: - [P] 标记并行任务(不同文件,无依赖) - 严格按照 types → 实现 → 集成 → 验证 顺序 - Ed25519库集成必须在Pacifica实现之前 - 配置文件监听必须在热加载测试之前 **预估输出**: - tasks.md:约30-35个有序任务 - 5个主要阶段:Setup → Tests → Core → Integration → Polish - 符合库优先架构和现实测试原则 **性能验证任务**: - 文件加载<100ms验证 - 签名操作<50ms验证 - 内存使用监控 - 并发操作测试 **注意**: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) - research.md已生成 - [x] Phase 1:设计完成 (/plan) - data-model.md、contracts/、quickstart.md已生成 - [x] Phase 2:任务规划完成 (/plan,仅描述方法) - 策略已详细描述 - [x] Phase 3:任务已生成 (/tasks) - tasks.md已生成 - [ ] Phase 4:实现完成 - [ ] Phase 5:验证通过 **关卡状态**: - [x] 初次宪章核对:通过 - 符合库优先架构和现实测试原则 - [x] 设计后宪章核对:通过 - 所有设计符合宪章要求 - [x] 所有 NEEDS CLARIFICATION 已解决 - 技术选型已确定 - [x] 复杂度偏差已记录 - 无违例情况 **产出清单**: - ✅ plan.md - 完整实施计划(本文件) - ✅ research.md - 技术调研报告 - ✅ data-model.md - 数据模型设计 - ✅ contracts/ - API契约定义 - ✅ credential-manager.ts - 主接口契约 - ✅ pacifica-signer.ts - Pacifica签名契约 - ✅ quickstart.md - 快速开始指南 - ✅ tasks.md - 详细任务列表(44个任务,5个阶段) - ✅ 更新了CLAUDE.md agent context --- *基于宪章 v1.0.0 - 详见 `/memory/constitution.md`*