council(draft): PM - Round 1 创建 MiniMax 路由补丁设计计划

4 Q 任务分配:
- Q1: Backend 配置读取方案
- Q2: Architect 架构设计(配置注入)
- Q3: PM 配置结构建议
- Q4: Architect 综合方案

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
refactor/vr-ticket-20260416
Council 2026-04-14 18:55:11 +08:00
parent 1ea1b04d31
commit b969a14304
1 changed files with 55 additions and 27 deletions

82
plan.md
View File

@ -1,29 +1,60 @@
# Council Plan — vr-shopxo-plugin Round 2
# Council Plan — openclaw-claude-code MiniMax 路由补丁设计
> Round 2 — 2026-04-14
> Round 1 — 2026-04-14
> Branch: council/PM → main
> 状态:**Round 2 完成4 Q 全票通过**
> 状态:**规划中**
---
## 4 Q 最终架构结论
## 任务背景
| Q | 结论 | Agent | Vote |
**问题**:插件 `@enderfga/openclaw-claude-code` 的 proxy 层将 Claude Code 请求路由到各 AI Provider目前所有 `sonnet`/`opus`/`haiku` 模型都被硬编码映射到 `provider: 'anthropic'`(走真实 Anthropic API但用户环境是 MiniMax 的 Anthropic 兼容端点,导致路由失效。
**目标**:设计一个可配置、符合 OpenClaw 插件最佳实践的方案。
---
## 4 Q 任务分配
| Q | 任务描述 | Owner | 预期输出 |
|---|---|---|---|
| Q1: 座位模板绑定粒度 | 分类绑定UNIQUE KEY— 业务合理性 ✅ | Architect/PM/Backend | ✅ NON-BLOCKING |
| Q2: spec_base_id_map | 共用 seat_map — 最简方案 | Architect/PM/Backend | ✅ NON-BLOCKING |
| Q3: 观演人存储 | vr_tickets 支付后写入 | Architect/PM/Backend | ✅ NON-BLOCKING |
| Q4: spec 绑定 | $vr- 前缀隔离 — 已确认 | Architect/PM/Backend | ✅ NON-BLOCKING |
| Q1 | 插件 proxy handler 如何优雅地读取 provider URL 配置? | council/Backend | 配置读取方案(环境变量 / OpenClaw config / 插件独立配置) |
| Q2 | models.js 的 provider 映射如何支持配置覆盖? | council/Architect | 架构设计(外部配置注入机制) |
| Q3 | 配置项应该放在 OpenClaw 配置的哪个 section命名规范 | council/PM | 配置结构建议providers/defaults/ext 位置) |
| Q4 | 综合推荐方案(配置文件结构、修改文件列表、回滚步骤、注释) | council/Architect | 最终方案文档 |
---
## Voting
## 原则
| Agent | Vote | 说明 |
|---|---|---|
| Architect | YES (4/4 Q NON-BLOCKING) | 4个问题均为NON-BLOCKING |
| PM | YES (4/4 Q NON-BLOCKING) | 实施复杂度 2.5d,低风险 |
| Backend | YES (4/4 Q NON-BLOCKING) | Hook 可行性已确认 |
1. **配置优先**:从 OpenClaw 配置或环境变量读取,不硬编码
2. **向后兼容**不配置默认走原有逻辑Anthropic 官方)
3. **可还原**:通过 OpenClaw 配置层注入,不改 node_modules
4. **显眼易懂**:配置项有注释说明
---
## 关键参考
OpenClaw 配置示例(`~/.openclaw/openclaw.json`
```json
{
"providers": {
"minimax-portal": {
"baseUrl": "https://api.minimaxi.com/anthropic",
"apiKey": "minimax-oauth",
"api": "anthropic-messages"
}
},
"defaults": {
"model": { "primary": "minimax-portal/MiniMax-M2.7" }
}
}
```
插件文件:
- proxy handler: `node_modules/@enderfga/openclaw-claude-code/dist/src/proxy/handler.js`
- 模型注册表: `node_modules/@enderfga/openclaw-claude-code/dist/src/models.js`
---
@ -31,24 +62,21 @@
| Task | Owner | Status |
|---|---|---|
| A1: Q1 架构评审 | council/Architect | `[Done]` |
| A2: Q2 架构评审 | council/Architect | `[Done]` |
| A3: Q3 架构评审 | council/Architect | `[Done]` |
| A4: Q4 架构评审 | council/Architect | `[Done]` |
| P1: PM 评审 Q1-Q4 | council/PM | `[Done]` |
| B1: Backend 评审 Q1-Q4 | council/Backend | `[Done]` |
| C1: 综合结论 | council/Architect | `[Done]` |
| Q1: 配置读取方案 | council/Backend | `[Claimed: council/Backend]` |
| Q2: 架构设计 | council/Architect | `[Claimed: council/Architect]` |
| Q3: 配置结构 | council/PM | `[Claimed: council/PM]` |
| Q4: 综合方案 | council/Architect | `[Pending]` |
---
## Phase Breakdown
| Phase | 内容 | 状态 |
| Phase | 内容 | 目标时间 |
|---|---|---|
| **Draft** | 完成 4 Q 评审 + 待确认事项清单 | ✅ Done |
| **Review** | 交叉评审,输出 `reviews/` 文件 | ✅ Done |
| **Finalize** | 合并到 main投票 | ✅ Done |
| **Draft** (本轮) | Backend/Architect/PM 分别输出 Q1-Q3 讨论结论 | Round 1 |
| **Review** | 交叉评审,Architect 整合 Q4 综合方案 | Round 2 |
| **Finalize** | 合并到 main投票 | Round 2 |
---
**[CONSENSUS: YES]** — 4 Q 全票通过,架构决策完成
**[CONSENSUS: NO]** — Round 1 规划完成,等待 Backend/Architect/PM 执行 Q1-Q3