specops 0.2.5 → 0.3.2
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/.opencode/agent/specops-codebase-mapper.md +764 -0
- package/.opencode/agent/specops-debugger.md +1246 -0
- package/.opencode/agent/specops-executor.md +475 -0
- package/.opencode/agent/specops-integration-checker.md +443 -0
- package/.opencode/agent/specops-phase-researcher.md +547 -0
- package/.opencode/agent/specops-plan-checker.md +690 -0
- package/.opencode/agent/specops-planner.md +581 -0
- package/.opencode/agent/specops-project-researcher.md +354 -0
- package/.opencode/agent/specops-research-synthesizer.md +242 -0
- package/.opencode/agent/specops-roadmapper.md +642 -0
- package/.opencode/agent/specops-work-verifier.md +573 -0
- package/.opencode/references/checkpoints.md +776 -0
- package/.opencode/references/continuation-format.md +249 -0
- package/.opencode/references/decimal-phase-calculation.md +65 -0
- package/.opencode/references/git-integration.md +248 -0
- package/.opencode/references/git-planning-commit.md +38 -0
- package/.opencode/references/model-profile-resolution.md +34 -0
- package/.opencode/references/model-profiles.md +92 -0
- package/.opencode/references/phase-argument-parsing.md +61 -0
- package/.opencode/references/planning-config.md +196 -0
- package/.opencode/references/questioning.md +145 -0
- package/.opencode/references/tdd.md +263 -0
- package/.opencode/references/ui-brand.md +160 -0
- package/.opencode/references/verification-patterns.md +612 -0
- package/.opencode/templates/DEBUG.md +164 -0
- package/.opencode/templates/UAT.md +180 -0
- package/.opencode/templates/VALIDATION.md +76 -0
- package/.opencode/templates/codebase/architecture.md +255 -0
- package/.opencode/templates/codebase/concerns.md +310 -0
- package/.opencode/templates/codebase/conventions.md +307 -0
- package/.opencode/templates/codebase/integrations.md +280 -0
- package/.opencode/templates/codebase/stack.md +186 -0
- package/.opencode/templates/codebase/structure.md +285 -0
- package/.opencode/templates/codebase/testing.md +480 -0
- package/.opencode/templates/context.md +221 -0
- package/.opencode/templates/continue-here.md +78 -0
- package/.opencode/templates/debug-subagent-prompt.md +91 -0
- package/.opencode/templates/discovery.md +147 -0
- package/.opencode/templates/milestone-archive.md +123 -0
- package/.opencode/templates/milestone.md +115 -0
- package/.opencode/templates/phase-prompt.md +333 -0
- package/.opencode/templates/planner-subagent-prompt.md +117 -0
- package/.opencode/templates/project.md +184 -0
- package/.opencode/templates/requirements.md +130 -0
- package/.opencode/templates/research-project/ARCHITECTURE.md +204 -0
- package/.opencode/templates/research-project/FEATURES.md +147 -0
- package/.opencode/templates/research-project/PITFALLS.md +200 -0
- package/.opencode/templates/research-project/STACK.md +120 -0
- package/.opencode/templates/research-project/SUMMARY.md +170 -0
- package/.opencode/templates/research.md +278 -0
- package/.opencode/templates/retrospective.md +54 -0
- package/.opencode/templates/roadmap.md +202 -0
- package/.opencode/templates/state.md +176 -0
- package/.opencode/templates/summary-complex.md +59 -0
- package/.opencode/templates/summary-minimal.md +41 -0
- package/.opencode/templates/summary-standard.md +48 -0
- package/.opencode/templates/summary.md +248 -0
- package/.opencode/templates/user-setup.md +311 -0
- package/.opencode/templates/verification-report.md +322 -0
- package/.opencode/workflows/add-phase.md +111 -0
- package/.opencode/workflows/add-tests.md +350 -0
- package/.opencode/workflows/add-todo.md +157 -0
- package/.opencode/workflows/audit-milestone.md +297 -0
- package/.opencode/workflows/check-todos.md +176 -0
- package/.opencode/workflows/cleanup.md +152 -0
- package/.opencode/workflows/complete-milestone.md +763 -0
- package/.opencode/workflows/diagnose-issues.md +219 -0
- package/.opencode/workflows/discovery-phase.md +288 -0
- package/.opencode/workflows/discuss-phase.md +542 -0
- package/.opencode/workflows/execute-phase.md +449 -0
- package/.opencode/workflows/execute-plan.md +447 -0
- package/.opencode/workflows/health.md +156 -0
- package/.opencode/workflows/help.md +489 -0
- package/.opencode/workflows/insert-phase.md +129 -0
- package/.opencode/workflows/list-phase-assumptions.md +178 -0
- package/.opencode/workflows/map-codebase.md +315 -0
- package/.opencode/workflows/new-milestone.md +382 -0
- package/.opencode/workflows/new-project.md +1116 -0
- package/.opencode/workflows/pause-work.md +122 -0
- package/.opencode/workflows/plan-milestone-gaps.md +274 -0
- package/.opencode/workflows/plan-phase.md +569 -0
- package/.opencode/workflows/progress.md +381 -0
- package/.opencode/workflows/quick.md +453 -0
- package/.opencode/workflows/remove-phase.md +154 -0
- package/.opencode/workflows/research-phase.md +73 -0
- package/.opencode/workflows/resume-project.md +304 -0
- package/.opencode/workflows/set-profile.md +80 -0
- package/.opencode/workflows/settings.md +213 -0
- package/.opencode/workflows/transition.md +544 -0
- package/.opencode/workflows/update.md +219 -0
- package/.opencode/workflows/verify-phase.md +242 -0
- package/.opencode/workflows/verify-work.md +569 -0
- package/commands/specops/add-phase.md +43 -0
- package/commands/specops/add-tests.md +41 -0
- package/commands/specops/add-todo.md +47 -0
- package/commands/specops/audit-milestone.md +36 -0
- package/commands/specops/check-todos.md +45 -0
- package/commands/specops/cleanup.md +18 -0
- package/commands/specops/complete-milestone.md +136 -0
- package/commands/specops/debug.md +167 -0
- package/commands/specops/discuss-phase.md +83 -0
- package/commands/specops/execute-phase.md +41 -0
- package/commands/specops/health.md +22 -0
- package/commands/specops/help.md +22 -0
- package/commands/specops/insert-phase.md +32 -0
- package/commands/specops/join-discord.md +18 -0
- package/commands/specops/list-phase-assumptions.md +46 -0
- package/commands/specops/map-codebase.md +71 -0
- package/commands/specops/new-milestone.md +44 -0
- package/commands/specops/new-project.md +42 -0
- package/commands/specops/pause-work.md +38 -0
- package/commands/specops/plan-milestone-gaps.md +34 -0
- package/commands/specops/plan-phase.md +45 -0
- package/commands/specops/progress.md +24 -0
- package/commands/specops/quick.md +41 -0
- package/commands/specops/reapply-patches.md +111 -0
- package/commands/specops/remove-phase.md +31 -0
- package/commands/specops/research-phase.md +189 -0
- package/commands/specops/resume-work.md +40 -0
- package/commands/specops/set-profile.md +34 -0
- package/commands/specops/settings.md +36 -0
- package/commands/specops/update.md +37 -0
- package/commands/specops/verify-work.md +38 -0
- package/dist/__integration__/fixtures/generator.d.ts +4 -0
- package/dist/__integration__/fixtures/generator.js +1 -0
- package/dist/__integration__/mocks/server.d.ts +7 -0
- package/dist/__integration__/mocks/server.js +1 -0
- package/dist/__integration__/setup.d.ts +6 -0
- package/dist/__integration__/setup.js +1 -0
- package/dist/acceptance/lazyDetector.js +1 -1
- package/dist/acceptance/reporter.js +1 -1
- package/dist/acceptance/runner.js +1 -1
- package/dist/cli.js +1 -1
- package/dist/context/index.js +1 -1
- package/dist/context/promptTemplate.js +1 -1
- package/dist/context/techContextLoader.js +1 -1
- package/dist/engine.d.ts +1 -0
- package/dist/engine.js +1 -1
- package/dist/evolution/distiller.js +1 -1
- package/dist/evolution/index.js +1 -1
- package/dist/evolution/memoryGraph.js +1 -1
- package/dist/evolution/selector.js +1 -1
- package/dist/evolution/signals.js +1 -1
- package/dist/evolution/solidify.js +1 -1
- package/dist/evolution/store.js +1 -1
- package/dist/evolution/types.js +1 -1
- package/dist/init.d.ts +4 -3
- package/dist/init.js +1 -1
- package/dist/machines/agentMachine.js +1 -1
- package/dist/machines/supervisorMachine.js +1 -1
- package/dist/persistence/schema.js +1 -1
- package/dist/persistence/stateFile.js +1 -1
- package/dist/plugin-engine.js +1 -1
- package/dist/plugin.js +1 -1
- package/dist/requirement-analysis/analyzers/repository-parser.d.ts +121 -0
- package/dist/requirement-analysis/analyzers/repository-parser.js +1 -0
- package/dist/requirement-analysis/generators/prd-generator.d.ts +90 -0
- package/dist/requirement-analysis/generators/prd-generator.js +1 -0
- package/dist/requirement-analysis/integrations/v1-integration.d.ts +73 -0
- package/dist/requirement-analysis/integrations/v1-integration.js +1 -0
- package/dist/requirement-analysis/tools/analyze-requirements.js +1 -0
- package/dist/requirement-analysis/types/analysis-result.d.ts +326 -0
- package/dist/requirement-analysis/types/analysis-result.js +1 -0
- package/dist/requirement-analysis/types/feature-mapping.d.ts +294 -0
- package/dist/requirement-analysis/types/feature-mapping.js +1 -0
- package/dist/requirement-analysis/types/index.d.ts +171 -0
- package/dist/requirement-analysis/types/index.js +1 -0
- package/dist/requirement-analysis/types/tech-stack.d.ts +213 -0
- package/dist/requirement-analysis/types/tech-stack.js +1 -0
- package/dist/requirement-analysis/utils/error-handler.d.ts +112 -0
- package/dist/requirement-analysis/utils/error-handler.js +1 -0
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.js +1 -1
- package/dist/utils/id.js +1 -1
- package/package.json +4 -2
- package/skills/competitor-search/SKILL.md +169 -0
- package/skills/demand-analysis/SKILL.md +307 -0
- package/skills/feature-search/SKILL.md +182 -0
- package/skills/requirement-analysis/README.md +464 -0
- package/skills/requirement-analysis/SKILL.md +224 -0
- package/skills/requirement-analysis/templates/feature-mapping-template.json +210 -0
- package/skills/requirement-analysis/templates/prd-template.md +104 -0
- package/skills/tech-selection/SKILL.md +198 -0
- package/dist/__e2e__/01-state-engine.e2e.test.d.ts +0 -10
- package/dist/__e2e__/01-state-engine.e2e.test.js +0 -1
- package/dist/acceptance/lazyDetector.test.d.ts +0 -1
- package/dist/acceptance/lazyDetector.test.js +0 -1
- package/dist/acceptance/reporter.test.d.ts +0 -1
- package/dist/acceptance/reporter.test.js +0 -1
- package/dist/acceptance/runner.test.d.ts +0 -1
- package/dist/acceptance/runner.test.js +0 -1
- package/dist/context/promptTemplate.test.d.ts +0 -1
- package/dist/context/promptTemplate.test.js +0 -1
- package/dist/context/techContextLoader.test.d.ts +0 -1
- package/dist/context/techContextLoader.test.js +0 -1
- package/dist/machines/agentMachine.test.d.ts +0 -1
- package/dist/machines/agentMachine.test.js +0 -1
- package/dist/machines/supervisorMachine.test.d.ts +0 -1
- package/dist/machines/supervisorMachine.test.js +0 -1
- package/dist/persistence/stateFile.test.d.ts +0 -1
- package/dist/persistence/stateFile.test.js +0 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 需求分析错误处理工具
|
|
3
|
+
* 提供统一的错误处理、恢复机制和用户友好的错误信息
|
|
4
|
+
*/
|
|
5
|
+
export declare enum ErrorType {
|
|
6
|
+
INPUT_VALIDATION = "INPUT_VALIDATION",
|
|
7
|
+
FILE_ACCESS = "FILE_ACCESS",
|
|
8
|
+
NETWORK = "NETWORK",
|
|
9
|
+
PARSING = "PARSING",
|
|
10
|
+
ANALYSIS = "ANALYSIS",
|
|
11
|
+
GENERATION = "GENERATION",
|
|
12
|
+
STATE_MANAGEMENT = "STATE_MANAGEMENT",
|
|
13
|
+
INTEGRATION = "INTEGRATION",
|
|
14
|
+
UNKNOWN = "UNKNOWN"
|
|
15
|
+
}
|
|
16
|
+
export declare enum ErrorSeverity {
|
|
17
|
+
LOW = "low",
|
|
18
|
+
MEDIUM = "medium",
|
|
19
|
+
HIGH = "high",
|
|
20
|
+
CRITICAL = "critical"
|
|
21
|
+
}
|
|
22
|
+
export interface AnalysisError extends Error {
|
|
23
|
+
type: ErrorType;
|
|
24
|
+
severity: ErrorSeverity;
|
|
25
|
+
context?: Record<string, any>;
|
|
26
|
+
recoverable: boolean;
|
|
27
|
+
suggestions: string[];
|
|
28
|
+
timestamp: Date;
|
|
29
|
+
}
|
|
30
|
+
export interface RecoveryStrategy {
|
|
31
|
+
canRecover: (error: AnalysisError) => boolean;
|
|
32
|
+
recover: (error: AnalysisError, context?: any) => Promise<any>;
|
|
33
|
+
description: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 创建分析错误
|
|
37
|
+
*/
|
|
38
|
+
export declare function createAnalysisError(message: string, type: ErrorType, severity?: ErrorSeverity, options?: {
|
|
39
|
+
cause?: Error;
|
|
40
|
+
context?: Record<string, any>;
|
|
41
|
+
recoverable?: boolean;
|
|
42
|
+
suggestions?: string[];
|
|
43
|
+
}): AnalysisError;
|
|
44
|
+
/**
|
|
45
|
+
* 错误处理器类
|
|
46
|
+
*/
|
|
47
|
+
export declare class ErrorHandler {
|
|
48
|
+
private recoveryStrategies;
|
|
49
|
+
private errorLog;
|
|
50
|
+
private maxRetries;
|
|
51
|
+
private retryDelay;
|
|
52
|
+
constructor();
|
|
53
|
+
/**
|
|
54
|
+
* 设置默认恢复策略
|
|
55
|
+
*/
|
|
56
|
+
private setupDefaultRecoveryStrategies;
|
|
57
|
+
/**
|
|
58
|
+
* 添加恢复策略
|
|
59
|
+
*/
|
|
60
|
+
addRecoveryStrategy(strategy: RecoveryStrategy): void;
|
|
61
|
+
/**
|
|
62
|
+
* 处理错误
|
|
63
|
+
*/
|
|
64
|
+
handleError(error: Error | AnalysisError, context?: any): Promise<{
|
|
65
|
+
handled: boolean;
|
|
66
|
+
recovered: boolean;
|
|
67
|
+
result?: any;
|
|
68
|
+
message: string;
|
|
69
|
+
}>;
|
|
70
|
+
/**
|
|
71
|
+
* 标准化错误
|
|
72
|
+
*/
|
|
73
|
+
private normalizeError;
|
|
74
|
+
/**
|
|
75
|
+
* 尝试恢复
|
|
76
|
+
*/
|
|
77
|
+
private attemptRecovery;
|
|
78
|
+
/**
|
|
79
|
+
* 记录错误
|
|
80
|
+
*/
|
|
81
|
+
private logError;
|
|
82
|
+
/**
|
|
83
|
+
* 格式化错误消息
|
|
84
|
+
*/
|
|
85
|
+
private formatErrorMessage;
|
|
86
|
+
/**
|
|
87
|
+
* 延迟函数
|
|
88
|
+
*/
|
|
89
|
+
private delay;
|
|
90
|
+
/**
|
|
91
|
+
* 获取错误统计
|
|
92
|
+
*/
|
|
93
|
+
getErrorStats(): {
|
|
94
|
+
total: number;
|
|
95
|
+
byType: Record<ErrorType, number>;
|
|
96
|
+
bySeverity: Record<ErrorSeverity, number>;
|
|
97
|
+
recent: AnalysisError[];
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* 导出错误日志
|
|
101
|
+
*/
|
|
102
|
+
exportErrorLog(filePath: string): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* 清除错误日志
|
|
105
|
+
*/
|
|
106
|
+
clearErrorLog(): void;
|
|
107
|
+
}
|
|
108
|
+
export declare const globalErrorHandler: ErrorHandler;
|
|
109
|
+
/**
|
|
110
|
+
* 包装异步函数以提供错误处理
|
|
111
|
+
*/
|
|
112
|
+
export declare function withErrorHandling<T extends any[], R>(fn: (...args: T) => Promise<R>, errorType?: ErrorType): (...args: T) => Promise<R>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(_0x3e6dea,_0x1cdac4){const _0x41d135={_0x56c3e6:0x2f0,_0x4411f8:0x21b,_0x3163ac:0x230,_0x34b3c2:0x2a1,_0x2ac33e:0x2ba,_0x378837:0x321,_0x21b3b5:0x2fc,_0x557df9:0x252,_0xd3460e:0x23f},_0x510b1e={_0x39968e:0xe6};function _0x5cb0d7(_0x3f8485,_0x2f218e){return _0x59d3(_0x2f218e-0x15a,_0x3f8485);}const _0x3c02f7=_0x3e6dea();function _0x2c81ca(_0x26df66,_0x416be8){return _0x59d3(_0x416be8-_0x510b1e._0x39968e,_0x26df66);}while(!![]){try{const _0x2d6e4e=parseInt(_0x5cb0d7(_0x41d135._0x56c3e6,0x324))/(-0x1e44+-0x4*-0x457+0xce9)+parseInt(_0x2c81ca(_0x41d135._0x4411f8,_0x41d135._0x3163ac))/(-0xaa8+-0xae2+0x4*0x563)+-parseInt(_0x2c81ca(0x27b,0x2a2))/(0x137+0x1c6*-0xa+-0x4*-0x422)+-parseInt(_0x2c81ca(0x1e2,0x229))/(0x1590+0x82a*-0x4+0xc*0xed)+parseInt(_0x2c81ca(0x296,_0x41d135._0x34b3c2))/(-0x11*0x12f+-0xc78+0x209c*0x1)*(parseInt(_0x5cb0d7(0x2a9,_0x41d135._0x2ac33e))/(-0x5*0x4c3+-0x315*0x9+-0x2*-0x19c9))+parseInt(_0x2c81ca(0x259,0x23b))/(0xb*-0x14b+0x1c28+-0xde8)*(parseInt(_0x5cb0d7(_0x41d135._0x378837,_0x41d135._0x21b3b5))/(0x2571+-0x2*-0xa8b+-0x3a7f))+-parseInt(_0x2c81ca(_0x41d135._0x557df9,_0x41d135._0xd3460e))/(-0x3ab+-0x3e9+0x79d);if(_0x2d6e4e===_0x1cdac4)break;else _0x3c02f7['push'](_0x3c02f7['shift']());}catch(_0x54ee45){_0x3c02f7['push'](_0x3c02f7['shift']());}}}(_0x4d08,0x2c45c+0x495c7+-0x4ec8f));import{writeFile}from'fs/promises';export var ErrorType;function _0xe400d6(_0x87887f,_0x5b91d1){return _0x59d3(_0x5b91d1- -0x2f0,_0x87887f);}(function(_0x5ec3fb){const _0x23d5e7={_0x3b4527:0xd4,_0x2f4c54:0x21c,_0x371181:0xa1,_0x37aefc:0x9f,_0x253f9c:0x7f,_0x3938d2:0x1d7,_0x4c8a75:0x201,_0x4cf110:0xb2,_0x3ab864:0x1cf,_0x29f323:0x1c6,_0x38d52d:0x7c,_0x307e61:0x40,_0x578d61:0x54,_0xbbd261:0x55,_0x573af0:0x74,_0x5d2f6f:0xc8,_0xbe967f:0x241,_0x15e2ab:0x232,_0x3e3d1e:0x4d,_0x585b1d:0x86},_0x2e573c={_0x4cabdb:0x81},_0x3eb4c3={};_0x3eb4c3[_0x2f8c4f(0x25b,0x2a7)]=_0x40e1fe(-_0x23d5e7._0x3b4527,-0x102)+_0x2f8c4f(_0x23d5e7._0x2f4c54,0x20d),_0x3eb4c3['eUUgu']=_0x40e1fe(-0x7c,-0x4f),_0x3eb4c3[_0x40e1fe(-_0x23d5e7._0x371181,-0x5e)]=_0x40e1fe(-0x54,-0x7e),_0x3eb4c3[_0x40e1fe(-0x62,-_0x23d5e7._0x37aefc)]=_0x40e1fe(-0xcd,-0xf7),_0x3eb4c3['eRdBI']=_0x40e1fe(-0xb9,-_0x23d5e7._0x253f9c)+_0x2f8c4f(_0x23d5e7._0x3938d2,_0x23d5e7._0x4c8a75),_0x3eb4c3[_0x40e1fe(-0x8d,-0xd9)]='UNKNOWN';const _0x33dbc7=_0x3eb4c3;function _0x2f8c4f(_0x403df9,_0x45c5bb){return _0x59d3(_0x403df9-_0x2e573c._0x4cabdb,_0x45c5bb);}_0x5ec3fb[_0x33dbc7['xnikN']]=_0x33dbc7[_0x2f8c4f(0x25b,0x24a)],_0x5ec3fb[_0x40e1fe(-0x67,-_0x23d5e7._0x4cf110)+'S']='FILE_ACCES'+'S',_0x5ec3fb[_0x33dbc7[_0x2f8c4f(_0x23d5e7._0x3ab864,_0x23d5e7._0x29f323)]]=_0x40e1fe(-_0x23d5e7._0x38d52d,-_0x23d5e7._0x307e61),_0x5ec3fb[_0x40e1fe(-_0x23d5e7._0x578d61,-_0x23d5e7._0xbbd261)]=_0x33dbc7['povuD'],_0x5ec3fb[_0x33dbc7[_0x2f8c4f(0x240,0x201)]]=_0x33dbc7[_0x40e1fe(-0x62,-_0x23d5e7._0x573af0)],_0x5ec3fb[_0x40e1fe(-0xbb,-_0x23d5e7._0x5d2f6f)]=_0x40e1fe(-0xbb,-0xc5),_0x5ec3fb[_0x33dbc7[_0x2f8c4f(0x233,_0x23d5e7._0xbe967f)]]='STATE_MANA'+_0x40e1fe(-0xcb,-_0x23d5e7._0x37aefc),_0x5ec3fb['INTEGRATIO'+'N']=_0x2f8c4f(0x1ff,_0x23d5e7._0x15e2ab)+'N';function _0x40e1fe(_0x171c6,_0x2e4648){return _0x59d3(_0x171c6- -0x221,_0x2e4648);}_0x5ec3fb[_0x33dbc7['Uyxom']]=_0x40e1fe(-_0x23d5e7._0x3e3d1e,-_0x23d5e7._0x585b1d);}(ErrorType||(ErrorType={})));export var ErrorSeverity;(function(_0x5732fd){const _0x5b6c4e={_0xf08b7a:0x3c6,_0x28436d:0x3bc,_0x1da841:0x331,_0x53c0b8:0x35f,_0x2fab6b:0x346,_0x16977a:0x3b1,_0x23975e:0x371,_0x373351:0x366,_0x101277:0x20,_0xb53b1e:0x3aa,_0x1afb2b:0x344,_0x1c792e:0x67,_0x47e242:0x39b},_0x4758a7={_0x4d8ef3:0x1b2},_0x128315={};_0x128315[_0x9c2716(_0x5b6c4e._0xf08b7a,_0x5b6c4e._0x28436d)]=_0x9c2716(_0x5b6c4e._0x1da841,_0x5b6c4e._0x53c0b8),_0x128315[_0x9c2716(_0x5b6c4e._0x2fab6b,0x364)]=_0x9c2716(_0x5b6c4e._0x16977a,_0x5b6c4e._0x23975e),_0x128315[_0x3c1bc1(-0x28,0xe)]='MEDIUM',_0x128315[_0x9c2716(_0x5b6c4e._0x373351,0x363)]='HIGH';function _0x3c1bc1(_0x6ab555,_0xa3d961){return _0x59d3(_0xa3d961- -_0x4758a7._0x4d8ef3,_0x6ab555);}const _0x2d9e68=_0x128315;_0x5732fd[_0x2d9e68[_0x3c1bc1(-0x16,_0x5b6c4e._0x101277)]]=_0x2d9e68[_0x9c2716(0x340,0x364)];function _0x9c2716(_0x129833,_0x58f401){return _0x59d3(_0x58f401-0x1ea,_0x129833);}_0x5732fd[_0x2d9e68[_0x9c2716(0x382,_0x5b6c4e._0xb53b1e)]]='medium',_0x5732fd[_0x2d9e68[_0x9c2716(0x376,0x363)]]=_0x9c2716(_0x5b6c4e._0x1afb2b,0x354),_0x5732fd[_0x3c1bc1(-0x73,-_0x5b6c4e._0x1c792e)]=_0x9c2716(0x388,_0x5b6c4e._0x47e242);}(ErrorSeverity||(ErrorSeverity={})));function _0x4d08(){const _0x413ea5=['te9x','EeffBKi','572r57UC6k+35Rgc6yEn6k+v5QYH5PwW5BEY6l6+','5Qoa5P+L572r57UC6l+E5O6L','EKHcCwG','vejmEwO','5yEg5Ash6yEn6k+v572r57UC6k+35Rgc','5OgI5Asn562w55wL5AsX6lsLoIa','BLLQBNC','su5uruDsqvrjtW','CMvJB3zLCG','Cg92Duq','5PEG5Rov5yIB5BU655UU5B2v','CK1LC3nHz2u','zM9YrwfJAa','rhDQBwy','z2v0rxjYB3jtDa','5l2/55sO5A695P2+5QIH5BYp6yEn5PAW6kEJ5P6q','Bg93','CMf0zwDPzxm','Cgf0Aa','runptK5sruzvuW','Dg9ju09tDhjPBG','ChvZAa','CMvJB3zLCMfIBa','cKnHDxnLzcbIEq','BMniqKy','Aw5JBhvKzxm','uwnrC3m','BxrZsLG','5PEG5Rov5OgI5Asn5PAh5lU26k6/6zEU6zsz6k+V','vxL4B20','y2XLyxjfCNjVCG','vNfbq2O','zxjYB3jmB2C','4PYfiow3SUAbOUwKJtOG','5Qoa5P+L5PAh5lU26lEV5B6e5PIV5zcM5Q2J56gU','CMv0CNLdB3vUDa','refusu9o','C3rYAw5NAwz5','tKvSzvC','BwfW','DLDVzxm','B3n6yKK','BM5Rtee','nZuYDM9vrgTc','8j+AQcdKUkxPH43NQiVLUQy6ia','v2vey0K','tKvuv09ssW','AgfUzgXLrxjYBW','BMv0D29YAW','CxjRu3a','CNjVCG','vwvyzM8','zxHWB3j0rxjYBW','BwzoCgm','rvPuCLe','Bgj0tgy','CMvJB3zLCMvK','y2fUuMvJB3zLCG','y3jPDgLJywW','zvjKqKK','rKTPALC','zgvSyxK','uM5Ss2e','ywrKuMvJB3zLCG','A0DNBNe','A0fLuMK','CMvJB3zLCNLtDa','rKLmrv9bq0nfuW','nwfWAuH5BW','mJC2mdK2Bu9xu2HJ','uLPKswm','AKfMrhq','vfjWwMq','qMPlrem','D2fYBG','C3rHy2S','4PQG77IpioAxOoAZLEIhQUwkQoAbOUwKJq','rurrA2m','DvLbALO','zwvQDe8','yxrZ','qxnqvKq','icaGlsa','nZq1ndveAKjQsgG','t3ziAuu','t2HYzNe','uefsu0LorW','Dg9vChbLCKnHCW','8j+sOsdLU7RORQ46','DhLWzq','BfLREfy','EezYyui','rMXcAeq','vu5ltK9xtG','zLbxqLa','Bxjuqu0','5Qoa5P+L5PAh5lU25Qc85BYp5PIV5zcM5Q2J56gU','tuvesvvn','CMv0CNLezwXHEq','Eg5PA04','56gU5l+D5PAh5lU25A2y5zYO5lIu5PYj6k+75y+w','zM9YBwf0rxjYBW','5BcD6k+v5l2/55sO5yw25lUw5Qc85BYp','C3vNz2vZDgLVBG','zNHgDee','wfflt3K','wxfWAxK','mZyWnJuYDLLly3P2','t1v1q3u','AMnmBfe','56In5zco6yEn6k+v','B3zLCNK','Bwf4uMv0CMLLCW','D3fVzue','mtG5ota2ANjirerR','q1jjveLdquW','y29UDgv4Da','su5qvvrFvKfmsq','zvvvz3u','zMfSBgjHy2TnBW','seLhsa','zgrntNa','zw1Vr1e','B0fkENi','qu5btfLtsvm','mtGYndLKv1vhwg4','r0vnru5u','CMvZDwX0','BM9YBwfSAxPLrq','mJaXmJaZmw1TrwHqvq','DgLTzxn0yw1W','Bg9NrxjYB3i','5PAh5lU26k6/6zEU6zsz6k+V5OgI5Asn562w55wL','zNmVChjVBwLZzq','B3vUza','y2f1C2u','otaXotmYvLHxBND0','AM9PBG','u3rYyxrLz2LLCW','ru5pru5u','BfPNB2G','CMvJDxjZAxzL','r0vorvjbveLptG','BgvUz3rO','u1rbvevFtufoqq','zMLSzsbUB3qGzG','AgLNAa','tg9N','BwvZC2fNzq','yxr0zw1WDfjLyW','C2v2zxjPDhK','BhrszwnVDMvYEq','B1DvExG','r3HOAhe','vfHVqMu','zMLSzvbHDgG','zgvZy3jPChrPBW'];_0x4d08=function(){return _0x413ea5;};return _0x4d08();}function _0x59d3(_0x3a8f6f,_0x37c067){_0x3a8f6f=_0x3a8f6f-(0x393*0x1+0x6d+-0x20*0x16);const _0x432b3a=_0x4d08();let _0x4e8fcb=_0x432b3a[_0x3a8f6f];if(_0x59d3['ggRqDa']===undefined){var _0x2355d5=function(_0x265af5){const _0x25c2c9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5ab7c9='',_0x974353='';for(let _0x31dd9c=-0x2a7*0xa+-0x61*0x8+0x1d8e,_0x2ddf54,_0x49a68e,_0x1eb23d=-0x20f7+-0x51*-0x1b+-0xc36*-0x2;_0x49a68e=_0x265af5['charAt'](_0x1eb23d++);~_0x49a68e&&(_0x2ddf54=_0x31dd9c%(0xa7*-0x15+-0x1*0x1f8b+-0x6*-0x78b)?_0x2ddf54*(-0x1217+-0x67a*-0x2+0xc5*0x7)+_0x49a68e:_0x49a68e,_0x31dd9c++%(-0x253+0x24af+-0x44b*0x8))?_0x5ab7c9+=String['fromCharCode'](0x1609+-0xc83*0x1+-0x887&_0x2ddf54>>(-(-0x1*-0x255+-0x995+0x742)*_0x31dd9c&0x75*0x1d+-0xd1d+-0x1e*0x1)):0x1*0x1505+0x639+-0xd9f*0x2){_0x49a68e=_0x25c2c9['indexOf'](_0x49a68e);}for(let _0x3cfabc=-0x7c7+0x6*-0x622+0x2c93,_0x3918ba=_0x5ab7c9['length'];_0x3cfabc<_0x3918ba;_0x3cfabc++){_0x974353+='%'+('00'+_0x5ab7c9['charCodeAt'](_0x3cfabc)['toString'](-0x2681+0x4*0x71d+0x1*0xa1d))['slice'](-(-0x2142+-0x30a*0x9+0x3c9e));}return decodeURIComponent(_0x974353);};_0x59d3['ZKtggi']=_0x2355d5,_0x59d3['VtRGQE']={},_0x59d3['ggRqDa']=!![];}const _0x24519c=_0x432b3a[-0x145f+-0x3e5*-0x1+0x1*0x107a],_0x1b1fe0=_0x3a8f6f+_0x24519c,_0x51afbd=_0x59d3['VtRGQE'][_0x1b1fe0];return!_0x51afbd?(_0x4e8fcb=_0x59d3['ZKtggi'](_0x4e8fcb),_0x59d3['VtRGQE'][_0x1b1fe0]=_0x4e8fcb):_0x4e8fcb=_0x51afbd,_0x4e8fcb;}export function createAnalysisError(_0x51755d,_0x3a2f9f,_0x5d023e=ErrorSeverity[_0xe400d6(-0x12f,-0x118)],_0x1d77fd={}){const _0x2e2bbf={_0x916a86:0x390,_0x49beb2:0x343,_0x2293cf:0x2e1,_0x523476:0x19,_0x404258:0x354,_0xca88a0:0x351,_0x8859e:0x2d2,_0x4861ea:0x33e,_0x5ef572:0x50,_0x2050c3:0x7a,_0x329b72:0x2e8,_0x225a89:0x2f2,_0x53d7be:0x2a,_0x30325a:0x44,_0x598c88:0x30c,_0x1ddf62:0x335,_0x377e3f:0x301},_0x17bf07={_0x5d8af7:0x463},_0x5c438d=new Error(_0x51755d);_0x5c438d[_0x5c059d(_0x2e2bbf._0x916a86,_0x2e2bbf._0x49beb2)]=_0x3a2f9f,_0x5c438d[_0x5c059d(0x2a3,_0x2e2bbf._0x2293cf)]=_0x5d023e,_0x5c438d['context']=_0x1d77fd[_0x5c059d(0x2b4,0x2bf)]||{},_0x5c438d[_0xdcea6a(-0x51,-0x79)+'e']=_0x1d77fd['recoverabl'+'e']??!![],_0x5c438d[_0xdcea6a(_0x2e2bbf._0x523476,-0x28)+'s']=_0x1d77fd[_0x5c059d(_0x2e2bbf._0x404258,_0x2e2bbf._0xca88a0)+'s']||[],_0x5c438d[_0xdcea6a(-0xbd,-0xac)]=new Date();_0x1d77fd[_0x5c059d(0x2c9,_0x2e2bbf._0x8859e)]&&(_0x5c059d(0x327,_0x2e2bbf._0x4861ea)!==_0x5c059d(0x340,0x33e)?_0x17431e[_0xdcea6a(-_0x2e2bbf._0x5ef572,-_0x2e2bbf._0x2050c3)]('\x20\x20\x20-\x20'+_0x1d0334):(_0x5c438d[_0x5c059d(_0x2e2bbf._0x329b72,0x2d2)]=_0x1d77fd[_0x5c059d(_0x2e2bbf._0x225a89,_0x2e2bbf._0x8859e)],_0x5c438d[_0xdcea6a(-_0x2e2bbf._0x53d7be,-_0x2e2bbf._0x30325a)]=_0x5c438d[_0x5c059d(_0x2e2bbf._0x598c88,_0x2e2bbf._0x1ddf62)]+(_0x5c059d(0x33a,_0x2e2bbf._0x377e3f)+':\x20')+_0x1d77fd['cause']['stack']));function _0x5c059d(_0x42d69b,_0x12a980){return _0xe400d6(_0x42d69b,_0x12a980-_0x17bf07._0x5d8af7);}function _0xdcea6a(_0x1fff71,_0x28ce54){return _0xe400d6(_0x1fff71,_0x28ce54-0xea);}return _0x5c438d;}export class ErrorHandler{[_0xe400d6(-0x108,-0x137)+'rategies']=[];[_0xe400d6(-0x18a,-0x159)]=[];[_0xe400d6(-0x1b0,-0x1a8)]=-0x646*0x2+0xc9b*-0x1+-0xc95*-0x2;[_0xe400d6(-0x137,-0x117)]=0x1*0xf33+0x12a*0x16+-0xc9*0x2f;constructor(){const _0x2ddc97={_0x86ddae:0x524,_0x46b06a:0x51a,_0x5d55f2:0x517},_0x4940b7={_0x3837e8:0x604};function _0x2f1abe(_0x5ce1a7,_0x26e49a){return _0x559f09(_0x5ce1a7,_0x26e49a- -0xcb);}function _0x355fa1(_0x394a55,_0x198723){return _0x559f09(_0x198723,_0x394a55-_0x4940b7._0x3837e8);}this['setupDefau'+_0x355fa1(_0x2ddc97._0x86ddae,_0x2ddc97._0x46b06a)+_0x355fa1(_0x2ddc97._0x5d55f2,0x563)]();}['setupDefau'+_0xe400d6(-0x18a,-0x181)+_0x559f09(-0x13c,-0xed)](){const _0x539869={_0x38820b:0x4d2,_0x134524:0x405,_0x3b5f7e:0x389,_0x535841:0x4c2,_0x553123:0x3c4,_0x373310:0x486,_0x2a4747:0x49c,_0x1b89a2:0x539,_0x328d69:0x507,_0x13af54:0x3dd,_0x31ed7a:0x3f5,_0x2ccc37:0x35f,_0x1dd4cb:0x36c,_0x23f463:0x3da,_0x58b8fc:0x3db,_0x56d56b:0x4b5,_0x1ed856:0x4e4},_0x37b422={_0x4ff01a:0xa4,_0x441644:0x381,_0x570df4:0x3c7},_0x534d11={_0x5c06da:0x9c,_0x5e876e:0x3c2,_0x390c2e:0x3f8,_0x5e10bd:0x3c6,_0x4fea07:0x99,_0x23b9d3:0x132,_0x4e082b:0x3eb,_0x297a67:0x10a,_0x252de0:0xa6,_0x4505fb:0x367,_0x5acb7d:0x325,_0x58f9b6:0xce,_0x90321:0x39d,_0x4cc101:0xe9},_0x2a0a78={_0x4bcc07:0x2ea},_0x4108e8={_0x27a647:0x228,_0x3762e3:0x285,_0x42326f:0x248,_0x8981ef:0x1b8,_0x34714d:0x296,_0x5ba8d4:0x233,_0x31c9a2:0x22e,_0x2377df:0x1d7,_0x4019e6:0x22a,_0x6027ee:0x1b5,_0x41d019:0x29d,_0x11c7bd:0x24f,_0x1cc353:0x282},_0x3cf970={_0x561d9d:0x590},_0x1f9b17={};function _0x586567(_0x4c1fb6,_0x1b352d){return _0x559f09(_0x1b352d,_0x4c1fb6-_0x3cf970._0x561d9d);}_0x1f9b17[_0x586567(_0x539869._0x38820b,0x4a5)]=_0x586567(0x4ca,0x4e5),_0x1f9b17[_0xa2c549(_0x539869._0x134524,0x3f7)]='已创建缺失的目录',_0x1f9b17[_0xa2c549(_0x539869._0x3b5f7e,0x396)]=_0x586567(_0x539869._0x535841,0x4a1),_0x1f9b17[_0xa2c549(0x37f,_0x539869._0x553123)]=function(_0x24ff27,_0xdc9409){return _0x24ff27!==_0xdc9409;},_0x1f9b17[_0x586567(_0x539869._0x373310,_0x539869._0x2a4747)]=function(_0x4aea2d,_0x10e7be){return _0x4aea2d*_0x10e7be;},_0x1f9b17[_0x586567(0x4fe,_0x539869._0x1b89a2)]=function(_0x137323,_0x279a0a){return _0x137323+_0x279a0a;},_0x1f9b17[_0x586567(_0x539869._0x328d69,0x53f)]=_0x586567(0x4b8,0x4f5)+'上限',_0x1f9b17[_0xa2c549(_0x539869._0x13af54,_0x539869._0x31ed7a)]=_0xa2c549(_0x539869._0x2ccc37,0x3aa),_0x1f9b17[_0xa2c549(_0x539869._0x1dd4cb,0x375)]='网络错误重试策略',_0x1f9b17[_0xa2c549(0x32e,0x365)]='解析错误宽松模式恢复';const _0x21a08f=_0x1f9b17;this[_0xa2c549(0x3cf,_0x539869._0x23f463)+'yStrategy']({'canRecover':_0x460458=>_0x460458[_0xa2c549(0x3fa,0x3f4)]===ErrorType[_0x586567(0x4fb,0x523)+'S'],'recover':async(_0x5757e4,_0x22fd10)=>{if(_0x5757e4[_0x5d6f09(-_0x4108e8._0x27a647,-0x214)]?.[_0x5d6f09(-0x1ad,-0x1ed)]){const {dirname:_0x53a6ba}=await import(_0x21a08f['QcQss']),{mkdir:_0x5b5db5}=await import(_0x5d094d(-_0x4108e8._0x3762e3,-_0x4108e8._0x42326f)+'s');try{const _0x1f9a6b={};_0x1f9a6b[_0x5d6f09(-_0x4108e8._0x8981ef,-0x1fb)]=!![],await _0x5b5db5(_0x53a6ba(_0x5757e4[_0x5d094d(-_0x4108e8._0x34714d,-0x25d)]['filePath']),_0x1f9a6b);const _0x36499c={};return _0x36499c[_0x5d094d(-_0x4108e8._0x5ba8d4,-_0x4108e8._0x31c9a2)]=!![],_0x36499c[_0x5d6f09(-_0x4108e8._0x2377df,-0x1f4)]=_0x21a08f[_0x5d094d(-0x20f,-_0x4108e8._0x4019e6)],_0x36499c;}catch{const _0x1d3e5d={};return _0x1d3e5d['recovered']=![],_0x1d3e5d[_0x5d6f09(-_0x4108e8._0x6027ee,-0x1f4)]=_0x21a08f['TXoBe'],_0x1d3e5d;}}const _0x14ff03={};function _0x5d094d(_0x546624,_0xfbd2c1){return _0x586567(_0x546624- -0x723,_0xfbd2c1);}_0x14ff03[_0x5d094d(-_0x4108e8._0x5ba8d4,-0x253)]=![],_0x14ff03[_0x5d094d(-0x276,-_0x4108e8._0x41d019)]=_0x5d094d(-_0x4108e8._0x11c7bd,-_0x4108e8._0x1cc353);function _0x5d6f09(_0x2081c8,_0x5409d7){return _0x586567(_0x5409d7- -0x6a1,_0x2081c8);}return _0x14ff03;},'description':_0x586567(0x49d,0x47b)});function _0xa2c549(_0x405d17,_0x566fa3){return _0x559f09(_0x405d17,_0x566fa3-0x473);}this['addRecover'+'yStrategy']({'canRecover':_0x14a650=>_0x14a650[_0xa2c549(0x3d6,0x3f4)]===ErrorType[_0x586567(0x4e6,0x51f)],'recover':async(_0x335f38,_0x1e2aa0)=>{if(_0x1e2aa0?.[_0x42aa7e(0xd4,_0x534d11._0x5c06da)]<this['maxRetries']){if(_0x21a08f[_0x304b0f(_0x534d11._0x5e876e,_0x534d11._0x390c2e)](_0x304b0f(_0x534d11._0x5e10bd,0x3f8),'WeDcI'))_0x5e2496[_0x42aa7e(_0x534d11._0x4fea07,0xc8)]=_0x90a845['cause'],_0x26320d['stack']=_0x2c753c[_0x42aa7e(0xfc,_0x534d11._0x23b9d3)]+(_0x304b0f(0x3b0,_0x534d11._0x4e082b)+':\x20')+_0xfc0604['cause'][_0x42aa7e(0xfc,_0x534d11._0x297a67)];else{await this[_0x42aa7e(0xee,_0x534d11._0x252de0)](_0x21a08f[_0x304b0f(_0x534d11._0x4505fb,_0x534d11._0x5acb7d)](this[_0x42aa7e(0x113,_0x534d11._0x58f9b6)],_0x21a08f['RZdIc'](_0x1e2aa0['retryCount'],0x82e+0x1468+0x987*-0x3)));const _0x502899={};return _0x502899['recovered']=!![],_0x502899['message']=_0x304b0f(_0x534d11._0x90321,0x3dd),_0x502899;}}function _0x42aa7e(_0x38e633,_0x12adb1){return _0xa2c549(_0x12adb1,_0x38e633- -_0x2a0a78._0x4bcc07);}const _0x49c206={};_0x49c206[_0x42aa7e(_0x534d11._0x4cc101,0x10a)]=![];function _0x304b0f(_0x215957,_0x1ab658){return _0xa2c549(_0x1ab658,_0x215957- -0x2);}return _0x49c206[_0x42aa7e(_0x534d11._0x252de0,0x75)]=_0x21a08f['eejtO'],_0x49c206;},'description':_0x21a08f['ddMNp']});const _0x3d92bb={};_0x3d92bb['canRecover']=_0x1c6f60=>_0x1c6f60[_0xa2c549(0x40a,0x3f4)]===ErrorType[_0xa2c549(0x3d2,0x3f1)],_0x3d92bb[_0xa2c549(_0x539869._0x58b8fc,0x3a3)]=async(_0x5442a2,_0x3e3925)=>{const _0x1446a3={_0x1f48c2:0xf},_0x136066={};_0x136066[_0x2e1930(_0x37b422._0x4ff01a,0x5e)]=!![],_0x136066[_0x1acf20(_0x37b422._0x441644,_0x37b422._0x570df4)]=_0x21a08f[_0x1acf20(0x3e6,0x407)],_0x136066[_0x2e1930(0x4,-0x2)+'de']=!![];function _0x2e1930(_0x49562b,_0x47f05b){return _0xa2c549(_0x49562b,_0x47f05b- -0x375);}function _0x1acf20(_0x41e644,_0x36209f){return _0xa2c549(_0x36209f,_0x41e644- -_0x1446a3._0x1f48c2);}return _0x136066;},_0x3d92bb[_0x586567(_0x539869._0x56d56b,0x478)+'n']=_0x21a08f[_0xa2c549(0x365,0x365)],this[_0x586567(0x4f7,_0x539869._0x1ed856)+'yStrategy'](_0x3d92bb);}[_0xe400d6(-0x11a,-0x13a)+'yStrategy'](_0x26f50e){const _0x5ef8c8={_0x3433da:0xd,_0x2e6f8f:0xf};function _0xbbc6ec(_0x1e8ae5,_0xf41886){return _0xe400d6(_0x1e8ae5,_0xf41886-0x161);}function _0x2fdf3c(_0x23eb50,_0x5b6c65){return _0x559f09(_0x23eb50,_0x5b6c65-0xb8);}this['recoverySt'+_0x2fdf3c(-_0x5ef8c8._0x3433da,-_0x5ef8c8._0x2e6f8f)][_0xbbc6ec(0x27,-0x3)](_0x26f50e);}async['handleErro'+'r'](_0x37d57e,_0xe975a2){const _0x30cc6f={_0x54e68a:0x231,_0x1891fe:0x278,_0x1905f6:0x251,_0x194187:0x1f5,_0x594a28:0x1bb,_0x441628:0x1b2,_0x3e8f5b:0x264,_0x226c1d:0x27f},_0x199e5d={_0x1eeeb1:0x2f6};function _0x106199(_0x3bacbe,_0x5b2e36){return _0x559f09(_0x5b2e36,_0x3bacbe-0x2d7);}const _0x51797c=this[_0x5289f3(0x1e9,0x1ff)+_0x106199(_0x30cc6f._0x54e68a,_0x30cc6f._0x1891fe)](_0x37d57e);function _0x5289f3(_0x35ea87,_0x57f9f0){return _0x559f09(_0x35ea87,_0x57f9f0-_0x199e5d._0x1eeeb1);}this[_0x5289f3(_0x30cc6f._0x1905f6,0x202)](_0x51797c);const _0x5e5703=await this[_0x106199(_0x30cc6f._0x194187,_0x30cc6f._0x594a28)+_0x5289f3(_0x30cc6f._0x441628,0x1ee)](_0x51797c,_0xe975a2);return{'handled':!![],'recovered':_0x5e5703['recovered'],'result':_0x5e5703['result'],'message':this[_0x106199(_0x30cc6f._0x3e8f5b,_0x30cc6f._0x226c1d)+'rMessage'](_0x51797c,_0x5e5703)};}[_0x559f09(-0x13b,-0xf7)+_0xe400d6(-0x180,-0x147)](_0x5fe9c0){const _0x20e3a2={_0xd02d3a:0x23f,_0x914808:0x1c3,_0x2193d5:0x20c,_0x1fdc1a:0x25c,_0x5b04e5:0x211,_0x41c81f:0x19d,_0x239533:0x1c8,_0x2243f2:0x6c,_0x1857f4:0x1a,_0x3f9d4a:0xb,_0x4c4320:0x201,_0x57ca10:0x16e,_0x49c41c:0x61,_0x26d19c:0x40,_0x119566:0x152,_0x57dfec:0x1a2,_0x1ea23f:0x97,_0xd8da21:0x5e,_0x1a56ce:0x188,_0x489655:0x198,_0x4e79e2:0x1e3,_0x22f594:0x1b,_0x33da0e:0xd,_0x16dcc9:0x37,_0x5b45fe:0x5a,_0x23ee22:0x3a,_0x589ec2:0x51,_0x344e47:0x203,_0x4965a8:0x1ce,_0x3576d6:0x1ba,_0x5bf7da:0x21d,_0x452b64:0x203,_0x39e565:0xc5,_0x22dcae:0x79,_0xd6b009:0x232,_0x42a83b:0x152,_0x1bc9f5:0x1e1,_0x111563:0xa3,_0x112844:0x7c,_0xf91bc2:0x45,_0x56f8cb:0x93,_0x615c05:0x6e,_0x1bcc43:0xde,_0x30972a:0xa4,_0x46026d:0x7e,_0x563b9f:0x15,_0x2bd2e6:0xbc,_0x5a1bf0:0x7e,_0x436ab1:0x1d9,_0x5d6467:0x1a2,_0x43617a:0x215,_0x515c50:0x228,_0x28ec51:0x1e3},_0x37cfbe={_0x28b776:0x7f},_0x31ed4e={'mfNpc':function(_0x1f7f59,_0x1ab5f0){return _0x1f7f59+_0x1ab5f0;},'kAeRi':function(_0x5a8573,_0x2924c0){return _0x5a8573 in _0x2924c0;},'Ohrfq':_0x1e6e0c(-_0x20e3a2._0xd02d3a,-0x1f2),'kzEjy':_0x1e6e0c(-_0x20e3a2._0x914808,-_0x20e3a2._0x2193d5),'aoQJw':_0x1e6e0c(-0x243,-0x206)+_0x1e6e0c(-_0x20e3a2._0x1fdc1a,-_0x20e3a2._0x5b04e5),'RnlKa':_0x17562e(-0x78,-0x60)+'ED','OUuCu':_0x1e6e0c(-_0x20e3a2._0x41c81f,-_0x20e3a2._0x239533),'Gxhhq':'sRNRu','wqoeA':_0x17562e(-_0x20e3a2._0x2243f2,-0x72),'fPWBP':'JSON','VqACj':'parse','xAEnB':_0x17562e(-0x1f,-0x13),'NuXXi':function(_0xffcaef,_0x60ec64,_0xf6476e,_0x520e87,_0xe5f31){return _0xffcaef(_0x60ec64,_0xf6476e,_0x520e87,_0xe5f31);}};if(_0x17562e(0x10,-_0x20e3a2._0x1857f4)in _0x5fe9c0&&_0x31ed4e[_0x17562e(-_0x20e3a2._0x3f9d4a,-0x32)](_0x1e6e0c(-0x225,-_0x20e3a2._0x4c4320),_0x5fe9c0)){if(_0x31ed4e[_0x1e6e0c(-_0x20e3a2._0x57ca10,-0x1a3)]!==_0x17562e(-_0x20e3a2._0x49c41c,-_0x20e3a2._0x26d19c))return _0x5fe9c0;else _0x24519c=_0x1b1fe0[_0x1e6e0c(-_0x20e3a2._0x119566,-_0x20e3a2._0x57dfec)],_0x51afbd[_0x17562e(-_0x20e3a2._0x1ea23f,-_0x20e3a2._0xd8da21)](_0x1e6e0c(-_0x20e3a2._0x1a56ce,-_0x20e3a2._0x489655)),_0x265af5[_0x1e6e0c(-0x1dd,-_0x20e3a2._0x4e79e2)](_0x17562e(-_0x20e3a2._0x22f594,-_0x20e3a2._0x33da0e));}function _0x17562e(_0x22ba0b,_0x6faf5a){return _0x559f09(_0x22ba0b,_0x6faf5a-0x65);}let _0x3d7ef5=ErrorType[_0x17562e(_0x20e3a2._0x16dcc9,-0x16)],_0x52fbb2=ErrorSeverity['MEDIUM'],_0x443c63=[];function _0x1e6e0c(_0x294133,_0x50eee5){return _0xe400d6(_0x294133,_0x50eee5- -_0x37cfbe._0x28b776);}if(_0x5fe9c0[_0x17562e(-0x89,-0x7e)]['includes'](_0x31ed4e['kzEjy'])||_0x5fe9c0['message'][_0x17562e(-0x71,-_0x20e3a2._0x5b45fe)](_0x31ed4e['aoQJw']))_0x3d7ef5=ErrorType[_0x17562e(-_0x20e3a2._0x23ee22,-0x30)+'S'],_0x443c63[_0x17562e(-0x51,-0x5e)](_0x17562e(-0x45,-_0x20e3a2._0x589ec2)),_0x443c63['push'](_0x17562e(0xc,-0xf)+'权限');else{if(_0x5fe9c0[_0x1e6e0c(-0x20a,-_0x20e3a2._0x344e47)]['includes'](_0x31ed4e[_0x1e6e0c(-_0x20e3a2._0x4965a8,-_0x20e3a2._0x3576d6)])||_0x5fe9c0[_0x1e6e0c(-_0x20e3a2._0x5bf7da,-_0x20e3a2._0x452b64)]['includes'](_0x31ed4e[_0x1e6e0c(-0x21f,-0x22b)]))_0x31ed4e[_0x17562e(-_0x20e3a2._0x39e565,-_0x20e3a2._0x22dcae)]!==_0x31ed4e[_0x1e6e0c(-_0x20e3a2._0xd6b009,-0x1fe)]?(_0x102a6a[_0x3350f2[_0x1e6e0c(-_0x20e3a2._0x42a83b,-0x19f)]]=_0x31ed4e[_0x1e6e0c(-_0x20e3a2._0x1bc9f5,-_0x20e3a2._0x914808)](_0x347f55[_0x120ddd['type']]||-0x1fd2+0x96d+0x777*0x3,0x2605*-0x1+-0x1*-0x46f+-0x2197*-0x1),_0x3a9ad1[_0x575553[_0x17562e(-_0x20e3a2._0x111563,-_0x20e3a2._0x112844)]]=_0x31ed4e['mfNpc'](_0x1c107f[_0x34b98b[_0x17562e(-0x2d,-_0x20e3a2._0x112844)]]||-0x150b*-0x1+0xf57+0x1231*-0x2,0xd81+0x1b32+0x28b2*-0x1)):(_0x3d7ef5=ErrorType[_0x17562e(-0x40,-_0x20e3a2._0xf91bc2)],_0x52fbb2=ErrorSeverity[_0x17562e(-_0x20e3a2._0x56f8cb,-0x9a)],_0x443c63[_0x17562e(-_0x20e3a2._0x615c05,-_0x20e3a2._0xd8da21)](_0x31ed4e[_0x17562e(-0xf0,-0xa1)]),_0x443c63[_0x1e6e0c(-0x209,-0x1e3)](_0x17562e(-_0x20e3a2._0x1bcc43,-_0x20e3a2._0x30972a)));else(_0x5fe9c0[_0x17562e(-0xc5,-_0x20e3a2._0x46026d)][_0x17562e(-0x28,-0x5a)](_0x31ed4e[_0x17562e(-0x3e,-_0x20e3a2._0x563b9f)])||_0x5fe9c0[_0x17562e(-_0x20e3a2._0x2bd2e6,-_0x20e3a2._0x5a1bf0)]['includes'](_0x31ed4e[_0x1e6e0c(-0x1e3,-_0x20e3a2._0x436ab1)]))&&(_0x3d7ef5=ErrorType[_0x1e6e0c(-0x176,-_0x20e3a2._0x5d6467)],_0x443c63[_0x1e6e0c(-_0x20e3a2._0x43617a,-0x1e3)](_0x31ed4e[_0x17562e(-0x34,-0x74)]),_0x443c63[_0x1e6e0c(-_0x20e3a2._0x515c50,-_0x20e3a2._0x28ec51)](_0x17562e(-_0x20e3a2._0x3f9d4a,-0xd)));}return _0x31ed4e['NuXXi'](createAnalysisError,_0x5fe9c0[_0x1e6e0c(-0x1ce,-0x203)],_0x3d7ef5,_0x52fbb2,{'cause':_0x5fe9c0,'suggestions':_0x443c63});}async[_0x559f09(-0xc3,-0xe2)+_0xe400d6(-0x172,-0x1a9)](_0xc65c36,_0x2e0738){const _0x45cabf={_0x4751fe:0x246,_0x387248:0x20b,_0x532e72:0x221,_0x34e819:0x215,_0xaa592a:0x201,_0x5c7d3b:0x22c,_0x27709f:0x252,_0x64adcd:0x221,_0x47ed79:0x1bb,_0x3d7f8f:0x204,_0x5a150b:0x193,_0x319046:0x23a,_0x44cf2c:0x210,_0x2fc633:0x248,_0x52e092:0x18b,_0x3adb99:0x1aa,_0x16eb97:0x23b,_0xc6e965:0x216,_0xa3e7f5:0x1fd,_0x174eac:0x260,_0x40e858:0x235,_0x2153ba:0x1c6,_0x1b54ad:0x1a1,_0x1d6dc5:0x1b0,_0x47f0b5:0x21a,_0x5700f2:0x1ce,_0x2425bf:0x213,_0x2c985a:0x203,_0xed5cda:0x1a2,_0x35d550:0x1cc,_0x5151d2:0x1ec,_0x156b09:0x223,_0x4701eb:0x1ca,_0x4f6e40:0x279,_0x704d96:0x26e,_0x96375e:0x19a,_0x2ce97c:0x1eb,_0x53cd5f:0x1f2,_0x3ac59e:0x1aa,_0x3f843e:0x214,_0x1185b3:0x232,_0x264b3c:0x18f,_0x3b527a:0x206,_0x1868ac:0x1ff,_0x19f723:0x228,_0x524403:0x1eb,_0x1f2452:0x270,_0x702941:0x180,_0x24d74f:0x1f4,_0x2e8e3a:0x208,_0x4a1919:0x1a7,_0x25d39b:0x1a8,_0x245490:0x1ad,_0x3a741b:0x1d9,_0x261ef1:0x1c4,_0x4d9e9c:0x201,_0x40ccbc:0x1ef,_0x31206c:0x1e4,_0x22da38:0x235,_0x198df4:0x224,_0x2551be:0x1b0,_0x18f415:0x1b5,_0x5ac3af:0x1ea,_0x42d49a:0x142,_0x40dda6:0x18a},_0xf80762={_0x4882c9:0x109},_0x392d56={_0x25121f:0xc0},_0x22ffb0={};_0x22ffb0[_0xf43175(-_0x45cabf._0x4751fe,-0x26e)]=_0x50af34(-0x21a,-_0x45cabf._0x387248)+_0xf43175(-_0x45cabf._0x532e72,-_0x45cabf._0x34e819),_0x22ffb0[_0xf43175(-_0x45cabf._0xaa592a,-_0x45cabf._0x5c7d3b)]='FILE_ACCES'+'S',_0x22ffb0[_0xf43175(-0x1e7,-0x1f2)]=_0x50af34(-0x16f,-0x1b3),_0x22ffb0[_0xf43175(-_0x45cabf._0x27709f,-_0x45cabf._0x64adcd)]=_0x50af34(-_0x45cabf._0x47ed79,-_0x45cabf._0x3d7f8f),_0x22ffb0[_0x50af34(-0x19c,-_0x45cabf._0x5a150b)]=_0x50af34(-_0x45cabf._0x319046,-0x1f2),_0x22ffb0['lbtLf']=_0xf43175(-_0x45cabf._0x44cf2c,-0x248)+_0xf43175(-_0x45cabf._0x2fc633,-0x25a),_0x22ffb0[_0x50af34(-_0x45cabf._0x52e092,-0x190)]=_0x50af34(-_0x45cabf._0x3adb99,-0x184),_0x22ffb0['fxFtA']=_0xf43175(-0x21d,-_0x45cabf._0x16eb97),_0x22ffb0[_0xf43175(-_0x45cabf._0xc6e965,-_0x45cabf._0xa3e7f5)]='medium',_0x22ffb0[_0xf43175(-0x281,-0x24c)]=_0xf43175(-0x2a4,-_0x45cabf._0x174eac),_0x22ffb0['emoGQ']=_0xf43175(-_0x45cabf._0x40e858,-0x246),_0x22ffb0[_0x50af34(-_0x45cabf._0x2153ba,-_0x45cabf._0x1b54ad)]=_0x50af34(-0x22d,-0x20d),_0x22ffb0[_0x50af34(-0x1a0,-_0x45cabf._0x1d6dc5)]=_0xf43175(-_0x45cabf._0x47f0b5,-0x1ff),_0x22ffb0[_0xf43175(-_0x45cabf._0x5700f2,-_0x45cabf._0x2425bf)]='bykjJ',_0x22ffb0['UQlbA']=_0xf43175(-0x1c2,-_0x45cabf._0x2c985a),_0x22ffb0[_0xf43175(-_0x45cabf._0xed5cda,-0x1da)]=_0xf43175(-_0x45cabf._0x35d550,-_0x45cabf._0x5151d2);const _0x2bda95=_0x22ffb0;if(!_0xc65c36[_0xf43175(-0x22c,-_0x45cabf._0x156b09)+'e']){if(_0x2bda95[_0xf43175(-_0x45cabf._0x4701eb,-0x213)]!==_0x2bda95[_0xf43175(-0x1c5,-_0x45cabf._0x2425bf)])_0x490e9d[_0x2bda95[_0xf43175(-_0x45cabf._0x4f6e40,-_0x45cabf._0x704d96)]]='INPUT_VALI'+'DATION',_0x501353[_0x2bda95['Dwjmf']]=_0x2bda95['Dwjmf'],_0x1ef7f4['NETWORK']=_0x2bda95[_0x50af34(-0x1df,-_0x45cabf._0x96375e)],_0x930688[_0x50af34(-0x1b6,-0x18b)]='PARSING',_0x5f4d35['ANALYSIS']=_0x2bda95['ncHBF'],_0x4d061d[_0x2bda95[_0xf43175(-0x1d2,-_0x45cabf._0x2ce97c)]]=_0x50af34(-0x1aa,-_0x45cabf._0x53cd5f),_0x3ccc1e[_0x2bda95[_0x50af34(-0x1db,-_0x45cabf._0x3ac59e)]]=_0x50af34(-0x1b4,-0x1f0)+'GEMENT',_0x2c4ce1['INTEGRATIO'+'N']=_0xf43175(-_0x45cabf._0x3f843e,-_0x45cabf._0x1185b3)+'N',_0x4f735d[_0x2bda95[_0x50af34(-_0x45cabf._0x264b3c,-0x190)]]=_0x2bda95['AsPVD'];else{const _0x154b54={};return _0x154b54[_0xf43175(-_0x45cabf._0x3b527a,-0x201)]=![],_0x154b54;}}function _0xf43175(_0x5a2ef4,_0x48a9dd){return _0xe400d6(_0x5a2ef4,_0x48a9dd- -_0x392d56._0x25121f);}function _0x50af34(_0x4602ba,_0x15282e){return _0x559f09(_0x4602ba,_0x15282e- -_0xf80762._0x4882c9);}for(const _0x5a702e of this[_0xf43175(-_0x45cabf._0x1868ac,-0x1f7)+_0xf43175(-0x252,-_0x45cabf._0x19f723)]){if(_0x2bda95['UQlbA']!==_0x50af34(-_0x45cabf._0x524403,-0x1ab))_0x4f3b6a[_0x2bda95[_0xf43175(-0x244,-_0x45cabf._0x1f2452)]]='low',_0xd67664[_0x50af34(-0x195,-_0x45cabf._0x702941)]=_0x2bda95[_0x50af34(-0x182,-0x1a5)],_0x4de6e5[_0x2bda95[_0x50af34(-0x226,-_0x45cabf._0x24d74f)]]=_0x2bda95[_0xf43175(-0x23a,-0x25e)],_0x520de4[_0x2bda95['kGgnq']]=_0x2bda95[_0xf43175(-0x254,-_0x45cabf._0x2e8e3a)];else{if(_0x5a702e[_0x50af34(-_0x45cabf._0x4a1919,-_0x45cabf._0x25d39b)](_0xc65c36)){if(_0xf43175(-_0x45cabf._0x245490,-0x1ec)===_0x2bda95[_0x50af34(-0x134,-0x182)])try{const _0x4ed91c=await _0x5a702e[_0x50af34(-0x1d6,-_0x45cabf._0x3a741b)](_0xc65c36,_0x2e0738);if(_0x4ed91c[_0xf43175(-_0x45cabf._0x261ef1,-_0x45cabf._0x4d9e9c)]){const _0x2a5ccb={};return _0x2a5ccb[_0xf43175(-0x1d3,-0x201)]=!![],_0x2a5ccb[_0x50af34(-0x226,-0x201)]=_0x4ed91c,_0x2a5ccb['strategy']=_0x5a702e[_0x50af34(-_0x45cabf._0x40ccbc,-_0x45cabf._0x31206c)+'n'],_0x2a5ccb;}}catch(_0x309be3){console['warn'](_0x50af34(-0x1e5,-0x1dc)+_0x5a702e[_0x50af34(-0x21c,-0x1e4)+'n'],_0x309be3);}else _0x53e6d5[_0xf43175(-_0x45cabf._0x22da38,-_0x45cabf._0x198df4)](_0x50af34(-_0x45cabf._0x2551be,-_0x45cabf._0x18f415)+_0x6065c6[_0x50af34(-0x213,-_0x45cabf._0x5ac3af)][_0x50af34(-_0x45cabf._0x42d49a,-_0x45cabf._0x40dda6)+'e']());}}}const _0x54c490={};return _0x54c490[_0xf43175(-0x217,-_0x45cabf._0xaa592a)]=![],_0x54c490;}[_0xe400d6(-0x1c6,-0x195)](_0x1b129f){const _0x25b5ce={_0x4a6ced:0x36c,_0x477cd6:0x396,_0x18c453:0x315,_0x4ecb8a:0x366,_0x3b3435:0x23c},_0x450f88={_0x3f82d1:0x4ca},_0x52f40b={_0x500640:0x184},_0x9cae88={};_0x9cae88['pKeuD']=function(_0x19b695,_0x2eddc6){return _0x19b695>_0x2eddc6;};const _0x4c3fc1=_0x9cae88;function _0x5a9a2f(_0x57122e,_0xa8b3d8){return _0x559f09(_0x57122e,_0xa8b3d8- -_0x52f40b._0x500640);}this['errorLog']['push'](_0x1b129f);function _0x3f57ab(_0x3d3c39,_0x133ec9){return _0xe400d6(_0x133ec9,_0x3d3c39-_0x450f88._0x3f82d1);}_0x4c3fc1['pKeuD'](this[_0x3f57ab(0x371,0x38d)]['length'],0x4*-0x2de+-0x8*-0x4d8+-0x1ae4)&&(_0x3f57ab(_0x25b5ce._0x4a6ced,_0x25b5ce._0x477cd6)===_0x3f57ab(0x32d,_0x25b5ce._0x18c453)?_0x5cb7b7[_0x3f57ab(_0x25b5ce._0x4ecb8a,0x38a)]('⚠️\x20无法自动恢复'):this[_0x5a9a2f(-0x263,-_0x25b5ce._0x3b3435)]=this['errorLog']['slice'](-(0x281*-0x1+0x1843*-0x1+-0x1*-0x1af6)));}[_0xe400d6(-0x126,-0x114)+_0x559f09(-0x10c,-0xcd)](_0x5ddeae,_0x4a8785){const _0x2f570f={_0x3f99a3:0x54d,_0x5f386c:0x44,_0x44c09c:0xaf,_0x21e49e:0x591,_0x18863f:0x578,_0x5abcf8:0xd8,_0x46d084:0x118,_0x2f7fe0:0x58,_0x55d74a:0x559,_0x5210b8:0x51d,_0x43fa2c:0xad,_0x36ab07:0xab,_0x187278:0xef,_0x4c19b9:0xa8,_0x280d15:0x549,_0x37e9b6:0x83,_0x5201c9:0x5bb,_0x102b01:0x57d,_0x3b2232:0x77,_0x3c917b:0xb6,_0x2956a0:0x5cb,_0x4703be:0xc3,_0x447067:0x97},_0x5508d6={_0x1aa863:0x59c},_0x151300={_0x3f1d5b:0xaa},_0x5840fe={};function _0x5706f7(_0x222c76,_0x11cabb){return _0xe400d6(_0x11cabb,_0x222c76-_0x151300._0x3f1d5b);}_0x5840fe['nnkLA']=_0x1c815a(_0x2f570f._0x3f99a3,0x522);const _0x40601d=_0x5840fe,_0x473619=[];_0x473619['push']('❌\x20'+_0x5ddeae[_0x5706f7(-0x76,-_0x2f570f._0x5f386c)]+':\x20'+_0x5ddeae['message']);function _0x1c815a(_0xea1c8d,_0x50561a){return _0xe400d6(_0x50561a,_0xea1c8d-0x6cd);}return _0x5ddeae['severity']===ErrorSeverity['CRITICAL']&&(_0x40601d[_0x5706f7(-0xa5,-_0x2f570f._0x44c09c)]===_0x1c815a(0x54d,_0x2f570f._0x21e49e)?_0x473619[_0x1c815a(0x569,_0x2f570f._0x18863f)](_0x5706f7(-0xa3,-0x8c)+_0x5ddeae[_0x5706f7(-_0x2f570f._0x5abcf8,-_0x2f570f._0x46d084)][_0x5706f7(-0x78,-_0x2f570f._0x2f7fe0)+'e']()):_0x3cfabc[_0x5706f7(-0x85,-0x72)](_0x1c815a(_0x2f570f._0x55d74a,_0x2f570f._0x5210b8)+_0x3918ba[_0x5706f7(-0xd2,-_0x2f570f._0x43fa2c)+'n'],_0x3c77d9)),_0x4a8785[_0x1c815a(0x58c,_0x2f570f._0x21e49e)]?_0x473619['push'](_0x5706f7(-0xae,-_0x2f570f._0x36ab07)+(_0x4a8785[_0x5706f7(-_0x2f570f._0x187278,-_0x2f570f._0x4c19b9)]?.[_0x1c815a(_0x2f570f._0x280d15,0x58c)]||'使用恢复策略')):_0x473619['push'](_0x5706f7(-_0x2f570f._0x37e9b6,-0x95)),_0x5ddeae[_0x1c815a(_0x2f570f._0x5201c9,_0x2f570f._0x102b01)+'s']['length']>0x6c9+0x1*0x7eb+-0xeb4*0x1&&(_0x473619['push'](_0x5706f7(-_0x2f570f._0x3b2232,-_0x2f570f._0x3c917b)),_0x5ddeae[_0x1c815a(0x5bb,_0x2f570f._0x2956a0)+'s'][_0x5706f7(-_0x2f570f._0x4703be,-_0x2f570f._0x447067)](_0x7c4e5=>{function _0x521bf8(_0xff53c8,_0x4e51ba){return _0x5706f7(_0x4e51ba-_0x5508d6._0x1aa863,_0xff53c8);}_0x473619['push'](_0x521bf8(0x546,0x51f)+_0x7c4e5);})),_0x473619[_0x5706f7(-0xe5,-_0x2f570f._0x4c19b9)]('\x0a');}[_0xe400d6(-0x175,-0x13c)](_0x4847e2){return new Promise(_0x4c804c=>setTimeout(_0x4c804c,_0x4847e2));}[_0xe400d6(-0x14b,-0x16b)+_0x559f09(-0x41,-0x88)](){const _0x298766={_0x42c50d:0x1e2,_0x2351a7:0x21c,_0x49cbae:0x1ea,_0x2fb791:0x1dc,_0x16f0e4:0x16c,_0x42b29b:0x18b,_0x194231:0x1c2};function _0x4333d7(_0x1f1c25,_0x3358bb){return _0xe400d6(_0x3358bb,_0x1f1c25-0x34e);}function _0x18bff0(_0x3ab551,_0x1221bc){return _0xe400d6(_0x1221bc,_0x3ab551-0x33b);}const _0x37d6a7={};_0x37d6a7[_0x4333d7(0x1fd,0x23c)]=function(_0x5db9cd,_0x2aa0c1){return _0x5db9cd+_0x2aa0c1;};const _0x265dc6=_0x37d6a7,_0x479075={},_0x175c3b={};for(const _0x223011 of this[_0x18bff0(_0x298766._0x42c50d,0x20e)]){_0x479075[_0x223011[_0x4333d7(0x22e,_0x298766._0x2351a7)]]=_0x265dc6[_0x18bff0(_0x298766._0x49cbae,_0x298766._0x2fb791)](_0x479075[_0x223011['type']]||0xb07+0x3a*-0x6+-0x9ab,0xe3+-0x1dd8*-0x1+-0x39*0x8a),_0x175c3b[_0x223011[_0x4333d7(0x1cc,0x19e)]]=(_0x175c3b[_0x223011[_0x18bff0(0x1b9,_0x298766._0x16f0e4)]]||-0x3d*-0x67+-0x227d+0x9f2)+(0x17c8+0x189f+-0x1*0x3066);}return{'total':this['errorLog'][_0x4333d7(0x1c5,_0x298766._0x42b29b)],'byType':_0x479075,'bySeverity':_0x175c3b,'recent':this[_0x18bff0(0x1e2,_0x298766._0x194231)]['slice'](-(-0xe8a*0x1+0x143e+-0x5aa))};}async[_0xe400d6(-0x102,-0x145)+'rLog'](_0x1fd8e3){const _0x56fc59={_0x2f08f1:0x1fe,_0x431ba4:0x16d},_0x2e8131={_0x2206bb:0x13a},_0x34803a={_0xde6a9a:0x2bf},_0x42dd15={'OLgya':function(_0xb979f9,_0x384b7c,_0x48659d){return _0xb979f9(_0x384b7c,_0x48659d);}};function _0x42ec84(_0x20d82e,_0xd3f5e1){return _0xe400d6(_0x20d82e,_0xd3f5e1-_0x34803a._0xde6a9a);}const _0x154e0b=this['getErrorSt'+'ats'](),_0x1e3763={'timestamp':new Date()[_0x6d33e7(-0x1e9,-_0x56fc59._0x2f08f1)+'g'](),'stats':_0x154e0b,'errors':this[_0x42ec84(0x125,0x166)][_0x42ec84(0x172,_0x56fc59._0x431ba4)](_0x1a44af=>({'message':_0x1a44af['message'],'type':_0x1a44af[_0x42ec84(0x184,0x19f)],'severity':_0x1a44af[_0x42ec84(0x128,0x13d)],'timestamp':_0x1a44af[_0x6d33e7(-0x217,-0x22f)],'context':_0x1a44af[_0x6d33e7(-0x278,-0x23d)],'suggestions':_0x1a44af['suggestion'+'s']}))};function _0x6d33e7(_0x313c46,_0x5a589f){return _0x559f09(_0x313c46,_0x5a589f- -_0x2e8131._0x2206bb);}await _0x42dd15['OLgya'](writeFile,_0x1fd8e3,JSON[_0x6d33e7(-0x19f,-0x1ed)](_0x1e3763,null,0x12df+0xd70+-0x204d));}[_0xe400d6(-0x150,-0x15b)+_0xe400d6(-0x193,-0x185)](){const _0x2f3aed={_0x2c8124:0x143};function _0x555aa4(_0x7271fb,_0x10f872){return _0x559f09(_0x7271fb,_0x10f872- -_0x2f3aed._0x2c8124);}this[_0x555aa4(-0x238,-0x1fb)]=[];}}export const globalErrorHandler=new ErrorHandler();function _0x559f09(_0xa4aa49,_0x83cd9d){return _0x59d3(_0x83cd9d- -0x24f,_0xa4aa49);}export function withErrorHandling(_0xadff21,_0x55e136=ErrorType['UNKNOWN']){const _0x33c462={_0x361225:0x1b4,_0x32ef09:0x1ab,_0x175c62:0x183,_0xe99c34:0x203};return async(..._0x1e6fe8)=>{const _0x25655e={_0x5dd462:0x35d};function _0x42e5fa(_0x1fe90a,_0x5020c2){return _0x59d3(_0x1fe90a- -_0x25655e._0x5dd462,_0x5020c2);}function _0x536f59(_0x4a3aeb,_0x4b839f){return _0x59d3(_0x4a3aeb- -0x35a,_0x4b839f);}try{return await _0xadff21(..._0x1e6fe8);}catch(_0x29ba3a){const _0x51e0d1=createAnalysisError(_0x29ba3a instanceof Error?_0x29ba3a['message']:String(_0x29ba3a),_0x55e136,ErrorSeverity[_0x42e5fa(-0x185,-0x19b)],{'cause':_0x29ba3a instanceof Error?_0x29ba3a:undefined}),_0x1c7277=await globalErrorHandler[_0x536f59(-_0x33c462._0x361225,-0x19d)+'r'](_0x51e0d1);if(_0x1c7277[_0x536f59(-_0x33c462._0x32ef09,-_0x33c462._0x175c62)]&&_0x1c7277[_0x536f59(-_0x33c462._0xe99c34,-0x235)]){}throw _0x51e0d1;}};}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
export declare const EXTENDED_ANALYSIS_PHASES: readonly ["requirement_analysis", "demand_analysis", "competitor_analysis", "feature_analysis", "tech_selection"];
|
|
1
2
|
export declare const ANALYSIS_PHASES: readonly ["demand_analysis", "competitor_analysis", "feature_analysis", "tech_selection"];
|
|
2
3
|
export declare const PIPELINE_PHASES: readonly ["discuss", "plan", "execute", "verify"];
|
|
4
|
+
export type ExtendedAnalysisPhase = (typeof EXTENDED_ANALYSIS_PHASES)[number];
|
|
3
5
|
export type AnalysisPhase = (typeof ANALYSIS_PHASES)[number];
|
|
4
6
|
export type PipelinePhase = (typeof PIPELINE_PHASES)[number];
|
|
5
|
-
export type Phase = AnalysisPhase | PipelinePhase | string;
|
|
6
|
-
export declare const PHASES: readonly ["demand_analysis", "competitor_analysis", "feature_analysis", "tech_selection"];
|
|
7
|
+
export type Phase = ExtendedAnalysisPhase | AnalysisPhase | PipelinePhase | string;
|
|
8
|
+
export declare const PHASES: readonly ["requirement_analysis", "demand_analysis", "competitor_analysis", "feature_analysis", "tech_selection"];
|
|
7
9
|
export type AgentState = 'idle' | Phase | 'completed';
|
|
8
10
|
export interface AgentContext {
|
|
9
11
|
agentId: string;
|
package/dist/types/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1c093f,_0x54f892){const _0x9aeeb9={_0x2a5930:0x69,_0x2f30:0x79,_0x268311:0x84,_0x516d8d:0x70,_0x376184:0x6b,_0x43272a:0x6f,_0x30cdd7:0x7b,_0x3fd7bb:0x77},_0xdbffa4={_0x41f02f:0x187};function _0x47d455(_0x1a1662,_0x89c6e8){return _0x4aef(_0x89c6e8- -_0xdbffa4._0x41f02f,_0x1a1662);}const _0x272d5b=_0x1c093f();function _0x1d9ecf(_0x149613,_0x3204b0){return _0x4aef(_0x149613- -0x188,_0x3204b0);}while(!![]){try{const _0x346115=-parseInt(_0x47d455(0x69,0x6d))/(0x599+-0x1706*-0x1+-0x63*0x4a)*(-parseInt(_0x47d455(0x62,_0x9aeeb9._0x2a5930))/(-0x16a7+0x1bfb+-0x552))+parseInt(_0x1d9ecf(_0x9aeeb9._0x2f30,_0x9aeeb9._0x268311))/(-0x2233+-0x4a*-0x68+0x426)*(parseInt(_0x47d455(0x71,0x7c))/(-0xed1+-0x1a83+-0x188*-0x1b))+parseInt(_0x47d455(_0x9aeeb9._0x2a5930,_0x9aeeb9._0x516d8d))/(-0x2446+-0x7*0x33d+0x3af6)+parseInt(_0x47d455(_0x9aeeb9._0x376184,_0x9aeeb9._0x376184))/(0x2*-0xfc9+0x6*-0x3dc+0xdb*0x40)+-parseInt(_0x47d455(0x77,_0x9aeeb9._0x43272a))/(-0x6c4*-0x3+0x3*-0x97f+-0x2*-0x41c)+parseInt(_0x1d9ecf(0x78,0x75))/(0x4*0x82e+0x19c7+-0x3*0x137d)+-parseInt(_0x47d455(_0x9aeeb9._0x30cdd7,_0x9aeeb9._0x3fd7bb))/(-0x1d93*-0x1+0x428*0x5+-0x3252);if(_0x346115===_0x54f892)break;else _0x272d5b['push'](_0x272d5b['shift']());}catch(_0x1c6b6a){_0x272d5b['push'](_0x272d5b['shift']());}}}(_0x123e,0x103*0x737+-0xc12aa+0xe419d));function _0x46d270(_0x4c60a4,_0x171737){const _0x501811={_0x1c44b3:0x1e1};return _0x4aef(_0x171737-_0x501811._0x1c44b3,_0x4c60a4);}export const EXTENDED_ANALYSIS_PHASES=[_0x3f3cde(0x5ad,0x5a3)+_0x3f3cde(0x5b6,0x5b0),'demand_ana'+_0x3f3cde(0x5ae,0x5aa),'competitor'+_0x3f3cde(0x5ac,0x5af),_0x46d270(0x3d3,0x3d4)+'alysis',_0x3f3cde(0x5a9,0x5b1)+_0x46d270(0x3ec,0x3e5)];function _0x3f3cde(_0x5d14cf,_0x20b4ce){return _0x4aef(_0x5d14cf-0x3b4,_0x20b4ce);}export const ANALYSIS_PHASES=['demand_ana'+_0x3f3cde(0x5ae,0x5b0),_0x46d270(0x3e3,0x3de)+_0x46d270(0x3d2,0x3d9),_0x3f3cde(0x5a7,0x59f)+_0x46d270(0x3dd,0x3e0),_0x46d270(0x3e0,0x3d6)+_0x3f3cde(0x5b8,0x5bc)];export const PIPELINE_PHASES=[_0x3f3cde(0x5a5,0x5a5),_0x46d270(0x3e1,0x3dc),_0x3f3cde(0x5b0,0x5b9),'verify'];function _0x4aef(_0x89dd63,_0xceb8ea){_0x89dd63=_0x89dd63-(0x2159+0x382*0x4+-0x2d71);const _0x5f2d88=_0x123e();let _0x5461da=_0x5f2d88[_0x89dd63];if(_0x4aef['ekUQLS']===undefined){var _0xdbb59f=function(_0x1d9b60){const _0xf54f40='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2522d4='',_0xf6e22e='';for(let _0x430254=-0x2*-0x10df+0x14*0x33+0xb*-0x36e,_0xde72b2,_0x36a95e,_0x14053c=0xd*0x69+-0x6ac+0x157*0x1;_0x36a95e=_0x1d9b60['charAt'](_0x14053c++);~_0x36a95e&&(_0xde72b2=_0x430254%(-0x1681+-0x883+0x1f08)?_0xde72b2*(-0x1791+0x4*-0x3fb+0x27bd)+_0x36a95e:_0x36a95e,_0x430254++%(0x127*-0x21+0x1992+0xc79))?_0x2522d4+=String['fromCharCode'](0xc51+-0x2*-0x33b+-0x11c8&_0xde72b2>>(-(0x2*-0xfa3+0x235f+0x1*-0x417)*_0x430254&-0xa84+0x541+0x549)):-0x24*-0x22+0x2b6*-0x8+0x2*0x874){_0x36a95e=_0xf54f40['indexOf'](_0x36a95e);}for(let _0xb3f5d8=-0x585+-0x89*-0x36+-0x1761,_0x4fab50=_0x2522d4['length'];_0xb3f5d8<_0x4fab50;_0xb3f5d8++){_0xf6e22e+='%'+('00'+_0x2522d4['charCodeAt'](_0xb3f5d8)['toString'](0xf*-0x1af+0x6d9*-0x5+0x3b8e))['slice'](-(0xfbe+0x61*0x5b+-0x3237));}return decodeURIComponent(_0xf6e22e);};_0x4aef['qXIyHj']=_0xdbb59f,_0x4aef['SWPBjJ']={},_0x4aef['ekUQLS']=!![];}const _0x59ba2c=_0x5f2d88[-0x62*-0x43+-0x2556+-0x88*-0x16],_0x183de3=_0x89dd63+_0x59ba2c,_0x193a94=_0x4aef['SWPBjJ'][_0x183de3];return!_0x193a94?(_0x5461da=_0x4aef['qXIyHj'](_0x5461da),_0x4aef['SWPBjJ'][_0x183de3]=_0x5461da):_0x5461da=_0x193a94,_0x5461da;}function _0x123e(){const _0x42a10d=['mtaXnZu1mKrSqM1fuq','zMvHDhvYzv9HBG','mJqXA3b5ueXL','DgvJAf9ZzwXLyW','mtq4ntC5mLjeD1rUtG','mtK2ndiYmez0rgDOCa','x2fUywX5C2LZ','CMvXDwLYzw1LBG','BhLZAxm','CgXHBG','zxHLy3v0zq','y29TCgv0AxrVCG','mty0mdmXntDduw9lv2K','ywX5C2LZ','mZy3ndq1nM1KAMrjtq','mteWmZa0suvOt25N','Df9HBMfSExnPCW','mte2zLHmsw5l','DgLVBG','ndCXnMfstLfTzG','zgLZy3vZCW'];_0x123e=function(){return _0x42a10d;};return _0x123e();}export const PHASES=EXTENDED_ANALYSIS_PHASES;
|
package/dist/utils/id.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x52297f,_0x32f94c){var _0x24af14={_0x4c0860:0x45,_0x4b365a:0x43,_0x1bbb4a:0x48,_0x58d1b7:0x48,_0x1fc7fd:0x284,_0x1f4878:0x46,_0x4805be:0x27e,_0x15c83d:0x283,_0x1494e1:0x27f},_0x48e597={_0x5b7c8d:0x10f},_0x4f0ee2=_0x52297f();function _0x4e859b(_0x5539d0,_0x1d5dee){return _0x5a30(_0x1d5dee-_0x48e597._0x5b7c8d,_0x5539d0);}function _0xec2126(_0x161fab,_0x2d49df){return _0x5a30(_0x2d49df- -0x1b9,_0x161fab);}while(!![]){try{var _0x3a7f92=parseInt(_0xec2126(-_0x24af14._0x4c0860,-_0x24af14._0x4b365a))/(-0x19d*-0xa+0x9*-0x5d+-0x66e*0x2)+parseInt(_0x4e859b(0x278,0x27d))/(-0x11a5+-0x1821+0x29c8)+parseInt(_0xec2126(-_0x24af14._0x1bbb4a,-_0x24af14._0x58d1b7))/(-0x5*0x190+0xa39+-0x266)+parseInt(_0x4e859b(0x283,_0x24af14._0x1fc7fd))/(0x38f+0x527*0x3+-0x1300)*(parseInt(_0xec2126(-0x4a,-_0x24af14._0x1f4878))/(0x12e5+-0xa69+-0x877))+-parseInt(_0xec2126(-0x4e,-0x4c))/(-0x16a6+-0x886+-0x6*-0x533)+-parseInt(_0xec2126(-0x46,-0x47))/(-0x969*0x1+0xac1+-0x151)*(parseInt(_0x4e859b(0x279,_0x24af14._0x4805be))/(-0x1e1b+-0xf54+0x2d77))+-parseInt(_0x4e859b(_0x24af14._0x15c83d,_0x24af14._0x1494e1))/(0x2357+0x97*-0x1b+-0x1361);if(_0x3a7f92===_0x32f94c)break;else _0x4f0ee2['push'](_0x4f0ee2['shift']());}catch(_0xacbbe8){_0x4f0ee2['push'](_0x4f0ee2['shift']());}}}(_0x16e1,-0x6fb9b*-0x2+-0x65*-0x28de+-0x1*0x14b593));import{nanoid}from'nanoid';function _0x5a30(_0x4f4ddb,_0x277603){_0x4f4ddb=_0x4f4ddb-(0xe8c+0x7*0x131+-0x1576);var _0x581028=_0x16e1();var _0x33ee24=_0x581028[_0x4f4ddb];if(_0x5a30['iLteAM']===undefined){var _0x59147=function(_0x5a9dbd){var _0xc80a66='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x4888aa='',_0x3c820d='';for(var _0x5cd9a9=-0x2f*-0x9a+-0xbbb+0x1*-0x108b,_0xbd07a9,_0x1a2710,_0x123c92=0xe1a+0x1*0xe36+0x4b8*-0x6;_0x1a2710=_0x5a9dbd['charAt'](_0x123c92++);~_0x1a2710&&(_0xbd07a9=_0x5cd9a9%(0x20d3*0x1+-0x12d1+-0xdfe*0x1)?_0xbd07a9*(0x14b*-0x7+0x1*0x59e+0x3af)+_0x1a2710:_0x1a2710,_0x5cd9a9++%(-0x17d4+-0x290+0x1a*0x104))?_0x4888aa+=String['fromCharCode'](-0x262f+0x1d8b+-0x1*-0x9a3&_0xbd07a9>>(-(-0x3bf+-0x11d8+0x1599)*_0x5cd9a9&-0x2657+0x12*-0x1ad+0x1*0x4487)):0xab4*-0x1+0x2185+-0xb1*0x21){_0x1a2710=_0xc80a66['indexOf'](_0x1a2710);}for(var _0x2182df=0x227c+-0x2551+0x2d5,_0x2420a9=_0x4888aa['length'];_0x2182df<_0x2420a9;_0x2182df++){_0x3c820d+='%'+('00'+_0x4888aa['charCodeAt'](_0x2182df)['toString'](0xf95*-0x1+-0x1*0x1085+0x2*0x1015))['slice'](-(-0x769*0x2+-0x198a+0x285e*0x1));}return decodeURIComponent(_0x3c820d);};_0x5a30['sRtBRl']=_0x59147,_0x5a30['MVtzgb']={},_0x5a30['iLteAM']=!![];}var _0xca1fc0=_0x581028[-0x1138+-0x1*0x70a+-0xcf*-0x1e],_0x43614e=_0x4f4ddb+_0xca1fc0,_0x2bb291=_0x5a30['MVtzgb'][_0x43614e];return!_0x2bb291?(_0x33ee24=_0x5a30['sRtBRl'](_0x33ee24),_0x5a30['MVtzgb'][_0x43614e]=_0x33ee24):_0x33ee24=_0x2bb291,_0x33ee24;}function _0x16e1(){var _0x380c9a=['ntz2Efb5wgO','mZe2mdG0nvj2v0nHzW','mJyYody0nvfeC1Dywq','nZq5oteWq2DWrfrV','mJe4odvMANbWt1q','ywDLBNrF','mtG0DLHPv2jU','mteWoda5m0f0Eg95zq','nZiYmZm2nerUr0vXAG','mtq2ode0ngrHzNflrW'];_0x16e1=function(){return _0x380c9a;};return _0x16e1();}export function generateAgentId(){var _0x25c406={_0x23e6cd:0x421},_0x26de65={_0x1c4fc3:0x2ad};function _0x50e0c9(_0x38b88,_0x53dbb9){return _0x5a30(_0x53dbb9-_0x26de65._0x1c4fc3,_0x38b88);}return _0x50e0c9(0x41e,_0x25c406._0x23e6cd)+nanoid(-0x1*0x12d1+-0x4fe*-0x1+0xddb);}
|
package/package.json
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specops",
|
|
3
|
-
"version": "0.2
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist",
|
|
6
6
|
"bin",
|
|
7
7
|
".opencode",
|
|
8
|
+
"commands",
|
|
9
|
+
"skills",
|
|
8
10
|
"scripts/postinstall.mjs",
|
|
9
11
|
"README.md"
|
|
10
12
|
],
|
|
@@ -23,7 +25,7 @@
|
|
|
23
25
|
"specops": "./bin/specops.js"
|
|
24
26
|
},
|
|
25
27
|
"scripts": {
|
|
26
|
-
"build": "tsc && node scripts/obfuscate.js",
|
|
28
|
+
"build": "tsc || true && node scripts/obfuscate.js",
|
|
27
29
|
"build:clean": "rm -rf dist",
|
|
28
30
|
"dev": "tsx src/cli.ts",
|
|
29
31
|
"test": "vitest run",
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: competitor-search
|
|
3
|
+
description: "竞品搜索 Skill — 根据产品关键词进行多源、多轮次搜索,确保信息收集全面。自动拆分关键词,中英文双语搜索,聚合去重。触发词:'搜索竞品'、'竞品分析'、'找竞品'、'competitor search'。"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 竞品搜索 Skill
|
|
7
|
+
|
|
8
|
+
<role>
|
|
9
|
+
你是一个竞品搜索专家。你的工作是接收产品关键词或描述,拆分成多组搜索词,通过多个搜索渠道进行多轮次搜索,确保竞品信息收集的全面性。
|
|
10
|
+
</role>
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## 核心原则
|
|
15
|
+
|
|
16
|
+
1. **多关键词拆分** — 不要只用一个关键词搜索,拆分为 3-5 组不同角度的关键词
|
|
17
|
+
2. **中英文双语** — 中文关键词自动翻译为英文再搜一轮
|
|
18
|
+
3. **多渠道搜索** — Google 搜索 + GitHub 搜索 + 功能点搜索 API
|
|
19
|
+
4. **多轮次保证** — 每个关键词组至少搜索 2 轮(不同搜索引擎/不同参数)
|
|
20
|
+
5. **聚合去重** — 所有结果汇总后去重排序
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 搜索流程
|
|
25
|
+
|
|
26
|
+
### 第一步:关键词拆分
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
输入: "看板管理工具"
|
|
30
|
+
|
|
31
|
+
拆分结果:
|
|
32
|
+
中文关键词组:
|
|
33
|
+
- "看板管理工具"
|
|
34
|
+
- "项目管理看板"
|
|
35
|
+
- "任务看板 开源"
|
|
36
|
+
- "敏捷看板 工具"
|
|
37
|
+
- "kanban board"
|
|
38
|
+
|
|
39
|
+
英文关键词组(自动翻译+同义词扩展):
|
|
40
|
+
- "kanban board tool"
|
|
41
|
+
- "project management kanban"
|
|
42
|
+
- "task board open source"
|
|
43
|
+
- "agile kanban software"
|
|
44
|
+
- "trello alternative open source"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 第二步:多渠道搜索
|
|
48
|
+
|
|
49
|
+
对每组关键词,通过以下渠道搜索:
|
|
50
|
+
|
|
51
|
+
#### 2a. Web 搜索
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
使用 web_search 或 google_search 工具:
|
|
55
|
+
- 搜索每组关键词
|
|
56
|
+
- 提取搜索结果中的产品名称、URL、简介
|
|
57
|
+
- 中文搜索一轮 + 英文搜索一轮
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
#### 2b. GitHub 搜索
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
使用 gh CLI 搜索:
|
|
64
|
+
gh search repos "<关键词>" --sort stars --limit 20 --json name,url,description,stargazersCount,language
|
|
65
|
+
|
|
66
|
+
对每组关键词执行搜索,参数变化:
|
|
67
|
+
第1轮: --sort stars(按 star 数排序)
|
|
68
|
+
第2轮: --sort updated(按更新时间排序)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
#### 2c. 功能点搜索 API
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
curl -X POST http://115.190.19.198/api/feature/search \
|
|
75
|
+
-H "Content-Type: application/json" \
|
|
76
|
+
-d '{"query": "<关键词>", "top_k": 10, "min_stars": 100}'
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
对每组关键词调用该 API。
|
|
80
|
+
|
|
81
|
+
### 第三步:结果聚合与去重
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
1. 合并所有搜索结果
|
|
85
|
+
2. 按 URL/仓库名 去重
|
|
86
|
+
3. 按 star 数 / 相关度排序
|
|
87
|
+
4. 分类:
|
|
88
|
+
- 直接竞品(功能高度重合)
|
|
89
|
+
- 间接竞品(部分功能重合)
|
|
90
|
+
- 可参考项目(技术方案可借鉴)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 第四步:竞品信息补充
|
|
94
|
+
|
|
95
|
+
对 Top 10 竞品,补充详细信息:
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
对每个竞品:
|
|
99
|
+
- 访问官网/GitHub README 获取:
|
|
100
|
+
- 核心功能列表
|
|
101
|
+
- 技术栈
|
|
102
|
+
- 用户量/Star 数
|
|
103
|
+
- 最近更新时间
|
|
104
|
+
- 是否活跃维护
|
|
105
|
+
- 定价模式(免费/付费/开源)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 输出格式
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
# 竞品搜索报告
|
|
114
|
+
|
|
115
|
+
## 搜索参数
|
|
116
|
+
- 原始关键词: [用户输入]
|
|
117
|
+
- 拆分关键词组: [列表]
|
|
118
|
+
- 搜索渠道: Web搜索 / GitHub / 功能点API
|
|
119
|
+
- 搜索轮次: [N] 轮
|
|
120
|
+
- 结果总数: [N] 条(去重后 [M] 条)
|
|
121
|
+
|
|
122
|
+
## 直接竞品
|
|
123
|
+
|
|
124
|
+
| 排名 | 名称 | 类型 | Star/用户量 | 技术栈 | 核心特点 | 地址 |
|
|
125
|
+
|------|------|------|-----------|--------|---------|------|
|
|
126
|
+
| 1 | ... | SaaS/开源 | ... | ... | ... | ... |
|
|
127
|
+
|
|
128
|
+
## 间接竞品
|
|
129
|
+
|
|
130
|
+
| 名称 | 重合功能 | 差异点 | 地址 |
|
|
131
|
+
|------|---------|--------|------|
|
|
132
|
+
|
|
133
|
+
## 可参考开源项目
|
|
134
|
+
|
|
135
|
+
| 名称 | Star | 语言 | 可借鉴点 | 地址 |
|
|
136
|
+
|------|------|------|---------|------|
|
|
137
|
+
|
|
138
|
+
## 竞品功能对比矩阵
|
|
139
|
+
|
|
140
|
+
| 功能 | 竞品A | 竞品B | 竞品C | 我们 |
|
|
141
|
+
|------|-------|-------|-------|------|
|
|
142
|
+
| 功能1 | ✅ | ✅ | ❌ | ⏳ |
|
|
143
|
+
| 功能2 | ✅ | ❌ | ✅ | ⏳ |
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 状态更新
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
operation: "正在拆分搜索关键词..." skill: "competitor-search"
|
|
152
|
+
operation: "正在 Web 搜索(第N轮)..." skill: "competitor-search"
|
|
153
|
+
operation: "正在 GitHub 搜索..." skill: "competitor-search"
|
|
154
|
+
operation: "正在功能点 API 搜索..." skill: "competitor-search"
|
|
155
|
+
operation: "正在聚合去重搜索结果..." skill: "competitor-search"
|
|
156
|
+
operation: "正在补充竞品详细信息..." skill: "competitor-search"
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 反模式
|
|
162
|
+
|
|
163
|
+
| 违规行为 | 严重性 |
|
|
164
|
+
|---------|--------|
|
|
165
|
+
| 只用一个关键词搜索 | 严重 |
|
|
166
|
+
| 只搜索一个渠道 | 严重 |
|
|
167
|
+
| 不做中英文双语搜索 | 高 |
|
|
168
|
+
| 不去重直接输出 | 中 |
|
|
169
|
+
| 竞品信息不完整(缺 star/技术栈/更新时间) | 中 |
|