@liangjie559567/ultrapower 7.5.2 → 7.7.0
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 +13 -2
- package/bridge/mcp-server.cjs +1 -0
- package/dist/cli/commands/repair.d.ts +3 -0
- package/dist/cli/commands/repair.d.ts.map +1 -0
- package/dist/cli/commands/repair.js +130 -0
- package/dist/cli/commands/repair.js.map +1 -0
- package/dist/features/analytics-dashboard/metrics-collector.d.ts.map +1 -1
- package/dist/features/analytics-dashboard/metrics-collector.js +4 -0
- package/dist/features/analytics-dashboard/metrics-collector.js.map +1 -1
- package/dist/features/analytics-dashboard/storage.d.ts +22 -2
- package/dist/features/analytics-dashboard/storage.d.ts.map +1 -1
- package/dist/features/analytics-dashboard/storage.js.map +1 -1
- package/dist/features/analytics-dashboard/tracker.d.ts.map +1 -1
- package/dist/features/analytics-dashboard/tracker.js +14 -2
- package/dist/features/analytics-dashboard/tracker.js.map +1 -1
- package/dist/features/personalized-recommendation/behavior-tracker.js +1 -1
- package/dist/features/personalized-recommendation/behavior-tracker.js.map +1 -1
- package/dist/features/personalized-recommendation/recommender.d.ts +1 -1
- package/dist/features/personalized-recommendation/recommender.d.ts.map +1 -1
- package/dist/features/personalized-recommendation/recommender.js +1 -1
- package/dist/features/personalized-recommendation/recommender.js.map +1 -1
- package/dist/features/quality-gate/gate-checker.d.ts.map +1 -1
- package/dist/features/quality-gate/gate-checker.js +2 -1
- package/dist/features/quality-gate/gate-checker.js.map +1 -1
- package/dist/hooks/bridge-converter.d.ts +8 -0
- package/dist/hooks/bridge-converter.d.ts.map +1 -1
- package/dist/hooks/bridge-converter.js +38 -0
- package/dist/hooks/bridge-converter.js.map +1 -1
- package/dist/hooks/handlers/route-map.js +6 -6
- package/dist/hooks/handlers/route-map.js.map +1 -1
- package/dist/hooks/handlers/stop-continuation.d.ts.map +1 -1
- package/dist/hooks/handlers/stop-continuation.js.map +1 -1
- package/dist/hooks/keyword-detector/conflict-resolver.d.ts +16 -0
- package/dist/hooks/keyword-detector/conflict-resolver.d.ts.map +1 -0
- package/dist/hooks/keyword-detector/conflict-resolver.js +41 -0
- package/dist/hooks/keyword-detector/conflict-resolver.js.map +1 -0
- package/dist/hooks/persistent-mode/index.js +2 -2
- package/dist/hooks/persistent-mode/index.js.map +1 -1
- package/dist/hooks/processors/permissionRequest.d.ts.map +1 -1
- package/dist/hooks/processors/permissionRequest.js.map +1 -1
- package/dist/hooks/ultrawork/index.js +3 -3
- package/dist/hooks/ultrawork/index.js.map +1 -1
- package/dist/hooks/workflow-gate/index.js +4 -4
- package/dist/hooks/workflow-gate/index.js.map +1 -1
- package/dist/hud/usage-api.d.ts.map +1 -1
- package/dist/hud/usage-api.js +3 -2
- package/dist/hud/usage-api.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/installer/index.js +1 -1
- package/dist/installer/index.js.map +1 -1
- package/dist/lib/atomic-write.d.ts.map +1 -1
- package/dist/lib/atomic-write.js +23 -2
- package/dist/lib/atomic-write.js.map +1 -1
- package/dist/lib/auditLog.d.ts +1 -1
- package/dist/lib/auditLog.d.ts.map +1 -1
- package/dist/lib/crypto.d.ts +3 -0
- package/dist/lib/crypto.d.ts.map +1 -0
- package/dist/lib/crypto.js +60 -0
- package/dist/lib/crypto.js.map +1 -0
- package/dist/lib/deadlock-detector.d.ts +21 -0
- package/dist/lib/deadlock-detector.d.ts.map +1 -0
- package/dist/lib/deadlock-detector.js +74 -0
- package/dist/lib/deadlock-detector.js.map +1 -0
- package/dist/lib/fs-utils.d.ts +11 -0
- package/dist/lib/fs-utils.d.ts.map +1 -0
- package/dist/lib/fs-utils.js +32 -0
- package/dist/lib/fs-utils.js.map +1 -0
- package/dist/lib/logger.d.ts +7 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +28 -4
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/state-adapter.d.ts +3 -2
- package/dist/lib/state-adapter.d.ts.map +1 -1
- package/dist/lib/state-adapter.js +12 -3
- package/dist/lib/state-adapter.js.map +1 -1
- package/dist/security/concurrency-control.d.ts +8 -1
- 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/dist/security/tenant-isolator.js.map +1 -1
- package/dist/state/index.d.ts +2 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +8 -6
- package/dist/state/index.js.map +1 -1
- package/dist/state/migration/integrity.d.ts.map +1 -1
- package/dist/state/migration/integrity.js +1 -2
- package/dist/state/migration/integrity.js.map +1 -1
- package/dist/tools/lsp-tools.js.map +1 -1
- package/dist/workers/sqlite-adapter.d.ts.map +1 -1
- package/dist/workers/sqlite-adapter.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/audit/direct-write-scan.md +88 -0
- package/docs/audit/subagent-stop-scan.md +48 -0
- package/docs/dev-experience/README.md +226 -0
- package/docs/dev-experience/best-practices.md +364 -0
- package/docs/dev-experience/quick-reference.md +114 -0
- package/docs/dev-experience/troubleshooting-guide.md +280 -0
- package/docs/dev-standards/AGENTS.md +68 -68
- package/docs/getting-started/quickstart.md +1 -1
- package/docs/glossary.md +174 -0
- 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-14-mcp-intelligent-orchestration.md +679 -679
- package/docs/plans/2026-03-16-tech-debt-fixes.md +222 -0
- package/docs/prd/bugs-pain-points-audit-dag.md +297 -0
- package/docs/prd/bugs-pain-points-audit-draft.md +154 -0
- package/docs/prd/bugs-pain-points-audit-manifest.md +830 -0
- package/docs/prd/bugs-pain-points-audit-rough.md +654 -0
- package/docs/reports/tech-debt-verification-2026-03-16.md +87 -0
- package/docs/research/deadlock-detection-poc.md +275 -0
- package/docs/reviews/bugs-pain-points-audit/review_critic.md +213 -0
- package/docs/reviews/bugs-pain-points-audit/review_domain.md +247 -0
- package/docs/reviews/bugs-pain-points-audit/review_product.md +189 -0
- package/docs/reviews/bugs-pain-points-audit/review_tech.md +382 -0
- package/docs/reviews/bugs-pain-points-audit/review_ux.md +161 -0
- package/docs/reviews/bugs-pain-points-audit/summary.md +129 -0
- package/docs/reviews/bugs-pain-points-audit/tech-debt-v7.6.0-code-review.md +328 -0
- package/docs/security/command-injection-scan.md +223 -0
- package/docs/security/path-traversal-scan-report.md +229 -0
- package/docs/security/sensitive-data-inventory.md +170 -0
- package/docs/security/sensitive-data-violations.md +388 -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/cascade-failure.md +324 -0
- package/docs/standards/runtime-protection.md +7 -0
- package/docs/tech-debt/classification.md +190 -0
- package/docs/tech-debt/cleanup-report.md +172 -0
- package/docs/testing/client-additional-test-fix.md +64 -0
- package/docs/testing/concurrent-write-test-fix.md +111 -0
- package/docs/testing/coverage-report.md +274 -0
- package/docs/testing/phase2-test-coverage-completion.md +223 -0
- package/docs/testing/phase2-week3-docs-completion.md +271 -0
- package/docs/testing/phase2-week4-observability-completion.md +324 -0
- package/docs/testing/phase3-completion.md +324 -0
- package/docs/testing/test-fix-progress-2026-03-16.md +75 -0
- package/docs/testing/test-fix-summary.md +197 -0
- package/docs/testing/timer-buffer-test-fix.md +117 -0
- package/docs/troubleshooting.md +1 -1
- package/package.json +10 -10
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# 直接写入点扫描报告
|
|
2
|
+
|
|
3
|
+
## 扫描摘要
|
|
4
|
+
- 发现直接写入点: 3
|
|
5
|
+
- 需要修复: 3
|
|
6
|
+
- 测试代码中的写入: 已排除(测试环境可接受)
|
|
7
|
+
|
|
8
|
+
## 发现的直接写入点
|
|
9
|
+
|
|
10
|
+
### 1. src/lib/file-lock.ts:66
|
|
11
|
+
```typescript
|
|
12
|
+
const meta: LockMeta = { pid: process.pid, timestamp: Date.now() };
|
|
13
|
+
fs.writeFileSync(lockFile, JSON.stringify(meta), 'utf8');
|
|
14
|
+
```
|
|
15
|
+
**问题**: 未使用原子写入
|
|
16
|
+
**影响**: 并发写入可能导致锁元数据损坏
|
|
17
|
+
**严重性**: 高 - 锁机制本身需要可靠性
|
|
18
|
+
**修复方案**: 替换为 atomicWriteJsonSyncWithRetry
|
|
19
|
+
|
|
20
|
+
### 2. src/features/state-manager/wal.ts:57
|
|
21
|
+
```typescript
|
|
22
|
+
const walPath = path.join(this.walDir, `${id}.wal`);
|
|
23
|
+
fs.writeFileSync(walPath, JSON.stringify(entry, null, 2));
|
|
24
|
+
```
|
|
25
|
+
**问题**: WAL 日志未使用原子写入
|
|
26
|
+
**影响**: WAL 损坏会导致状态恢复失败
|
|
27
|
+
**严重性**: 高 - WAL 是数据恢复的关键
|
|
28
|
+
**修复方案**: 替换为 atomicWriteJsonSyncWithRetry
|
|
29
|
+
|
|
30
|
+
### 3. src/features/state-manager/wal.ts:69
|
|
31
|
+
```typescript
|
|
32
|
+
entry.committed = true;
|
|
33
|
+
const walPath = path.join(this.walDir, `${id}.wal`);
|
|
34
|
+
fs.writeFileSync(walPath, JSON.stringify(entry, null, 2));
|
|
35
|
+
```
|
|
36
|
+
**问题**: WAL commit 标记未使用原子写入
|
|
37
|
+
**影响**: commit 状态不一致可能导致重复执行
|
|
38
|
+
**严重性**: 高 - 影响事务完整性
|
|
39
|
+
**修复方案**: 替换为 atomicWriteJsonSyncWithRetry
|
|
40
|
+
|
|
41
|
+
### 4. src/security/audit-logger.ts:70
|
|
42
|
+
```typescript
|
|
43
|
+
fs.writeFileSync(this.logPath, JSON.stringify(this.events, null, 2));
|
|
44
|
+
```
|
|
45
|
+
**问题**: 审计日志未使用原子写入
|
|
46
|
+
**影响**: 日志损坏可能导致审计追踪丢失
|
|
47
|
+
**严重性**: 中 - 影响安全审计能力
|
|
48
|
+
**修复方案**: 替换为 atomicWriteJsonSyncWithRetry
|
|
49
|
+
|
|
50
|
+
## 修复清单
|
|
51
|
+
|
|
52
|
+
### 高优先级(P0)
|
|
53
|
+
1. src/lib/file-lock.ts:66 - acquireLock()
|
|
54
|
+
2. src/features/state-manager/wal.ts:57 - begin()
|
|
55
|
+
3. src/features/state-manager/wal.ts:69 - commit()
|
|
56
|
+
|
|
57
|
+
### 中优先级(P1)
|
|
58
|
+
4. src/security/audit-logger.ts:70 - save()
|
|
59
|
+
|
|
60
|
+
## 修复模板
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
// 修复前
|
|
64
|
+
fs.writeFileSync(filePath, JSON.stringify(data));
|
|
65
|
+
|
|
66
|
+
// 修复后
|
|
67
|
+
import { atomicWriteJsonSyncWithRetry } from '../../lib/atomic-write.js';
|
|
68
|
+
atomicWriteJsonSyncWithRetry(filePath, data);
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 已排除项
|
|
72
|
+
|
|
73
|
+
以下文件中的 writeFileSync 调用已排除(测试代码):
|
|
74
|
+
- tests/**/*.test.ts
|
|
75
|
+
- src/**/__tests__/**/*.test.ts
|
|
76
|
+
- benchmarks/run.ts
|
|
77
|
+
|
|
78
|
+
测试代码中的直接写入是可接受的,因为:
|
|
79
|
+
1. 测试环境不涉及生产并发
|
|
80
|
+
2. 测试需要快速失败以发现问题
|
|
81
|
+
3. 测试数据可重建
|
|
82
|
+
|
|
83
|
+
## 验证建议
|
|
84
|
+
|
|
85
|
+
修复后应执行:
|
|
86
|
+
1. 单元测试:验证原子写入行为
|
|
87
|
+
2. 并发测试:模拟多进程写入场景
|
|
88
|
+
3. 故障注入:测试写入中断恢复能力
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# SubagentStop 推断扫描报告
|
|
2
|
+
|
|
3
|
+
## 扫描摘要
|
|
4
|
+
- 发现使用点: 1
|
|
5
|
+
- 需要修复: 0
|
|
6
|
+
- 状态: ✅ 全部合规
|
|
7
|
+
|
|
8
|
+
## 发现的使用点
|
|
9
|
+
|
|
10
|
+
### src/hooks/subagent-tracker/index.ts:683
|
|
11
|
+
```typescript
|
|
12
|
+
// SDK does not provide `success` field, so default to 'completed' when undefined (Bug #1 fix)
|
|
13
|
+
const succeeded = input.success !== false;
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
**状态**: ✅ 正确
|
|
17
|
+
**推断规则**: `input.success !== false` 正确处理三种情况:
|
|
18
|
+
- `undefined` (SDK 默认) → `true` (视为成功)
|
|
19
|
+
- `true` → `true` (明确成功)
|
|
20
|
+
- `false` → `false` (明确失败)
|
|
21
|
+
|
|
22
|
+
## 扫描范围
|
|
23
|
+
|
|
24
|
+
| 扫描目标 | 结果 |
|
|
25
|
+
| -------- | ---- |
|
|
26
|
+
| TypeScript 源代码 | 1 个使用点 |
|
|
27
|
+
| 编译后 JS | 1 个使用点(同源) |
|
|
28
|
+
| 文档/注释 | 多处规范说明 |
|
|
29
|
+
|
|
30
|
+
## 修复清单
|
|
31
|
+
|
|
32
|
+
无需修复。代码已遵循规范:
|
|
33
|
+
- ✅ 使用 `input.success !== false` 而非直接读取
|
|
34
|
+
- ✅ 包含设计意图注释
|
|
35
|
+
- ✅ 符合 CLAUDE.md 安全规则
|
|
36
|
+
|
|
37
|
+
## 规范验证
|
|
38
|
+
|
|
39
|
+
| 规范文档 | 验证结果 |
|
|
40
|
+
| -------- | -------- |
|
|
41
|
+
| CLAUDE.md (L130) | ✅ 遵循 |
|
|
42
|
+
| docs/FEATURES.md (L973-981) | ✅ 遵循 |
|
|
43
|
+
| docs/standards/anti-patterns.md (L48-58) | ✅ 遵循 |
|
|
44
|
+
| docs/standards/agent-lifecycle.md (L191-233) | ✅ 遵循 |
|
|
45
|
+
|
|
46
|
+
## 结论
|
|
47
|
+
|
|
48
|
+
代码库中 `input.success` 的使用已完全合规,无需进行修复操作。
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# 开发体验文档
|
|
2
|
+
|
|
3
|
+
欢迎来到 ultrapower 开发体验文档。本目录包含帮助开发者快速诊断问题、遵循最佳实践的完整指南。
|
|
4
|
+
|
|
5
|
+
## 文档导航
|
|
6
|
+
|
|
7
|
+
### 📋 [故障排除指南](./troubleshooting-guide.md)
|
|
8
|
+
快速诊断和解决常见问题。
|
|
9
|
+
|
|
10
|
+
**包含内容**
|
|
11
|
+
- 状态污染问题诊断和修复
|
|
12
|
+
- 孤儿 agent 清理方法
|
|
13
|
+
- 状态验证失败处理
|
|
14
|
+
- `omc repair` 命令详细用法
|
|
15
|
+
- 预防措施和最佳实践
|
|
16
|
+
|
|
17
|
+
**快速开始**
|
|
18
|
+
```bash
|
|
19
|
+
omc repair # 交互式向导
|
|
20
|
+
omc repair --dry-run # 预览修复
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
### 🎯 [最佳实践指南](./best-practices.md)
|
|
26
|
+
提高开发效率和代码质量的核心实践。
|
|
27
|
+
|
|
28
|
+
**包含内容**
|
|
29
|
+
- 工作流最佳实践(任务规划、代码审查、错误处理)
|
|
30
|
+
- 状态管理最佳实践(初始化、并发控制、备份)
|
|
31
|
+
- Agent 生命周期管理
|
|
32
|
+
- 代码质量标准(类型安全、路径安全、输入消毒)
|
|
33
|
+
- 测试策略和覆盖率目标
|
|
34
|
+
- 性能优化建议
|
|
35
|
+
- 调试技巧
|
|
36
|
+
- 提交和发布规范
|
|
37
|
+
|
|
38
|
+
**核心原则**
|
|
39
|
+
- 使用 Team 模式进行复杂任务
|
|
40
|
+
- 为并发工作创建独立 worktree
|
|
41
|
+
- 定期运行 `omc repair --validate-state`
|
|
42
|
+
- 使用 `/ultrapower:cancel` 正常退出
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
### ⚡ [快速参考卡片](./quick-reference.md)
|
|
47
|
+
常用命令和问题速查表。
|
|
48
|
+
|
|
49
|
+
**包含内容**
|
|
50
|
+
- omc repair 命令速查
|
|
51
|
+
- 状态管理命令
|
|
52
|
+
- Agent 管理命令
|
|
53
|
+
- 常见错误和解决方案
|
|
54
|
+
- 工作流速查
|
|
55
|
+
- 日志查看命令
|
|
56
|
+
- 紧急恢复步骤
|
|
57
|
+
|
|
58
|
+
**快速查找**
|
|
59
|
+
```bash
|
|
60
|
+
# 查看活跃状态
|
|
61
|
+
ls -la .omc/state/
|
|
62
|
+
|
|
63
|
+
# 验证状态完整性
|
|
64
|
+
omc repair --validate-state
|
|
65
|
+
|
|
66
|
+
# 清理孤儿 agent
|
|
67
|
+
omc repair --fix-orphan-agents
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 常见场景
|
|
73
|
+
|
|
74
|
+
### 我遇到了 "State already exists" 错误
|
|
75
|
+
|
|
76
|
+
→ 查看 [故障排除指南 - 状态污染](./troubleshooting-guide.md#1-状态污染state-pollution)
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
omc repair --fix-state-pollution
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 我想了解如何正确管理状态
|
|
83
|
+
|
|
84
|
+
→ 查看 [最佳实践指南 - 状态管理](./best-practices.md#状态管理最佳实践)
|
|
85
|
+
|
|
86
|
+
### 我需要快速查找一个命令
|
|
87
|
+
|
|
88
|
+
→ 查看 [快速参考卡片](./quick-reference.md)
|
|
89
|
+
|
|
90
|
+
### 我的 agent 任务超时了
|
|
91
|
+
|
|
92
|
+
→ 查看 [最佳实践指南 - Agent 生命周期](./best-practices.md#agent-生命周期最佳实践)
|
|
93
|
+
|
|
94
|
+
### 我想了解代码质量标准
|
|
95
|
+
|
|
96
|
+
→ 查看 [最佳实践指南 - 代码质量](./best-practices.md#代码质量最佳实践)
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 核心命令
|
|
101
|
+
|
|
102
|
+
### 诊断和修复
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# 交互式诊断向导
|
|
106
|
+
omc repair
|
|
107
|
+
|
|
108
|
+
# 预览修复(推荐先运行)
|
|
109
|
+
omc repair --fix-state-pollution --dry-run
|
|
110
|
+
|
|
111
|
+
# 执行修复
|
|
112
|
+
omc repair --fix-state-pollution
|
|
113
|
+
|
|
114
|
+
# 验证状态完整性
|
|
115
|
+
omc repair --validate-state
|
|
116
|
+
|
|
117
|
+
# 清理孤儿 agent
|
|
118
|
+
omc repair --fix-orphan-agents
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 状态检查
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# 查看活跃状态文件
|
|
125
|
+
ls -la .omc/state/
|
|
126
|
+
|
|
127
|
+
# 查看状态内容
|
|
128
|
+
cat .omc/state/autopilot-state.json | jq .
|
|
129
|
+
|
|
130
|
+
# 检查状态大小
|
|
131
|
+
du -sh .omc/state/
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 正常退出
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# 使用 cancel 命令(推荐)
|
|
138
|
+
/ultrapower:cancel
|
|
139
|
+
|
|
140
|
+
# 不要直接 Ctrl+C(会导致状态污染)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 工作流建议
|
|
146
|
+
|
|
147
|
+
### 启动新任务
|
|
148
|
+
|
|
149
|
+
1. 验证状态完整性
|
|
150
|
+
```bash
|
|
151
|
+
omc repair --validate-state
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
2. 选择合适的执行模式
|
|
155
|
+
- 简单任务:`/autopilot`
|
|
156
|
+
- 复杂任务:`/team`
|
|
157
|
+
- 并行任务:`/ultrawork`
|
|
158
|
+
|
|
159
|
+
3. 监控执行进度
|
|
160
|
+
```bash
|
|
161
|
+
check_job_status <job-id>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### 完成任务
|
|
165
|
+
|
|
166
|
+
1. 使用 cancel 命令正常退出
|
|
167
|
+
```bash
|
|
168
|
+
/ultrapower:cancel
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
2. 验证状态已清理
|
|
172
|
+
```bash
|
|
173
|
+
ls -la .omc/state/
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
3. 定期清理孤儿 agent
|
|
177
|
+
```bash
|
|
178
|
+
omc repair --fix-orphan-agents --dry-run
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 故障排除流程
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
遇到问题
|
|
187
|
+
↓
|
|
188
|
+
查看错误信息
|
|
189
|
+
↓
|
|
190
|
+
在快速参考卡片中查找
|
|
191
|
+
↓
|
|
192
|
+
按照故障排除指南诊断
|
|
193
|
+
↓
|
|
194
|
+
运行 omc repair --dry-run 预览
|
|
195
|
+
↓
|
|
196
|
+
执行修复
|
|
197
|
+
↓
|
|
198
|
+
验证问题已解决
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## 相关文档
|
|
204
|
+
|
|
205
|
+
- [开发标准](../dev-standards/dev-standards.md)
|
|
206
|
+
- [Hook 执行顺序](../standards/hook-execution-order.md)
|
|
207
|
+
- [状态机规范](../standards/state-machine.md)
|
|
208
|
+
- [Agent 生命周期](../standards/agent-lifecycle.md)
|
|
209
|
+
- [运行时保护](../standards/runtime-protection.md)
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 获取帮助
|
|
214
|
+
|
|
215
|
+
- **查看命令帮助**:`omc repair --help`
|
|
216
|
+
- **查看日志**:`tail -f .omc/logs/*.log`
|
|
217
|
+
- **检查状态**:`cat .omc/state/<mode>-state.json | jq .`
|
|
218
|
+
- **提交 issue**:https://github.com/anthropics/ultrapower/issues
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 文档更新日期
|
|
223
|
+
|
|
224
|
+
- 最后更新:2026-03-16
|
|
225
|
+
- 版本:1.0
|
|
226
|
+
- 适用于:ultrapower v7.5.2+
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
# 开发最佳实践指南
|
|
2
|
+
|
|
3
|
+
本指南提供 ultrapower 开发的核心最佳实践,帮助团队提高效率和代码质量。
|
|
4
|
+
|
|
5
|
+
## 工作流最佳实践
|
|
6
|
+
|
|
7
|
+
### 1. 任务规划
|
|
8
|
+
|
|
9
|
+
**使用 Team 模式进行复杂任务**
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# 多 agent 协调执行
|
|
13
|
+
/team "实现用户认证功能"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Team 会自动路由到:
|
|
17
|
+
- `explore` - 代码库探索
|
|
18
|
+
- `planner` - 任务分解
|
|
19
|
+
- `executor` - 代码实现
|
|
20
|
+
- `verifier` - 质量验证
|
|
21
|
+
|
|
22
|
+
**优势**
|
|
23
|
+
- 自动分阶段执行
|
|
24
|
+
- 并行处理独立任务
|
|
25
|
+
- 内置质量检查
|
|
26
|
+
|
|
27
|
+
### 2. 代码审查
|
|
28
|
+
|
|
29
|
+
**使用专业审查 agent**
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# 代码质量审查
|
|
33
|
+
/code-review "src/hooks/handlers/post-tool-use.ts"
|
|
34
|
+
|
|
35
|
+
# 安全审查
|
|
36
|
+
/security-review "src/security/concurrency-control.ts"
|
|
37
|
+
|
|
38
|
+
# 性能审查
|
|
39
|
+
Task(subagent_type="ultrapower:performance-reviewer", prompt="...")
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**审查清单**
|
|
43
|
+
- [ ] 逻辑正确性
|
|
44
|
+
- [ ] 安全漏洞
|
|
45
|
+
- [ ] 性能瓶颈
|
|
46
|
+
- [ ] 代码风格
|
|
47
|
+
- [ ] 测试覆盖
|
|
48
|
+
|
|
49
|
+
### 3. 错误处理
|
|
50
|
+
|
|
51
|
+
**统一的错误处理模式**
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
// ✅ 好的做法
|
|
55
|
+
try {
|
|
56
|
+
const result = await operation();
|
|
57
|
+
return result;
|
|
58
|
+
} catch (error) {
|
|
59
|
+
logger.error('Operation failed', { error, context });
|
|
60
|
+
throw new AppError('OPERATION_FAILED', 'User-friendly message', { cause: error });
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// ❌ 避免
|
|
64
|
+
try {
|
|
65
|
+
await operation();
|
|
66
|
+
} catch (e) {
|
|
67
|
+
console.log('error'); // 不清晰
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**错误分类**
|
|
72
|
+
- `ValidationError` - 输入验证失败
|
|
73
|
+
- `StateError` - 状态管理问题
|
|
74
|
+
- `TimeoutError` - 执行超时
|
|
75
|
+
- `PermissionError` - 权限不足
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 状态管理最佳实践
|
|
80
|
+
|
|
81
|
+
### 1. 状态初始化
|
|
82
|
+
|
|
83
|
+
**检查清单**
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# 启动前验证状态
|
|
87
|
+
omc repair --validate-state --dry-run
|
|
88
|
+
|
|
89
|
+
# 确保没有污染状态
|
|
90
|
+
ls -la .omc/state/
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 2. 并发控制
|
|
94
|
+
|
|
95
|
+
**使用独立 worktree**
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# 为每个并发任务创建独立 worktree
|
|
99
|
+
git worktree add ../work-feature-1 -b feature-1 dev
|
|
100
|
+
git worktree add ../work-feature-2 -b feature-2 dev
|
|
101
|
+
|
|
102
|
+
# 各自独立的 .omc/state/ 目录
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**避免状态冲突**
|
|
106
|
+
- 不要在多个 worktree 中共享 `.omc/state/`
|
|
107
|
+
- 使用 `--working-directory` 指定工作目录
|
|
108
|
+
- 定期清理过期状态
|
|
109
|
+
|
|
110
|
+
### 3. 状态备份
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# 重要操作前备份
|
|
114
|
+
cp -r .omc/state .omc/state.backup.$(date +%s)
|
|
115
|
+
|
|
116
|
+
# 恢复备份
|
|
117
|
+
cp -r .omc/state.backup.1234567890/* .omc/state/
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Agent 生命周期最佳实践
|
|
123
|
+
|
|
124
|
+
### 1. 启动 Agent
|
|
125
|
+
|
|
126
|
+
**使用合适的 agent 类型**
|
|
127
|
+
|
|
128
|
+
| 任务类型 | 推荐 Agent | 模型 |
|
|
129
|
+
|---------|-----------|------|
|
|
130
|
+
| 代码库探索 | `explore` | haiku |
|
|
131
|
+
| 需求分析 | `analyst` | opus |
|
|
132
|
+
| 代码实现 | `executor` | sonnet |
|
|
133
|
+
| 质量验证 | `verifier` | sonnet |
|
|
134
|
+
| 架构设计 | `architect` | opus |
|
|
135
|
+
|
|
136
|
+
### 2. 监控执行
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# 检查后台任务状态
|
|
140
|
+
check_job_status <job-id>
|
|
141
|
+
|
|
142
|
+
# 等待任务完成(最多 1 小时)
|
|
143
|
+
wait_for_job <job-id>
|
|
144
|
+
|
|
145
|
+
# 列出所有活跃任务
|
|
146
|
+
list_jobs --status_filter=active
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 3. 正常关闭
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# ✅ 推荐:使用 cancel 命令
|
|
153
|
+
/ultrapower:cancel
|
|
154
|
+
|
|
155
|
+
# ❌ 避免:直接 Ctrl+C
|
|
156
|
+
# 会导致状态污染和孤儿 agent
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 代码质量最佳实践
|
|
162
|
+
|
|
163
|
+
### 1. 类型安全
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
// ✅ 使用严格类型
|
|
167
|
+
interface AgentConfig {
|
|
168
|
+
mode: ExecutionMode;
|
|
169
|
+
timeout: number;
|
|
170
|
+
retries: number;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// ❌ 避免 any
|
|
174
|
+
const config: any = { mode: 'autopilot' };
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 2. 路径安全
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
// ✅ 验证 mode 参数
|
|
181
|
+
import { assertValidMode } from './lib/validateMode';
|
|
182
|
+
const validMode = assertValidMode(mode);
|
|
183
|
+
const path = `.omc/state/${validMode}-state.json`;
|
|
184
|
+
|
|
185
|
+
// ❌ 直接拼接路径
|
|
186
|
+
const path = `.omc/state/${mode}-state.json`;
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### 3. 输入消毒
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
// ✅ 使用白名单过滤
|
|
193
|
+
const sanitized = filterByWhitelist(input, ALLOWED_FIELDS);
|
|
194
|
+
|
|
195
|
+
// ❌ 直接使用用户输入
|
|
196
|
+
const config = JSON.parse(userInput);
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## 测试最佳实践
|
|
202
|
+
|
|
203
|
+
### 1. 单元测试
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# 运行单次测试(不是 watch 模式)
|
|
207
|
+
npm test -- --run
|
|
208
|
+
|
|
209
|
+
# 运行特定文件
|
|
210
|
+
npm test -- src/hooks/__tests__/bridge-routing.test.ts --run
|
|
211
|
+
|
|
212
|
+
# 生成覆盖率报告
|
|
213
|
+
npm test -- --coverage --run
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### 2. 集成测试
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
# 测试 repair 命令
|
|
220
|
+
npm test -- src/cli/commands/repair.test.ts --run
|
|
221
|
+
|
|
222
|
+
# 测试状态管理
|
|
223
|
+
npm test -- src/state/__tests__/ --run
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### 3. 测试覆盖率目标
|
|
227
|
+
|
|
228
|
+
- 核心库:> 90%
|
|
229
|
+
- 工具函数:> 85%
|
|
230
|
+
- 集成代码:> 70%
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 性能最佳实践
|
|
235
|
+
|
|
236
|
+
### 1. 并行化策略
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
# 使用 ultrawork 进行最大并行度
|
|
240
|
+
/ultrawork "并行执行多个独立任务"
|
|
241
|
+
|
|
242
|
+
# 使用 Team 进行阶段并行
|
|
243
|
+
/team "多阶段任务"
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### 2. 资源监控
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
# 检查状态文件大小
|
|
250
|
+
du -sh .omc/state/
|
|
251
|
+
|
|
252
|
+
# 检查 agent 目录大小
|
|
253
|
+
du -sh .omc/agents/
|
|
254
|
+
|
|
255
|
+
# 定期清理
|
|
256
|
+
omc repair --fix-orphan-agents
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### 3. 超时配置
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// 根据任务类型设置合理超时
|
|
263
|
+
const TIMEOUTS = {
|
|
264
|
+
quick: 30_000, // 30 秒
|
|
265
|
+
standard: 300_000, // 5 分钟
|
|
266
|
+
long: 1_800_000, // 30 分钟
|
|
267
|
+
};
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## 调试最佳实践
|
|
273
|
+
|
|
274
|
+
### 1. 启用详细日志
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
# 设置日志级别
|
|
278
|
+
export OMC_LOG_LEVEL=debug
|
|
279
|
+
|
|
280
|
+
# 查看日志
|
|
281
|
+
tail -f .omc/logs/*.log
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### 2. 状态检查
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
# 查看当前状态
|
|
288
|
+
cat .omc/state/autopilot-state.json | jq .
|
|
289
|
+
|
|
290
|
+
# 检查活跃 mode
|
|
291
|
+
ls -la .omc/state/
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### 3. 逐步诊断
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
# 1. 验证状态完整性
|
|
298
|
+
omc repair --validate-state
|
|
299
|
+
|
|
300
|
+
# 2. 检查孤儿 agent
|
|
301
|
+
omc repair --fix-orphan-agents --dry-run
|
|
302
|
+
|
|
303
|
+
# 3. 清理污染状态
|
|
304
|
+
omc repair --fix-state-pollution --dry-run
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## 提交和发布最佳实践
|
|
310
|
+
|
|
311
|
+
### 1. 提交规范
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
# 格式:type(scope): description
|
|
315
|
+
git commit -m "feat(repair): add state validation command"
|
|
316
|
+
git commit -m "fix(hooks): handle concurrent state writes"
|
|
317
|
+
git commit -m "docs(guide): add troubleshooting section"
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### 2. PR 检查清单
|
|
321
|
+
|
|
322
|
+
- [ ] 代码通过 linter
|
|
323
|
+
- [ ] 所有测试通过
|
|
324
|
+
- [ ] 类型检查无错误
|
|
325
|
+
- [ ] 代码审查通过
|
|
326
|
+
- [ ] 文档已更新
|
|
327
|
+
- [ ] 向后兼容
|
|
328
|
+
|
|
329
|
+
### 3. 发布流程
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
# 1. 更新版本
|
|
333
|
+
npm version patch|minor|major
|
|
334
|
+
|
|
335
|
+
# 2. 构建
|
|
336
|
+
npm run build
|
|
337
|
+
|
|
338
|
+
# 3. 测试
|
|
339
|
+
npm test -- --run
|
|
340
|
+
|
|
341
|
+
# 4. 发布
|
|
342
|
+
npm publish
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## 常见陷阱和解决方案
|
|
348
|
+
|
|
349
|
+
| 陷阱 | 症状 | 解决方案 |
|
|
350
|
+
|------|------|--------|
|
|
351
|
+
| 状态污染 | "State already exists" | `omc repair --fix-state-pollution` |
|
|
352
|
+
| 孤儿 agent | 资源泄漏 | `omc repair --fix-orphan-agents` |
|
|
353
|
+
| 并发冲突 | 随机失败 | 使用独立 worktree |
|
|
354
|
+
| 超时 | 任务中断 | 增加超时时间或分解任务 |
|
|
355
|
+
| 权限错误 | 无法写入状态 | 检查 `.omc/` 目录权限 |
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## 参考资源
|
|
360
|
+
|
|
361
|
+
- [故障排除指南](./troubleshooting-guide.md)
|
|
362
|
+
- [开发标准](../dev-standards/dev-standards.md)
|
|
363
|
+
- [Hook 执行顺序](../standards/hook-execution-order.md)
|
|
364
|
+
- [状态机规范](../standards/state-machine.md)
|