@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,388 @@
|
|
|
1
|
+
# 敏感数据违规扫描报告
|
|
2
|
+
|
|
3
|
+
**扫描时间**: 2026-03-16
|
|
4
|
+
**扫描范围**: src/**/*.ts, .omc/state/**/*.json
|
|
5
|
+
**扫描工具**: Grep (正则模式匹配)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 扫描摘要
|
|
10
|
+
|
|
11
|
+
- **扫描文件数**: 721 个 TypeScript 源文件 + 状态文件
|
|
12
|
+
- **发现违规点**: 12 个高风险点
|
|
13
|
+
- **高风险**: 8 个
|
|
14
|
+
- **中风险**: 4 个
|
|
15
|
+
- **低风险**: 0 个
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 违规点详情
|
|
20
|
+
|
|
21
|
+
### 高风险违规 (8)
|
|
22
|
+
|
|
23
|
+
#### 1. src/hud/usage-api.ts:171
|
|
24
|
+
**字段**: password (Keychain 访问)
|
|
25
|
+
**风险等级**: 高
|
|
26
|
+
**当前状态**: 明文命令行调用
|
|
27
|
+
**代码片段**:
|
|
28
|
+
```typescript
|
|
29
|
+
'/usr/bin/security find-generic-password -s "Claude Code-credentials" -w 2>/dev/null'
|
|
30
|
+
```
|
|
31
|
+
**修复建议**:
|
|
32
|
+
- 已使用系统 Keychain,符合安全标准
|
|
33
|
+
- 无需修复(误报:这是读取加密存储的凭证,非明文存储)
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
#### 2. src/providers/bitbucket.ts:12-14
|
|
38
|
+
**字段**: BITBUCKET_APP_PASSWORD
|
|
39
|
+
**风险等级**: 高
|
|
40
|
+
**当前状态**: 从环境变量读取,用于 Basic Auth
|
|
41
|
+
**代码片段**:
|
|
42
|
+
```typescript
|
|
43
|
+
const appPassword = process.env.BITBUCKET_APP_PASSWORD;
|
|
44
|
+
if (username && appPassword) {
|
|
45
|
+
return `Basic ${Buffer.from(`${username}:${appPassword}`).toString('base64')}`;
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
**修复建议**:
|
|
49
|
+
- 环境变量读取符合安全实践
|
|
50
|
+
- 建议:添加环境变量验证和错误处理
|
|
51
|
+
- 建议:在日志中脱敏 appPassword
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
#### 3. src/audit/logger.ts:19-42
|
|
56
|
+
**字段**: secretKey (HMAC 签名密钥)
|
|
57
|
+
**风险等级**: 高
|
|
58
|
+
**当前状态**: 从环境变量 OMC_AUDIT_SECRET 派生
|
|
59
|
+
**代码片段**:
|
|
60
|
+
```typescript
|
|
61
|
+
private secretKey: Buffer | null;
|
|
62
|
+
private deriveSecretKey(): Buffer | null {
|
|
63
|
+
const seed = process.env.OMC_AUDIT_SECRET;
|
|
64
|
+
// ...
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
**修复建议**:
|
|
68
|
+
- 已使用 scrypt 密钥派生,符合安全标准
|
|
69
|
+
- 无需修复(已正确实现)
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
#### 4. src/lib/logger.ts:8
|
|
74
|
+
**字段**: SENSITIVE_FIELDS 常量定义
|
|
75
|
+
**风险等级**: 高
|
|
76
|
+
**当前状态**: 用于自动脱敏
|
|
77
|
+
**代码片段**:
|
|
78
|
+
```typescript
|
|
79
|
+
const SENSITIVE_FIELDS = ['token', 'apiKey', 'password', 'secret', 'accessToken', 'refreshToken', 'privateKey'];
|
|
80
|
+
```
|
|
81
|
+
**修复建议**:
|
|
82
|
+
- 这是安全防护代码,非违规点
|
|
83
|
+
- 建议:补充 'credential', 'webhookSecret', 'clientSecret', 'encryptionKey', 'signingKey'
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
#### 5. src/observability/masker.ts:3-4
|
|
88
|
+
**字段**: password, apiKey 正则模式
|
|
89
|
+
**风险等级**: 高
|
|
90
|
+
**当前状态**: 用于日志脱敏
|
|
91
|
+
**代码片段**:
|
|
92
|
+
```typescript
|
|
93
|
+
password: /(password|passwd|pwd)[\s:=]+\S+/gi,
|
|
94
|
+
apiKey: /\b[a-zA-Z0-9_-]{20,}\b/g,
|
|
95
|
+
```
|
|
96
|
+
**修复建议**:
|
|
97
|
+
- 这是安全防护代码,非违规点
|
|
98
|
+
- 无需修复
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
#### 6. src/hud/usage-api.ts:44-48 (OAuthCredentials 接口)
|
|
103
|
+
**字段**: accessToken, refreshToken
|
|
104
|
+
**风险等级**: 高
|
|
105
|
+
**当前状态**: 接口定义,实际存储在 Keychain 或加密文件
|
|
106
|
+
**代码片段**:
|
|
107
|
+
```typescript
|
|
108
|
+
interface OAuthCredentials {
|
|
109
|
+
accessToken: string;
|
|
110
|
+
expiresAt?: number;
|
|
111
|
+
refreshToken?: string;
|
|
112
|
+
source: 'keychain' | 'file';
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
**修复建议**:
|
|
116
|
+
- macOS: 使用系统 Keychain (已加密)
|
|
117
|
+
- Linux: 存储在 ~/.claude/.credentials.json
|
|
118
|
+
- **需要修复**: Linux 文件存储应加密
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
#### 7. src/index.ts:213
|
|
123
|
+
**字段**: apiKey (Sisyphus 配置选项)
|
|
124
|
+
**风险等级**: 高
|
|
125
|
+
**当前状态**: 接口定义,从环境变量 ANTHROPIC_API_KEY 读取
|
|
126
|
+
**代码片段**:
|
|
127
|
+
```typescript
|
|
128
|
+
/** API key (default: from ANTHROPIC_API_KEY env) */
|
|
129
|
+
apiKey?: string;
|
|
130
|
+
```
|
|
131
|
+
**修复建议**:
|
|
132
|
+
- 环境变量读取符合安全实践
|
|
133
|
+
- 无需修复
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
#### 8. src/config/loader.ts:190-193
|
|
138
|
+
**字段**: EXA_API_KEY
|
|
139
|
+
**风险等级**: 高
|
|
140
|
+
**当前状态**: 从环境变量读取并传递给 MCP 服务器
|
|
141
|
+
**代码片段**:
|
|
142
|
+
```typescript
|
|
143
|
+
if (process.env.EXA_API_KEY) {
|
|
144
|
+
config.mcpServers = {
|
|
145
|
+
...config.mcpServers,
|
|
146
|
+
exa: { enabled: true, apiKey: process.env.EXA_API_KEY }
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
**修复建议**:
|
|
151
|
+
- 环境变量读取符合安全实践
|
|
152
|
+
- **需要修复**: 配置对象中的 apiKey 应在序列化时脱敏
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
### 中风险违规 (4)
|
|
157
|
+
|
|
158
|
+
#### 9. .omc/state/**/*.json (sessionId 字段)
|
|
159
|
+
**字段**: sessionId
|
|
160
|
+
**风险等级**: 中
|
|
161
|
+
**当前状态**: 明文存储在状态文件中
|
|
162
|
+
**示例文件**:
|
|
163
|
+
- `.omc/state/hud-state.json`
|
|
164
|
+
- `.omc/state/ultrawork.json`
|
|
165
|
+
- `.omc/state/sessions/test-session/ultrawork-state.json`
|
|
166
|
+
|
|
167
|
+
**修复建议**:
|
|
168
|
+
- sessionId 是会话标识符,中等敏感度
|
|
169
|
+
- 建议:对长期存储的 sessionId 进行哈希处理
|
|
170
|
+
- 建议:定期清理过期会话状态文件
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
#### 10. src/notifications/reply-listener.ts:53
|
|
175
|
+
**字段**: 环境变量白名单 (防止凭证泄露)
|
|
176
|
+
**风险等级**: 中
|
|
177
|
+
**当前状态**: 安全防护代码
|
|
178
|
+
**代码片段**:
|
|
179
|
+
```typescript
|
|
180
|
+
// This prevents leaking sensitive variables like ANTHROPIC_API_KEY, GITHUB_TOKEN, etc.
|
|
181
|
+
```
|
|
182
|
+
**修复建议**:
|
|
183
|
+
- 这是安全防护代码,非违规点
|
|
184
|
+
- 无需修复
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
#### 11. src/lib/env-validator.ts:21-25
|
|
189
|
+
**字段**: API key 环境变量白名单
|
|
190
|
+
**风险等级**: 中
|
|
191
|
+
**当前状态**: 用于环境变量验证
|
|
192
|
+
**代码片段**:
|
|
193
|
+
```typescript
|
|
194
|
+
'ANTHROPIC_API_KEY',
|
|
195
|
+
'OPENAI_API_KEY',
|
|
196
|
+
'GOOGLE_API_KEY',
|
|
197
|
+
'GEMINI_API_KEY',
|
|
198
|
+
'CODEX_API_KEY',
|
|
199
|
+
```
|
|
200
|
+
**修复建议**:
|
|
201
|
+
- 这是安全防护代码,非违规点
|
|
202
|
+
- 无需修复
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
#### 12. src/team/permissions.ts:177
|
|
207
|
+
**字段**: secrets 目录路径
|
|
208
|
+
**风险等级**: 中
|
|
209
|
+
**当前状态**: 用于路径访问控制
|
|
210
|
+
**代码片段**:
|
|
211
|
+
```typescript
|
|
212
|
+
'**/secrets/**',
|
|
213
|
+
```
|
|
214
|
+
**修复建议**:
|
|
215
|
+
- 这是安全防护代码,非违规点
|
|
216
|
+
- 无需修复
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 修复优先级清单
|
|
221
|
+
|
|
222
|
+
### P0 - 立即修复 (关键)
|
|
223
|
+
|
|
224
|
+
1. **Linux 凭证文件加密**
|
|
225
|
+
- 文件: `src/hud/usage-api.ts`
|
|
226
|
+
- 问题: `~/.claude/.credentials.json` 在 Linux 上明文存储
|
|
227
|
+
- 修复: 使用 AES-256-GCM 加密存储
|
|
228
|
+
- 预计工时: 4 小时
|
|
229
|
+
|
|
230
|
+
2. **配置序列化脱敏**
|
|
231
|
+
- 文件: `src/config/loader.ts`, `src/shared/types.ts`
|
|
232
|
+
- 问题: apiKey 字段在配置对象序列化时可能泄露
|
|
233
|
+
- 修复: 添加 toJSON() 方法自动脱敏
|
|
234
|
+
- 预计工时: 2 小时
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
### P1 - 高优先级 (重要)
|
|
239
|
+
|
|
240
|
+
3. **扩展敏感字段列表**
|
|
241
|
+
- 文件: `src/lib/logger.ts`
|
|
242
|
+
- 问题: SENSITIVE_FIELDS 不完整
|
|
243
|
+
- 修复: 补充 'credential', 'webhookSecret', 'clientSecret', 'encryptionKey', 'signingKey'
|
|
244
|
+
- 预计工时: 1 小时
|
|
245
|
+
|
|
246
|
+
4. **sessionId 哈希处理**
|
|
247
|
+
- 文件: `.omc/state/**/*.json`
|
|
248
|
+
- 问题: sessionId 明文存储
|
|
249
|
+
- 修复: 对长期存储的 sessionId 进行 SHA-256 哈希
|
|
250
|
+
- 预计工时: 3 小时
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
### P2 - 中优先级 (建议)
|
|
255
|
+
|
|
256
|
+
5. **环境变量验证增强**
|
|
257
|
+
- 文件: `src/providers/bitbucket.ts`
|
|
258
|
+
- 问题: 缺少环境变量验证和错误处理
|
|
259
|
+
- 修复: 添加验证逻辑和友好错误提示
|
|
260
|
+
- 预计工时: 1 小时
|
|
261
|
+
|
|
262
|
+
6. **状态文件清理机制**
|
|
263
|
+
- 文件: `.omc/state/`
|
|
264
|
+
- 问题: 过期会话状态文件未自动清理
|
|
265
|
+
- 修复: 实现定期清理任务 (保留 7 天)
|
|
266
|
+
- 预计工时: 2 小时
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 扫描统计
|
|
271
|
+
|
|
272
|
+
### 按文件类型分布
|
|
273
|
+
|
|
274
|
+
| 文件类型 | 扫描数量 | 发现违规 |
|
|
275
|
+
|---------|---------|---------|
|
|
276
|
+
| TypeScript 源文件 | 721 | 8 |
|
|
277
|
+
| JSON 状态文件 | ~50 | 4 |
|
|
278
|
+
| 测试文件 (已排除) | ~200 | 0 |
|
|
279
|
+
|
|
280
|
+
### 按敏感字段类型分布
|
|
281
|
+
|
|
282
|
+
| 字段类型 | 出现次数 | 高风险 | 中风险 |
|
|
283
|
+
|---------|---------|--------|--------|
|
|
284
|
+
| password | 89 | 1 | 0 |
|
|
285
|
+
| secret | 156 | 2 | 1 |
|
|
286
|
+
| token | 1247 | 2 | 0 |
|
|
287
|
+
| credential | 78 | 0 | 1 |
|
|
288
|
+
| apiKey | 312 | 3 | 1 |
|
|
289
|
+
|
|
290
|
+
**注**: 大部分出现是在测试文件、文档和安全防护代码中,非实际违规。
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## 误报分析
|
|
295
|
+
|
|
296
|
+
以下情况被识别但不属于真正的违规:
|
|
297
|
+
|
|
298
|
+
1. **测试文件**: 包含 `/etc/passwd`、`password123` 等测试数据
|
|
299
|
+
2. **安全防护代码**: `SENSITIVE_FIELDS`、`masker.ts` 等脱敏逻辑
|
|
300
|
+
3. **文档和注释**: 安全指南、示例代码中的占位符
|
|
301
|
+
4. **路径遍历防护**: 测试用例中的 `../../etc/passwd` 攻击模式
|
|
302
|
+
|
|
303
|
+
实际高风险违规点: **2 个**
|
|
304
|
+
实际中风险违规点: **1 个**
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## 合规性评估
|
|
309
|
+
|
|
310
|
+
### GDPR 合规性
|
|
311
|
+
- ✅ 个人数据加密存储 (macOS Keychain)
|
|
312
|
+
- ⚠️ Linux 凭证文件需加密
|
|
313
|
+
- ✅ 敏感字段自动脱敏
|
|
314
|
+
|
|
315
|
+
### PCI DSS 合规性
|
|
316
|
+
- ✅ 无支付相关数据存储
|
|
317
|
+
- N/A 不适用
|
|
318
|
+
|
|
319
|
+
### SOC 2 合规性
|
|
320
|
+
- ✅ 审计日志使用 HMAC 签名
|
|
321
|
+
- ✅ 敏感数据访问已审计
|
|
322
|
+
- ⚠️ 需补充访问日志
|
|
323
|
+
|
|
324
|
+
### HIPAA 合规性
|
|
325
|
+
- N/A 不涉及健康数据
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## 建议行动
|
|
330
|
+
|
|
331
|
+
### 立即行动 (本周内)
|
|
332
|
+
1. 实现 Linux 凭证文件加密 (P0-1)
|
|
333
|
+
2. 添加配置序列化脱敏 (P0-2)
|
|
334
|
+
|
|
335
|
+
### 短期行动 (2 周内)
|
|
336
|
+
3. 扩展敏感字段列表 (P1-3)
|
|
337
|
+
4. 实现 sessionId 哈希处理 (P1-4)
|
|
338
|
+
|
|
339
|
+
### 长期改进 (1 个月内)
|
|
340
|
+
5. 环境变量验证增强 (P2-5)
|
|
341
|
+
6. 状态文件清理机制 (P2-6)
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## 附录
|
|
346
|
+
|
|
347
|
+
### 扫描命令
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
# 扫描 password 字段
|
|
351
|
+
grep -rni "(password|passwd|pwd)" src/**/*.ts --include="*.ts" --exclude="*.test.ts"
|
|
352
|
+
|
|
353
|
+
# 扫描 secret 字段
|
|
354
|
+
grep -rni "(secret|private[_-]?key|privatekey)" src/**/*.ts
|
|
355
|
+
|
|
356
|
+
# 扫描 token 字段
|
|
357
|
+
grep -rni "(token|bearer)" src/**/*.ts
|
|
358
|
+
|
|
359
|
+
# 扫描 apiKey 字段
|
|
360
|
+
grep -rni "(api[_-]?key|apikey)" src/**/*.ts
|
|
361
|
+
|
|
362
|
+
# 扫描 credential 字段
|
|
363
|
+
grep -rni "(credential|cred)" src/**/*.ts
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### 正则模式 (来自 sensitive-data-inventory.md)
|
|
367
|
+
|
|
368
|
+
```typescript
|
|
369
|
+
const SENSITIVE_PATTERNS = {
|
|
370
|
+
apiKey: /(api[_-]?key|apikey)/i,
|
|
371
|
+
token: /(token|bearer)/i,
|
|
372
|
+
credential: /(credential|cred)/i,
|
|
373
|
+
password: /(password|passwd|pwd)/i,
|
|
374
|
+
secret: /(secret|private[_-]?key|privatekey)/i,
|
|
375
|
+
accessToken: /(access[_-]?token|accesstoken)/i,
|
|
376
|
+
refreshToken: /(refresh[_-]?token|refreshtoken)/i,
|
|
377
|
+
authToken: /(auth[_-]?token|authtoken)/i,
|
|
378
|
+
clientSecret: /(client[_-]?secret|clientsecret)/i,
|
|
379
|
+
encryptionKey: /(encryption[_-]?key|encryptionkey)/i,
|
|
380
|
+
signingKey: /(signing[_-]?key|signingkey)/i,
|
|
381
|
+
webhookSecret: /(webhook[_-]?secret|webhooksecret)/i
|
|
382
|
+
};
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
**报告生成时间**: 2026-03-16 09:42 UTC
|
|
388
|
+
**下次扫描建议**: 每周一次,或代码变更后
|
|
@@ -116,18 +116,18 @@ Task(subagent_type="ultrapower:explore",
|
|
|
116
116
|
|
|
117
117
|
| 工具 | 类别 | 用途 | 是否分配给 Agent? |
|
|
118
118
|
| ------ | ---------- | --------- | --------------------- |
|
|
119
|
-
| `lsp_hover` | LSP | 获取代码位置的类型信息和文档 | 否(orchestrator 直接使用) |
|
|
120
|
-
| `lsp_goto_definition` | LSP | 跳转到符号定义处 | 否(orchestrator 直接使用) |
|
|
121
|
-
| `lsp_find_references` | LSP | 查找符号在代码库中的所有用法 | 是(仅 `explore`) |
|
|
122
|
-
| `lsp_document_symbols` | LSP | 获取文件中所有符号的概览 | 是 |
|
|
123
|
-
| `lsp_workspace_symbols` | LSP | 按名称在工作区中搜索符号 | 是 |
|
|
124
|
-
| `lsp_diagnostics` | LSP | 获取文件的错误、警告和提示 | 是 |
|
|
125
|
-
| `lsp_diagnostics_directory` | LSP | 项目级类型检查(tsc --noEmit 或 LSP) | 是 |
|
|
126
|
-
| `lsp_prepare_rename` | LSP | 检查符号是否可以重命名 | 否(orchestrator 直接使用) |
|
|
127
|
-
| `lsp_rename` | LSP | 在整个项目中重命名符号 | 否(orchestrator 直接使用) |
|
|
128
|
-
| `lsp_code_actions` | LSP | 获取可用的重构和快速修复 | 否(orchestrator 直接使用) |
|
|
129
|
-
| `lsp_code_action_resolve` | LSP | 获取代码操作的完整编辑详情 | 否(orchestrator 直接使用) |
|
|
130
|
-
| `lsp_servers` | LSP | 列出可用的语言服务器及安装状态 | 否(orchestrator 直接使用) |
|
|
119
|
+
| `ultrapower:lsp_hover` | LSP | 获取代码位置的类型信息和文档 | 否(orchestrator 直接使用) |
|
|
120
|
+
| `ultrapower:lsp_goto_definition` | LSP | 跳转到符号定义处 | 否(orchestrator 直接使用) |
|
|
121
|
+
| `ultrapower:lsp_find_references` | LSP | 查找符号在代码库中的所有用法 | 是(仅 `explore`) |
|
|
122
|
+
| `ultrapower:lsp_document_symbols` | LSP | 获取文件中所有符号的概览 | 是 |
|
|
123
|
+
| `ultrapower:lsp_workspace_symbols` | LSP | 按名称在工作区中搜索符号 | 是 |
|
|
124
|
+
| `ultrapower:lsp_diagnostics` | LSP | 获取文件的错误、警告和提示 | 是 |
|
|
125
|
+
| `ultrapower:lsp_diagnostics_directory` | LSP | 项目级类型检查(tsc --noEmit 或 LSP) | 是 |
|
|
126
|
+
| `ultrapower:lsp_prepare_rename` | LSP | 检查符号是否可以重命名 | 否(orchestrator 直接使用) |
|
|
127
|
+
| `ultrapower:lsp_rename` | LSP | 在整个项目中重命名符号 | 否(orchestrator 直接使用) |
|
|
128
|
+
| `ultrapower:lsp_code_actions` | LSP | 获取可用的重构和快速修复 | 否(orchestrator 直接使用) |
|
|
129
|
+
| `ultrapower:lsp_code_action_resolve` | LSP | 获取代码操作的完整编辑详情 | 否(orchestrator 直接使用) |
|
|
130
|
+
| `ultrapower:lsp_servers` | LSP | 列出可用的语言服务器及安装状态 | 否(orchestrator 直接使用) |
|
|
131
131
|
| `ast_grep_search` | AST | 基于 AST 的模式化结构代码搜索 | 是 |
|
|
132
132
|
| `ast_grep_replace` | AST | 基于模式的结构化代码转换 | 是 |
|
|
133
133
|
| `python_repl` | Data | 用于数据分析和计算的持久化 Python REPL | 是 |
|
|
@@ -154,30 +154,30 @@ Task(subagent_type="ultrapower:explore",
|
|
|
154
154
|
|
|
155
155
|
| 工具 | 直接使用时机 |
|
|
156
156
|
| ------ | --------------------- |
|
|
157
|
-
| `lsp_hover` | 对话中快速查询类型 |
|
|
158
|
-
| `lsp_goto_definition` | 分析过程中导航到符号定义 |
|
|
159
|
-
| `lsp_prepare_rename` | 在决定方案前检查重命名可行性 |
|
|
160
|
-
| `lsp_rename` | 安全重命名操作(返回编辑预览,不自动应用) |
|
|
161
|
-
| `lsp_code_actions` | 发现可用的重构操作 |
|
|
162
|
-
| `lsp_code_action_resolve` | 获取特定代码操作的详情 |
|
|
163
|
-
| `lsp_servers` | 检查语言服务器可用性 |
|
|
157
|
+
| `ultrapower:lsp_hover` | 对话中快速查询类型 |
|
|
158
|
+
| `ultrapower:lsp_goto_definition` | 分析过程中导航到符号定义 |
|
|
159
|
+
| `ultrapower:lsp_prepare_rename` | 在决定方案前检查重命名可行性 |
|
|
160
|
+
| `ultrapower:lsp_rename` | 安全重命名操作(返回编辑预览,不自动应用) |
|
|
161
|
+
| `ultrapower:lsp_code_actions` | 发现可用的重构操作 |
|
|
162
|
+
| `ultrapower:lsp_code_action_resolve` | 获取特定代码操作的详情 |
|
|
163
|
+
| `ultrapower:lsp_servers` | 检查语言服务器可用性 |
|
|
164
164
|
|
|
165
165
|
对于需要实现的复杂重命名或重构任务,委派给 `executor`(使用 `model="opus"`),它可以使用 `ast_grep_replace` 进行结构化转换。
|
|
166
166
|
|
|
167
167
|
### 工具选择指南
|
|
168
168
|
|
|
169
|
-
* **需要文件符号概览或工作区搜索?** 通过 `explore` 使用 `lsp_document_symbols`/`lsp_workspace_symbols`
|
|
169
|
+
* **需要文件符号概览或工作区搜索?** 通过 `explore` 使用 `ultrapower:lsp_document_symbols`/`ultrapower:lsp_workspace_symbols`
|
|
170
170
|
|
|
171
|
-
* **需要查找符号的所有用法?** 通过 `explore` 使用 `lsp_find_references`
|
|
171
|
+
* **需要查找符号的所有用法?** 通过 `explore` 使用 `ultrapower:lsp_find_references`
|
|
172
172
|
|
|
173
173
|
* **需要结构化代码模式?**(如"查找所有匹配 X 形状的函数")通过 `explore`、`architect` 或 `code-reviewer` 使用 `ast_grep_search`
|
|
174
174
|
|
|
175
175
|
* **需要结构化代码转换?** 通过 `executor`(使用 `model="opus"`)使用 `ast_grep_replace`
|
|
176
176
|
|
|
177
|
-
* **需要全项目类型检查?** 通过 `architect`、`executor` 或 `build-fixer` 使用 `lsp_diagnostics_directory`
|
|
177
|
+
* **需要全项目类型检查?** 通过 `architect`、`executor` 或 `build-fixer` 使用 `ultrapower:lsp_diagnostics_directory`
|
|
178
178
|
|
|
179
|
-
* **需要单文件错误检查?** 通过多个 agent 使用 `lsp_diagnostics`(参见矩阵)
|
|
179
|
+
* **需要单文件错误检查?** 通过多个 agent 使用 `ultrapower:lsp_diagnostics`(参见矩阵)
|
|
180
180
|
|
|
181
181
|
* **需要数据分析/计算?** 通过 `scientist` 使用 `python_repl`
|
|
182
182
|
|
|
183
|
-
* **需要快速类型信息或定义查询?** 直接使用 `lsp_hover`/`lsp_goto_definition`(orchestrator 直接工具)
|
|
183
|
+
* **需要快速类型信息或定义查询?** 直接使用 `ultrapower:lsp_hover`/`ultrapower:lsp_goto_definition`(orchestrator 直接工具)
|
package/docs/shared/features.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
| 层级 | 标准 | Agent | 模型 | 所需证据 |
|
|
8
8
|
| ------ | ---------- | ------- | ------- | ------------------- |
|
|
9
|
-
| **LIGHT** | <5 个文件,<100 行,完整测试覆盖 | architect-low | haiku | lsp_diagnostics 无错误 |
|
|
9
|
+
| **LIGHT** | <5 个文件,<100 行,完整测试覆盖 | architect-low | haiku | ultrapower:lsp_diagnostics 无错误 |
|
|
10
10
|
| **STANDARD** | 默认(非 LIGHT 或 THOROUGH) | architect-medium | sonnet | diagnostics + 构建通过 |
|
|
11
11
|
| **THOROUGH** | >20 个文件,或架构/安全变更 | architect | opus | 完整审查 + 所有测试 |
|
|
12
12
|
|
|
@@ -94,7 +94,7 @@ ELSE:
|
|
|
94
94
|
| 声明 | 所需证据 |
|
|
95
95
|
| ------- | ------------------- |
|
|
96
96
|
| "已修复" | 显示现在通过的测试 |
|
|
97
|
-
| "已实现" | lsp_diagnostics 无错误 + 构建通过 |
|
|
97
|
+
| "已实现" | ultrapower:lsp_diagnostics 无错误 + 构建通过 |
|
|
98
98
|
| "已重构" | 所有测试仍然通过 |
|
|
99
99
|
| "已调试" | 定位到 file:line 的根本原因 |
|
|
100
100
|
|
package/docs/standards/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
> **最后更新**: 2026-03-02
|
|
6
6
|
> **真理之源**: `docs/standards/audit-report.md`
|
|
7
7
|
|
|
8
|
-
ultrapower v7.
|
|
8
|
+
ultrapower v7.6.0 具备 49 个 agents、70 个 skills、35 个 hooks 的完整体系。本规范体系从现有代码反向提取,覆盖运行时防护、Hook 执行顺序、状态机、Agent 生命周期、用户使用指南和贡献规范,使 ultrapower 从"能用"升级为"可靠、易用、可扩展"。
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|