@liangjie559567/ultrapower 7.6.0 → 7.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +2 -2
- package/bridge/mcp-server.cjs +1 -0
- package/dist/hooks/bridge-normalize.d.ts.map +1 -1
- package/dist/hooks/bridge-normalize.js +47 -25
- package/dist/hooks/bridge-normalize.js.map +1 -1
- package/dist/lib/atomic-write.d.ts.map +1 -1
- package/dist/lib/atomic-write.js +2 -0
- package/dist/lib/atomic-write.js.map +1 -1
- package/dist/lib/auditLog.d.ts +6 -7
- package/dist/lib/auditLog.d.ts.map +1 -1
- package/dist/lib/auditLog.js +10 -7
- package/dist/lib/auditLog.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +9 -4
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/path-validator.d.ts.map +1 -1
- package/dist/lib/path-validator.js +12 -12
- package/dist/lib/path-validator.js.map +1 -1
- package/dist/security/concurrency-control.d.ts +7 -0
- package/dist/security/concurrency-control.d.ts.map +1 -1
- package/dist/security/concurrency-control.js +22 -0
- package/dist/security/concurrency-control.js.map +1 -1
- package/docs/CLAUDE.md +2 -2
- package/docs/CODE_BASED_FLOW.md +12 -12
- package/docs/COMPATIBILITY.md +1 -1
- package/docs/FEATURES.md +16 -16
- package/docs/INSTALL.md +4 -4
- package/docs/MIGRATION.md +2 -2
- package/docs/OMC-CLAUDE.md +1 -1
- package/docs/REFERENCE.md +16 -16
- package/docs/UPGRADE_VERIFICATION.md +1 -1
- package/docs/agent-templates/README.md +2 -2
- package/docs/api/media/INSTALL.md +2 -2
- package/docs/api/media/MIGRATION.md +2 -2
- package/docs/api/media/REFERENCE.md +14 -14
- package/docs/api/media/mcp-server-usage.md +4 -4
- package/docs/architecture/ultrapower-flow-analysis.md +1 -1
- package/docs/getting-started/quickstart.md +1 -1
- package/docs/glossary.md +1 -1
- package/docs/guides/mcp-server-usage.md +4 -4
- package/docs/guides/tool-name-migration.md +12 -12
- package/docs/mcp/configuration.md +5 -5
- package/docs/mcp/performance.md +5 -5
- package/docs/mcp-compatibility-matrix.md +1 -1
- package/docs/partials/agent-tiers.md +24 -24
- package/docs/partials/features.md +1 -1
- package/docs/partials/verification-tiers.md +2 -2
- package/docs/plans/2026-02-24-superpowers-ultrapower-integration-design.md +2 -2
- package/docs/plans/2026-03-02-docs-comprehensive-update.md +16 -16
- package/docs/plans/2026-03-05-mcp-adoption-atomic-tasks.md +9 -9
- package/docs/plans/2026-03-16-tech-debt-fixes.md +222 -0
- package/docs/prd/bugs-pain-points-audit-dag.md +297 -297
- package/docs/prd/bugs-pain-points-audit-draft.md +154 -154
- package/docs/prd/bugs-pain-points-audit-manifest.md +650 -650
- package/docs/prd/bugs-pain-points-audit-rough.md +654 -654
- package/docs/reports/tech-debt-verification-2026-03-16.md +87 -0
- package/docs/reviews/bugs-pain-points-audit/review_critic.md +213 -213
- package/docs/reviews/bugs-pain-points-audit/review_domain.md +247 -247
- package/docs/reviews/bugs-pain-points-audit/review_product.md +189 -189
- package/docs/reviews/bugs-pain-points-audit/review_tech.md +382 -382
- package/docs/reviews/bugs-pain-points-audit/review_ux.md +161 -161
- package/docs/reviews/bugs-pain-points-audit/summary.md +129 -129
- package/docs/reviews/bugs-pain-points-audit/tech-debt-v7.6.0-code-review.md +328 -0
- package/docs/shared/agent-tiers.md +24 -24
- package/docs/shared/features.md +1 -1
- package/docs/shared/verification-tiers.md +2 -2
- package/docs/standards/README.md +1 -1
- package/docs/standards/runtime-protection.md +7 -0
- package/docs/troubleshooting.md +1 -1
- package/package.json +1 -1
|
@@ -1,382 +1,382 @@
|
|
|
1
|
-
# Tech Feasibility Review: ultrapower v7.5.2 BUG 与痛点审计
|
|
2
|
-
|
|
3
|
-
## 评审概要
|
|
4
|
-
|
|
5
|
-
**评审人**: Tech Lead
|
|
6
|
-
**评审日期**: 2026-03-16
|
|
7
|
-
**PRD 版本**: Draft
|
|
8
|
-
**评审结论**: ✅ **通过 - 需分阶段实施**
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## 1. 架构影响分析 (Architecture Impact)
|
|
13
|
-
|
|
14
|
-
### 1.1 Schema Changes
|
|
15
|
-
**状态**: ❌ 无 Schema 变更
|
|
16
|
-
|
|
17
|
-
本次审计为**纯修复性工作**,不涉及:
|
|
18
|
-
- 数据库 Schema 变更
|
|
19
|
-
- 状态文件格式变更
|
|
20
|
-
- API 接口变更
|
|
21
|
-
|
|
22
|
-
### 1.2 API Changes
|
|
23
|
-
**状态**: ❌ 无 API 变更
|
|
24
|
-
|
|
25
|
-
所有修复均为**内部实现优化**,对外接口保持向后兼容:
|
|
26
|
-
- Hook 接口不变(仅增强输入验证)
|
|
27
|
-
- Agent 生命周期接口不变(修复推断逻辑)
|
|
28
|
-
- 状态管理接口不变(增强并发保护)
|
|
29
|
-
|
|
30
|
-
### 1.3 架构完整性评估
|
|
31
|
-
|
|
32
|
-
| 维度 | 当前状态 | 修复后状态 | 影响评级 |
|
|
33
|
-
|------|----------|------------|----------|
|
|
34
|
-
| **安全边界** | 存在路径遍历漏洞 | 强制白名单校验 | 🔴 高影响 |
|
|
35
|
-
| **状态一致性** | 部分绕过原子写入 | 统一原子写入 + 重试 | 🟡 中影响 |
|
|
36
|
-
| **并发控制** | 四层保护不完整 | 补全 debounce + atomic | 🟡 中影响 |
|
|
37
|
-
| **生命周期管理** | 推断逻辑错误 | 修复 success !== false | 🟢 低影响 |
|
|
38
|
-
|
|
39
|
-
**架构风险**:
|
|
40
|
-
- ✅ 无破坏性变更
|
|
41
|
-
- ✅ 向后兼容
|
|
42
|
-
- ⚠️ 需要全面回归测试(状态管理路径变更)
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## 2. 技术可行性评估 (Feasibility Assessment)
|
|
47
|
-
|
|
48
|
-
### 2.1 P0 问题修复(阻塞性)
|
|
49
|
-
|
|
50
|
-
#### 2.1.1 安全加固
|
|
51
|
-
|
|
52
|
-
**可行性**: ✅ 高(已有实现参考)
|
|
53
|
-
|
|
54
|
-
| 反模式 | 修复方案 | 实施难度 | 风险 |
|
|
55
|
-
|--------|----------|----------|------|
|
|
56
|
-
| AP-S01: 路径遍历 | 使用 `assertValidMode()` 强制校验 | 低 | 低(已有 validateMode.ts) |
|
|
57
|
-
| AP-S02: 废弃字段读取 | 统一使用 `success !== false` | 低 | 低(单点修改) |
|
|
58
|
-
| AP-S03: 敏感信息存储 | 文件权限 0o600 + 审计日志 | 中 | 低(已有 atomic-write.ts) |
|
|
59
|
-
|
|
60
|
-
**技术依赖**:
|
|
61
|
-
- ✅ `src/lib/validateMode.ts` 已存在
|
|
62
|
-
- ✅ `src/lib/atomic-write.ts` 已支持权限设置
|
|
63
|
-
- ✅ v6.0.0 已实现安全审计日志
|
|
64
|
-
|
|
65
|
-
**实施路径**:
|
|
66
|
-
```typescript
|
|
67
|
-
// 1. 全局搜索未校验的 mode 拼接
|
|
68
|
-
grep -r "\.omc/state/\${mode}" src/
|
|
69
|
-
|
|
70
|
-
// 2. 批量替换为安全模式
|
|
71
|
-
const validMode = assertValidMode(mode);
|
|
72
|
-
const path = `.omc/state/${validMode}-state.json`;
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
#### 2.1.2 状态一致性
|
|
76
|
-
|
|
77
|
-
**可行性**: ✅ 高(技术债务 TD-4 已识别)
|
|
78
|
-
|
|
79
|
-
| 问题 | 修复方案 | 实施难度 | 风险 |
|
|
80
|
-
|------|----------|----------|------|
|
|
81
|
-
| AP-C01: 绕过原子写入 | 统一使用 `atomicWriteJsonSyncWithRetry` | 中 | 中(需回归测试) |
|
|
82
|
-
| AP-ST02: 跨会话误清理 | 增强 session_id 匹配逻辑 | 低 | 低(已修复 #573) |
|
|
83
|
-
|
|
84
|
-
**技术依赖**:
|
|
85
|
-
- ✅ `atomicWriteJsonSyncWithRetry` 已在 v6.0.0 实现
|
|
86
|
-
- ✅ 指数退避重试机制已就绪
|
|
87
|
-
|
|
88
|
-
**实施路径**:
|
|
89
|
-
```typescript
|
|
90
|
-
// 替换 writeTrackingStateImmediate 中的直接写入
|
|
91
|
-
- writeFileSync(statePath, JSON.stringify(state, null, 2));
|
|
92
|
-
+ atomicWriteJsonSyncWithRetry(statePath, state, 3);
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
#### 2.1.3 Agent 生命周期
|
|
96
|
-
|
|
97
|
-
**可行性**: ✅ 高(已修复 Bug #1)
|
|
98
|
-
|
|
99
|
-
| 问题 | 修复方案 | 实施难度 | 风险 |
|
|
100
|
-
|------|----------|----------|------|
|
|
101
|
-
| AP-AL01: 孤儿 Agent 误发信号 | 批量清除(删除 tracking 文件) | 低 | 低(已实现) |
|
|
102
|
-
| AP-AL02: 超时阈值混淆 | 文档澄清 + 提取常量 | 低 | 低 |
|
|
103
|
-
| AP-AL03: 死锁检测缺失 | 实现 DEADLOCK_CHECK_THRESHOLD 逻辑 | 高 | 中(需设计检测算法) |
|
|
104
|
-
|
|
105
|
-
**技术挑战**:
|
|
106
|
-
- ⚠️ 死锁检测需要实现**循环依赖图分析**
|
|
107
|
-
- ⚠️ 需要定义"相互等待"的精确语义
|
|
108
|
-
|
|
109
|
-
### 2.2 P1 问题修复(严重)
|
|
110
|
-
|
|
111
|
-
#### 2.2.1 测试质量
|
|
112
|
-
|
|
113
|
-
**可行性**: ✅ 中(需补充边界用例)
|
|
114
|
-
|
|
115
|
-
**测试覆盖缺口**:
|
|
116
|
-
- 并发写入冲突场景(subagent-tracking.json)
|
|
117
|
-
- Windows 平台 rename 失败处理
|
|
118
|
-
- 状态文件损坏恢复流程
|
|
119
|
-
- 超时/孤儿/死锁边界情况
|
|
120
|
-
|
|
121
|
-
**实施成本**: 3-5 天(编写 + 验证)
|
|
122
|
-
|
|
123
|
-
#### 2.2.2 文档同步
|
|
124
|
-
|
|
125
|
-
**可行性**: ✅ 高(已有规范文档)
|
|
126
|
-
|
|
127
|
-
**差异点修复**:
|
|
128
|
-
- D-03: 合法 mode 数量(7 → 8)
|
|
129
|
-
- D-04: 互斥模式范围(2 → 4)
|
|
130
|
-
- D-09: stale 阈值双重含义澄清
|
|
131
|
-
|
|
132
|
-
**实施成本**: 1-2 天(文档更新 + 代码注释)
|
|
133
|
-
|
|
134
|
-
### 2.3 P2 改进(优化)
|
|
135
|
-
|
|
136
|
-
**可行性**: ✅ 低优先级(可延后至 v8.0)
|
|
137
|
-
|
|
138
|
-
**技术债务清理**:
|
|
139
|
-
- 51 个 TODO/FIXME/HACK 标记
|
|
140
|
-
- 需逐个评估是否仍然有效
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## 3. 风险评估 (Risk Assessment)
|
|
145
|
-
|
|
146
|
-
### 3.1 技术风险
|
|
147
|
-
|
|
148
|
-
| 风险项 | 概率 | 影响 | 缓解措施 |
|
|
149
|
-
|--------|------|------|----------|
|
|
150
|
-
| 原子写入性能回退 | 中 | 中 | 保留 debounce 层,仅修复即时写入 |
|
|
151
|
-
| Windows 平台兼容性 | 低 | 高 | 增加 Windows CI 测试 |
|
|
152
|
-
| 并发测试不充分 | 高 | 中 | 补充压力测试用例 |
|
|
153
|
-
| 死锁检测误报 | 中 | 低 | 先实现警告模式,不自动终止 |
|
|
154
|
-
|
|
155
|
-
### 3.2 复杂度评分
|
|
156
|
-
|
|
157
|
-
**总体复杂度**: 6/10(中等)
|
|
158
|
-
|
|
159
|
-
| 维度 | 评分 | 说明 |
|
|
160
|
-
|------|------|------|
|
|
161
|
-
| 代码变更范围 | 7/10 | 涉及核心状态管理路径 |
|
|
162
|
-
| 测试复杂度 | 8/10 | 需要并发场景测试 |
|
|
163
|
-
| 回归风险 | 5/10 | 向后兼容,但需全面验证 |
|
|
164
|
-
| 文档工作量 | 3/10 | 主要是澄清现有差异点 |
|
|
165
|
-
|
|
166
|
-
### 3.3 POC 需求
|
|
167
|
-
|
|
168
|
-
**状态**: ⚠️ 部分需要
|
|
169
|
-
|
|
170
|
-
| 功能 | 是否需要 POC | 原因 |
|
|
171
|
-
|------|--------------|------|
|
|
172
|
-
| 原子写入统一 | ❌ 否 | 已有 v6.0.0 实现 |
|
|
173
|
-
| 死锁检测算法 | ✅ 是 | 需验证检测准确性 |
|
|
174
|
-
| Windows 命令注入防护 | ❌ 否 | 已在 v5.5.18 修复 |
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
## 4. 实施计划 (Implementation Plan)
|
|
179
|
-
|
|
180
|
-
### 4.1 分阶段策略
|
|
181
|
-
|
|
182
|
-
**Phase 1: P0 安全修复(1 周)**
|
|
183
|
-
```
|
|
184
|
-
Day 1-2: 路径遍历漏洞修复
|
|
185
|
-
- 全局搜索未校验的 mode 拼接
|
|
186
|
-
- 批量替换为 assertValidMode()
|
|
187
|
-
- 补充单元测试
|
|
188
|
-
|
|
189
|
-
Day 3-4: 状态一致性修复
|
|
190
|
-
- 替换 writeTrackingStateImmediate 为原子写入
|
|
191
|
-
- 验证并发写入场景
|
|
192
|
-
- 压力测试
|
|
193
|
-
|
|
194
|
-
Day 5: Agent 生命周期修复
|
|
195
|
-
- 统一 success !== false 推断逻辑
|
|
196
|
-
- 提取超时常量
|
|
197
|
-
- 文档澄清
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
**Phase 2: P1 质量提升(1 周)**
|
|
201
|
-
```
|
|
202
|
-
Day 1-3: 测试覆盖补充
|
|
203
|
-
- 并发场景测试
|
|
204
|
-
- Windows 平台测试
|
|
205
|
-
- 边界情况测试
|
|
206
|
-
|
|
207
|
-
Day 4-5: 文档同步
|
|
208
|
-
- 修复差异点 D-03/D-04/D-09
|
|
209
|
-
- 更新代码注释
|
|
210
|
-
- 补充示例
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
**Phase 3: P2 优化(可选,2 周)**
|
|
214
|
-
```
|
|
215
|
-
Week 1: 技术债务清理
|
|
216
|
-
- 评估 51 个 TODO/FIXME
|
|
217
|
-
- 清理过期标记
|
|
218
|
-
- 重构反模式代码
|
|
219
|
-
|
|
220
|
-
Week 2: 死锁检测 POC
|
|
221
|
-
- 设计检测算法
|
|
222
|
-
- 实现原型
|
|
223
|
-
- 验证准确性
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
### 4.2 Backend 实施细节
|
|
227
|
-
|
|
228
|
-
**核心修改文件**:
|
|
229
|
-
```
|
|
230
|
-
src/lib/validateMode.ts # 已存在,无需修改
|
|
231
|
-
src/lib/atomic-write.ts # 已存在,无需修改
|
|
232
|
-
src/hooks/subagent-tracker/index.ts # 修复原子写入
|
|
233
|
-
src/hooks/session-end/index.ts # 已修复,验证即可
|
|
234
|
-
src/hooks/bridge-normalize.ts # v6.0.0 已完成
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
**预计变更行数**: 200-300 行(主要是替换调用)
|
|
238
|
-
|
|
239
|
-
### 4.3 Frontend 实施细节
|
|
240
|
-
|
|
241
|
-
**状态**: ❌ 无 Frontend 变更
|
|
242
|
-
|
|
243
|
-
本次审计为纯后端修复,不涉及 UI 变更。
|
|
244
|
-
|
|
245
|
-
---
|
|
246
|
-
|
|
247
|
-
## 5. 成本估算 (Cost Estimation)
|
|
248
|
-
|
|
249
|
-
### 5.1 人力成本
|
|
250
|
-
|
|
251
|
-
| 阶段 | 工作量 | 人员配置 | 日历时间 |
|
|
252
|
-
|------|--------|----------|----------|
|
|
253
|
-
| Phase 1 (P0) | 5 人日 | 1 Senior Dev | 1 周 |
|
|
254
|
-
| Phase 2 (P1) | 5 人日 | 1 Mid Dev | 1 周 |
|
|
255
|
-
| Phase 3 (P2) | 10 人日 | 1 Mid Dev | 2 周(可选) |
|
|
256
|
-
| **总计** | **20 人日** | **1-2 人** | **2-4 周** |
|
|
257
|
-
|
|
258
|
-
### 5.2 技术成本
|
|
259
|
-
|
|
260
|
-
| 项目 | 成本 | 说明 |
|
|
261
|
-
|------|------|------|
|
|
262
|
-
| CI/CD 资源 | 低 | 复用现有 GitHub Actions |
|
|
263
|
-
| 测试环境 | 低 | 本地 + Windows CI |
|
|
264
|
-
| 文档工具 | 零 | Markdown + Git |
|
|
265
|
-
| **总计** | **低** | 无额外基础设施成本 |
|
|
266
|
-
|
|
267
|
-
### 5.3 机会成本
|
|
268
|
-
|
|
269
|
-
**延迟修复的风险**:
|
|
270
|
-
- 🔴 路径遍历漏洞可能被利用(安全风险)
|
|
271
|
-
- 🟡 状态文件损坏导致用户数据丢失(信任风险)
|
|
272
|
-
- 🟢 技术债务累积影响 v8.0 重构(开发效率)
|
|
273
|
-
|
|
274
|
-
**建议**: P0 问题应在 **v7.5.3** 中立即修复,不应延后。
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## 6. 依赖关系分析 (Dependencies)
|
|
279
|
-
|
|
280
|
-
### 6.1 内部依赖
|
|
281
|
-
|
|
282
|
-
```mermaid
|
|
283
|
-
graph TD
|
|
284
|
-
A[validateMode.ts] --> B[所有状态文件操作]
|
|
285
|
-
C[atomic-write.ts] --> B
|
|
286
|
-
D[bridge-normalize.ts] --> E[所有 Hook 处理器]
|
|
287
|
-
F[subagent-tracker] --> C
|
|
288
|
-
F --> A
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
**关键路径**:
|
|
292
|
-
- `validateMode.ts` 是安全边界的基石
|
|
293
|
-
- `atomic-write.ts` 是状态一致性的保障
|
|
294
|
-
- 两者已在 v6.0.0 实现,修复工作为**应用层调用统一**
|
|
295
|
-
|
|
296
|
-
### 6.2 外部依赖
|
|
297
|
-
|
|
298
|
-
**状态**: ✅ 无新增外部依赖
|
|
299
|
-
|
|
300
|
-
所有修复均使用现有依赖:
|
|
301
|
-
- Node.js fs 模块
|
|
302
|
-
- TypeScript 类型系统
|
|
303
|
-
- Vitest 测试框架
|
|
304
|
-
|
|
305
|
-
### 6.3 版本兼容性
|
|
306
|
-
|
|
307
|
-
| 依赖 | 当前版本 | 最低要求 | 兼容性 |
|
|
308
|
-
|------|----------|----------|--------|
|
|
309
|
-
| Node.js | 18+ | 18.0.0 | ✅ |
|
|
310
|
-
| TypeScript | 5.x | 5.0.0 | ✅ |
|
|
311
|
-
| Vitest | 最新 | 1.0.0 | ✅ |
|
|
312
|
-
|
|
313
|
-
---
|
|
314
|
-
|
|
315
|
-
## 7. 实施建议 (Recommendations)
|
|
316
|
-
|
|
317
|
-
### 7.1 优先级排序
|
|
318
|
-
|
|
319
|
-
**立即执行(v7.5.3)**:
|
|
320
|
-
1. ✅ 路径遍历漏洞修复(AP-S01)
|
|
321
|
-
2. ✅ SubagentStopInput.success 推断修复(AP-S02)
|
|
322
|
-
3. ✅ 原子写入统一(AP-C01)
|
|
323
|
-
|
|
324
|
-
**短期执行(v7.6.0)**:
|
|
325
|
-
4. ⚠️ 测试覆盖补充
|
|
326
|
-
5. ⚠️ 文档差异点修复
|
|
327
|
-
6. ⚠️ 超时常量提取
|
|
328
|
-
|
|
329
|
-
**长期规划(v8.0)**:
|
|
330
|
-
7. 🔵 死锁检测实现
|
|
331
|
-
8. 🔵 技术债务清理
|
|
332
|
-
9. 🔵 性能优化
|
|
333
|
-
|
|
334
|
-
### 7.2 质量门禁
|
|
335
|
-
|
|
336
|
-
**发布前必须满足**:
|
|
337
|
-
- ✅ 所有 P0 问题修复完成
|
|
338
|
-
- ✅ 单元测试覆盖率 > 80%
|
|
339
|
-
- ✅ 并发压力测试通过(100 并发写入)
|
|
340
|
-
- ✅ Windows CI 测试通过
|
|
341
|
-
- ✅ 无新增 ESLint 错误
|
|
342
|
-
|
|
343
|
-
### 7.3 回滚计划
|
|
344
|
-
|
|
345
|
-
**风险缓解**:
|
|
346
|
-
- 保留 v7.5.2 分支作为回滚点
|
|
347
|
-
- 状态文件格式不变,支持热回滚
|
|
348
|
-
- 增量发布:先 beta 测试 1 周,再正式发布
|
|
349
|
-
|
|
350
|
-
---
|
|
351
|
-
|
|
352
|
-
## 8. 结论 (Conclusion)
|
|
353
|
-
|
|
354
|
-
### 8.1 总体评估
|
|
355
|
-
|
|
356
|
-
**可行性**: ✅ **高度可行**
|
|
357
|
-
|
|
358
|
-
- 技术方案成熟(v6.0.0 已验证)
|
|
359
|
-
- 实施风险可控(向后兼容)
|
|
360
|
-
- 成本合理(2-4 周)
|
|
361
|
-
|
|
362
|
-
### 8.2 推荐决策
|
|
363
|
-
|
|
364
|
-
**建议**: ✅ **批准实施,分阶段执行**
|
|
365
|
-
|
|
366
|
-
**理由**:
|
|
367
|
-
1. P0 安全问题不容延迟
|
|
368
|
-
2. 技术债务已影响开发效率
|
|
369
|
-
3. 修复成本远低于延迟风险
|
|
370
|
-
|
|
371
|
-
### 8.3 关键成功因素
|
|
372
|
-
|
|
373
|
-
1. **充分的回归测试**(尤其是并发场景)
|
|
374
|
-
2. **Windows 平台验证**(CI 覆盖)
|
|
375
|
-
3. **文档同步更新**(避免新的差异点)
|
|
376
|
-
4. **分阶段发布**(降低回滚成本)
|
|
377
|
-
|
|
378
|
-
---
|
|
379
|
-
|
|
380
|
-
**评审签名**: Tech Lead
|
|
381
|
-
**评审日期**: 2026-03-16
|
|
382
|
-
**下一步**: 提交 Product Manager 审批
|
|
1
|
+
# Tech Feasibility Review: ultrapower v7.5.2 BUG 与痛点审计
|
|
2
|
+
|
|
3
|
+
## 评审概要
|
|
4
|
+
|
|
5
|
+
**评审人**: Tech Lead
|
|
6
|
+
**评审日期**: 2026-03-16
|
|
7
|
+
**PRD 版本**: Draft
|
|
8
|
+
**评审结论**: ✅ **通过 - 需分阶段实施**
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. 架构影响分析 (Architecture Impact)
|
|
13
|
+
|
|
14
|
+
### 1.1 Schema Changes
|
|
15
|
+
**状态**: ❌ 无 Schema 变更
|
|
16
|
+
|
|
17
|
+
本次审计为**纯修复性工作**,不涉及:
|
|
18
|
+
- 数据库 Schema 变更
|
|
19
|
+
- 状态文件格式变更
|
|
20
|
+
- API 接口变更
|
|
21
|
+
|
|
22
|
+
### 1.2 API Changes
|
|
23
|
+
**状态**: ❌ 无 API 变更
|
|
24
|
+
|
|
25
|
+
所有修复均为**内部实现优化**,对外接口保持向后兼容:
|
|
26
|
+
- Hook 接口不变(仅增强输入验证)
|
|
27
|
+
- Agent 生命周期接口不变(修复推断逻辑)
|
|
28
|
+
- 状态管理接口不变(增强并发保护)
|
|
29
|
+
|
|
30
|
+
### 1.3 架构完整性评估
|
|
31
|
+
|
|
32
|
+
| 维度 | 当前状态 | 修复后状态 | 影响评级 |
|
|
33
|
+
|------|----------|------------|----------|
|
|
34
|
+
| **安全边界** | 存在路径遍历漏洞 | 强制白名单校验 | 🔴 高影响 |
|
|
35
|
+
| **状态一致性** | 部分绕过原子写入 | 统一原子写入 + 重试 | 🟡 中影响 |
|
|
36
|
+
| **并发控制** | 四层保护不完整 | 补全 debounce + atomic | 🟡 中影响 |
|
|
37
|
+
| **生命周期管理** | 推断逻辑错误 | 修复 success !== false | 🟢 低影响 |
|
|
38
|
+
|
|
39
|
+
**架构风险**:
|
|
40
|
+
- ✅ 无破坏性变更
|
|
41
|
+
- ✅ 向后兼容
|
|
42
|
+
- ⚠️ 需要全面回归测试(状态管理路径变更)
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 2. 技术可行性评估 (Feasibility Assessment)
|
|
47
|
+
|
|
48
|
+
### 2.1 P0 问题修复(阻塞性)
|
|
49
|
+
|
|
50
|
+
#### 2.1.1 安全加固
|
|
51
|
+
|
|
52
|
+
**可行性**: ✅ 高(已有实现参考)
|
|
53
|
+
|
|
54
|
+
| 反模式 | 修复方案 | 实施难度 | 风险 |
|
|
55
|
+
|--------|----------|----------|------|
|
|
56
|
+
| AP-S01: 路径遍历 | 使用 `assertValidMode()` 强制校验 | 低 | 低(已有 validateMode.ts) |
|
|
57
|
+
| AP-S02: 废弃字段读取 | 统一使用 `success !== false` | 低 | 低(单点修改) |
|
|
58
|
+
| AP-S03: 敏感信息存储 | 文件权限 0o600 + 审计日志 | 中 | 低(已有 atomic-write.ts) |
|
|
59
|
+
|
|
60
|
+
**技术依赖**:
|
|
61
|
+
- ✅ `src/lib/validateMode.ts` 已存在
|
|
62
|
+
- ✅ `src/lib/atomic-write.ts` 已支持权限设置
|
|
63
|
+
- ✅ v6.0.0 已实现安全审计日志
|
|
64
|
+
|
|
65
|
+
**实施路径**:
|
|
66
|
+
```typescript
|
|
67
|
+
// 1. 全局搜索未校验的 mode 拼接
|
|
68
|
+
grep -r "\.omc/state/\${mode}" src/
|
|
69
|
+
|
|
70
|
+
// 2. 批量替换为安全模式
|
|
71
|
+
const validMode = assertValidMode(mode);
|
|
72
|
+
const path = `.omc/state/${validMode}-state.json`;
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### 2.1.2 状态一致性
|
|
76
|
+
|
|
77
|
+
**可行性**: ✅ 高(技术债务 TD-4 已识别)
|
|
78
|
+
|
|
79
|
+
| 问题 | 修复方案 | 实施难度 | 风险 |
|
|
80
|
+
|------|----------|----------|------|
|
|
81
|
+
| AP-C01: 绕过原子写入 | 统一使用 `atomicWriteJsonSyncWithRetry` | 中 | 中(需回归测试) |
|
|
82
|
+
| AP-ST02: 跨会话误清理 | 增强 session_id 匹配逻辑 | 低 | 低(已修复 #573) |
|
|
83
|
+
|
|
84
|
+
**技术依赖**:
|
|
85
|
+
- ✅ `atomicWriteJsonSyncWithRetry` 已在 v6.0.0 实现
|
|
86
|
+
- ✅ 指数退避重试机制已就绪
|
|
87
|
+
|
|
88
|
+
**实施路径**:
|
|
89
|
+
```typescript
|
|
90
|
+
// 替换 writeTrackingStateImmediate 中的直接写入
|
|
91
|
+
- writeFileSync(statePath, JSON.stringify(state, null, 2));
|
|
92
|
+
+ atomicWriteJsonSyncWithRetry(statePath, state, 3);
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### 2.1.3 Agent 生命周期
|
|
96
|
+
|
|
97
|
+
**可行性**: ✅ 高(已修复 Bug #1)
|
|
98
|
+
|
|
99
|
+
| 问题 | 修复方案 | 实施难度 | 风险 |
|
|
100
|
+
|------|----------|----------|------|
|
|
101
|
+
| AP-AL01: 孤儿 Agent 误发信号 | 批量清除(删除 tracking 文件) | 低 | 低(已实现) |
|
|
102
|
+
| AP-AL02: 超时阈值混淆 | 文档澄清 + 提取常量 | 低 | 低 |
|
|
103
|
+
| AP-AL03: 死锁检测缺失 | 实现 DEADLOCK_CHECK_THRESHOLD 逻辑 | 高 | 中(需设计检测算法) |
|
|
104
|
+
|
|
105
|
+
**技术挑战**:
|
|
106
|
+
- ⚠️ 死锁检测需要实现**循环依赖图分析**
|
|
107
|
+
- ⚠️ 需要定义"相互等待"的精确语义
|
|
108
|
+
|
|
109
|
+
### 2.2 P1 问题修复(严重)
|
|
110
|
+
|
|
111
|
+
#### 2.2.1 测试质量
|
|
112
|
+
|
|
113
|
+
**可行性**: ✅ 中(需补充边界用例)
|
|
114
|
+
|
|
115
|
+
**测试覆盖缺口**:
|
|
116
|
+
- 并发写入冲突场景(subagent-tracking.json)
|
|
117
|
+
- Windows 平台 rename 失败处理
|
|
118
|
+
- 状态文件损坏恢复流程
|
|
119
|
+
- 超时/孤儿/死锁边界情况
|
|
120
|
+
|
|
121
|
+
**实施成本**: 3-5 天(编写 + 验证)
|
|
122
|
+
|
|
123
|
+
#### 2.2.2 文档同步
|
|
124
|
+
|
|
125
|
+
**可行性**: ✅ 高(已有规范文档)
|
|
126
|
+
|
|
127
|
+
**差异点修复**:
|
|
128
|
+
- D-03: 合法 mode 数量(7 → 8)
|
|
129
|
+
- D-04: 互斥模式范围(2 → 4)
|
|
130
|
+
- D-09: stale 阈值双重含义澄清
|
|
131
|
+
|
|
132
|
+
**实施成本**: 1-2 天(文档更新 + 代码注释)
|
|
133
|
+
|
|
134
|
+
### 2.3 P2 改进(优化)
|
|
135
|
+
|
|
136
|
+
**可行性**: ✅ 低优先级(可延后至 v8.0)
|
|
137
|
+
|
|
138
|
+
**技术债务清理**:
|
|
139
|
+
- 51 个 TODO/FIXME/HACK 标记
|
|
140
|
+
- 需逐个评估是否仍然有效
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 3. 风险评估 (Risk Assessment)
|
|
145
|
+
|
|
146
|
+
### 3.1 技术风险
|
|
147
|
+
|
|
148
|
+
| 风险项 | 概率 | 影响 | 缓解措施 |
|
|
149
|
+
|--------|------|------|----------|
|
|
150
|
+
| 原子写入性能回退 | 中 | 中 | 保留 debounce 层,仅修复即时写入 |
|
|
151
|
+
| Windows 平台兼容性 | 低 | 高 | 增加 Windows CI 测试 |
|
|
152
|
+
| 并发测试不充分 | 高 | 中 | 补充压力测试用例 |
|
|
153
|
+
| 死锁检测误报 | 中 | 低 | 先实现警告模式,不自动终止 |
|
|
154
|
+
|
|
155
|
+
### 3.2 复杂度评分
|
|
156
|
+
|
|
157
|
+
**总体复杂度**: 6/10(中等)
|
|
158
|
+
|
|
159
|
+
| 维度 | 评分 | 说明 |
|
|
160
|
+
|------|------|------|
|
|
161
|
+
| 代码变更范围 | 7/10 | 涉及核心状态管理路径 |
|
|
162
|
+
| 测试复杂度 | 8/10 | 需要并发场景测试 |
|
|
163
|
+
| 回归风险 | 5/10 | 向后兼容,但需全面验证 |
|
|
164
|
+
| 文档工作量 | 3/10 | 主要是澄清现有差异点 |
|
|
165
|
+
|
|
166
|
+
### 3.3 POC 需求
|
|
167
|
+
|
|
168
|
+
**状态**: ⚠️ 部分需要
|
|
169
|
+
|
|
170
|
+
| 功能 | 是否需要 POC | 原因 |
|
|
171
|
+
|------|--------------|------|
|
|
172
|
+
| 原子写入统一 | ❌ 否 | 已有 v6.0.0 实现 |
|
|
173
|
+
| 死锁检测算法 | ✅ 是 | 需验证检测准确性 |
|
|
174
|
+
| Windows 命令注入防护 | ❌ 否 | 已在 v5.5.18 修复 |
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 4. 实施计划 (Implementation Plan)
|
|
179
|
+
|
|
180
|
+
### 4.1 分阶段策略
|
|
181
|
+
|
|
182
|
+
**Phase 1: P0 安全修复(1 周)**
|
|
183
|
+
```
|
|
184
|
+
Day 1-2: 路径遍历漏洞修复
|
|
185
|
+
- 全局搜索未校验的 mode 拼接
|
|
186
|
+
- 批量替换为 assertValidMode()
|
|
187
|
+
- 补充单元测试
|
|
188
|
+
|
|
189
|
+
Day 3-4: 状态一致性修复
|
|
190
|
+
- 替换 writeTrackingStateImmediate 为原子写入
|
|
191
|
+
- 验证并发写入场景
|
|
192
|
+
- 压力测试
|
|
193
|
+
|
|
194
|
+
Day 5: Agent 生命周期修复
|
|
195
|
+
- 统一 success !== false 推断逻辑
|
|
196
|
+
- 提取超时常量
|
|
197
|
+
- 文档澄清
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Phase 2: P1 质量提升(1 周)**
|
|
201
|
+
```
|
|
202
|
+
Day 1-3: 测试覆盖补充
|
|
203
|
+
- 并发场景测试
|
|
204
|
+
- Windows 平台测试
|
|
205
|
+
- 边界情况测试
|
|
206
|
+
|
|
207
|
+
Day 4-5: 文档同步
|
|
208
|
+
- 修复差异点 D-03/D-04/D-09
|
|
209
|
+
- 更新代码注释
|
|
210
|
+
- 补充示例
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**Phase 3: P2 优化(可选,2 周)**
|
|
214
|
+
```
|
|
215
|
+
Week 1: 技术债务清理
|
|
216
|
+
- 评估 51 个 TODO/FIXME
|
|
217
|
+
- 清理过期标记
|
|
218
|
+
- 重构反模式代码
|
|
219
|
+
|
|
220
|
+
Week 2: 死锁检测 POC
|
|
221
|
+
- 设计检测算法
|
|
222
|
+
- 实现原型
|
|
223
|
+
- 验证准确性
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### 4.2 Backend 实施细节
|
|
227
|
+
|
|
228
|
+
**核心修改文件**:
|
|
229
|
+
```
|
|
230
|
+
src/lib/validateMode.ts # 已存在,无需修改
|
|
231
|
+
src/lib/atomic-write.ts # 已存在,无需修改
|
|
232
|
+
src/hooks/subagent-tracker/index.ts # 修复原子写入
|
|
233
|
+
src/hooks/session-end/index.ts # 已修复,验证即可
|
|
234
|
+
src/hooks/bridge-normalize.ts # v6.0.0 已完成
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**预计变更行数**: 200-300 行(主要是替换调用)
|
|
238
|
+
|
|
239
|
+
### 4.3 Frontend 实施细节
|
|
240
|
+
|
|
241
|
+
**状态**: ❌ 无 Frontend 变更
|
|
242
|
+
|
|
243
|
+
本次审计为纯后端修复,不涉及 UI 变更。
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## 5. 成本估算 (Cost Estimation)
|
|
248
|
+
|
|
249
|
+
### 5.1 人力成本
|
|
250
|
+
|
|
251
|
+
| 阶段 | 工作量 | 人员配置 | 日历时间 |
|
|
252
|
+
|------|--------|----------|----------|
|
|
253
|
+
| Phase 1 (P0) | 5 人日 | 1 Senior Dev | 1 周 |
|
|
254
|
+
| Phase 2 (P1) | 5 人日 | 1 Mid Dev | 1 周 |
|
|
255
|
+
| Phase 3 (P2) | 10 人日 | 1 Mid Dev | 2 周(可选) |
|
|
256
|
+
| **总计** | **20 人日** | **1-2 人** | **2-4 周** |
|
|
257
|
+
|
|
258
|
+
### 5.2 技术成本
|
|
259
|
+
|
|
260
|
+
| 项目 | 成本 | 说明 |
|
|
261
|
+
|------|------|------|
|
|
262
|
+
| CI/CD 资源 | 低 | 复用现有 GitHub Actions |
|
|
263
|
+
| 测试环境 | 低 | 本地 + Windows CI |
|
|
264
|
+
| 文档工具 | 零 | Markdown + Git |
|
|
265
|
+
| **总计** | **低** | 无额外基础设施成本 |
|
|
266
|
+
|
|
267
|
+
### 5.3 机会成本
|
|
268
|
+
|
|
269
|
+
**延迟修复的风险**:
|
|
270
|
+
- 🔴 路径遍历漏洞可能被利用(安全风险)
|
|
271
|
+
- 🟡 状态文件损坏导致用户数据丢失(信任风险)
|
|
272
|
+
- 🟢 技术债务累积影响 v8.0 重构(开发效率)
|
|
273
|
+
|
|
274
|
+
**建议**: P0 问题应在 **v7.5.3** 中立即修复,不应延后。
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## 6. 依赖关系分析 (Dependencies)
|
|
279
|
+
|
|
280
|
+
### 6.1 内部依赖
|
|
281
|
+
|
|
282
|
+
```mermaid
|
|
283
|
+
graph TD
|
|
284
|
+
A[validateMode.ts] --> B[所有状态文件操作]
|
|
285
|
+
C[atomic-write.ts] --> B
|
|
286
|
+
D[bridge-normalize.ts] --> E[所有 Hook 处理器]
|
|
287
|
+
F[subagent-tracker] --> C
|
|
288
|
+
F --> A
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
**关键路径**:
|
|
292
|
+
- `validateMode.ts` 是安全边界的基石
|
|
293
|
+
- `atomic-write.ts` 是状态一致性的保障
|
|
294
|
+
- 两者已在 v6.0.0 实现,修复工作为**应用层调用统一**
|
|
295
|
+
|
|
296
|
+
### 6.2 外部依赖
|
|
297
|
+
|
|
298
|
+
**状态**: ✅ 无新增外部依赖
|
|
299
|
+
|
|
300
|
+
所有修复均使用现有依赖:
|
|
301
|
+
- Node.js fs 模块
|
|
302
|
+
- TypeScript 类型系统
|
|
303
|
+
- Vitest 测试框架
|
|
304
|
+
|
|
305
|
+
### 6.3 版本兼容性
|
|
306
|
+
|
|
307
|
+
| 依赖 | 当前版本 | 最低要求 | 兼容性 |
|
|
308
|
+
|------|----------|----------|--------|
|
|
309
|
+
| Node.js | 18+ | 18.0.0 | ✅ |
|
|
310
|
+
| TypeScript | 5.x | 5.0.0 | ✅ |
|
|
311
|
+
| Vitest | 最新 | 1.0.0 | ✅ |
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## 7. 实施建议 (Recommendations)
|
|
316
|
+
|
|
317
|
+
### 7.1 优先级排序
|
|
318
|
+
|
|
319
|
+
**立即执行(v7.5.3)**:
|
|
320
|
+
1. ✅ 路径遍历漏洞修复(AP-S01)
|
|
321
|
+
2. ✅ SubagentStopInput.success 推断修复(AP-S02)
|
|
322
|
+
3. ✅ 原子写入统一(AP-C01)
|
|
323
|
+
|
|
324
|
+
**短期执行(v7.6.0)**:
|
|
325
|
+
4. ⚠️ 测试覆盖补充
|
|
326
|
+
5. ⚠️ 文档差异点修复
|
|
327
|
+
6. ⚠️ 超时常量提取
|
|
328
|
+
|
|
329
|
+
**长期规划(v8.0)**:
|
|
330
|
+
7. 🔵 死锁检测实现
|
|
331
|
+
8. 🔵 技术债务清理
|
|
332
|
+
9. 🔵 性能优化
|
|
333
|
+
|
|
334
|
+
### 7.2 质量门禁
|
|
335
|
+
|
|
336
|
+
**发布前必须满足**:
|
|
337
|
+
- ✅ 所有 P0 问题修复完成
|
|
338
|
+
- ✅ 单元测试覆盖率 > 80%
|
|
339
|
+
- ✅ 并发压力测试通过(100 并发写入)
|
|
340
|
+
- ✅ Windows CI 测试通过
|
|
341
|
+
- ✅ 无新增 ESLint 错误
|
|
342
|
+
|
|
343
|
+
### 7.3 回滚计划
|
|
344
|
+
|
|
345
|
+
**风险缓解**:
|
|
346
|
+
- 保留 v7.5.2 分支作为回滚点
|
|
347
|
+
- 状态文件格式不变,支持热回滚
|
|
348
|
+
- 增量发布:先 beta 测试 1 周,再正式发布
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
## 8. 结论 (Conclusion)
|
|
353
|
+
|
|
354
|
+
### 8.1 总体评估
|
|
355
|
+
|
|
356
|
+
**可行性**: ✅ **高度可行**
|
|
357
|
+
|
|
358
|
+
- 技术方案成熟(v6.0.0 已验证)
|
|
359
|
+
- 实施风险可控(向后兼容)
|
|
360
|
+
- 成本合理(2-4 周)
|
|
361
|
+
|
|
362
|
+
### 8.2 推荐决策
|
|
363
|
+
|
|
364
|
+
**建议**: ✅ **批准实施,分阶段执行**
|
|
365
|
+
|
|
366
|
+
**理由**:
|
|
367
|
+
1. P0 安全问题不容延迟
|
|
368
|
+
2. 技术债务已影响开发效率
|
|
369
|
+
3. 修复成本远低于延迟风险
|
|
370
|
+
|
|
371
|
+
### 8.3 关键成功因素
|
|
372
|
+
|
|
373
|
+
1. **充分的回归测试**(尤其是并发场景)
|
|
374
|
+
2. **Windows 平台验证**(CI 覆盖)
|
|
375
|
+
3. **文档同步更新**(避免新的差异点)
|
|
376
|
+
4. **分阶段发布**(降低回滚成本)
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
**评审签名**: Tech Lead
|
|
381
|
+
**评审日期**: 2026-03-16
|
|
382
|
+
**下一步**: 提交 Product Manager 审批
|