pdd-skills 3.1.4 → 3.1.6
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/README.md +947 -1255
- package/config/cdp-test-config.yaml +359 -0
- package/config/test-actions.yaml +712 -0
- package/docs/cdp-testing-framework-design.md +535 -0
- package/docs/local-model-ai-testing-design.md +878 -0
- package/docs/pdd-skills-v3-/346/225/264/344/275/223/345/210/206/346/236/220/346/212/245/345/221/212.md +0 -1
- package/docs/superpowers/specs/2026-05-08-pdd-test-skill-design.md +943 -0
- package/lib/init.js +349 -4
- package/package.json +1 -3
- package/scripts/load_env.py +255 -0
- package/skills/expert/testcase-agent/SKILL.md +358 -0
- package/skills/expert/testcase-agent/_meta.json +1 -0
- package/skills/expert/testcase-agent/evals/default-evals.json +1 -0
- package/skills/expert/testcase-agent/references/cli-reference.md +845 -0
- package/skills/expert/testcase-agent/references/error-handling.md +607 -0
- package/skills/expert/testcase-agent/references/iron-rules-detail.md +622 -0
- package/skills/expert/testcase-agent/references/self-healing-strategy.md +663 -0
- package/skills/expert/testcase-agent/templates/report-template.html +396 -0
- package/skills/expert/testcase-modeler/README.md +345 -0
- package/skills/expert/testcase-modeler/SKILL.md +653 -0
- package/skills/expert/testcase-modeler/_meta.json +1 -0
- package/skills/expert/testcase-modeler/evals/default-evals.json +1 -0
- package/skills/expert/testcase-modeler/examples/asset-eval-apply.env +8 -0
- package/skills/expert/testcase-modeler/examples/asset-eval-apply.yaml +171 -0
- package/skills/expert/testcase-modeler/examples/login-flow.env +7 -0
- package/skills/expert/testcase-modeler/examples/login-flow.yaml +171 -0
- package/skills/expert/testcase-modeler/examples/yaml-format-guide.md +453 -0
- package/skills/expert/expert-testcases/LICENSE +0 -21
- package/skills/expert/expert-testcases/SKILL.md +0 -298
- package/skills/expert/expert-testcases/_meta.json +0 -1
- package/skills/expert/expert-testcases/evals/coverage_targets.md +0 -158
- package/skills/expert/expert-testcases/evals/quality_rubric.md +0 -128
- package/skills/expert/expert-testcases/examples/zccz-1-equity-transfer/snapshot-input.md +0 -91
- package/skills/expert/expert-testcases/examples/zccz-1-equity-transfer/snapshot-output.md +0 -165
- package/skills/expert/expert-testcases/references/api-testing-patterns.md +0 -80
- package/skills/expert/expert-testcases/references/coverage-best-practices.md +0 -66
- package/skills/expert/expert-testcases/references/methodology.md +0 -111
- package/skills/expert/expert-testcases/references/ruoyi-testing-guide.md +0 -101
- package/skills/expert/expert-testcases/references/workflow-testing-patterns.md +0 -95
- package/skills/expert/expert-testcases/scripts/analyze_source.py +0 -178
- package/skills/expert/expert-testcases/scripts/build_matrix.py +0 -192
- package/skills/expert/expert-testcases/scripts/extract_api.py +0 -197
- package/skills/expert/expert-testcases/scripts/validate_output.py +0 -225
- package/skills/expert/expert-testcases/templates/code/python/api_helper.py.j2 +0 -109
- package/skills/expert/expert-testcases/templates/code/python/config.py.j2 +0 -24
- package/skills/expert/expert-testcases/templates/code/python/conftest.py.j2 +0 -151
- package/skills/expert/expert-testcases/templates/code/python/pytest.ini.j2 +0 -19
- package/skills/expert/expert-testcases/templates/code/python/requirements.txt.j2 +0 -10
- package/skills/expert/expert-testcases/templates/code/python/test_approval.py.j2 +0 -80
- package/skills/expert/expert-testcases/templates/code/python/test_boundary.py.j2 +0 -152
- package/skills/expert/expert-testcases/templates/code/python/test_crud.py.j2 +0 -48
- package/skills/expert/expert-testcases/templates/code/python/test_e2e.py.j2 +0 -110
- package/skills/expert/expert-testcases/templates/code/python/test_integration.py.j2 +0 -90
- package/skills/expert/expert-testcases/templates/code/python/test_performance.py.j2 +0 -107
- package/skills/expert/expert-testcases/templates/data/test-data.yaml.j2 +0 -105
- package/skills/expert/expert-testcases/templates/data/users.yaml.j2 +0 -43
- package/skills/expert/expert-testcases/templates/docs/api-testcase.md.j2 +0 -72
- package/skills/expert/expert-testcases/templates/docs/boundary-testcase.md.j2 +0 -52
- package/skills/expert/expert-testcases/templates/docs/e2e-testcase.md.j2 +0 -56
- package/skills/expert/expert-testcases/templates/docs/integration-testcase.md.j2 +0 -56
- package/skills/expert/expert-testcases/templates/docs/performance-testcase.md.j2 +0 -61
- package/skills/expert/expert-testcases/templates/docs/readme.md.j2 +0 -110
- package/skills/expert/expert-testcases/templates/docs/ui-testcase.md.j2 +0 -59
package/README.md
CHANGED
|
@@ -1,1243 +1,1051 @@
|
|
|
1
1
|
# PDD-Skills v3.0
|
|
2
2
|
|
|
3
|
-
[](https://github.com/pdd-skills/pdd-skills)
|
|
4
|
-
[](https://nodejs.org/)
|
|
5
|
-
[](LICENSE)
|
|
6
|
-
[](config/bug-patterns.yaml)
|
|
7
|
-
[](config/prd-rules.yaml)
|
|
8
|
-
[](skills/)
|
|
9
|
-
|
|
10
|
-
> **PRD 驱动的 AI 原生软件开发工作流框架**
|
|
11
|
-
>
|
|
12
3
|
> 从需求文档到代码交付的全链路自动化平台 — **7 大 Phase**、**41+ 技能**、**14 个 Bug 模式**、**30 条 PRD 规则**、**4 级质量门控**
|
|
4
|
+
>
|
|
5
|
+
> **English**: End-to-end automation platform from PRD to code delivery — **7 Phases**, **41+ Skills**, **14 Bug Patterns**, **30 PRD Rules**, **4-Level Quality Gates**
|
|
13
6
|
|
|
14
7
|
***
|
|
15
8
|
|
|
16
|
-
## 目录
|
|
17
|
-
|
|
18
|
-
- [什么是 PDD-Skills?](#什么是-pdd-skills)
|
|
19
|
-
- [核心特性](
|
|
20
|
-
- [快速开始](
|
|
21
|
-
- [CLI 命令大全](#cli
|
|
22
|
-
- [七大 Phase 架构](#七大-phase
|
|
23
|
-
- [Phase 1: 基础设施建设](#phase-1
|
|
24
|
-
- [Phase 2: 核心能力增强](#phase-2
|
|
25
|
-
- [Phase 3: 专家系统扩展](#phase-3
|
|
26
|
-
- [Phase 4: 平台化建设](#phase-4
|
|
27
|
-
- [Phase 5: 智能化升级](#phase-5
|
|
28
|
-
- [Phase 6: 生态建设](#phase-6
|
|
29
|
-
- [📊 Phase 7: PDD Visual Manager](#-phase-7-pdd-visual-manager)
|
|
30
|
-
- [技能系统](
|
|
31
|
-
- [配置中心](
|
|
32
|
-
- [
|
|
33
|
-
- [
|
|
34
|
-
- [
|
|
35
|
-
- [
|
|
36
|
-
- [
|
|
37
|
-
- [
|
|
38
|
-
- [
|
|
39
|
-
- [
|
|
40
|
-
- [
|
|
41
|
-
- [
|
|
9
|
+
## 目录 / Table of Contents
|
|
10
|
+
|
|
11
|
+
- [什么是 PDD-Skills? / What is PDD-Skills?](#什么是-pdd-skills--what-is-pdd-skills)
|
|
12
|
+
- [核心特性 / Core Features](#核心特性--core-features)
|
|
13
|
+
- [快速开始 / Quick Start](#快速开始--quick-start)
|
|
14
|
+
- [CLI 命令大全 / CLI Commands](#cli-命令大全--cli-commands)
|
|
15
|
+
- [七大 Phase 架构 / Seven Phase Architecture](#七大-phase-架构--seven-phase-architecture)
|
|
16
|
+
- [Phase 1: 基础设施建设 / Infrastructure](#phase-1-基础设施建设--infrastructure)
|
|
17
|
+
- [Phase 2: 核心能力增强 / Core Capabilities](#phase-2-核心能力增强--core-capabilities)
|
|
18
|
+
- [Phase 3: 专家系统扩展 / Expert Systems](#phase-3-专家系统扩展--expert-systems)
|
|
19
|
+
- [Phase 4: 平台化建设 / Platformization](#phase-4-平台化建设--platformization)
|
|
20
|
+
- [Phase 5: 智能化升级 / Intelligence Upgrade](#phase-5-智能化升级--intelligence-upgrade)
|
|
21
|
+
- [Phase 6: 生态建设 / Ecosystem](#phase-6-生态建设--ecosystem)
|
|
22
|
+
- [📊 Phase 7: PDD Visual Manager / Visual Manager](#-phase-7-pdd-visual-manager--visual-manager)
|
|
23
|
+
- [技能系统 / Skill System](#技能系统--skill-system)
|
|
24
|
+
- [配置中心 / Configuration Center](#配置中心--configuration-center)
|
|
25
|
+
- [★ 测试用例系统 / Testcase System](#-测试用例系统--testcase-system-new-v320)
|
|
26
|
+
- [API 层 / API Layer](#api-层--api-layer)
|
|
27
|
+
- [MCP 协议集成 / MCP Protocol Integration](#mcp-协议集成--mcp-protocol-integration)
|
|
28
|
+
- [SDK 使用指南 / SDK Guide](#sdk-使用指南--sdk-guide)
|
|
29
|
+
- [智能引擎 / Intelligence Engine](#智能引擎--intelligence-engine)
|
|
30
|
+
- [插件系统 / Plugin System](#插件系统--plugin-system)
|
|
31
|
+
- [OpenClaw 集成 / OpenClaw Integration](#openclaw-集成--openclaw-integration)
|
|
32
|
+
- [项目结构 / Project Structure](#项目结构--project-structure)
|
|
33
|
+
- [配置说明 / Configuration](#配置说明--configuration)
|
|
34
|
+
- [开发指南 / Development Guide](#开发指南--development-guide)
|
|
35
|
+
- [版本历史 / Version History](#版本历史--version-history)
|
|
42
36
|
|
|
43
37
|
***
|
|
44
38
|
|
|
45
|
-
## 什么是 PDD-Skills?
|
|
39
|
+
## 什么是 PDD-Skills? / What is PDD-Skills?
|
|
46
40
|
|
|
47
41
|
**PDD (PRD-Driven Development)** 是一种以 **产品需求文档 (PRD)** 为驱动的 AI 原生软件开发方法论。PDD-Skills 是该方法的完整工具链实现,覆盖从需求分析到代码交付的完整生命周期。
|
|
48
42
|
|
|
49
|
-
|
|
43
|
+
> **English**: **PDD (PRD-Driven Development)** is an AI-native software development methodology driven by **Product Requirement Documents (PRD)**. PDD-Skills is the complete toolchain implementation of this method, covering the full lifecycle from requirements analysis to code delivery.
|
|
44
|
+
|
|
45
|
+
### 核心理念 / Core Philosophy
|
|
50
46
|
|
|
51
47
|
```
|
|
52
48
|
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
53
49
|
│ PRD 文档 │───▶│ 特征提取 │───▶│ 规格生成 │───▶│ 代码实现 │───▶│ 验证报告 │
|
|
54
|
-
│
|
|
55
|
-
│
|
|
50
|
+
│ PRD Doc │ │ Extract │ │ Generate │ │ Implement │ │ Verify │
|
|
51
|
+
│ pdd-ba │ │ pdd-extract │ │ pdd-generate│ │ pdd-implement│ │ pdd-verify │
|
|
56
52
|
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
|
|
57
53
|
▲ ▲ ▲ ▲ ▲
|
|
58
54
|
│ │ │ │ │
|
|
59
55
|
业务分析师 AI Agent AI Agent 开发者 QA
|
|
56
|
+
Business Analyst AI Agent AI Agent Developer QA
|
|
60
57
|
```
|
|
61
58
|
|
|
62
|
-
### 为什么选择 PDD-Skills?
|
|
59
|
+
### 为什么选择 PDD-Skills? / Why PDD-Skills?
|
|
63
60
|
|
|
64
|
-
| 特性
|
|
61
|
+
| 特性 / Feature | 传统开发 / Traditional | TDD | **PDD-Skills** |
|
|
65
62
|
| ----- | ---- | ---- | -------------------------- |
|
|
66
|
-
| 驱动文档
|
|
67
|
-
| AI 原生 | ❌
|
|
68
|
-
| 双语支持
|
|
69
|
-
| 行为塑造
|
|
70
|
-
| 质量门禁
|
|
71
|
-
| 可视化监控 | ❌
|
|
72
|
-
| 插件扩展
|
|
73
|
-
| 多协议
|
|
63
|
+
| 驱动文档 / Driver Doc | 无/弱 / None/Weak | 测试用例 / Test Cases | **PRD 需求文档 / PRD Docs** |
|
|
64
|
+
| AI 原生 / AI Native | ❌ | ❌ | ✅ **深度集成 / Deep Integration** |
|
|
65
|
+
| 双语支持 / Bilingual | ❌ | ❌ | ✅ **🇨🇳🇺🇸 中英双语 / CN/EN** |
|
|
66
|
+
| 行为塑造 / Behavior Shaping | ❌ | ❌ | ✅ **Iron Law + Red Flags** |
|
|
67
|
+
| 质量门禁 / Quality Gates | 弱 / Weak | 强 / Strong | ✅ **5维评分 + Linter / 5D Scoring** |
|
|
68
|
+
| 可视化监控 / Visualization | ❌ | ❌ | ✅ **PDD Visual Manager** |
|
|
69
|
+
| 插件扩展 / Plugins | 有限 / Limited | 有限 / Limited | ✅ **沙箱隔离插件系统 / Sandbox Plugins** |
|
|
70
|
+
| 多协议 / Multi-Protocol | 单一 / Single | 无 / None | ✅ **REST + MCP + gRPC** |
|
|
74
71
|
|
|
75
72
|
***
|
|
76
73
|
|
|
77
|
-
## 核心特性
|
|
74
|
+
## 核心特性 / Core Features
|
|
78
75
|
|
|
79
|
-
### 🎯 七大能力矩阵
|
|
76
|
+
### 🎯 七大能力矩阵 / Seven Capability Matrix
|
|
77
|
+
|
|
78
|
+
> **English**: **PDD-Skills v3.0 Capability Panorama**
|
|
80
79
|
|
|
81
80
|
```
|
|
82
81
|
┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
83
|
-
│ PDD-Skills v3.0 能力全景图
|
|
82
|
+
│ PDD-Skills v3.0 能力全景图 / Capability Panorama │
|
|
84
83
|
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
85
84
|
│ │
|
|
86
85
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
87
86
|
│ │ Phase 1 │ │ Phase 2 │ │ Phase 3 │ │ Phase 4 │ │
|
|
88
87
|
│ │ 基础设施 │ │ 核心能力 │ │ 专家系统 │ │ 平台化 │ │
|
|
89
|
-
│ │
|
|
90
|
-
│ │ • npx安装
|
|
91
|
-
│ │ • Linter
|
|
92
|
-
│ │ • Hook
|
|
93
|
-
│ │ • Evals
|
|
94
|
-
│ │
|
|
95
|
-
│ └──────────┘ │ • Evals
|
|
88
|
+
│ │Infrastructure│Core Capabilities│Expert Systems│Platformization│ │
|
|
89
|
+
│ │ • npx安装 │ │ • 11核心 │ │ • 安全 │ │ • CLI │ │
|
|
90
|
+
│ │ • Linter │ │ 技能 │ │ • 性能 │ │ • API │ │
|
|
91
|
+
│ │ • Hook │ │ • i18n │ │ 专家 │ │ • MCP │ │
|
|
92
|
+
│ │ • Evals │ │ • CSO │ │ │ │ • JS SDK │ │
|
|
93
|
+
│ │ │ │ • Token │ │ │ │ • Python │ │
|
|
94
|
+
│ └──────────┘ │ • Evals │ └──────────┘ │ • gRPC │ │
|
|
96
95
|
│ └──────────┘ └──────────┘ │
|
|
97
96
|
│ │
|
|
98
97
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
99
98
|
│ │ Phase 5 │ │ Phase 6 │ │ Phase 7 │ │
|
|
100
99
|
│ │ 智能化 │ │ 生态建设 │ │ VM可视化 │ │
|
|
101
|
-
│ │
|
|
102
|
-
│ │ •
|
|
103
|
-
│ │ • Token
|
|
104
|
-
│ │ 预算
|
|
105
|
-
│ │ •
|
|
106
|
-
│ │ •
|
|
100
|
+
│ │Intelligence│Ecosystem │Visualization│ │
|
|
101
|
+
│ │ • 三级缓存 │ │ • 插件 │ │ • Web │ │
|
|
102
|
+
│ │ • Token │ │ 系统 │ │ Dashboard│ │
|
|
103
|
+
│ │ 预算 │ │ • OpenClaw│ │ • TUI │ │
|
|
104
|
+
│ │ • 质量评分 │ │ • 社区文档 │ │ • SSE │ │
|
|
105
|
+
│ │ • 迭代优化 │ │ │ │ • Canvas │ │
|
|
107
106
|
│ └──────────┘ └──────────┘ └──────────┘ │
|
|
108
107
|
│ │
|
|
109
108
|
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
110
109
|
```
|
|
111
110
|
|
|
112
|
-
###
|
|
113
|
-
|
|
114
|
-
> **PDD-Skills v3.0.1+ 新增内置脚手架系统**,提供生产级全栈项目模板,支持从零到一的快速项目初始化。
|
|
115
|
-
|
|
116
|
-
#### 可用模板
|
|
117
|
-
|
|
118
|
-
| 模板名称 | 技术栈 | 适用场景 | 状态 |
|
|
119
|
-
| --------------- | --------------------------------------- | ------------- | ----- |
|
|
120
|
-
| **python-fullstack** | FastAPI + Vue3 + TypeScript + TailwindCSS | 企业级全栈 Web 应用 | ✅ 稳定版 |
|
|
121
|
-
|
|
122
|
-
#### 核心能力矩阵
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
126
|
-
│ python-fullstack 模板能力矩阵 │
|
|
127
|
-
├─────────────────────────────────────────────────────────────────────────────┤
|
|
128
|
-
│ │
|
|
129
|
-
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
|
|
130
|
-
│ │ data_permission │ │ oauth_sso │ │ workflow_engine │ │
|
|
131
|
-
│ │ 数据权限引擎 │ │ OAuth2 六平台认证 │ │ 工作流状态机引擎 │ │
|
|
132
|
-
│ │ │ │ │ │ │ │
|
|
133
|
-
│ │ • 组织级数据隔离 │ │ • 企业微信 │ │ • 15种状态定义 │ │
|
|
134
|
-
│ │ • 借调合并机制 │ │ • 钉钉 │ │ • 会签/或签 │ │
|
|
135
|
-
│ │ • 行级权限控制 │ │ • 飞书 │ │ • 条件分支路由 │ │
|
|
136
|
-
│ │ │ │ • 微信公众号 │ │ • 回退/撤回 │ │
|
|
137
|
-
│ │ │ │ • OIDC 通用 │ │ • 定时任务触发 │ │
|
|
138
|
-
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
|
|
139
|
-
│ │
|
|
140
|
-
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
141
|
-
│ │ responsive_ui │ │
|
|
142
|
-
│ │ 响应式前端系统 │ │
|
|
143
|
-
│ │ │ │
|
|
144
|
-
│ │ PC端 (≥1280px) → 平板 (768-1279px) → 大屏手机 (≤767px) │ │
|
|
145
|
-
│ │ 6档断点自适应 · 组件级响应式 · 暗色模式支持 │ │
|
|
146
|
-
│ └─────────────────────────────────────────────────────────┘ │
|
|
147
|
-
│ │
|
|
148
|
-
└─────────────────────────────────────────────────────────────────────────────┘
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
#### 技术栈详情
|
|
152
|
-
|
|
153
|
-
| 层面 | 技术选型 | 版本要求 |
|
|
154
|
-
| ---------- | ---------------------------------------- | --------- |
|
|
155
|
-
| **后端框架** | Python FastAPI | 3.11+ |
|
|
156
|
-
| **ORM** | SQLAlchemy [asyncio] | 2.x+ |
|
|
157
|
-
| **数据库** | MySQL | 8.0+ |
|
|
158
|
-
| **前端框架** | Vue3 + Vite + TypeScript | 3.x+ |
|
|
159
|
-
| **UI 框架** | TailwindCSS | 3.x+ |
|
|
160
|
-
| **容器化** | Docker + docker-compose | 最新稳定版 |
|
|
161
|
-
| **CI/CD** | GitHub Actions / GitLab CI | - |
|
|
162
|
-
|
|
163
|
-
#### 快速使用
|
|
164
|
-
|
|
165
|
-
```bash
|
|
166
|
-
# 1️⃣ 使用脚手架创建全栈项目
|
|
167
|
-
pdd scaffold init my-fullstack-app --template python-fullstack
|
|
168
|
-
|
|
169
|
-
# 2️⃣ 进入项目目录
|
|
170
|
-
cd my-fullstack-app
|
|
171
|
-
|
|
172
|
-
# 3️⃣ 查看模板配置
|
|
173
|
-
cat scaffolds/python-fullstack/template_config.yaml
|
|
174
|
-
|
|
175
|
-
# 4️⃣ 一键启动开发环境(含数据库)
|
|
176
|
-
docker-compose up -d
|
|
177
|
-
|
|
178
|
-
# 5️⃣ 启动后端服务
|
|
179
|
-
cd backend && uvicorn main:app --reload --port 8000
|
|
180
|
-
|
|
181
|
-
# 6️⃣ 启动前端服务
|
|
182
|
-
cd frontend && npm run dev
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
#### 模板目录结构预览
|
|
186
|
-
|
|
187
|
-
```
|
|
188
|
-
scaffolds/python-fullstack/
|
|
189
|
-
├── template_config.yaml # 模板元数据 & Hooks 配置
|
|
190
|
-
├── README.md # 模板使用指南
|
|
191
|
-
├── docs/
|
|
192
|
-
│ ├── architecture-design.md # 架构设计文档
|
|
193
|
-
│ ├── database-design.md # 数据库设计文档
|
|
194
|
-
│ ├── api-design.md # API 设计文档
|
|
195
|
-
│ └── deployment-guide.md # 部署指南
|
|
196
|
-
├── backend/
|
|
197
|
-
│ ├── app/
|
|
198
|
-
│ │ ├── core/ # 核心模块 (data_permission/oauth_sso/workflow_engine)
|
|
199
|
-
│ │ ├── api/ # API 路由层
|
|
200
|
-
│ │ ├── models/ # SQLAlchemy 数据模型
|
|
201
|
-
│ │ ├── schemas/ # Pydantic 请求/响应模型
|
|
202
|
-
│ │ └── services/ # 业务逻辑层
|
|
203
|
-
│ ├── alembic/ # 数据库迁移
|
|
204
|
-
│ ├── tests/ # 单元测试 & 集成测试
|
|
205
|
-
│ └── requirements.txt
|
|
206
|
-
├── frontend/
|
|
207
|
-
│ ├── src/
|
|
208
|
-
│ │ ├── views/ # 页面组件 (响应式布局)
|
|
209
|
-
│ │ ├── components/ # UI 组件库
|
|
210
|
-
│ │ ├── stores/ # Pinia 状态管理
|
|
211
|
-
│ │ ├── api/ # API 请求封装
|
|
212
|
-
│ │ └── utils/ # 工具函数
|
|
213
|
-
│ ├── tailwind.config.js # 6档断点配置
|
|
214
|
-
│ └── vite.config.ts
|
|
215
|
-
├── docker-compose.yml # 一键部署编排
|
|
216
|
-
├── .github/workflows/ # CI 流水线
|
|
217
|
-
└── config/ # 环境配置文件
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
#### 质量保证
|
|
111
|
+
### 📊 关键数据 / Key Metrics
|
|
221
112
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
|
233
|
-
|
|
|
234
|
-
|
|
|
235
|
-
| **核心技能** | 12 个(全双语 🇨🇳🇺🇸) |
|
|
236
|
-
| **专家技能** | 12 个(安全/性能/MySQL/若依/若依权限/Activiti/Vue3/微服务/Bug修复/测试/架构) |
|
|
237
|
-
| **熵减技能** | 4 个(审计 + 架构约束 + 代码质量 + 自动重构) |
|
|
238
|
-
| **OpenSpec技能**| 10 个(变更管理全生命周期) |
|
|
239
|
-
| **PR技能** | 7 个(模板引擎 + 多轮审查 + PR创建/审查/合并/批量/任务管理) |
|
|
240
|
-
| **Bug模式库** | 14 个(7通用 + 7若依专用),集中式管理 `config/bug-patterns.yaml` |
|
|
241
|
-
| **PRD规则** | 30 条(6大类),集中式管理 `config/prd-rules.yaml` |
|
|
242
|
-
| **质量门控** | 4级(Blocker/Critical/Warning/Info)+ 0-100评分 |
|
|
243
|
-
| **协议支持** | RESTful + MCP + gRPC + SSE |
|
|
244
|
-
| **SDK 语言** | JavaScript + Python |
|
|
113
|
+
| 指标 / Metric | 数值 / Value |
|
|
114
|
+
| -------------- | ------------------------------------------------------- |
|
|
115
|
+
| **版本 / Version** | **v3.1.5** |
|
|
116
|
+
| **核心技能 / Core Skills** | 12 个(全双语 / Full Bilingual 🇨🇳🇺🇸) |
|
|
117
|
+
| **专家技能 / Expert Skills** | **14 个**(安全/性能/MySQL/若依/若依权限/Activiti/Vue3/微服务/Bug修复/测试用例建模/测试执行/架构/工程/系统) |
|
|
118
|
+
| **熵减技能 / Entropy Skills** | 4 个(审计 + 架构约束 + 代码质量 + 自动重构) |
|
|
119
|
+
| **OpenSpec技能 / OpenSpec Skills** | 10 个(变更管理全生命周期 / Full Lifecycle) |
|
|
120
|
+
| **PR技能 / PR Skills** | 7 个(模板引擎 + 多轮审查 + PR创建/审查/合并/批量/任务管理) |
|
|
121
|
+
| **Bug模式库 / Bug Patterns** | 14 个(7通用 + 7若依专用),集中式管理 `config/bug-patterns.yaml` |
|
|
122
|
+
| **PRD规则 / PRD Rules** | 30 条(6大类 / 6 Categories),集中式管理 `config/prd-rules.yaml` |
|
|
123
|
+
| **质量门控 / Quality Gates** | 4级(Blocker/Critical/Warning/Info)+ 0-100评分 |
|
|
124
|
+
| **协议支持 / Protocols** | RESTful + MCP + gRPC + SSE |
|
|
125
|
+
| **SDK 语言 / SDK Languages** | JavaScript + Python |
|
|
245
126
|
|
|
246
127
|
***
|
|
247
128
|
|
|
248
|
-
## 快速开始
|
|
129
|
+
## 快速开始 / Quick Start
|
|
249
130
|
|
|
250
|
-
### 安装
|
|
131
|
+
### 安装 / Installation
|
|
251
132
|
|
|
252
133
|
```bash
|
|
253
|
-
#
|
|
134
|
+
# 全局安装(推荐 / Recommended)
|
|
254
135
|
npm install -g pdd-skills
|
|
255
136
|
|
|
256
|
-
# 或本地安装
|
|
137
|
+
# 或本地安装 / Or local install
|
|
257
138
|
npm install pdd-skills
|
|
258
139
|
```
|
|
259
140
|
|
|
260
141
|
<details>
|
|
261
|
-
<summary>⚙️
|
|
142
|
+
<summary>⚙️ 环境要求 / Environment Requirements</summary>
|
|
262
143
|
|
|
263
|
-
- **Node.js**: >= 18.0.0 (ESM 模块支持)
|
|
264
|
-
-
|
|
265
|
-
-
|
|
144
|
+
- **Node.js**: >= 18.0.0 (ESM 模块支持 / ESM Module Support)
|
|
145
|
+
- **操作系统 / OS**: Windows / macOS / Linux
|
|
146
|
+
- **依赖 / Dependencies**: commander ^12.0.0, chalk ^5.3.0, fs-extra ^11.2.0, yaml ^2.3.0
|
|
266
147
|
|
|
267
148
|
</details>
|
|
268
149
|
|
|
269
|
-
### 5 分钟上手
|
|
150
|
+
### 5 分钟上手 / 5-Minute Quickstart
|
|
270
151
|
|
|
271
152
|
```bash
|
|
272
|
-
# 1️⃣ 初始化项目
|
|
153
|
+
# 1️⃣ 初始化项目 / Initialize project
|
|
273
154
|
pdd init my-project
|
|
274
155
|
cd my-project
|
|
275
156
|
|
|
276
|
-
# 2️⃣ 查看可用技能
|
|
157
|
+
# 2️⃣ 查看可用技能 / List available skills
|
|
277
158
|
pdd list --json
|
|
278
159
|
|
|
279
|
-
# 3️⃣ 编写你的 PRD
|
|
160
|
+
# 3️⃣ 编写你的 PRD 文档(或使用模板)/ Write your PRD (or use template)
|
|
280
161
|
cp templates/prd-template.prdx ./my-feature.prdx
|
|
281
162
|
|
|
282
|
-
# 4️⃣ 提取功能特征
|
|
163
|
+
# 4️⃣ 提取功能特征 / Extract features
|
|
283
164
|
npx pdd-skills extract-features ./my-feature.prdx
|
|
284
165
|
|
|
285
|
-
# 5️⃣ 生成开发规格
|
|
166
|
+
# 5️⃣ 生成开发规格 / Generate specifications
|
|
286
167
|
npx pdd-skills generate-spec ./my-feature.prdx -o ./specs
|
|
287
168
|
|
|
288
|
-
# 6️⃣ 基于规格生成代码骨架
|
|
169
|
+
# 6️⃣ 基于规格生成代码骨架 / Generate code skeleton
|
|
289
170
|
pdd generate -s ./specs/spec.md -o ./src --dry-run
|
|
290
171
|
|
|
291
|
-
# 7️⃣ 验证实现
|
|
172
|
+
# 7️⃣ 验证实现 / Verify implementation
|
|
292
173
|
pdd verify -s ./specs/spec.md -c ./src --json
|
|
293
174
|
|
|
294
|
-
# 8️⃣ 生成质量报告
|
|
175
|
+
# 8️⃣ 生成质量报告 / Generate quality report
|
|
295
176
|
pdd report -t html -o ./reports
|
|
296
177
|
```
|
|
297
178
|
|
|
298
|
-
<br />
|
|
299
|
-
|
|
300
|
-
```bash
|
|
301
|
-
```
|
|
302
|
-
|
|
303
179
|
***
|
|
304
180
|
|
|
305
|
-
## CLI 命令大全
|
|
181
|
+
## CLI 命令大全 / CLI Commands
|
|
306
182
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
### 项目管理
|
|
183
|
+
### 项目管理 / Project Management
|
|
310
184
|
|
|
311
185
|
```bash
|
|
312
|
-
pdd init [path] # 初始化项目目录结构
|
|
313
|
-
pdd update [--version] # 更新技能到最新版本
|
|
314
|
-
pdd list [-c category] #
|
|
315
|
-
pdd version # 显示版本信息
|
|
186
|
+
pdd init [path] # 初始化项目目录结构 / Initialize project
|
|
187
|
+
pdd update [--version] # 更新技能到最新版本 / Update to latest
|
|
188
|
+
pdd list [-c category] # 列出所有技能 / List all skills
|
|
189
|
+
pdd version # 显示版本信息 / Show version
|
|
316
190
|
```
|
|
317
191
|
|
|
318
|
-
### 开发流程
|
|
192
|
+
### 开发流程 / Development Workflow
|
|
319
193
|
|
|
320
194
|
```bash
|
|
321
|
-
# 规格与代码
|
|
322
|
-
pdd generate -s spec.md -o ./src --dry-run #
|
|
323
|
-
pdd verify -s spec.md -c ./src --json # 功能验证
|
|
324
|
-
pdd report -t html|json|md -o ./reports # 报告生成
|
|
325
|
-
|
|
326
|
-
# 质量门禁
|
|
327
|
-
pdd linter -t java|js|python|sql|prd|skill|all -f ./src
|
|
328
|
-
pdd eval -c core|expert # 运行评估测试
|
|
329
|
-
pdd token -f ./src # Token 效率分析
|
|
330
|
-
|
|
331
|
-
# 国际化
|
|
332
|
-
pdd i18n -c core|expert|all # 双语合规检查
|
|
333
|
-
pdd cso # 触发准确率分析
|
|
334
|
-
```
|
|
195
|
+
# 规格与代码 / Specification & Code
|
|
196
|
+
pdd generate -s spec.md -o ./src --dry-run # 代码生成(预览模式)/ Code generation (dry run)
|
|
197
|
+
pdd verify -s spec.md -c ./src --json # 功能验证 / Feature verification
|
|
198
|
+
pdd report -t html|json|md -o ./reports # 报告生成 / Report generation
|
|
335
199
|
|
|
336
|
-
|
|
200
|
+
# 质量门禁 / Quality Gates
|
|
201
|
+
pdd linter -t java|js|python|sql|prd|skill|all -f ./src # Linter检查
|
|
202
|
+
pdd eval -c core|expert # 运行评估测试 / Run evals
|
|
203
|
+
pdd token -f ./src # Token 效率分析 / Token analysis
|
|
337
204
|
|
|
338
|
-
|
|
339
|
-
#
|
|
340
|
-
pdd
|
|
341
|
-
pdd dashboard -p 8080 # 自定义端口
|
|
342
|
-
|
|
343
|
-
# Terminal TUI
|
|
344
|
-
pdd tui # 启动 Terminal TUI
|
|
345
|
-
|
|
346
|
-
# VM 数据查询
|
|
347
|
-
pdd vm status # 项目状态摘要
|
|
348
|
-
pdd vm features # 功能点列表
|
|
349
|
-
pdd vm export --format csv # 导出数据
|
|
205
|
+
# 国际化 / Internationalization
|
|
206
|
+
pdd i18n -c core|expert|all # 双语合规检查 / Bilingual compliance
|
|
207
|
+
pdd cso # 触发准确率分析 / Trigger accuracy
|
|
350
208
|
```
|
|
351
209
|
|
|
352
|
-
###
|
|
210
|
+
### 🔥 PDD Visual Manager(新增 / New)
|
|
353
211
|
|
|
354
212
|
```bash
|
|
355
|
-
#
|
|
356
|
-
pdd
|
|
357
|
-
|
|
358
|
-
# 查看可用模板列表
|
|
359
|
-
pdd scaffold list
|
|
360
|
-
|
|
361
|
-
# 查看模板详情
|
|
362
|
-
pdd scaffold info <template-name>
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
### 服务端
|
|
366
|
-
|
|
367
|
-
```bash
|
|
368
|
-
# API 服务器
|
|
369
|
-
pdd api -p 3000 --cors # 启动 RESTful API
|
|
370
|
-
pdd api:dev # 开发模式(CORS全开)
|
|
213
|
+
# Web Dashboard
|
|
214
|
+
pdd dashboard # 启动 Web Dashboard / Start Dashboard
|
|
215
|
+
pdd dashboard -p 8080 # 自定义端口 / Custom port
|
|
371
216
|
|
|
372
|
-
#
|
|
373
|
-
pdd
|
|
374
|
-
pdd openclaw stop
|
|
375
|
-
pdd openclaw status
|
|
376
|
-
pdd openclaw list-tools
|
|
377
|
-
pdd openclaw test [-n tool-name]
|
|
378
|
-
pdd openclaw logs [--tail]
|
|
217
|
+
# Terminal TUI
|
|
218
|
+
pdd tui # 启动 Terminal TUI / Start TUI
|
|
379
219
|
|
|
380
|
-
#
|
|
381
|
-
pdd
|
|
382
|
-
pdd
|
|
383
|
-
pdd
|
|
220
|
+
# VM 数据查询 / VM Data Query
|
|
221
|
+
pdd vm status # 项目状态摘要 / Project status
|
|
222
|
+
pdd vm features # 功能点列表 / Feature list
|
|
223
|
+
pdd vm export --format csv # 导出数据 / Export data
|
|
384
224
|
```
|
|
385
225
|
|
|
386
226
|
***
|
|
387
227
|
|
|
388
|
-
## 七大 Phase 架构
|
|
228
|
+
## 七大 Phase 架构 / Seven Phase Architecture
|
|
389
229
|
|
|
390
|
-
### Phase 1: 基础设施建设
|
|
230
|
+
### Phase 1: 基础设施建设 / Infrastructure
|
|
391
231
|
|
|
392
232
|
提供项目脚手架、质量门禁和工具链基础能力。
|
|
393
233
|
|
|
394
|
-
|
|
234
|
+
> **English**: Provides project scaffolding, quality gates, and toolchain infrastructure.
|
|
235
|
+
|
|
236
|
+
| 组件 / Component | 说明 / Description |
|
|
395
237
|
| ------------- | ---------------------------------------------------------------------------------------------- |
|
|
396
|
-
| **npx
|
|
397
|
-
| **Linter
|
|
398
|
-
| **Hook
|
|
399
|
-
| **Evals
|
|
400
|
-
| **Token
|
|
238
|
+
| **npx 安装机制 / npx Install** | `npx pdd-skills init` 一键初始化 / One-click initialization |
|
|
239
|
+
| **Linter 体系 / Linter System** | Java(Checkstyle+PMD) / JS(ESLint) / Python(Ruff) / SQL(SQLFluff) / Activiti(BPMN) / Skill(Custom) |
|
|
240
|
+
| **Hook 系统 / Hook System** | 7 种事件钩子 / 7 event hooks for custom logic injection |
|
|
241
|
+
| **Evals 框架 / Evals Framework** | 结构/内容/质量/CSO 四种测试类型 / 4 test types |
|
|
242
|
+
| **Token 分析器 / Token Analyzer** | 中英文混合 Token 计数与效率评级 / Bilingual token counting |
|
|
401
243
|
|
|
402
|
-
### Phase 2: 核心能力增强
|
|
244
|
+
### Phase 2: 核心能力增强 / Core Capabilities
|
|
403
245
|
|
|
404
246
|
12 个核心技能 + 五大行为塑造机制。
|
|
405
247
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
|
411
|
-
|
|
|
412
|
-
| `pdd-
|
|
413
|
-
| `pdd-
|
|
414
|
-
| `pdd-
|
|
415
|
-
| `pdd-
|
|
416
|
-
| `pdd-
|
|
417
|
-
| `pdd-
|
|
418
|
-
| `pdd-
|
|
419
|
-
| `pdd-
|
|
420
|
-
| `
|
|
421
|
-
| `pdd-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
### Phase
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
|
449
|
-
|
|
|
450
|
-
|
|
|
451
|
-
|
|
|
452
|
-
|
|
|
453
|
-
|
|
|
454
|
-
|
|
|
455
|
-
|
|
|
456
|
-
|
|
|
457
|
-
|
|
|
458
|
-
|
|
|
459
|
-
| **software-engineer** | 代码实现 / 重构优化 / 设计模式应用 / 测试驱动开发 | 生产级代码,清洁架构,错误处理完善 |
|
|
460
|
-
| **system-architect** | 系统架构设计 / 模块化设计 / 安全最佳实践 / 代码规范 | PEP8/ESLint 标准,项目初始化,技术栈选择 |
|
|
461
|
-
|
|
462
|
-
### Phase 3.5: 熵减治理系统
|
|
463
|
-
|
|
464
|
-
> **对抗系统腐化,持续偿还技术债务**
|
|
465
|
-
|
|
466
|
-
PDD 熵减体系通过 4 个协同技能,实现从审计到重构的闭环治理:
|
|
248
|
+
> **English**: 12 core skills + 5 behavior shaping mechanisms.
|
|
249
|
+
|
|
250
|
+
#### 核心技能列表 / Core Skills List
|
|
251
|
+
|
|
252
|
+
| 技能名称 / Skill Name | 用途 / Purpose | 双语 / Bilingual |
|
|
253
|
+
| ----------------------- | ------------------------ | -- |
|
|
254
|
+
| `pdd-main` | 主入口,协调全部子技能 / Main coordinator | ✅ |
|
|
255
|
+
| `pdd-ba` | 业务分析与需求建模 / Business analysis | ✅ |
|
|
256
|
+
| `pdd-extract-features` | 从 PRD 提取功能点 / Extract features from PRD | ✅ |
|
|
257
|
+
| `pdd-generate-spec` | 生成开发规格文档 / Generate specifications | ✅ |
|
|
258
|
+
| `pdd-implement-feature` | 基于规格实现代码 / Implement code from spec | ✅ |
|
|
259
|
+
| `pdd-verify-feature` | 验证实现符合规格 / Verify implementation | ✅ |
|
|
260
|
+
| `pdd-code-reviewer` | 多维度代码审查 / Multi-dimensional code review | ✅ |
|
|
261
|
+
| `pdd-doc-change` | 变更文档管理 / Document change management | ✅ |
|
|
262
|
+
| `pdd-doc-gardener` | 文档清理与维护 / Document maintenance | ✅ |
|
|
263
|
+
| `pdd-entropy-reduction` | 技术债务治理 / Technical debt governance | ✅ |
|
|
264
|
+
| `official-doc-writer` | 党政机关公文生成 / Official document generation | ✅ |
|
|
265
|
+
| `pdd-vm` | PDD Visual Manager 可视化监控 / Visual monitoring | ✅ |
|
|
266
|
+
|
|
267
|
+
### Phase 3: 专家系统扩展 / Expert Systems
|
|
268
|
+
|
|
269
|
+
| 专家技能 / Expert Skill | 能力范围 / Scope | 特色 / Features |
|
|
270
|
+
| --------------------------- | --------------------------------------- | ---------------------------------------- |
|
|
271
|
+
| **expert-security** | SQL注入/XSS/CSRF/命令注入/路径遍历/SSRF | OWASP Top 10 2021 完整覆盖 |
|
|
272
|
+
| **expert-performance** | CPU/内存/I/O/网络/锁竞争诊断 | HikariCP/Redis多级缓存/G1 GC调优 |
|
|
273
|
+
| **expert-mysql** | SQL优化/索引设计/表结构分析/慢查询诊断 | MySQL官方文档参考,执行计划分析 |
|
|
274
|
+
| **expert-ruoyi** | 若依框架全流程开发/代码生成/权限配置 | 7个若依Bug模式(PATTERN-R001~R007) |
|
|
275
|
+
| **expert-ruoyi-permission** | 若依框架权限配置/权限校验失败诊断 | 四端一致原则 + @PreAuthorize + v-hasPermi |
|
|
276
|
+
| **expert-activiti** | Activiti 7工作流引擎/BPMN 2.0/流程部署 | 流程设计规范 + BPMN校验规则 |
|
|
277
|
+
| **expert-vue3** | Vue3 组件开发/状态管理/性能优化 | Vue3 生态最佳实践 |
|
|
278
|
+
| **expert-springcloud** | 微服务架构/服务治理/配置中心/网关路由 | Spring Cloud Alibaba 全栈解决方案 |
|
|
279
|
+
| **expert-bug-fixer** | Bug 根因分析/修复方案生成/回归测试建议 | 智能诊断 + 修复策略推荐 |
|
|
280
|
+
| **testcase-modeler** | **测试用例建模/自然语言转YAML/零代码测试** | **6条建模规则+智能意图提取+断言自动注入** |
|
|
281
|
+
| **testcase-agent** | **E2E测试执行/Chrome DevTools MCP/自愈引擎** | **5条铁律+4级元素定位+深度网络校验** |
|
|
282
|
+
| **software-architect** | 架构模式设计/技术选型/性能权衡 | 生产级架构设计,60+ 界面组件模式 |
|
|
283
|
+
| **software-engineer** | 代码实现/重构优化/设计模式应用 | 生产级代码,清洁架构 |
|
|
284
|
+
| **system-architect** | 系统架构设计/模块化设计/安全最佳实践 | PEP8/ESLint 标准,项目初始化 |
|
|
285
|
+
|
|
286
|
+
### Phase 4: 平台化建设 / Platformization
|
|
287
|
+
|
|
288
|
+
#### RESTful API 层 / RESTful API Layer
|
|
289
|
+
|
|
290
|
+
| 方法 / Method | 端点 / Endpoint | 说明 / Description |
|
|
291
|
+
| -------- | ------------------ | ------- |
|
|
292
|
+
| GET | `/api/v1/status` | 服务状态 / Service status |
|
|
293
|
+
| GET | `/api/v1/docs` | API 文档 / API docs |
|
|
294
|
+
| GET | `/api/v1/health` | 健康检查 / Health check |
|
|
295
|
+
| GET/POST | `/api/v1/spec/*` | 规格 CRUD / Spec CRUD |
|
|
296
|
+
| POST | `/api/v1/generate` | 代码生成 / Code generation |
|
|
297
|
+
| POST | `/api/v1/verify` | 功能验证 / Feature verification |
|
|
298
|
+
| POST | `/api/v1/report` | 报告生成 / Report generation |
|
|
299
|
+
| GET/POST | `/api/v1/config/*` | 配置管理 / Configuration |
|
|
300
|
+
| GET | `/api/v1/skills` | 技能列表 / Skills list |
|
|
467
301
|
|
|
468
|
-
|
|
469
|
-
|---------|------|---------|
|
|
470
|
-
| **expert-entropy-auditor** | 技术债务审计 / PRD一致性检查 / AI残渣检测 | 每周定时审计、PR合并后、代码提交后 |
|
|
471
|
-
| **expert-arch-enforcer** | 架构约束检查 / 依赖方向验证 / 模块边界监控 | 代码提交后自动触发、架构检查请求 |
|
|
472
|
-
| **expert-code-quality** | 代码审查 / 重构建议 / 设计模式应用 / SOLID原则 | 代码审查请求、质量改进需求 |
|
|
473
|
-
| **expert-auto-refactor** | 自动化重构 / 消除重复 / 简化复杂度 / 模式归集 | 熵减审计后、重构任务分配 |
|
|
302
|
+
### Phase 5: 智能化升级 / Intelligence Upgrade
|
|
474
303
|
|
|
475
|
-
|
|
304
|
+
#### 三级缓存系统 / Three-Level Cache System
|
|
476
305
|
|
|
477
306
|
```
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
307
|
+
请求 / Request → L1 Session Cache (LRU, 内存 / Memory)
|
|
308
|
+
→ MISS → L2 Project Cache (LRU, 内存, 跨会话 / Cross-session)
|
|
309
|
+
→ MISS → L3 Global Cache (LFU, 磁盘 / Disk JSON)
|
|
481
310
|
```
|
|
482
|
-
|
|
483
|
-
### Phase 4: 平台化建设
|
|
484
311
|
|
|
485
|
-
|
|
312
|
+
| 级别 / Level | 策略 / Strategy | 存储 / Storage | TTL | 容量 / Capacity |
|
|
313
|
+
| ---------- | --- | -- | ----- | ----- |
|
|
314
|
+
| L1 Session | LRU | 内存 / Memory | 5min | 100条 |
|
|
315
|
+
| L2 Project | LRU | 内存 / Memory | 30min | 500条 |
|
|
316
|
+
| L3 Global | LFU | 磁盘 / Disk | 2h | 2000条 |
|
|
486
317
|
|
|
487
|
-
####
|
|
318
|
+
#### Token 预算管理 / Token Budget Management
|
|
488
319
|
|
|
489
|
-
|
|
320
|
+
| 阶段 / Phase | 占比 / Ratio | 说明 / Description |
|
|
321
|
+
| -------------- | --- | ------ |
|
|
322
|
+
| analysis | 15% | 需求分析阶段 / Requirements analysis |
|
|
323
|
+
| design | 20% | 规格设计阶段 / Specification design |
|
|
324
|
+
| implementation | 35% | 代码实现阶段 / Implementation |
|
|
325
|
+
| review | 20% | 代码审查阶段 / Code review |
|
|
326
|
+
| verify | 10% | 验证确认阶段 / Verification |
|
|
490
327
|
|
|
491
|
-
|
|
328
|
+
阈值策略 / Threshold: **80% 警告 / Warning** / **95% 阻断 / Block**
|
|
492
329
|
|
|
493
|
-
|
|
330
|
+
#### 代码质量评分 — 五维引擎 / Quality Scoring — Five Dimensions
|
|
494
331
|
|
|
495
|
-
|
|
|
496
|
-
| -------- |
|
|
497
|
-
|
|
|
498
|
-
|
|
|
499
|
-
|
|
|
500
|
-
|
|
|
501
|
-
|
|
|
502
|
-
| POST | `/api/v1/verify` | 功能验证 |
|
|
503
|
-
| POST | `/api/v1/report` | 报告生成 |
|
|
504
|
-
| GET/POST | `/api/v1/config/*` | 配置管理 |
|
|
505
|
-
| GET | `/api/v1/skills` | 技能列表 |
|
|
332
|
+
| 维度 / Dimension | 权重 / Weight | 规则数 / Rules | 评级 / Rating |
|
|
333
|
+
| -------- | --- | --- | ----------------------------------------------- |
|
|
334
|
+
| **可读性 / Readability** | 20% | 7 | 命名规范/函数长度/行长度/圈复杂度/注释覆盖率 |
|
|
335
|
+
| **可维护性 / Maintainability** | 20% | 6 | 重复代码/模块内聚/耦合度/单一职责/死代码 |
|
|
336
|
+
| **健壮性 / Robustness** | 25% | 6 | Null检查/错误处理/边界验证/异步错误/类型检查 |
|
|
337
|
+
| **性能 / Performance** | 15% | 6 | 循环效率/内存分配/I/O操作/字符串拼接/异步模式 |
|
|
338
|
+
| **安全性 / Security** | 20% | 6 | SQL注入/XSS风险/硬编码密钥/输入验证/依赖安全 |
|
|
506
339
|
|
|
507
|
-
|
|
340
|
+
**评级 / Grades**: S≥90 / A≥80 / B≥70 / C≥60 / D≥50 / F<50
|
|
508
341
|
|
|
509
|
-
|
|
342
|
+
### Phase 6: 生态建设 / Ecosystem
|
|
510
343
|
|
|
511
|
-
|
|
344
|
+
#### 插件系统 / Plugin System
|
|
512
345
|
|
|
513
346
|
```
|
|
514
|
-
|
|
515
|
-
├──
|
|
516
|
-
├──
|
|
517
|
-
├──
|
|
518
|
-
├──
|
|
519
|
-
|
|
520
|
-
└── pdd_get_status # 获取状态
|
|
521
|
-
|
|
522
|
-
Resources (4个):
|
|
523
|
-
├── pdd://specs # 规格资源
|
|
524
|
-
├── pdd://features # 功能资源
|
|
525
|
-
├── pdd://skills # 技能资源
|
|
526
|
-
└── pdd://config # 配置资源
|
|
347
|
+
PluginBase (抽象基类 / Abstract Base)
|
|
348
|
+
├── onInstall() 安装后执行一次 / Run once after install
|
|
349
|
+
├── onActivate() 激活时调用 / Called on activation
|
|
350
|
+
├── onDeactivate() 停用时调用 / Called on deactivation
|
|
351
|
+
├── onUninstall() 卸载前清理 / Cleanup before uninstall
|
|
352
|
+
└── onConfigChange() 配置变更响应 / Config change response
|
|
527
353
|
```
|
|
528
354
|
|
|
529
|
-
|
|
355
|
+
**安全沙箱 / Security Sandbox**: Proxy 拦截 fs/net/process/env,四维策略控制
|
|
530
356
|
|
|
531
|
-
|
|
357
|
+
### 📊 Phase 7: PDD Visual Manager / Visual Manager
|
|
532
358
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
| **Python** | `lib/sdk-python/pdd_sdk/` (8文件) | async/await / dataclass / EventEmitter / 纯标准库 |
|
|
359
|
+
> **重要说明 / Important**: PDD Visual Manager 用于 **可视化监控使用 PDD 方法开发的业务项目的运行状态**,而非管理 PDD-Skills 自身的开发任务。
|
|
360
|
+
>
|
|
361
|
+
> **English**: PDD Visual Manager is used for **visual monitoring of business projects developed using the PDD method**, not for managing PDD-Skills' own development tasks.
|
|
537
362
|
|
|
538
|
-
####
|
|
363
|
+
#### 双形态架构图 / Dual-Mode Architecture
|
|
539
364
|
|
|
540
|
-
|
|
365
|
+
```
|
|
366
|
+
┌─────────────────────────────────────────────────────────────────────────────────┐
|
|
367
|
+
│ PDD Visual Manager Architecture │
|
|
368
|
+
├─────────────────────────────────────────────────────────────────────────────────┤
|
|
369
|
+
│ │
|
|
370
|
+
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
|
371
|
+
│ │ Data Layer (数据层 / Data Layer) │ │
|
|
372
|
+
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │ │
|
|
373
|
+
│ │ │ Feature Store│ │ Config Store │ │ Cache Store │ │ Event Bus │ │ │
|
|
374
|
+
│ │ └──────────────┘ └──────────────┘ └──────────────┘ └────────────┘ │ │
|
|
375
|
+
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
|
376
|
+
│ │ │
|
|
377
|
+
│ ▼ │
|
|
378
|
+
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
|
379
|
+
│ │ Service Layer (服务层 / Service Layer) │ │
|
|
380
|
+
│ │ ┌────────────────┐ ┌────────────────┐ ┌──────────────────────────┐ │ │
|
|
381
|
+
│ │ │ HTTP Server │ │ SSE Server │ │ REST API (11端点) │ │ │
|
|
382
|
+
│ │ └────────────────┘ └────────────────┘ └──────────────────────────┘ │ │
|
|
383
|
+
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
|
384
|
+
│ │ │ │
|
|
385
|
+
│ ▼ ▼ │
|
|
386
|
+
│ ┌─────────────────────────────┐ ┌─────────────────────────────────────┐ │
|
|
387
|
+
│ │ Presentation Layer │ │ Presentation Layer │ │
|
|
388
|
+
│ │ ┌───────────────────────┐ │ │ ┌─────────────────────────────┐ │ │
|
|
389
|
+
│ │ │ Web Dashboard │ │ │ │ Terminal TUI │ │ │
|
|
390
|
+
│ │ │ (零依赖 SPA) │ │ │ │ (零依赖 ANSI) │ │ │
|
|
391
|
+
│ │ └───────────────────────┘ │ │ └─────────────────────────────┘ │ │
|
|
392
|
+
│ └─────────────────────────────┘ │ │ │
|
|
393
|
+
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
394
|
+
```
|
|
541
395
|
|
|
542
|
-
|
|
543
|
-
| ------------- | ---------------------------------- |
|
|
544
|
-
| SpecService | GenerateSpec / GetSpec / ListSpecs |
|
|
545
|
-
| CodeService | GenerateCode |
|
|
546
|
-
| VerifyService | VerifyFeature |
|
|
547
|
-
| ReportService | GenerateReport |
|
|
548
|
-
| SkillService | ListSkills / GetSkillInfo |
|
|
549
|
-
| HealthService | Check (标准 gRPC 健康协议) |
|
|
396
|
+
#### Web Dashboard — 4 大视图面板 / 4 View Panels
|
|
550
397
|
|
|
551
|
-
|
|
398
|
+
| 视图 / View | 名称 / Name | 主要内容 / Content |
|
|
399
|
+
| -------- | -------- | ------------------- |
|
|
400
|
+
| Pipeline | 流水线视图 / Pipeline View | 各阶段状态和进度 / Stage status & progress |
|
|
401
|
+
| Kanban | 看板视图 / Kanban View | 功能点开发状态 / Feature development status |
|
|
402
|
+
| Quality | 质量视图 / Quality View | 代码质量指标 / Code quality metrics |
|
|
403
|
+
| System | 系统视图 / System View | 系统运行状态 / System runtime status |
|
|
552
404
|
|
|
553
|
-
|
|
405
|
+
#### Terminal TUI — 快捷键 / Shortcuts
|
|
554
406
|
|
|
555
|
-
|
|
407
|
+
| 按键 / Key | 功能 / Function | 适用场景 / Scenario |
|
|
408
|
+
| -------------- | ------------ | ---------- |
|
|
409
|
+
| `Tab` | 切换到下一个屏幕 / Next screen | 所有屏幕 / All screens |
|
|
410
|
+
| `q` 或 `Ctrl+C` | 退出 TUI / Quit | 所有屏幕 / All screens |
|
|
411
|
+
| `r` 或 `F5` | 强制刷新 / Refresh | 所有屏幕 / All screens |
|
|
412
|
+
| `1` - `4` | 直接跳转到指定屏幕 / Jump to screen | 所有屏幕 / All screens |
|
|
413
|
+
| `/` | 打开搜索框 / Search | 支持搜索的屏幕 / Searchable screens |
|
|
556
414
|
|
|
557
|
-
|
|
558
|
-
请求 → L1 Session Cache (LRU, 内存)
|
|
559
|
-
→ MISS → L2 Project Cache (LRU, 内存, 跨会话共享)
|
|
560
|
-
→ MISS → L3 Global Cache (LFU, 磁盘JSON持久化)
|
|
561
|
-
```
|
|
415
|
+
***
|
|
562
416
|
|
|
563
|
-
|
|
564
|
-
| ---------- | --- | -- | ----- | ----- |
|
|
565
|
-
| L1 Session | LRU | 内存 | 5min | 100条 |
|
|
566
|
-
| L2 Project | LRU | 内存 | 30min | 500条 |
|
|
567
|
-
| L3 Global | LFU | 磁盘 | 2h | 2000条 |
|
|
417
|
+
## 技能系统 / Skill System
|
|
568
418
|
|
|
569
|
-
|
|
419
|
+
### 技能分类 / Skill Categories
|
|
570
420
|
|
|
571
|
-
|
|
421
|
+
```
|
|
422
|
+
skills/
|
|
423
|
+
├── core/ # 11 个核心技能 / 11 Core Skills (必装 / Required)
|
|
424
|
+
│ ├── pdd-main/ # 主协调器 / Main coordinator
|
|
425
|
+
│ ├── pdd-ba/ # 业务分析 / Business analysis
|
|
426
|
+
│ ├── pdd-extract-features/ # 特征提取 / Feature extraction
|
|
427
|
+
│ ├── pdd-generate-spec/ # 规格生成 / Spec generation
|
|
428
|
+
│ ├── pdd-implement-feature/ # 代码实现 / Code implementation
|
|
429
|
+
│ ├── pdd-verify-feature/ # 功能验证 / Feature verification
|
|
430
|
+
│ ├── pdd-code-reviewer/ # 代码审查 / Code review
|
|
431
|
+
│ ├── pdd-doc-change/ # 变更文档 / Document change
|
|
432
|
+
│ ├── pdd-doc-gardener/ # 文档维护 / Document maintenance
|
|
433
|
+
│ ├── pdd-entropy-reduction/ # 技术债务 / Technical debt
|
|
434
|
+
│ ├── official-doc-writer/ # 公文生成 / Official documents
|
|
435
|
+
│ └── pdd-vm/ # 可视化监控 / Visual monitoring
|
|
436
|
+
│
|
|
437
|
+
├── expert/ # 专家技能 / Expert Skills (12个)
|
|
438
|
+
│ ├── expert-security/ # 安全审计 / Security audit
|
|
439
|
+
│ ├── expert-performance/ # 性能优化 / Performance
|
|
440
|
+
│ ├── expert-mysql/ # MySQL数据库 / MySQL
|
|
441
|
+
│ ├── expert-ruoyi/ # 若依框架 / RuoYi framework
|
|
442
|
+
│ ├── expert-ruoyi-permission/ # 若依权限 / RuoYi permission
|
|
443
|
+
│ ├── expert-activiti/ # Activiti工作流 / Workflow
|
|
444
|
+
│ ├── expert-vue3/ # Vue3前端 / Vue3 frontend
|
|
445
|
+
│ ├── expert-springcloud/ # SpringCloud微服务 / Microservices
|
|
446
|
+
│ ├── expert-bug-fixer/ # Bug修复 / Bug fixing
|
|
447
|
+
│ ├── testcase-modeler/ # ★ 测试用例建模 / Testcase modeling (NEW)
|
|
448
|
+
│ ├── testcase-agent/ # ★ 测试执行引擎 / Test execution engine (NEW)
|
|
449
|
+
│ ├── software-architect/ # 软件架构 / Software architecture
|
|
450
|
+
│ ├── software-engineer/ # 软件工程 / Software engineering
|
|
451
|
+
│ └── system-architect/ # 系统架构 / System architecture │
|
|
452
|
+
├── entropy/ # 熵减治理 / Entropy reduction (4个)
|
|
453
|
+
├── pr/ # PR与交付 / PR & Delivery (7个)
|
|
454
|
+
├── openspec/ # OpenSpec 协作 / Collaboration (10个)
|
|
455
|
+
└── software/ # 通用软件工程 / General software engineering
|
|
456
|
+
```
|
|
572
457
|
|
|
573
|
-
|
|
458
|
+
***
|
|
574
459
|
|
|
575
|
-
|
|
576
|
-
| -------------- | --- | ------ |
|
|
577
|
-
| analysis | 15% | 需求分析阶段 |
|
|
578
|
-
| design | 20% | 规格设计阶段 |
|
|
579
|
-
| implementation | 35% | 代码实现阶段 |
|
|
580
|
-
| review | 20% | 代码审查阶段 |
|
|
581
|
-
| verify | 10% | 验证确认阶段 |
|
|
460
|
+
## 配置中心 / Configuration Center
|
|
582
461
|
|
|
583
|
-
|
|
462
|
+
> **Single Source of Truth 原则 / Principle**: 所有配置集中管理,技能和脚本通过引用获取,避免散落和不一致。
|
|
463
|
+
>
|
|
464
|
+
> **English**: All configurations are centrally managed; skills and scripts access them by reference to avoid scattering and inconsistency.
|
|
584
465
|
|
|
585
|
-
|
|
466
|
+
### 配置文件一览 / Configuration Files
|
|
586
467
|
|
|
587
|
-
|
|
468
|
+
| 配置文件 / Config File | 用途 / Purpose | 消费方 / Consumers |
|
|
469
|
+
| -------------------------- | ----------------- | ------------------------------------------------------------------------------------------------ |
|
|
470
|
+
| `config/bug-patterns.yaml` | Bug模式库(14个模式 / 14 patterns) | pdd-code-reviewer, pdd-verify-feature, pdd-implement-feature, pdd-template-engine, expert-ruoyi |
|
|
471
|
+
| `config/prd-rules.yaml` | PRD检测规则(30条 / 30 rules) | pdd-linter, run-linters.js |
|
|
472
|
+
| `config/gate-config.yaml` | 质量门控配置(4级 / 4 levels) | gate-engine.js |
|
|
473
|
+
| **`config/test-actions.yaml`** | **测试动作库(30+ 动作 / 30+ actions)** | **testcase-modeler, testcase-agent** |
|
|
474
|
+
| **`config/cdp-test-config.yaml`** | **全局测试配置(环境变量/超时/报告)** | **testcase-agent** |
|
|
588
475
|
|
|
589
|
-
|
|
590
|
-
| -------- | --- | --- | ----------------------------------------------- |
|
|
591
|
-
| **可读性** | 20% | 7 条 | 命名规范 / 函数长度 / 行长度 / 圈复杂度 / 注释覆盖率 / 魔法数字 / 缩进一致性 |
|
|
592
|
-
| **可维护性** | 20% | 6 条 | 重复代码 / 模块内聚 / 耦合度 / 单一职责 / 死代码 / 依赖方向 |
|
|
593
|
-
| **健壮性** | 25% | 6 条 | Null检查 / 错误处理 / 边界验证 / 异步错误 / 类型检查 / 资源清理 |
|
|
594
|
-
| **性能** | 15% | 6 条 | 循环效率 / 内存分配 / I/O操作 / 字符串拼接 / 异步模式 / 数据结构 |
|
|
595
|
-
| **安全性** | 20% | 6 条 | SQL注入 / XSS风险 / 硬编码密钥 / 输入验证 / 依赖安全 / 不安全配置 |
|
|
476
|
+
### Bug模式库架构 / Bug Pattern Library
|
|
596
477
|
|
|
597
|
-
|
|
478
|
+
```
|
|
479
|
+
config/bug-patterns.yaml ← 唯一真相源 / Single Source of Truth
|
|
480
|
+
├── categories.general # 通用模式 / General Patterns PATTERN-001~007
|
|
481
|
+
│ ├── PATTERN-001 datetime字段类型陷阱 / Datetime field type trap
|
|
482
|
+
│ ├── PATTERN-002 静态路由注册顺序错误 / Static route registration order
|
|
483
|
+
│ ├── PATTERN-003 枚举硬编码/编码不一致 / Enum hardcoding
|
|
484
|
+
│ ├── PATTERN-004 alert()未用safeAlert()包装 / alert() not wrapped
|
|
485
|
+
│ ├── PATTERN-005 my-tasks查询条件不完整 / Query condition incomplete
|
|
486
|
+
│ ├── PATTERN-006 Options接口路由顺序 / Options API route order
|
|
487
|
+
│ └── PATTERN-007 编号生成未检查已存在记录 / ID generation without existence check
|
|
488
|
+
└── categories.ruoyi # 若依专用 / RuoYi Specific PATTERN-R001~R007
|
|
489
|
+
├── PATTERN-R001 权限注解缺失 / Missing permission annotation
|
|
490
|
+
├── PATTERN-R002 菜单配置不完整 / Incomplete menu config
|
|
491
|
+
├── PATTERN-R003 数据权限未配置 / Data permission not configured
|
|
492
|
+
├── PATTERN-R004 Redis缓存未清除 / Redis cache not cleared
|
|
493
|
+
├── PATTERN-R005 参数校验缺失 / Missing parameter validation
|
|
494
|
+
├── PATTERN-R006 XSS防护缺失 / Missing XSS protection
|
|
495
|
+
└── PATTERN-R007 操作日志缺失 / Missing operation log
|
|
496
|
+
```
|
|
598
497
|
|
|
599
|
-
|
|
498
|
+
### 质量门控流程 / Quality Gate Process
|
|
600
499
|
|
|
601
500
|
```
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
501
|
+
PRD文档 / PRD Doc → prd-linter (30条规则 / 30 rules) → gate-engine (4级门控 / 4 levels) → 评分卡 / Scorecard
|
|
502
|
+
│
|
|
503
|
+
┌─────────────┼─────────────┐
|
|
504
|
+
▼ ▼ ▼
|
|
505
|
+
BLOCKER CRITICAL WARNING/INFO
|
|
506
|
+
(阻断) (必须修复) (建议修复)
|
|
507
|
+
│ │
|
|
508
|
+
▼ ▼
|
|
509
|
+
Score = 0 Score -= 15/5/1
|
|
510
|
+
│ │
|
|
511
|
+
▼ ▼
|
|
512
|
+
Grade: F Grade: A~D
|
|
513
|
+
│ │
|
|
514
|
+
▼ ▼
|
|
515
|
+
❌ FAIL ✅ PASS
|
|
608
516
|
```
|
|
609
517
|
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
518
|
+
---
|
|
519
|
+
|
|
520
|
+
## ★ 测试用例系统 / Testcase System (NEW v3.2.0)
|
|
613
521
|
|
|
614
|
-
|
|
522
|
+
> **重要说明 / Important**: PDD Test Skill 是基于 **Chrome DevTools MCP** 的零代码 E2E 测试自动化解决方案,专为无编程经验的测试人员(如实习生)设计。
|
|
523
|
+
>
|
|
524
|
+
> **English**: PDD Test Skill is a **zero-code E2E test automation solution based on Chrome DevTools MCP**, designed for testers without programming experience (such as interns).
|
|
615
525
|
|
|
616
|
-
|
|
526
|
+
### 🎯 系统架构 / System Architecture
|
|
617
527
|
|
|
618
528
|
```
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
529
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
530
|
+
│ PDD Test Skill - 零代码 E2E 测试平台 │
|
|
531
|
+
├─────────────────────────────────────────────────────────────────────────────┤
|
|
532
|
+
│ │
|
|
533
|
+
│ ┌──────────────────────┐ ┌──────────────────────┐ │
|
|
534
|
+
│ │ testcase-modeler │ │ testcase-agent │ │
|
|
535
|
+
│ │ (测试用例建模师) │───▶│ (自动化测试执行专家) │ │
|
|
536
|
+
│ └──────────────────────┘ └──────────────────────┘ │
|
|
537
|
+
│ │ │ │
|
|
538
|
+
│ ▼ ▼ │
|
|
539
|
+
│ ┌──────────────────────┐ ┌──────────────────────┐ │
|
|
540
|
+
│ │ 自然语言描述 │ │ Chrome DevTools MCP │ │
|
|
541
|
+
│ │ ↓ │ │ ↓ │ │
|
|
542
|
+
│ │ 智能意图提取 │ │ CDP 协议操控浏览器 │ │
|
|
543
|
+
│ │ ↓ │ │ ↓ │ │
|
|
544
|
+
│ │ YAML 测试用例 │ │ 执行 + 截图 + 验证 │ │
|
|
545
|
+
│ └──────────────────────┘ └──────────────────────┘ │
|
|
546
|
+
│ │
|
|
547
|
+
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
|
548
|
+
│ │ 配置中心 (Configuration Center) │ │
|
|
549
|
+
│ │ • config/test-actions.yaml ← 30+ 内置动作(可扩展) │ │
|
|
550
|
+
│ │ • config/cdp-test-config.yaml ← 全局配置(环境变量/超时/报告) │ │
|
|
551
|
+
│ └─────────────────────────────────────────────────────────────────────┘ │
|
|
552
|
+
│ │
|
|
553
|
+
└─────────────────────────────────────────────────────────────────────────────┘
|
|
630
554
|
```
|
|
631
555
|
|
|
632
|
-
|
|
556
|
+
### 📊 核心特性 / Core Features
|
|
633
557
|
|
|
634
|
-
|
|
558
|
+
| 特性 / Feature | 说明 / Description | 受益者 / Beneficiary |
|
|
559
|
+
| --------------- | ------------------- | -------------------- |
|
|
560
|
+
| **零代码门槛 / Zero-Code** | 自然语言 → YAML 用例,无需编程 | 实习生、业务人员 |
|
|
561
|
+
| **智能建模 / Smart Modeling** | 6条 Iron Rules + 意图自动提取 + 断言注入 | 所有测试人员 |
|
|
562
|
+
| **可靠执行 / Reliable Execution** | 5条铁律 + 每步截图 + 深度网络校验 | QA工程师 |
|
|
563
|
+
| **自愈引擎 / Self-Healing** | 4级元素定位降级策略(成功率 >65%) | 自动化测试 |
|
|
564
|
+
| **安全处理 / Security First** | 密码等敏感信息使用环境变量,禁止硬编码 | 安全合规 |
|
|
565
|
+
| **专业报告 / Professional Reports** | HTML报告含截图/时间线/诊断建议 | 项目经理、管理层 |
|
|
635
566
|
|
|
636
|
-
|
|
567
|
+
---
|
|
637
568
|
|
|
638
|
-
|
|
639
|
-
| -------------- | -------------------------------------------------- |
|
|
640
|
-
| **Adapter** | 连接管理 + 心跳30s + 指数退避重连 + 6 Tool 映射 |
|
|
641
|
-
| **CLI** | 7个子命令: start/stop/status/list-tools/test/logs/init |
|
|
642
|
-
| **API Bridge** | 5端点 + SSE流式 + 中间件链 + batchExecute |
|
|
643
|
-
| **Data Sync** | push/pull/bidirectional 四类型同步 + 冲突解决 + 定时调度 |
|
|
569
|
+
### 🚀 快速开始 / Quick Start
|
|
644
570
|
|
|
645
|
-
####
|
|
571
|
+
#### 步骤 1:环境配置 / Environment Setup
|
|
646
572
|
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
| [operations](docs/operations/operations-guide.md) | 部署 / 调优 / 监控 / 安全 | ~2018 |
|
|
653
|
-
| [plugin-market](docs/plugin-market/README.md) | 发布流程 / 评分标准 / 审核 | ~400 |
|
|
573
|
+
```bash
|
|
574
|
+
# 设置测试环境变量(Windows PowerShell)
|
|
575
|
+
$env:TEST_USER = "your_username"
|
|
576
|
+
$env:TEST_PASS = "your_password"
|
|
577
|
+
$env:BASE_URL = "http://your-system"
|
|
654
578
|
|
|
655
|
-
|
|
579
|
+
# 或 Linux/Mac
|
|
580
|
+
export TEST_USER="your_username"
|
|
581
|
+
export TEST_PASS="your_password"
|
|
582
|
+
export BASE_URL="http://your-system"
|
|
583
|
+
```
|
|
656
584
|
|
|
657
|
-
|
|
585
|
+
#### 步骤 2:使用 Modeler 创建测试用例 / Create Test Case with Modeler
|
|
658
586
|
|
|
659
|
-
|
|
587
|
+
**对话触发示例 / Dialog Trigger Examples**:
|
|
660
588
|
|
|
661
|
-
|
|
589
|
+
```bash
|
|
590
|
+
# 方式 1:明确要求生成测试用例
|
|
591
|
+
"帮我写个统一门户登录的测试用例"
|
|
662
592
|
|
|
663
|
-
|
|
593
|
+
# 方式 2:自然语言描述操作流程
|
|
594
|
+
"先打开 uniportal.sjjk.com.cn,然后用 yuanye/yuanye 登录,验证首页是否正常显示"
|
|
664
595
|
|
|
665
|
-
|
|
666
|
-
|
|
596
|
+
# 方式 3:场景化需求
|
|
597
|
+
"实习生不会写代码,帮我录制一下资产评估核准的申请流程"
|
|
598
|
+
```
|
|
667
599
|
|
|
668
|
-
|
|
600
|
+
**Modeler 输出示例 / Modeler Output Example**:
|
|
669
601
|
|
|
670
|
-
|
|
602
|
+
生成的 YAML 文件会保存到 `skills/expert/testcase-modeler/examples/` 目录:
|
|
671
603
|
|
|
672
|
-
```
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
|
678
|
-
│ │ Data Layer (数据层) │ │
|
|
679
|
-
│ │ │ │
|
|
680
|
-
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │ │
|
|
681
|
-
│ │ │ Feature Store│ │ Config Store │ │ Cache Store │ │ Event Bus │ │ │
|
|
682
|
-
│ │ └──────────────┘ └──────────────┘ └──────────────┘ └────────────┘ │ │
|
|
683
|
-
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
|
684
|
-
│ │ │
|
|
685
|
-
│ ▼ │
|
|
686
|
-
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
|
687
|
-
│ │ Service Layer (服务层) │ │
|
|
688
|
-
│ │ │ │
|
|
689
|
-
│ │ ┌────────────────┐ ┌────────────────┐ ┌──────────────────────────┐ │ │
|
|
690
|
-
│ │ │ HTTP Server │ │ SSE Server │ │ REST API (11端点) │ │ │
|
|
691
|
-
│ │ │ (server.js) │ │ (sse.js) │ │ (api-routes.js) │ │ │
|
|
692
|
-
│ │ └────────────────┘ └────────────────┘ └──────────────────────────┘ │ │
|
|
693
|
-
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
|
694
|
-
│ │ │ │
|
|
695
|
-
│ ▼ ▼ │
|
|
696
|
-
│ ┌─────────────────────────────┐ ┌─────────────────────────────────────┐ │
|
|
697
|
-
│ │ Presentation Layer │ │ Presentation Layer │ │
|
|
698
|
-
│ │ │ │ │ │
|
|
699
|
-
│ │ ┌───────────────────────┐ │ │ ┌─────────────────────────────┐ │ │
|
|
700
|
-
│ │ │ Web Dashboard │ │ │ │ Terminal TUI │ │ │
|
|
701
|
-
│ │ │ │ │ │ │ │ │ │
|
|
702
|
-
│ │ │ ┌─────────────────┐ │ │ │ │ ┌───────────────────────┐ │ │ │
|
|
703
|
-
│ │ │ │ index.html (SPA)│ │ │ │ │ │ tui.js (主控制器) │ │ │ │
|
|
704
|
-
│ │ │ ├─────────────────┤ │ │ │ │ ├───────────────────────┤ │ │ │
|
|
705
|
-
│ │ │ │ dashboard.css │ │ │ │ │ │ renderer.js (ANSI渲染) │ │ │ │
|
|
706
|
-
│ │ │ ├─────────────────┤ │ │ │ │ ├───────────────────────┤ │ │ │
|
|
707
|
-
│ │ │ │ app.js (SPA框架)│ │ │ │ │ │ input.js (键盘输入) │ │ │ │
|
|
708
|
-
│ │ │ └─────────────────┘ │ │ │ │ └───────────────────────┘ │ │ │
|
|
709
|
-
│ │ │ │ │ │ │ │ │ │
|
|
710
|
-
│ │ │ 4 视图面板: │ │ │ │ 5 组件: │ │ │
|
|
711
|
-
│ │ │ • Pipeline (流水线) │ │ │ │ progress-bar / table / │ │ │
|
|
712
|
-
│ │ │ • Kanban (看板) │ │ │ │ sparkline / status-light │ │ │
|
|
713
|
-
│ │ │ • Quality (质量) │ │ │ │ / card │ │ │
|
|
714
|
-
│ │ │ • System (系统) │ │ │ │ │ │ │
|
|
715
|
-
│ │ │ │ │ │ │ 4 屏幕 + 详情overlay: │ │ │
|
|
716
|
-
│ │ │ Canvas 图表引擎: │ │ │ │ overview / kanban / │ │ │
|
|
717
|
-
│ │ │ radar/histogram/ │ │ │ │ quality / system │ │ │
|
|
718
|
-
│ │ │ gauge/lineChart/ │ │ │ │ │ │ │
|
|
719
|
-
│ │ │ horizontalBar │ │ │ └─────────────────────────────┘ │ │
|
|
720
|
-
│ │ └───────────────────────┘ │ │ │ │
|
|
721
|
-
│ └─────────────────────────────┘ │
|
|
722
|
-
│ │
|
|
723
|
-
└─────────────────────────────────────────────────────────────────────────────────┘
|
|
724
|
-
```
|
|
604
|
+
```yaml
|
|
605
|
+
test_id: "LOGIN-001-portal-normal"
|
|
606
|
+
title: "统一门户登录正常流程"
|
|
607
|
+
priority: "P0"
|
|
608
|
+
tags: ["登录", "统一门户", "E2E", "冒烟测试"]
|
|
725
609
|
|
|
726
|
-
|
|
610
|
+
context_check:
|
|
611
|
+
login_url: "http://uniportal.sjjk.com.cn"
|
|
612
|
+
home_indicator: "统一门户(新)"
|
|
613
|
+
credentials:
|
|
614
|
+
username: "${TEST_USER}" # 从环境变量读取
|
|
615
|
+
password: "${TEST_PASS}" # 从环境变量读取
|
|
727
616
|
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
▼ ▼ ▼
|
|
753
|
-
┌──────────────┐ ┌──────────┐ ┌──────────────┐
|
|
754
|
-
│ REST API │ │ SSE Push │ │ Data Export │
|
|
755
|
-
│ (11 端点) │ │ (实时) │ │ (CSV/JSON) │
|
|
756
|
-
└──────┬───────┘ └────┬─────┘ └──────────────┘
|
|
757
|
-
│ │
|
|
758
|
-
▼ ▼
|
|
759
|
-
┌──────────────┐ ┌──────────────┐
|
|
760
|
-
│ Web Dashboard│ │ Terminal TUI │
|
|
761
|
-
│ (HTTP Poll) │ │ (Direct) │
|
|
762
|
-
└──────────────┘ └──────────────┘
|
|
617
|
+
steps:
|
|
618
|
+
- step: 1
|
|
619
|
+
desc: "打开统一门户登录页面"
|
|
620
|
+
action: navigate
|
|
621
|
+
url: "${LOGIN_URL:-http://uniportal.sjjk.com.cn}"
|
|
622
|
+
wait_after:
|
|
623
|
+
type: time
|
|
624
|
+
duration: 2000
|
|
625
|
+
assertions:
|
|
626
|
+
- type: text_contains
|
|
627
|
+
expected: "欢迎登录"
|
|
628
|
+
confidence: high
|
|
629
|
+
|
|
630
|
+
- step: 2
|
|
631
|
+
desc: "输入用户名"
|
|
632
|
+
action: fill
|
|
633
|
+
target: "用户名输入框"
|
|
634
|
+
value: "${TEST_USER}"
|
|
635
|
+
assertions:
|
|
636
|
+
- type: field_filled
|
|
637
|
+
expected: "字段已填写"
|
|
638
|
+
confidence: high
|
|
639
|
+
|
|
640
|
+
# ... 更多步骤
|
|
763
641
|
```
|
|
764
642
|
|
|
765
|
-
|
|
643
|
+
#### 步骤 3:使用 Agent 执行测试用例 / Execute Test with Agent
|
|
766
644
|
|
|
767
|
-
|
|
645
|
+
**对话触发示例 / Dialog Trigger Examples**:
|
|
768
646
|
|
|
769
|
-
|
|
647
|
+
```bash
|
|
648
|
+
# 方式 1:执行指定文件
|
|
649
|
+
"执行 LOGIN-001-portal-normal.yaml 用例"
|
|
770
650
|
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
| Analysis | 需求分析进度 | 点击查看详情 |
|
|
774
|
-
| Design | 规格生成状态 | 点击查看规格 |
|
|
775
|
-
| Implementation | 代码实现进度 | 点击查看代码 |
|
|
776
|
-
| Review | 审查状态 | 点击查看问题 |
|
|
777
|
-
| Verify | 验证结果 | 点击查看报告 |
|
|
651
|
+
# 方式 2:执行刚才生成的用例
|
|
652
|
+
"将刚才生成的测试用例跑一下"
|
|
778
653
|
|
|
779
|
-
|
|
654
|
+
# 方式 3:调试模式
|
|
655
|
+
"带截图执行这个YAML文件,单步调试"
|
|
656
|
+
```
|
|
780
657
|
|
|
781
|
-
|
|
782
|
-
- 阶段间依赖关系可视化
|
|
783
|
-
- 阻塞项高亮提示
|
|
784
|
-
- 历史趋势对比
|
|
658
|
+
**Agent 执行过程 / Agent Execution Process**:
|
|
785
659
|
|
|
786
|
-
|
|
660
|
+
1. **状态感知(铁律1)**: 检查当前浏览器是否已登录
|
|
661
|
+
2. **逐步执行**: 按照 YAML 的 steps 顺序执行每个动作
|
|
662
|
+
3. **每步截图(铁律2)**: 记录操作前后的页面状态
|
|
663
|
+
4. **断言验证**: 检查文本内容、元素可见性、网络调用
|
|
664
|
+
5. **自愈机制(铁律4)**: 元素找不到时自动降级尝试其他定位策略
|
|
665
|
+
6. **报告生成(铁律5)**: 输出 HTML 报告到 `test-results/reports/`
|
|
787
666
|
|
|
788
|
-
|
|
667
|
+
**执行结果示例 / Execution Result Example**:
|
|
789
668
|
|
|
790
669
|
```
|
|
791
|
-
|
|
792
|
-
│ BACKLOG │ ANALYSIS │ DESIGN │ IMPLEMENT │ VERIFY │
|
|
793
|
-
│ │ │ │ │ │
|
|
794
|
-
│ ┌───────┐ │ ┌───────┐ │ ┌───────┐ │ ┌───────┐ │ ┌───────┐ │
|
|
795
|
-
│ │Feat A │ │ │Feat B │ │ │Feat C │ │ │Feat D │ │ │Feat E │ │
|
|
796
|
-
│ │ High │ │ │ Med │ │ │ Low │ │ │ Done │ │ │ Pass │ │
|
|
797
|
-
│ └───────┘ │ └───────┘ │ └───────┘ │ └───────┘ │ └───────┘ │
|
|
798
|
-
│ ┌───────┐ │ ┌───────┐ │ │ ┌───────┐ │ │
|
|
799
|
-
│ │Feat F │ │ │Feat G │ │ │ │Feat H │ │ │
|
|
800
|
-
│ │ Med │ │ │ Low │ │ │ │ WIP │ │ │
|
|
801
|
-
│ └───────┘ │ └───────┘ │ │ └───────┘ │ │
|
|
802
|
-
└─────────────┴─────────────┴─────────────┴─────────────┴─────────────┘
|
|
803
|
-
```
|
|
670
|
+
✅ LOGIN-001-portal-normal 测试通过!
|
|
804
671
|
|
|
805
|
-
|
|
672
|
+
📊 执行摘要:
|
|
673
|
+
• 总步骤数: 5
|
|
674
|
+
• 通过: 5 | 失败: 0 | 跳过: 0
|
|
675
|
+
• 自愈次数: 1(Step 3 密码框UID修复)
|
|
676
|
+
• 执行时间: 8.5s
|
|
806
677
|
|
|
807
|
-
|
|
808
|
-
-
|
|
809
|
-
-
|
|
810
|
-
-
|
|
678
|
+
📸 截图证据:
|
|
679
|
+
• step-01-before.png (登录页初始状态)
|
|
680
|
+
• step-02-after.png (用户名已填入)
|
|
681
|
+
• step-03-after.png (密码已填入)
|
|
682
|
+
• step-04-after.png (点击登录后)
|
|
683
|
+
• step-05-after.png (首页加载完成)
|
|
811
684
|
|
|
812
|
-
|
|
685
|
+
🌐 网络校验:
|
|
686
|
+
✅ POST /data/sys-auth/login [200]
|
|
687
|
+
✅ POST /data/sys-person/sysPersonConfig/details [200]
|
|
813
688
|
|
|
814
|
-
|
|
689
|
+
📄 完整报告: test-results/reports/TR-1778232000000.html
|
|
690
|
+
```
|
|
815
691
|
|
|
816
|
-
|
|
817
|
-
| --------- | -------------------- | ------------- |
|
|
818
|
-
| 五维评分雷达图 | Canvas Radar Chart | QualityScorer |
|
|
819
|
-
| 规则分布直方图 | Canvas Histogram | Linter 结果 |
|
|
820
|
-
| 总体评分仪表盘 | Canvas Gauge | 综合计算 |
|
|
821
|
-
| 趋势折线图 | Canvas LineChart | 历史快照 |
|
|
822
|
-
| 问题分类横向条形图 | Canvas HorizontalBar | CodeReviewer |
|
|
692
|
+
---
|
|
823
693
|
|
|
824
|
-
|
|
694
|
+
### 📚 YAML 用例规范 / YAML Test Case Specification
|
|
695
|
+
|
|
696
|
+
#### 必填字段 / Required Fields
|
|
697
|
+
|
|
698
|
+
| 字段 / Field | 类型 / Type | 说明 / Description |
|
|
699
|
+
| ------------- | ----------- | ------------------- |
|
|
700
|
+
| `test_id` | string | 唯一标识符(格式:`MODULE-NNN-name`) |
|
|
701
|
+
| `title` | string | 测试用例标题 |
|
|
702
|
+
| `priority` | string | 优先级(P0/P1/P2/P3) |
|
|
703
|
+
| `tags` | array | 标签数组(用于分类和筛选) |
|
|
704
|
+
| `context_check` | object | 前置状态检查配置 |
|
|
705
|
+
| `steps` | array | 测试步骤列表 |
|
|
706
|
+
|
|
707
|
+
#### context_check 配置 / Context Check Configuration
|
|
708
|
+
|
|
709
|
+
```yaml
|
|
710
|
+
context_check:
|
|
711
|
+
login_url: "http://example.com/login" # 登录页 URL
|
|
712
|
+
home_indicator: "首页" # 已登录状态的标志性文本
|
|
713
|
+
credentials: # 凭据配置
|
|
714
|
+
username: "${TEST_USER}" # 用户名(环境变量)
|
|
715
|
+
password: "${TEST_PASS}" # 密码(环境变量)
|
|
716
|
+
captcha_required: false # 是否需要验证码
|
|
717
|
+
sso_enabled: true # 是否支持 SSO 单点登录
|
|
718
|
+
```
|
|
719
|
+
|
|
720
|
+
#### steps 步骤定义 / Step Definition
|
|
721
|
+
|
|
722
|
+
每个步骤支持以下核心字段:
|
|
723
|
+
|
|
724
|
+
```yaml
|
|
725
|
+
- step: 1 # 步骤序号(必填)
|
|
726
|
+
desc: "步骤描述" # 人类可读的描述(必填)
|
|
727
|
+
action: navigate | fill | click | # 动作类型(必填)
|
|
728
|
+
select | assert_multiple |
|
|
729
|
+
wait | screenshot | evaluate
|
|
730
|
+
target: "目标元素描述" # 语义化元素描述
|
|
731
|
+
url: "URL地址" # 用于 navigate 动作
|
|
732
|
+
value: "输入值" # 用于 fill/select 动作
|
|
733
|
+
locator: # 元素定位器(可选)
|
|
734
|
+
uid_cache_key: "username_input" # UID缓存键(复用优化)
|
|
735
|
+
wait_after: # 操作后等待策略
|
|
736
|
+
type: time | navigation | element # 等待类型
|
|
737
|
+
duration: 2000 # 等待时间(ms)或超时时间
|
|
738
|
+
assertions: # 断言列表(规则4推荐)
|
|
739
|
+
- type: text_contains | element_visible |
|
|
740
|
+
field_filled | value_equals |
|
|
741
|
+
url_contains | network_called |
|
|
742
|
+
element_count_greater_than
|
|
743
|
+
expected: "期望值"
|
|
744
|
+
confidence: high | medium | low # 置信度
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
#### 支持的动作类型 / Supported Action Types
|
|
748
|
+
|
|
749
|
+
| 动作 / Action | 说明 / Description | MCP 工具 / MCP Tool |
|
|
750
|
+
| ------------- | ------------------ | -------------------- |
|
|
751
|
+
| `navigate` | 打开页面 / Navigate to URL | `navigate_page` |
|
|
752
|
+
| `fill` | 填写输入框 / Fill input field | `fill` / `fill_form` |
|
|
753
|
+
| `click` | 点击元素 / Click element | `click` |
|
|
754
|
+
| `select` | 选择下拉选项 / Select dropdown | `select_option` |
|
|
755
|
+
| `wait` | 等待条件 / Wait for condition | `wait_for` |
|
|
756
|
+
| `screenshot` | 截图 / Take screenshot | `take_screenshot` |
|
|
757
|
+
| `assert_multiple` | 多重断言 / Multiple assertions | (内置逻辑) |
|
|
758
|
+
| `evaluate` | 执行 JavaScript / Execute JS | `evaluate_script` |
|
|
759
|
+
|
|
760
|
+
#### 支持的断言类型 / Supported Assertion Types
|
|
761
|
+
|
|
762
|
+
| 断言 / Assertion | 说明 / Description | 适用场景 / Use Case |
|
|
763
|
+
| ---------------- | ------------------ | ------------------- |
|
|
764
|
+
| `text_contains` | 页面包含文本 | 验证页面内容 |
|
|
765
|
+
| `element_visible` | 元素可见 | 验证UI元素存在 |
|
|
766
|
+
| `field_filled` | 字段已填写 | 验证表单输入完成 |
|
|
767
|
+
| `value_equals` | 值匹配 | 验证具体值 |
|
|
768
|
+
| `url_contains` | URL包含特征 | 验证页面跳转 |
|
|
769
|
+
| `network_called` | API调用检查 | 深度验证后端请求 |
|
|
770
|
+
| `element_count_greater_than` | 元素数量验证 | 验证列表数据量 |
|
|
825
771
|
|
|
826
|
-
|
|
827
|
-
- 阈值超标红色预警
|
|
828
|
-
- 下钻至具体规则
|
|
829
|
-
- 与基准对比
|
|
772
|
+
---
|
|
830
773
|
|
|
831
|
-
|
|
774
|
+
### ⚙️ 配置文件详解 / Configuration Files Details
|
|
775
|
+
|
|
776
|
+
#### config/test-actions.yaml - 动作库 / Action Library
|
|
777
|
+
|
|
778
|
+
定义所有可用的测试动作及其自然语言匹配模式:
|
|
779
|
+
|
|
780
|
+
```yaml
|
|
781
|
+
# 示例:导航类动作
|
|
782
|
+
navigate:
|
|
783
|
+
display: "打开页面"
|
|
784
|
+
patterns:
|
|
785
|
+
- "打开 {url}"
|
|
786
|
+
- "访问 {url}"
|
|
787
|
+
- "导航到 {url}"
|
|
788
|
+
mcp: mcp_Chrome_DevTools_MCP_navigate_page
|
|
789
|
+
params:
|
|
790
|
+
- name: url
|
|
791
|
+
type: string
|
|
792
|
+
required: true
|
|
793
|
+
examples:
|
|
794
|
+
- "打开 http://uniportal.sjjk.com.cn"
|
|
795
|
+
|
|
796
|
+
# 示例:表单操作类动作
|
|
797
|
+
fill:
|
|
798
|
+
display: "填写输入框"
|
|
799
|
+
patterns:
|
|
800
|
+
- "输入 {value} 到 {target}"
|
|
801
|
+
- "在 {target} 输入 {value}"
|
|
802
|
+
mcp: mcp_Chrome_DevTools_MCP_fill
|
|
803
|
+
```
|
|
804
|
+
|
|
805
|
+
**扩展自定义动作 / Extend Custom Actions**:
|
|
806
|
+
|
|
807
|
+
用户可以在 `config/test-actions.yaml` 中添加自定义动作:
|
|
808
|
+
|
|
809
|
+
```yaml
|
|
810
|
+
my_custom_action:
|
|
811
|
+
display: "我的自定义动作"
|
|
812
|
+
patterns:
|
|
813
|
+
- "执行自定义操作 {param}"
|
|
814
|
+
mcp: mcp_Chrome_DevTools_MCP_evaluate_script
|
|
815
|
+
params:
|
|
816
|
+
- name: param
|
|
817
|
+
type: string
|
|
818
|
+
required: true
|
|
819
|
+
```
|
|
820
|
+
|
|
821
|
+
#### config/cdp-test-config.yaml - 全局配置 / Global Configuration
|
|
822
|
+
|
|
823
|
+
控制测试框架的全局行为:
|
|
824
|
+
|
|
825
|
+
```yaml
|
|
826
|
+
test_settings:
|
|
827
|
+
screenshot_on_each_step: true # 每步都截图(铁律2强制要求)
|
|
828
|
+
network_monitor: true # 监控网络请求(铁律3)
|
|
829
|
+
self_healing: true # 启用自愈机制(铁律4)
|
|
830
|
+
report_format: "html" # 报告格式(铁律5)
|
|
831
|
+
|
|
832
|
+
timeouts:
|
|
833
|
+
navigation: 30000 # 页面导航超时 30s
|
|
834
|
+
element_locate: 10000 # 元素定位超时 10s
|
|
835
|
+
action_execute: 15000 # 动作执行超时 15s
|
|
832
836
|
|
|
833
|
-
|
|
837
|
+
env_mapping:
|
|
838
|
+
TEST_USER: "${TEST_USER}" # 用户名(从环境变量读取)
|
|
839
|
+
TEST_PASS: "${TEST_PASS}" # 密码(绝对禁止明文!)
|
|
840
|
+
BASE_URL: "${BASE_URL}" # 基础URL
|
|
841
|
+
```
|
|
834
842
|
|
|
835
|
-
|
|
836
|
-
| --------- | -------- | ---- |
|
|
837
|
-
| 服务状态 | 状态灯 | 30s |
|
|
838
|
-
| API 响应时间 | 数值 + 趋势 | 30s |
|
|
839
|
-
| 缓存命中率 | 百分比 + 图表 | 30s |
|
|
840
|
-
| Token 使用量 | 进度条 + 预警 | 30s |
|
|
841
|
-
| 连接数 | 数值 | 30s |
|
|
842
|
-
| 错误日志 | 滚动列表 | 实时 |
|
|
843
|
+
---
|
|
843
844
|
|
|
844
|
-
###
|
|
845
|
+
### 🛡️ 质量保障机制 / Quality Assurance Mechanisms
|
|
845
846
|
|
|
846
|
-
|
|
847
|
+
#### Testcase Modeler - 6条建模规则 / 6 Modeling Rules
|
|
847
848
|
|
|
848
|
-
|
|
849
|
+
| 规则 / Rule | 名称 / Name | 说明 / Description |
|
|
850
|
+
| ------------ | ----------- | ------------------- |
|
|
851
|
+
| 规则 1 | 结构完整性 | 必填字段完整性检查 |
|
|
852
|
+
| 规则 2 | 语义化定位 | 使用人类可读的目标描述,而非CSS/XPath |
|
|
853
|
+
| 规则 3 | 断言注入 | 每个步骤必须配对至少1个断言 |
|
|
854
|
+
| 规则 4 | 深度网络校验 | 关键步骤需验证底层API调用 |
|
|
855
|
+
| 规则 5 | 安全处理 | 敏感信息使用环境变量引用 |
|
|
856
|
+
| 规则 6 | 可读性优先 | YAML结构清晰,注释完整 |
|
|
849
857
|
|
|
850
|
-
|
|
851
|
-
| -------- | -------- | ------------------- |
|
|
852
|
-
| Screen 1 | Overview | 项目总览:任务统计、进度摘要、关键指标 |
|
|
853
|
-
| Screen 2 | Kanban | 功能点看板:按状态分列的功能卡片 |
|
|
854
|
-
| Screen 3 | Quality | 质量仪表:评分、规则分布、趋势 |
|
|
855
|
-
| Screen 4 | System | 系统监控:服务状态、资源使用、错误日志 |
|
|
858
|
+
#### Testcase Agent - 5条执行铁律 / 5 Execution Iron Laws
|
|
856
859
|
|
|
857
|
-
|
|
860
|
+
| 铁律 / Law | 名称 / Name | 强制要求 / Mandatory Requirement |
|
|
861
|
+
| ---------- | ----------- | -------------------------------- |
|
|
862
|
+
| 铁律 1 | **状态感知优先** | 执行前必须检测当前登录状态 |
|
|
863
|
+
| 铁律 2 | **每步留痕** | 每个步骤必须截图记录 |
|
|
864
|
+
| 铁律 3 | **深度网络校验** | 监控并验证关键API调用 |
|
|
865
|
+
| 铁律 4 | **自愈而非放弃** | 元素失效时启动4级降级策略 |
|
|
866
|
+
| 铁律 5 | **报告完整性** | 生成包含截图/时间线/诊断的专业报告 |
|
|
858
867
|
|
|
859
|
-
|
|
860
|
-
| -------------- | ------------ | ---------- |
|
|
861
|
-
| `Tab` | 切换到下一个屏幕 | 所有屏幕 |
|
|
862
|
-
| `q` 或 `Ctrl+C` | 退出 TUI | 所有屏幕 |
|
|
863
|
-
| `r` 或 `F5` | 强制刷新当前屏幕 | 所有屏幕 |
|
|
864
|
-
| `p` | 暂停/恢复自动刷新 | 所有屏幕 |
|
|
865
|
-
| `j` / `↓` | 向下选择(移动光标) | 列表/表格场景 |
|
|
866
|
-
| `k` / `↑` | 向上选择(移动光标) | 列表/表格场景 |
|
|
867
|
-
| `Enter` | 查看选中项详情 | 列表/表格场景 |
|
|
868
|
-
| `Esc` | 返回上一级 / 关闭详情 | 详情 overlay |
|
|
869
|
-
| `?` | 显示帮助信息 | 所有屏幕 |
|
|
870
|
-
| `1` - `4` | 直接跳转到指定屏幕 | 所有屏幕 |
|
|
871
|
-
| `/` | 打开搜索框 | 支持搜索的屏幕 |
|
|
872
|
-
| `n` | 跳转到下一个搜索结果 | 搜索激活时 |
|
|
873
|
-
|
|
874
|
-
#### TUI 组件库
|
|
868
|
+
#### 4级元素定位自愈策略 / 4-Level Element Location Self-Healing
|
|
875
869
|
|
|
876
870
|
```
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
871
|
+
Level 1: UID 缓存查找 (<1ms, 命中率~95% 复用时)
|
|
872
|
+
↓ 失败
|
|
873
|
+
Level 2: 精确语义匹配 (~50ms, 命中率~80%)
|
|
874
|
+
↓ 失败
|
|
875
|
+
Level 3: 模糊匹配 (~100ms, 命中率~65%)
|
|
876
|
+
↓ 失败
|
|
877
|
+
Level 4: AI 辅助 (~500ms-2s, 命中率~55%, 兜底)
|
|
884
878
|
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
```bash
|
|
888
|
-
# ========== Web Dashboard ==========
|
|
889
|
-
pdd dashboard # 启动 Dashboard (默认 http://localhost:3001)
|
|
890
|
-
pdd dashboard -p 8080 # 自定义端口
|
|
891
|
-
pdd dashboard --no-open # 不自动打开浏览器
|
|
892
|
-
|
|
893
|
-
# ========== Terminal TUI ==========
|
|
894
|
-
pdd tui # 启动 TUI
|
|
895
|
-
pdd tui --refresh 3 # 自定义刷新间隔(秒)
|
|
896
|
-
|
|
897
|
-
# ========== VM 数据查询 ==========
|
|
898
|
-
pdd vm status # 项目状态摘要 (JSON 格式)
|
|
899
|
-
pdd vm features # 功能点列表 (含状态)
|
|
900
|
-
pdd vm features --status done # 筛选已完成功能点
|
|
901
|
-
pdd vm export --format csv # 导出为 CSV
|
|
902
|
-
pdd vm export --format json # 导出为 JSON
|
|
903
|
-
pdd vm export -o report.csv # 导出到指定文件
|
|
879
|
+
整体自愈成功率目标: >65%
|
|
904
880
|
```
|
|
905
881
|
|
|
906
|
-
|
|
882
|
+
---
|
|
907
883
|
|
|
908
|
-
|
|
884
|
+
### 📖 使用场景与最佳实践 / Use Cases & Best Practices
|
|
909
885
|
|
|
910
|
-
|
|
911
|
-
Project (业务项目)
|
|
912
|
-
├── metadata (元数据)
|
|
913
|
-
│ ├── name: string # 项目名称
|
|
914
|
-
│ ├── version: string # 项目版本
|
|
915
|
-
│ ├── createdAt: timestamp # 创建时间
|
|
916
|
-
│ └── updatedAt: timestamp # 更新时间
|
|
917
|
-
│
|
|
918
|
-
├── features (功能点列表)
|
|
919
|
-
│ ├── id: string # 功能点 ID
|
|
920
|
-
│ ├── name: string # 功能点名称
|
|
921
|
-
│ ├── status: enum # backlog/analysis/design/implement/review/verify/done
|
|
922
|
-
│ ├── priority: enum # critical/high/medium/low
|
|
923
|
-
│ ├── assignee?: string # 负责人
|
|
924
|
-
│ ├── specPath?: string # 规格文件路径
|
|
925
|
-
│ ├── sourceDir?: string # 源码目录
|
|
926
|
-
│ └── metrics (度量指标)
|
|
927
|
-
│ ├── coveragePercent: number # 覆盖率
|
|
928
|
-
│ ├── passRate: number # 通过率
|
|
929
|
-
│ ├── qualityScore: number # 质量评分
|
|
930
|
-
│ └── grade: string # 等级 (S/A/B/C/D/F)
|
|
931
|
-
│
|
|
932
|
-
├── pipeline (流水线状态)
|
|
933
|
-
│ ├── phase: string # 当前阶段
|
|
934
|
-
│ ├── progress: number # 整体进度 (0-100)
|
|
935
|
-
│ ├── stages[] (各阶段详情)
|
|
936
|
-
│ │ ├── name: string
|
|
937
|
-
│ │ ├── status: enum # pending/in-progress/completed/blocked
|
|
938
|
-
│ │ ├── progress: number
|
|
939
|
-
│ │ └── startedAt?: timestamp
|
|
940
|
-
│
|
|
941
|
-
├── quality (质量指标)
|
|
942
|
-
│ ├── overallScore: number # 总分 (0-100)
|
|
943
|
-
│ ├── overallGrade: string # 总等级
|
|
944
|
-
│ ├── dimensions (五维评分)
|
|
945
|
-
│ │ ├── readability: { score, grade }
|
|
946
|
-
│ │ ├── maintainability: { score, grade }
|
|
947
|
-
│ │ ├── robustness: { score, grade }
|
|
948
|
-
│ │ ├── performance: { score, grade }
|
|
949
|
-
│ │ └── security: { score, grade }
|
|
950
|
-
│ └── rulesViolated[] (违规规则列表)
|
|
951
|
-
│ ├── ruleId: string
|
|
952
|
-
│ ├── category: string
|
|
953
|
-
│ ├── severity: enum # error/warning/info
|
|
954
|
-
│ └── count: number
|
|
955
|
-
│
|
|
956
|
-
└── system (系统状态)
|
|
957
|
-
├── apiStatus: enum # online/degraded/offline
|
|
958
|
-
├── uptime: number # 运行时长(秒)
|
|
959
|
-
├── requestsTotal: number # 总请求数
|
|
960
|
-
├── cacheHitRate: number # 缓存命中率
|
|
961
|
-
├── tokenUsage (Token 使用)
|
|
962
|
-
│ ├── totalBudget: number
|
|
963
|
-
│ ├── consumed: number
|
|
964
|
-
│ ├── remaining: number
|
|
965
|
-
│ └── percent: number
|
|
966
|
-
└── errors[] (最近错误列表)
|
|
967
|
-
├── timestamp: timestamp
|
|
968
|
-
├── level: enum # error/warn/info
|
|
969
|
-
├── message: string
|
|
970
|
-
└── source: string
|
|
971
|
-
```
|
|
886
|
+
#### 场景 1:实习生快速上手 / Intern Onboarding
|
|
972
887
|
|
|
973
|
-
|
|
888
|
+
```bash
|
|
889
|
+
# 实习生只需用自然语言描述需求
|
|
890
|
+
"我想测试一下登录功能,用户名是admin,密码是123456,
|
|
891
|
+
登录成功后应该看到首页的欢迎信息"
|
|
974
892
|
|
|
893
|
+
# Modeler 自动生成标准YAML用例
|
|
894
|
+
# Agent 自动执行并生成报告
|
|
895
|
+
# 全程无需编写任何代码!
|
|
975
896
|
```
|
|
976
|
-
lib/vm/ # PDD Visual Manager 核心目录 (~38 文件, ~6000 行)
|
|
977
|
-
├── index.js # VM 入口,导出全部模块
|
|
978
|
-
├── data-aggregator.js # 数据聚合器
|
|
979
|
-
├── state-manager.js # 状态管理器
|
|
980
|
-
├── event-bus.js # 事件总线
|
|
981
|
-
│
|
|
982
|
-
├── dashboard/ # Web Dashboard 模块
|
|
983
|
-
│ ├── server.js # HTTP 服务器 (零依赖)
|
|
984
|
-
│ ├── sse.js # SSE (Server-Sent Events) 推送服务
|
|
985
|
-
│ ├── api-routes.js # 11 个 REST API 端点
|
|
986
|
-
│ ├── index.html # SPA 主页面
|
|
987
|
-
│ ├── css/
|
|
988
|
-
│ │ └── dashboard.css # 完整样式表 (响应式布局)
|
|
989
|
-
│ └── js/
|
|
990
|
-
│ ├── app.js # SPA 应用框架 (路由/状态/组件)
|
|
991
|
-
│ ├── pipeline-view.js # 流水线视图组件
|
|
992
|
-
│ ├── kanban-view.js # 看板视图组件
|
|
993
|
-
│ ├── quality-view.js # 质量视图组件
|
|
994
|
-
│ ├── system-view.js # 系统视图组件
|
|
995
|
-
│ └── charts/
|
|
996
|
-
│ ├── canvas-engine.js # Canvas 图表引擎基类
|
|
997
|
-
│ ├── radar.js # 雷达图
|
|
998
|
-
│ ├── histogram.js # 直方图
|
|
999
|
-
│ ├── gauge.js # 仪表盘
|
|
1000
|
-
│ ├── line-chart.js # 折线图
|
|
1001
|
-
│ └── horizontal-bar.js # 横向条形图
|
|
1002
|
-
│
|
|
1003
|
-
├── tui/ # Terminal TUI 模块
|
|
1004
|
-
│ ├── tui.js # TUIApp 主控制器
|
|
1005
|
-
│ ├── renderer.js # ANSI 渲染引擎
|
|
1006
|
-
│ ├── input.js # 键盘输入处理器 (raw mode)
|
|
1007
|
-
│ ├── screens/
|
|
1008
|
-
│ │ ├── overview-screen.js # 总览屏幕
|
|
1009
|
-
│ │ ├── kanban-screen.js # 看板屏幕
|
|
1010
|
-
│ │ ├── quality-screen.js # 质量屏幕
|
|
1011
|
-
│ │ └── system-screen.js # 系统屏幕
|
|
1012
|
-
│ ├── components/
|
|
1013
|
-
│ │ ├── progress-bar.js # 进度条组件
|
|
1014
|
-
│ │ ├── table.js # 表格组件
|
|
1015
|
-
│ │ ├── sparkline.js # 迷你折线图组件
|
|
1016
|
-
│ │ ├── status-light.js # 状态灯组件
|
|
1017
|
-
│ │ └── card.js # 卡片组件
|
|
1018
|
-
│ └── overlays/
|
|
1019
|
-
│ ├── detail-overlay.js # 详情覆盖层
|
|
1020
|
-
│ └── help-overlay.js # 帮助覆盖层
|
|
1021
|
-
│
|
|
1022
|
-
└── hooks/ # VM Hook 系统
|
|
1023
|
-
├── vm-hooks.js # Hook 定义与注册
|
|
1024
|
-
└── handlers/
|
|
1025
|
-
├── on-feature-update.js # 功能点更新处理
|
|
1026
|
-
├── on-phase-change.js # 阶段变更处理
|
|
1027
|
-
└── on-quality-alert.js # 质量预警处理
|
|
1028
|
-
```
|
|
1029
|
-
|
|
1030
|
-
***
|
|
1031
897
|
|
|
1032
|
-
|
|
898
|
+
#### 场景 2:回归测试套件 / Regression Testing Suite
|
|
1033
899
|
|
|
1034
|
-
|
|
900
|
+
```bash
|
|
901
|
+
# 测试人员批量创建业务流程用例
|
|
902
|
+
1. "生成资产评估核准申请的完整流程测试用例"
|
|
903
|
+
2. "生成资产评估核准审批的完整流程测试用例"
|
|
904
|
+
3. "生成资产处置立项的完整流程测试用例"
|
|
1035
905
|
|
|
1036
|
-
|
|
906
|
+
# 定期批量执行(可集成到CI/CD)
|
|
907
|
+
"批量执行 tests/regression/ 目录下的所有YAML用例"
|
|
908
|
+
```
|
|
1037
909
|
|
|
1038
|
-
|
|
1039
|
-
2. **行为塑造** — Iron Law / Rationalization / Red Flags
|
|
1040
|
-
3. **详细指令** — 分层的 🇨🇳 中文 / 🇺🇸 英文指导
|
|
910
|
+
#### 场景 3:Bug复现与验证 / Bug Reproduction & Verification
|
|
1041
911
|
|
|
1042
|
-
|
|
912
|
+
```bash
|
|
913
|
+
# 开发人员/QA描述Bug复现步骤
|
|
914
|
+
"按照这个步骤复现Bug:
|
|
915
|
+
1. 打开核准申请页面
|
|
916
|
+
2. 筛选状态为'待核准'
|
|
917
|
+
3. 点击'批量审批'按钮
|
|
918
|
+
4. 预期:弹出审批对话框
|
|
919
|
+
5. 实际:按钮无响应"
|
|
1043
920
|
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
├── core/ # 11 个核心技能 (必装)
|
|
1047
|
-
│ ├── pdd-main/ # 主协调器
|
|
1048
|
-
│ ├── pdd-ba/ # 业务分析
|
|
1049
|
-
│ ├── pdd-extract-features/
|
|
1050
|
-
│ ├── pdd-generate-spec/
|
|
1051
|
-
│ ├── pdd-implement-feature/ # 含上下文注入 + 微验证
|
|
1052
|
-
│ ├── pdd-verify-feature/ # 含契约一致性验证
|
|
1053
|
-
│ ├── pdd-code-reviewer/ # 含Bug模式库匹配 + UX一致性
|
|
1054
|
-
│ ├── pdd-doc-change/
|
|
1055
|
-
│ ├── pdd-doc-gardener/
|
|
1056
|
-
│ ├── pdd-entropy-reduction/
|
|
1057
|
-
│ └── official-doc-writer/
|
|
1058
|
-
│
|
|
1059
|
-
├── expert/ # 专家技能 (12个,按需加载)
|
|
1060
|
-
│ ├── expert-security/ # 安全审计专家
|
|
1061
|
-
│ ├── expert-performance/ # 性能优化专家
|
|
1062
|
-
│ ├── expert-mysql/ # MySQL数据库专家
|
|
1063
|
-
│ ├── expert-ruoyi/ # 若依框架专家 (含Bug模式库R001~R007)
|
|
1064
|
-
│ ├── expert-ruoyi-permission/ # 若依权限配置专家
|
|
1065
|
-
│ ├── expert-activiti/ # Activiti工作流专家
|
|
1066
|
-
│ ├── expert-vue3/ # Vue3前端专家
|
|
1067
|
-
│ ├── expert-springcloud/ # SpringCloud微服务专家
|
|
1068
|
-
│ ├── expert-bug-fixer/ # Bug修复专家
|
|
1069
|
-
│ ├── expert-testcases/ # 测试用例专家
|
|
1070
|
-
│ ├── software-architect/ # 软件架构师
|
|
1071
|
-
│ ├── software-engineer/ # 软件工程师
|
|
1072
|
-
│ └── system-architect/ # 系统架构师
|
|
1073
|
-
│
|
|
1074
|
-
├── entropy/ # 熵减治理技能 (4个)
|
|
1075
|
-
│ ├── expert-entropy-auditor/ # 技术债务审计
|
|
1076
|
-
│ ├── expert-arch-enforcer/ # 架构约束强制
|
|
1077
|
-
│ ├── expert-code-quality/ # 代码质量专家
|
|
1078
|
-
│ └── expert-auto-refactor/ # 自动重构专家
|
|
1079
|
-
│
|
|
1080
|
-
├── pr/ # PR与交付技能 (7个)
|
|
1081
|
-
│ ├── pdd-template-engine/ # PRD感知动态模板引擎
|
|
1082
|
-
│ ├── pdd-multi-review/ # 多轮代码审查
|
|
1083
|
-
│ ├── pdd-pr-create/ # PR创建
|
|
1084
|
-
│ ├── pdd-pr-review/ # PR审查
|
|
1085
|
-
│ ├── pdd-pr-merge/ # PR合并
|
|
1086
|
-
│ ├── pdd-pr-batch/ # 批量PR处理
|
|
1087
|
-
│ └── pdd-task-manager/ # 任务管理
|
|
1088
|
-
│
|
|
1089
|
-
├── openspec/ # OpenSpec 协作技能
|
|
1090
|
-
│ ├── openspec-explore/
|
|
1091
|
-
│ ├── openspec-new-change/
|
|
1092
|
-
│ ├── openspec-ff-change/
|
|
1093
|
-
│ └── ... (10 个)
|
|
1094
|
-
│
|
|
1095
|
-
└── software/ # 通用软件工程技能
|
|
1096
|
-
├── system-architect/
|
|
1097
|
-
├── software-architect/
|
|
1098
|
-
└── software-engineer/
|
|
921
|
+
# Agent 执行并记录每一步的截图和网络请求
|
|
922
|
+
# 快速定位问题所在!
|
|
1099
923
|
```
|
|
1100
924
|
|
|
1101
|
-
|
|
925
|
+
#### 最佳实践清单 / Best Practices Checklist
|
|
1102
926
|
|
|
1103
|
-
|
|
927
|
+
- [ ] **始终使用环境变量**存储敏感信息(用户名/密码/token)
|
|
928
|
+
- [ ] **为每个步骤添加断言**,确保可追溯性
|
|
929
|
+
- [ ] **使用语义化的 target 描述**(如"登录按钮"而非"uid=15_4")
|
|
930
|
+
- [ ] **合理设置等待策略**:优先使用 `navigation` 或 `element` 而非固定时间
|
|
931
|
+
- [ ] **利用 uid_cache_key** 优化重复元素的定位性能
|
|
932
|
+
- [ ] **定期更新 test-actions.yaml** 以支持新的业务操作
|
|
933
|
+
- [ ] **查看HTML报告**获取详细的执行诊断信息
|
|
934
|
+
|
|
935
|
+
---
|
|
1104
936
|
|
|
1105
|
-
|
|
937
|
+
### 🔧 故障排查 / Troubleshooting
|
|
1106
938
|
|
|
1107
|
-
|
|
939
|
+
| 问题 / Problem | 可能原因 / Possible Cause | 解决方案 / Solution |
|
|
940
|
+
| --------------- | ------------------------ | ------------------ |
|
|
941
|
+
| 环境变量未识别 | 未设置或名称不匹配 | 检查 `$env:TEST_USER` 是否正确设置 |
|
|
942
|
+
| 元素找不到 | 页面未加载完成或选择器变化 | 增加 `wait_after` 时间或启用自愈机制 |
|
|
943
|
+
| 登录失败 | Session过期或验证码拦截 | 检查 `context_check` 配置,考虑设置 `captcha_required: true` |
|
|
944
|
+
| 断言失败 | UI变更或异步加载延迟 | 调整 `confidence` 级别或增加等待时间 |
|
|
945
|
+
| 报告生成失败 | 目录权限不足 | 检查 `test-results/` 目录写入权限 |
|
|
946
|
+
| 网络校验失败 | API端点变更或CORS限制 | 更新 `network_called` 的 `url_pattern` 或暂时降低置信度 |
|
|
1108
947
|
|
|
1109
|
-
|
|
1110
|
-
|---------|------|--------|
|
|
1111
|
-
| `config/bug-patterns.yaml` | Bug模式库(14个模式) | pdd-code-reviewer, pdd-verify-feature, pdd-implement-feature, pdd-template-engine, expert-ruoyi |
|
|
1112
|
-
| `config/prd-rules.yaml` | PRD检测规则(30条,6大类) | pdd-linter, run-linters.js |
|
|
1113
|
-
| `config/gate-config.yaml` | 质量门控配置(4级阻断+评分权重) | gate-engine.js |
|
|
948
|
+
---
|
|
1114
949
|
|
|
1115
|
-
###
|
|
950
|
+
### 📁 项目结构 / Project Structure
|
|
1116
951
|
|
|
1117
952
|
```
|
|
1118
|
-
|
|
1119
|
-
├──
|
|
1120
|
-
│ ├──
|
|
1121
|
-
│
|
|
1122
|
-
│
|
|
1123
|
-
|
|
1124
|
-
│ ├──
|
|
1125
|
-
│ ├──
|
|
1126
|
-
│
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
953
|
+
pdd-skills-v3/
|
|
954
|
+
├── config/
|
|
955
|
+
│ ├── test-actions.yaml # ★ 测试动作库(30+内置动作)
|
|
956
|
+
│ └── cdp-test-config.yaml # ★ 全局测试配置
|
|
957
|
+
│
|
|
958
|
+
├── skills/expert/
|
|
959
|
+
│ ├── testcase-modeler/ # ★ 测试用例建模师 Skill
|
|
960
|
+
│ │ ├── SKILL.md # 技能定义文件
|
|
961
|
+
│ │ ├── examples/ # 示例用例库
|
|
962
|
+
│ │ │ ├── LOGIN-001-portal-normal.yaml
|
|
963
|
+
│ │ │ ├── asset-eval-apply.yaml
|
|
964
|
+
│ │ │ └── asset-eval-approval-flow.yaml
|
|
965
|
+
│ │ └── evals/ # 评估标准
|
|
966
|
+
│ │
|
|
967
|
+
│ └── testcase-agent/ # ★ 自动化测试执行专家 Skill
|
|
968
|
+
│ ├── SKILL.md # 技能定义文件
|
|
969
|
+
│ ├── references/ # 详细参考文档
|
|
970
|
+
│ │ ├── iron-rules-detail.md
|
|
971
|
+
│ │ ├── self-healing-strategy.md
|
|
972
|
+
│ │ ├── assertion-types.md
|
|
973
|
+
│ │ └── report-template.html
|
|
974
|
+
│ └── templates/ # 报告模板
|
|
975
|
+
│
|
|
976
|
+
└── test-results/ # ★ 测试输出目录(执行后自动生成)
|
|
977
|
+
└── reports/ # HTML测试报告
|
|
1135
978
|
```
|
|
1136
979
|
|
|
1137
|
-
|
|
980
|
+
---
|
|
1138
981
|
|
|
1139
|
-
|
|
1140
|
-
config/prd-rules.yaml ← 唯一真相源 (30条规则)
|
|
1141
|
-
├── structure (7条) # PRD结构完整性
|
|
1142
|
-
├── content (8条) # 内容质量
|
|
1143
|
-
├── uiux (6条) # UI/UX规范
|
|
1144
|
-
│ ├── uiux-form-mapping-exists # 表单控件映射表 (BLOCKER)
|
|
1145
|
-
│ ├── uiux-no-uuid-input # 禁止UUID输入 (BLOCKER)
|
|
1146
|
-
│ ├── uiux-options-api-listed # Options API声明 (BLOCKER)
|
|
1147
|
-
│ ├── uiux-page-list # 页面清单
|
|
1148
|
-
│ ├── uiux-seed-data-declared # 种子数据声明
|
|
1149
|
-
│ └── uiux-wireframe-exists # 线框图
|
|
1150
|
-
├── data_model (4条) # 数据模型规范
|
|
1151
|
-
│ ├── dm-enum-convention # 枚举编码约定 (BLOCKER)
|
|
1152
|
-
│ ├── dm-permission-matrix # 权限矩阵 (BLOCKER)
|
|
1153
|
-
│ ├── dm-type-explicit # 类型显式声明
|
|
1154
|
-
│ └── dm-audit-fields # 审计字段
|
|
1155
|
-
└── api_design (3条) # API设计规范
|
|
1156
|
-
├── api-options-endpoint # Options端点 (BLOCKER)
|
|
1157
|
-
├── api-param-location # 参数位置
|
|
1158
|
-
└── api-error-format # 错误格式
|
|
1159
|
-
```
|
|
982
|
+
### 🎓 学习资源 / Learning Resources
|
|
1160
983
|
|
|
1161
|
-
|
|
984
|
+
| 资源 / Resource | 路径 / Path | 说明 / Description |
|
|
985
|
+
| --------------- | ----------- | ------------------- |
|
|
986
|
+
| **Modeler 完整文档** | `skills/expert/testcase-modeler/SKILL.md` | 6条建模规则 + 触发词 + 示例 |
|
|
987
|
+
| **Agent 完整文档** | `skills/expert/testcase-agent/SKILL.md` | 5条铁律 + 自愈策略 + 执行流程 |
|
|
988
|
+
| **铁律详细实现** | `skills/expert/testcase-agent/references/iron-rules-detail.md` | 每条铁律的实现细节和代码示例 |
|
|
989
|
+
| **自愈策略详解** | `skills/expert/testcase-agent/references/self-healing-strategy.md` | 4级降级的完整算法和案例 |
|
|
990
|
+
| **断言类型参考** | `skills/expert/testcase-agent/references/assertion-types.md` | 所有断言类型的参数和使用场景 |
|
|
991
|
+
| **设计文档** | `docs/superpowers/specs/2026-05-08-pdd-test-skill-design.md` | 完整的系统设计和架构决策 |
|
|
992
|
+
| **开发计划** | `.trae/documents/pdd-test-skill-development-plan.md` | 三阶段实施计划和任务分解 |
|
|
1162
993
|
|
|
1163
|
-
|
|
1164
|
-
PRD文档 → prd-linter (30条规则) → gate-engine (4级门控) → 评分卡
|
|
1165
|
-
│
|
|
1166
|
-
┌─────────────┼─────────────┐
|
|
1167
|
-
▼ ▼ ▼
|
|
1168
|
-
BLOCKER CRITICAL WARNING/INFO
|
|
1169
|
-
(阻断) (必须修复) (建议修复)
|
|
1170
|
-
│ │
|
|
1171
|
-
▼ ▼
|
|
1172
|
-
Score = 0 Score -= 15/5/1
|
|
1173
|
-
│ │
|
|
1174
|
-
▼ ▼
|
|
1175
|
-
Grade: F Grade: A~D
|
|
1176
|
-
│ │
|
|
1177
|
-
▼ ▼
|
|
1178
|
-
❌ FAIL ✅ PASS
|
|
1179
|
-
```
|
|
994
|
+
---
|
|
1180
995
|
|
|
1181
|
-
###
|
|
996
|
+
### 🔄 版本路线图 / Version Roadmap
|
|
1182
997
|
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
998
|
+
| 版本 / Version | 计划日期 / Planned Date | 主要特性 / Key Features |
|
|
999
|
+
| -------------- | ---------------------- | ----------------------- |
|
|
1000
|
+
| **v3.2.0** (当前) | 2026-05-08 | ✅ testcase-modeler + testcase-agent 基础版 |
|
|
1001
|
+
| **v3.2.1** | 2026-05-15 | 🔄 批量执行 + 并行测试 + CI/CD 集成 |
|
|
1002
|
+
| **v3.3.0** | 2026-06-01 | 📋 数据驱动测试(CSV/Excel参数化) |
|
|
1003
|
+
| **v3.4.0** | 2026-06-15 | 🌐 跨浏览器测试(Firefox/Safari/Edge) |
|
|
1004
|
+
| **v3.5.0** | 2026-07-01 | 🤖 AI辅助用例生成(GPT/Claude集成) |
|
|
1005
|
+
| **v4.0.0** | 2026-08-01 | 🎯 完整测试平台(管理后台 + 历史分析 + 趋势图表) |
|
|
1186
1006
|
|
|
1187
|
-
|
|
1188
|
-
vim config/gate-config.yaml # gate-engine.js自动读取
|
|
1007
|
+
---
|
|
1189
1008
|
|
|
1190
|
-
# 修改PRD检测规则 → 只需编辑一个文件
|
|
1191
|
-
vim config/prd-rules.yaml # run-linters.js自动读取
|
|
1192
|
-
```
|
|
1193
1009
|
|
|
1194
|
-
***
|
|
1195
1010
|
|
|
1196
|
-
## API 层
|
|
1011
|
+
## API 层 / API Layer
|
|
1197
1012
|
|
|
1198
|
-
### 启动 API 服务器
|
|
1013
|
+
### 启动 API 服务器 / Start API Server
|
|
1199
1014
|
|
|
1200
1015
|
```bash
|
|
1201
|
-
# 默认端口 3000
|
|
1016
|
+
# 默认端口 / Default port 3000
|
|
1202
1017
|
pdd api
|
|
1203
1018
|
|
|
1204
1019
|
# 自定义端口 + CORS
|
|
1205
1020
|
pdd api -p 8080 --cors
|
|
1206
1021
|
```
|
|
1207
1022
|
|
|
1208
|
-
### 调用示例
|
|
1023
|
+
### 调用示例 / Usage Examples
|
|
1209
1024
|
|
|
1210
1025
|
```bash
|
|
1211
|
-
# 生成规格
|
|
1026
|
+
# 生成规格 / Generate spec
|
|
1212
1027
|
curl -X POST http://localhost:3000/api/v1/generate \
|
|
1213
1028
|
-H "Content-Type: application/json" \
|
|
1214
1029
|
-d '{"prd_path": "./prd.prdx", "template": "default"}'
|
|
1215
1030
|
|
|
1216
|
-
# 验证功能
|
|
1031
|
+
# 验证功能 / Verify feature
|
|
1217
1032
|
curl -X POST http://localhost:3000/api/v1/verify \
|
|
1218
1033
|
-H "Content-Type: application/json" \
|
|
1219
1034
|
-d '{"spec_path": "./spec.md", "source_dir": "./src"}'
|
|
1220
1035
|
|
|
1221
|
-
# 列出技能
|
|
1036
|
+
# 列出技能 / List skills
|
|
1222
1037
|
curl http://localhost:3000/api/v1/skills?category=core
|
|
1223
1038
|
```
|
|
1224
1039
|
|
|
1225
|
-
### gRPC 调用示例
|
|
1226
|
-
|
|
1227
|
-
```bash
|
|
1228
|
-
# 基于 HTTP/2 + Protobuf JSON 格式
|
|
1229
|
-
curl -X POST http://localhost:50051/pdd.SkillService/ListSkills \
|
|
1230
|
-
-H "Content-Type: application/grpc+protojson" \
|
|
1231
|
-
-d '{}'
|
|
1232
|
-
```
|
|
1233
|
-
|
|
1234
1040
|
***
|
|
1235
1041
|
|
|
1236
|
-
## MCP 协议集成
|
|
1042
|
+
## MCP 协议集成 / MCP Protocol Integration
|
|
1237
1043
|
|
|
1238
1044
|
PDD-Skills 可作为 MCP Server 被 Claude Desktop / Cursor / Windsurf 等 AI IDE 直接调用:
|
|
1239
1045
|
|
|
1240
|
-
|
|
1046
|
+
> **English**: PDD-Skills can serve as an MCP Server directly callable by AI IDEs like Claude Desktop, Cursor, and Windsurf.
|
|
1047
|
+
|
|
1048
|
+
### 配置 Claude Desktop / Configure Claude Desktop
|
|
1241
1049
|
|
|
1242
1050
|
```json
|
|
1243
1051
|
{
|
|
@@ -1250,22 +1058,20 @@ PDD-Skills 可作为 MCP Server 被 Claude Desktop / Cursor / Windsurf 等 AI ID
|
|
|
1250
1058
|
}
|
|
1251
1059
|
```
|
|
1252
1060
|
|
|
1253
|
-
### 可用 Tools
|
|
1061
|
+
### 可用 Tools / Available Tools
|
|
1254
1062
|
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
| Tool | 参数 | 返回值 |
|
|
1063
|
+
| Tool | 参数 / Parameters | 返回值 / Returns |
|
|
1258
1064
|
| -------------------- | ----------------------- | ------------- |
|
|
1259
|
-
| `pdd_generate_spec`
|
|
1260
|
-
| `pdd_generate_code`
|
|
1261
|
-
| `pdd_verify_feature` |
|
|
1262
|
-
| `pdd_code_review`
|
|
1263
|
-
| `pdd_list_skills`
|
|
1264
|
-
| `pdd_get_status`
|
|
1065
|
+
| `pdd_generate_spec` | prd_path, template | 生成的规格文件路径 / Generated spec path |
|
|
1066
|
+
| `pdd_generate_code` | spec_path, feature_id | 生成的文件列表 / Generated files |
|
|
1067
|
+
| `pdd_verify_feature` | spec_path, source_dir | 验证结果 / Verification result |
|
|
1068
|
+
| `pdd_code_review` | source_dir, rules | 审查报告 / Review report |
|
|
1069
|
+
| `pdd_list_skills` | category, language | 技能列表 / Skills list |
|
|
1070
|
+
| `pdd_get_status` | - | 系统状态 / System status |
|
|
1265
1071
|
|
|
1266
1072
|
***
|
|
1267
1073
|
|
|
1268
|
-
## SDK 使用指南
|
|
1074
|
+
## SDK 使用指南 / SDK Guide
|
|
1269
1075
|
|
|
1270
1076
|
### JavaScript SDK
|
|
1271
1077
|
|
|
@@ -1279,29 +1085,21 @@ const client = new PDDJS({
|
|
|
1279
1085
|
enableCache: true
|
|
1280
1086
|
});
|
|
1281
1087
|
|
|
1282
|
-
// 事件监听
|
|
1088
|
+
// 事件监听 / Event listening
|
|
1283
1089
|
client.on('success', ({ method, result }) => {
|
|
1284
|
-
console.log(`✅ ${method}
|
|
1090
|
+
console.log(`✅ ${method} 完成 / completed`);
|
|
1285
1091
|
});
|
|
1286
1092
|
|
|
1287
|
-
// 完整工作流
|
|
1093
|
+
// 完整工作流 / Complete workflow
|
|
1288
1094
|
const spec = await client.generateSpec({ prdPath: './prd.prdx' });
|
|
1289
|
-
console.log(`提取了 ${spec.features.length}
|
|
1290
|
-
|
|
1291
|
-
for (const feature of spec.features.slice(0, 3)) {
|
|
1292
|
-
const code = await client.generateCode({
|
|
1293
|
-
specPath: spec.specPath,
|
|
1294
|
-
featureId: feature.id
|
|
1295
|
-
});
|
|
1296
|
-
console.log(` 📄 ${feature.id}: ${code.filesGenerated.length} files`);
|
|
1297
|
-
}
|
|
1095
|
+
console.log(`提取了 / Extracted ${spec.features.length} 个功能点 / features`);
|
|
1298
1096
|
|
|
1299
|
-
// 验证
|
|
1097
|
+
// 验证 / Verification
|
|
1300
1098
|
const verifyResult = await client.verifyFeature({
|
|
1301
1099
|
specPath: spec.specPath,
|
|
1302
1100
|
sourceDir: './src'
|
|
1303
1101
|
});
|
|
1304
|
-
console.log(
|
|
1102
|
+
console.log(`覆盖率 / Coverage: ${verifyResult.coveragePercent}%`);
|
|
1305
1103
|
|
|
1306
1104
|
await client.close();
|
|
1307
1105
|
```
|
|
@@ -1314,23 +1112,20 @@ from pdd_sdk import PDDClient
|
|
|
1314
1112
|
|
|
1315
1113
|
async def main():
|
|
1316
1114
|
async with PDDClient(endpoint="http://localhost:3000", debug=True) as client:
|
|
1317
|
-
#
|
|
1318
|
-
client.on("request:end", lambda e: print(f"✅ {e['method']} ({e['duration_ms']}ms)"))
|
|
1319
|
-
|
|
1320
|
-
# 生成规格
|
|
1115
|
+
# 生成规格 / Generate spec
|
|
1321
1116
|
spec = await client.generate_spec(prd_path="./prd.prdx")
|
|
1322
|
-
print(f"生成 {len(spec.features)} 个功能点")
|
|
1117
|
+
print(f"生成 / Generated {len(spec.features)} 个功能点 / features")
|
|
1323
1118
|
|
|
1324
|
-
# 批量生成代码
|
|
1119
|
+
# 批量生成代码 / Batch generate code
|
|
1325
1120
|
results = await client.batch_generate_specs([
|
|
1326
1121
|
{"spec_path": spec.spec_path, "feature_id": f["id"]}
|
|
1327
1122
|
for f in spec.features[:3]
|
|
1328
1123
|
])
|
|
1329
1124
|
|
|
1330
|
-
# 验证
|
|
1125
|
+
# 验证 / Verify
|
|
1331
1126
|
verify = await client.verify_feature(spec_path=spec.spec_path, source_dir="./src")
|
|
1332
|
-
print(f"
|
|
1333
|
-
print(f"
|
|
1127
|
+
print(f"覆盖率 / Coverage: {verify.coverage_percent}%")
|
|
1128
|
+
print(f"等级 / Grade: {verify.grade}")
|
|
1334
1129
|
|
|
1335
1130
|
if __name__ == "__main__":
|
|
1336
1131
|
asyncio.run(main())
|
|
@@ -1338,9 +1133,9 @@ if __name__ == "__main__":
|
|
|
1338
1133
|
|
|
1339
1134
|
***
|
|
1340
1135
|
|
|
1341
|
-
## 智能引擎
|
|
1136
|
+
## 智能引擎 / Intelligence Engine
|
|
1342
1137
|
|
|
1343
|
-
### 缓存使用
|
|
1138
|
+
### 缓存使用 / Cache Usage
|
|
1344
1139
|
|
|
1345
1140
|
```javascript
|
|
1346
1141
|
import { createSystemCache } from 'pdd-skills/lib/cache/system-cache.js';
|
|
@@ -1351,16 +1146,16 @@ const cache = createSystemCache({
|
|
|
1351
1146
|
l3: { maxSize: 2000, ttl: 7200000, dir: './cache' } // 2h
|
|
1352
1147
|
});
|
|
1353
1148
|
|
|
1354
|
-
// 自动三级穿透
|
|
1149
|
+
// 自动三级穿透 / Auto three-level penetration
|
|
1355
1150
|
await cache.set('spec:user-auth', specData);
|
|
1356
|
-
const hit = await cache.get('spec:user-auth'); // L1 命中
|
|
1151
|
+
const hit = await cache.get('spec:user-auth'); // L1 命中 / L1 hit
|
|
1357
1152
|
|
|
1358
|
-
// 命中统计
|
|
1153
|
+
// 命中统计 / Hit statistics
|
|
1359
1154
|
console.log(cache.stats());
|
|
1360
1155
|
// { l1: { hits: 95, misses: 5, rate: 0.95 }, ... }
|
|
1361
1156
|
```
|
|
1362
1157
|
|
|
1363
|
-
### Token 预算
|
|
1158
|
+
### Token 预算 / Token Budget
|
|
1364
1159
|
|
|
1365
1160
|
```javascript
|
|
1366
1161
|
import { TokenBudgetManager } from 'pdd-skills/lib/token/budget-manager.js';
|
|
@@ -1368,71 +1163,47 @@ import { TokenBudgetManager } from 'pdd-skills/lib/token/budget-manager.js';
|
|
|
1368
1163
|
const budget = new TokenBudgetManager({ totalTokens: 100000 });
|
|
1369
1164
|
|
|
1370
1165
|
budget.on('warning', ({ phase, percent }) => {
|
|
1371
|
-
console.log(`⚠️ ${phase} 阶段已使用 ${percent}%`);
|
|
1166
|
+
console.log(`⚠️ ${phase} 阶段已使用 / phase used ${percent}%`);
|
|
1372
1167
|
});
|
|
1373
1168
|
|
|
1374
1169
|
budget.on('critical', ({ phase }) => {
|
|
1375
|
-
console.log(`🚫 ${phase}
|
|
1170
|
+
console.log(`🚫 ${phase} 阶段超预算! / phase exceeded budget!`);
|
|
1376
1171
|
});
|
|
1377
1172
|
|
|
1378
|
-
// 在各阶段消费
|
|
1173
|
+
// 在各阶段消费 / Consume in phases
|
|
1379
1174
|
budget.consume('analysis', 5000);
|
|
1380
1175
|
budget.consume('implementation', 35000);
|
|
1381
1176
|
|
|
1382
|
-
// 生成报告
|
|
1177
|
+
// 生成报告 / Generate report
|
|
1383
1178
|
console.log(budget.generateReport());
|
|
1384
1179
|
```
|
|
1385
1180
|
|
|
1386
|
-
### 质量评分
|
|
1181
|
+
### 质量评分 / Quality Scoring
|
|
1387
1182
|
|
|
1388
1183
|
```javascript
|
|
1389
1184
|
import { QualityScorer } from 'pdd-skills/lib/quality/scorer.js';
|
|
1390
1185
|
|
|
1391
1186
|
const scorer = new QualityScorer();
|
|
1392
1187
|
|
|
1393
|
-
// 评分单个文件
|
|
1188
|
+
// 评分单个文件 / Score single file
|
|
1394
1189
|
const result = await scorer.scoreFile('./src/user-service.js');
|
|
1395
1190
|
console.log(`${result.grade} (${result.score}/100)`);
|
|
1396
1191
|
// B (72/100) — readability: B, maintainability: A, robustness: C, ...
|
|
1397
1192
|
|
|
1398
|
-
// 评分整个目录
|
|
1193
|
+
// 评分整个目录 / Score directory
|
|
1399
1194
|
const report = await scorer.scoreDirectory('./src', {
|
|
1400
1195
|
format: 'table', // table | json | markdown
|
|
1401
|
-
threshold: 'C' //
|
|
1402
|
-
});
|
|
1403
|
-
```
|
|
1404
|
-
|
|
1405
|
-
### 迭代优化
|
|
1406
|
-
|
|
1407
|
-
```javascript
|
|
1408
|
-
import { IterationController } from 'pdd-skills/lib/iteration/controller.js';
|
|
1409
|
-
|
|
1410
|
-
const controller = new IterationController({
|
|
1411
|
-
maxRounds: 5,
|
|
1412
|
-
convergenceThreshold: 0.05,
|
|
1413
|
-
reviewer: autoReviewer,
|
|
1414
|
-
fixer: autoFixer
|
|
1415
|
-
});
|
|
1416
|
-
|
|
1417
|
-
controller.on('round-complete', ({ round, score, improved }) => {
|
|
1418
|
-
console.log(`Round ${round}: score=${score.toFixed(1)}, improved=${improved ? 'yes' : 'no'}`);
|
|
1419
|
-
});
|
|
1420
|
-
|
|
1421
|
-
const result = await controller.run({
|
|
1422
|
-
specPath: './specs/auth.md',
|
|
1423
|
-
sourceDir: './src'
|
|
1196
|
+
threshold: 'C' // 低于此级别高亮 / Highlight below this level
|
|
1424
1197
|
});
|
|
1425
|
-
|
|
1426
|
-
console.log(`完成 ${result.roundsCompleted} 轮, 最终得分: ${result.finalScore}`);
|
|
1427
1198
|
```
|
|
1428
1199
|
|
|
1429
1200
|
***
|
|
1430
1201
|
|
|
1431
|
-
## 插件系统
|
|
1202
|
+
## 插件系统 / Plugin System
|
|
1432
1203
|
|
|
1433
|
-
### 开发插件
|
|
1204
|
+
### 开发插件 / Develop Plugin
|
|
1434
1205
|
|
|
1435
|
-
最小可行插件只需 2
|
|
1206
|
+
最小可行插件只需 2 个文件 / Minimum viable plugin requires only 2 files:
|
|
1436
1207
|
|
|
1437
1208
|
**plugin.json**
|
|
1438
1209
|
|
|
@@ -1440,7 +1211,7 @@ console.log(`完成 ${result.roundsCompleted} 轮, 最终得分: ${result.finalS
|
|
|
1440
1211
|
{
|
|
1441
1212
|
"name": "my-plugin",
|
|
1442
1213
|
"version": "1.0.0",
|
|
1443
|
-
"description": "我的插件",
|
|
1214
|
+
"description": "我的插件 / My plugin",
|
|
1444
1215
|
"main": "index.js",
|
|
1445
1216
|
"pdd": ">=3.0.0",
|
|
1446
1217
|
"hooks": ["post-verify"],
|
|
@@ -1457,27 +1228,27 @@ import { PluginBase } from 'pdd-skills/lib/plugin/plugin-sdk.js';
|
|
|
1457
1228
|
|
|
1458
1229
|
export default class MyPlugin extends PluginBase {
|
|
1459
1230
|
async onActivate(context) {
|
|
1460
|
-
context.logger.info('MyPlugin 已激活!');
|
|
1231
|
+
context.logger.info('MyPlugin 已激活! / Activated!');
|
|
1461
1232
|
|
|
1462
1233
|
this.registerCommand('greet', {
|
|
1463
|
-
description: '打个招呼',
|
|
1234
|
+
description: '打个招呼 / Say hello',
|
|
1464
1235
|
handler: (args) => `Hello, ${args.name || 'world'}!`
|
|
1465
1236
|
});
|
|
1466
1237
|
}
|
|
1467
1238
|
|
|
1468
1239
|
async onDeactivate(context) {
|
|
1469
|
-
context.logger.info('MyPlugin 正在停用...');
|
|
1240
|
+
context.logger.info('MyPlugin 正在停用... / Deactivating...');
|
|
1470
1241
|
}
|
|
1471
1242
|
}
|
|
1472
1243
|
```
|
|
1473
1244
|
|
|
1474
|
-
### 加载插件
|
|
1245
|
+
### 加载插件 / Load Plugin
|
|
1475
1246
|
|
|
1476
1247
|
```bash
|
|
1477
|
-
# 复制到插件目录
|
|
1248
|
+
# 复制到插件目录 / Copy to plugins directory
|
|
1478
1249
|
cp -r my-plugin ~/.pdd-skills/plugins/
|
|
1479
1250
|
|
|
1480
|
-
# 通过 PluginManager 加载
|
|
1251
|
+
# 通过 PluginManager 加载 / Load via PluginManager
|
|
1481
1252
|
node -e "
|
|
1482
1253
|
import { PluginManager } from './lib/plugin/plugin-manager.js';
|
|
1483
1254
|
const mgr = new PluginManager({ pluginsDir: './plugins' });
|
|
@@ -1488,28 +1259,28 @@ console.log(mgr.listPlugins());
|
|
|
1488
1259
|
|
|
1489
1260
|
***
|
|
1490
1261
|
|
|
1491
|
-
## OpenClaw 集成
|
|
1262
|
+
## OpenClaw 集成 / OpenClaw Integration
|
|
1492
1263
|
|
|
1493
|
-
### 启动 OpenClaw 服务
|
|
1264
|
+
### 启动 OpenClaw 服务 / Start OpenClaw Service
|
|
1494
1265
|
|
|
1495
1266
|
```bash
|
|
1496
|
-
#
|
|
1267
|
+
# 启动服务(后台守护进程 / Daemon mode)
|
|
1497
1268
|
pdd openclaw start -p 5001 -t my-secret-token --daemon
|
|
1498
1269
|
|
|
1499
|
-
# 查看状态
|
|
1270
|
+
# 查看状态 / Check status
|
|
1500
1271
|
pdd openclaw status
|
|
1501
1272
|
|
|
1502
|
-
# 列出已注册工具
|
|
1273
|
+
# 列出已注册工具 / List registered tools
|
|
1503
1274
|
pdd openclaw list-tools
|
|
1504
1275
|
|
|
1505
|
-
# 测试工具调用
|
|
1276
|
+
# 测试工具调用 / Test tool invocation
|
|
1506
1277
|
pdd openclaw test -n pdd_generate_spec
|
|
1507
1278
|
|
|
1508
|
-
# 查看通信日志
|
|
1279
|
+
# 查看通信日志 / View communication logs
|
|
1509
1280
|
pdd openclaw logs --tail
|
|
1510
1281
|
```
|
|
1511
1282
|
|
|
1512
|
-
### 数据同步
|
|
1283
|
+
### 数据同步 / Data Sync
|
|
1513
1284
|
|
|
1514
1285
|
```javascript
|
|
1515
1286
|
import { DataSyncManager, SyncScheduler } from 'pdd-skills/lib/openclaw/data-sync.js';
|
|
@@ -1519,269 +1290,190 @@ const sync = new DataSyncManager({
|
|
|
1519
1290
|
conflictStrategy: 'last-write-wins'
|
|
1520
1291
|
});
|
|
1521
1292
|
|
|
1522
|
-
// 同步四种数据类型
|
|
1293
|
+
// 同步四种数据类型 / Sync four data types
|
|
1523
1294
|
await sync.syncSkills();
|
|
1524
1295
|
await sync.syncConfig();
|
|
1525
1296
|
await sync.syncCache();
|
|
1526
1297
|
await sync.syncReports();
|
|
1527
1298
|
|
|
1528
|
-
// 定时同步(每5
|
|
1299
|
+
// 定时同步(每5分钟 / Every 5 minutes)
|
|
1529
1300
|
const scheduler = new SyncScheduler(sync, { interval: 300000 });
|
|
1530
1301
|
scheduler.start();
|
|
1531
1302
|
```
|
|
1532
1303
|
|
|
1533
1304
|
***
|
|
1534
1305
|
|
|
1535
|
-
## 项目结构
|
|
1306
|
+
## 项目结构 / Project Structure
|
|
1536
1307
|
|
|
1537
1308
|
```
|
|
1538
1309
|
pdd-skills-v3/
|
|
1539
1310
|
├── bin/
|
|
1540
|
-
│ └── pdd.js # CLI 入口 (20+ 子命令)
|
|
1311
|
+
│ └── pdd.js # CLI 入口 / CLI Entry (20+ 子命令 / subcommands)
|
|
1541
1312
|
│
|
|
1542
|
-
├── lib/ # 核心库 (~80 个模块)
|
|
1543
|
-
│ ├── api-server.js # HTTP 服务器
|
|
1544
|
-
│ ├── api-routes.js # 18 个 RESTful 端点
|
|
1545
|
-
│ ├── mcp-server.js # MCP 协议服务器
|
|
1546
|
-
│ ├── grpc/ # gRPC 兼容层
|
|
1547
|
-
│
|
|
1548
|
-
│ │ ├── proto-definitions.js # Proto3 编解码
|
|
1549
|
-
│ │ └── grpc-routes.js # 8 个方法路由
|
|
1550
|
-
│ ├── sdk-base.js # SDK 统一接口
|
|
1313
|
+
├── lib/ # 核心库 / Core Library (~80 个模块 / modules)
|
|
1314
|
+
│ ├── api-server.js # HTTP 服务器 / HTTP Server
|
|
1315
|
+
│ ├── api-routes.js # 18 个 RESTful 端点 / Endpoints
|
|
1316
|
+
│ ├── mcp-server.js # MCP 协议服务器 / MCP Protocol Server
|
|
1317
|
+
│ ├── grpc/ # gRPC 兼容层 / gRPC Compatible Layer
|
|
1318
|
+
│ ├── sdk-base.js # SDK 统一接口 / SDK Unified Interface
|
|
1551
1319
|
│ ├── sdk-js.js # JavaScript SDK
|
|
1552
|
-
│ ├── sdk-python/ # Python SDK (8 文件)
|
|
1553
|
-
│ ├── plugin/ # 插件系统
|
|
1554
|
-
│
|
|
1555
|
-
│
|
|
1556
|
-
│
|
|
1557
|
-
│
|
|
1558
|
-
│ ├──
|
|
1559
|
-
│
|
|
1560
|
-
│ │ ├── cli-integration.js
|
|
1561
|
-
│ │ ├── api-integration.js
|
|
1562
|
-
│ │ └── data-sync.js
|
|
1563
|
-
│ ├── cache/ # 三级缓存
|
|
1564
|
-
│ │ ├── system-cache.js # L1/L2/L3 缓存
|
|
1565
|
-
│ │ └── cache-config.js # 缓存配置
|
|
1566
|
-
│ ├── token/ # Token 预算
|
|
1567
|
-
│ │ ├── budget-manager.js # 预算管理器
|
|
1568
|
-
│ │ └── budget-alert.js # 预算预警
|
|
1569
|
-
│ ├── quality/ # 质量评分
|
|
1570
|
-
│ │ ├── scorer.js # 五维引擎
|
|
1571
|
-
│ │ └── rules/ # 31 条规则
|
|
1572
|
-
│ │ ├── readability.js
|
|
1573
|
-
│ │ ├── maintainability.js
|
|
1574
|
-
│ │ ├── robustness.js
|
|
1575
|
-
│ │ ├── performance.js
|
|
1576
|
-
│ │ └── security.js
|
|
1577
|
-
│ ├── iteration/ # 迭代优化
|
|
1578
|
-
│ │ ├── controller.js # 迭代控制器
|
|
1579
|
-
│ │ ├── auto-reviewer.js # 自动审查
|
|
1580
|
-
│ │ └── auto-fixer.js # 自动修复
|
|
1581
|
-
│ │
|
|
1582
|
-
│ └── vm/ # ★ PDD Visual Manager (Phase 7 新增, ~38 文件)
|
|
1583
|
-
│ ├── index.js # VM 入口
|
|
1584
|
-
│ ├── data-aggregator.js # 数据聚合器
|
|
1585
|
-
│ ├── state-manager.js # 状态管理器
|
|
1586
|
-
│ ├── event-bus.js # 事件总线
|
|
1587
|
-
│ │
|
|
1588
|
-
│ ├── dashboard/ # Web Dashboard (零依赖 SPA)
|
|
1589
|
-
│ │ ├── server.js # HTTP+SSE 服务器
|
|
1590
|
-
│ │ ├── sse.js # SSE 推送服务
|
|
1591
|
-
│ │ ├── api-routes.js # 11 个 REST API 端点
|
|
1592
|
-
│ │ ├── index.html # SPA 主页面
|
|
1593
|
-
│ │ ├── css/
|
|
1594
|
-
│ │ │ └── dashboard.css
|
|
1595
|
-
│ │ └── js/
|
|
1596
|
-
│ │ ├── app.js # SPA 框架
|
|
1597
|
-
│ │ ├── pipeline-view.js
|
|
1598
|
-
│ │ ├── kanban-view.js
|
|
1599
|
-
│ │ ├── quality-view.js
|
|
1600
|
-
│ │ ├── system-view.js
|
|
1601
|
-
│ │ └── charts/ # Canvas 图表引擎
|
|
1602
|
-
│ │ ├── canvas-engine.js
|
|
1603
|
-
│ │ ├── radar.js
|
|
1604
|
-
│ │ ├── histogram.js
|
|
1605
|
-
│ │ ├── gauge.js
|
|
1606
|
-
│ │ ├── line-chart.js
|
|
1607
|
-
│ │ └── horizontal-bar.js
|
|
1608
|
-
│ │
|
|
1609
|
-
│ ├── tui/ # Terminal TUI (零依赖 ANSI)
|
|
1610
|
-
│ │ ├── tui.js # 主控制器
|
|
1611
|
-
│ │ ├── renderer.js # ANSI 渲染引擎
|
|
1612
|
-
│ │ ├── input.js # 键盘输入处理
|
|
1613
|
-
│ │ ├── screens/ # 4 个屏幕
|
|
1614
|
-
│ │ │ ├── overview-screen.js
|
|
1615
|
-
│ │ │ ├── kanban-screen.js
|
|
1616
|
-
│ │ │ ├── quality-screen.js
|
|
1617
|
-
│ │ │ └── system-screen.js
|
|
1618
|
-
│ │ ├── components/ # 5 个组件
|
|
1619
|
-
│ │ │ ├── progress-bar.js
|
|
1620
|
-
│ │ │ ├── table.js
|
|
1621
|
-
│ │ │ ├── sparkline.js
|
|
1622
|
-
│ │ │ ├── status-light.js
|
|
1623
|
-
│ │ │ └── card.js
|
|
1624
|
-
│ │ └── overlays/ # 覆盖层
|
|
1625
|
-
│ │ ├── detail-overlay.js
|
|
1626
|
-
│ │ └── help-overlay.js
|
|
1627
|
-
│ │
|
|
1628
|
-
│ └── hooks/ # VM Hook 系统
|
|
1629
|
-
│ ├── vm-hooks.js
|
|
1630
|
-
│ └── handlers/
|
|
1631
|
-
│ ├── on-feature-update.js
|
|
1632
|
-
│ ├── on-phase-change.js
|
|
1633
|
-
│ └── on-quality-alert.js
|
|
1320
|
+
│ ├── sdk-python/ # Python SDK (8 文件 / files)
|
|
1321
|
+
│ ├── plugin/ # 插件系统 / Plugin System
|
|
1322
|
+
│ ├── openclaw/ # OpenClaw 集成 / Integration
|
|
1323
|
+
│ ├── cache/ # 三级缓存 / Three-Level Cache
|
|
1324
|
+
│ ├── token/ # Token 预算 / Budget
|
|
1325
|
+
│ ├── quality/ # 质量评分 / Quality Scoring
|
|
1326
|
+
│ ├── iteration/ # 迭代优化 / Iteration
|
|
1327
|
+
│ └── vm/ # ★ PDD Visual Manager (~38 文件 / files)
|
|
1634
1328
|
│
|
|
1635
|
-
├── skills/
|
|
1636
|
-
│ ├── core/ # 12 个核心技能
|
|
1637
|
-
│ ├── expert/ # 11 个专家技能
|
|
1638
|
-
│ ├── entropy/ # 4 个熵减技能
|
|
1639
|
-
│ ├── openspec/ # 10 个 OpenSpec 技能
|
|
1640
|
-
│ └── pr/ # 7 个 PR 技能
|
|
1329
|
+
├── skills/ # 技能文件 / Skill Files (41+ 个)
|
|
1330
|
+
│ ├── core/ # 12 个核心技能 / Core Skills
|
|
1331
|
+
│ ├── expert/ # 11 个专家技能 / Expert Skills
|
|
1332
|
+
│ ├── entropy/ # 4 个熵减技能 / Entropy Skills
|
|
1333
|
+
│ ├── openspec/ # 10 个 OpenSpec 技能 / OpenSpec Skills
|
|
1334
|
+
│ └── pr/ # 7 个 PR 技能 / PR Skills
|
|
1641
1335
|
│
|
|
1642
|
-
├── scripts/
|
|
1643
|
-
│ ├── linter/
|
|
1644
|
-
│
|
|
1645
|
-
│
|
|
1646
|
-
│
|
|
1647
|
-
│ ├──
|
|
1648
|
-
│
|
|
1649
|
-
│ ├── i18n-checker.js # 双语合规检查
|
|
1650
|
-
│ ├── token-analyzer.js # Token 分析
|
|
1651
|
-
│ └── windows-compat-check.js # Windows 兼容性检查
|
|
1336
|
+
├── scripts/ # 工具脚本 / Tool Scripts
|
|
1337
|
+
│ ├── linter/ # PRD Linter 工具链 / Toolchain
|
|
1338
|
+
│ ├── cso-analyzer.js # CSO 触发准确率分析 / Trigger Accuracy
|
|
1339
|
+
│ ├── eval-runner.js # Evals 测试运行器 / Test Runner
|
|
1340
|
+
│ ├── i18n-checker.js # 双语合规检查 / Bilingual Compliance
|
|
1341
|
+
│ ├── token-analyzer.js # Token 分析 / Analysis
|
|
1342
|
+
│ └── windows-compat-check.js # Windows 兼容性检查 / Compatibility
|
|
1652
1343
|
│
|
|
1653
|
-
├── docs/ # 项目文档
|
|
1654
|
-
│ ├── i18n-spec.md # i18n 规范
|
|
1655
|
-
│ ├── lessons.md # 经验教训
|
|
1656
|
-
│ ├── tasks.md # 任务跟踪
|
|
1657
|
-
│ ├── token-checklist.md # Token 检查清单
|
|
1658
|
-
│ └── vm-tasks.md # VM 任务清单
|
|
1344
|
+
├── docs/ # 项目文档 / Documentation
|
|
1345
|
+
│ ├── i18n-spec.md # i18n 规范 / Specification
|
|
1346
|
+
│ ├── lessons.md # 经验教训 / Lessons Learned
|
|
1347
|
+
│ ├── tasks.md # 任务跟踪 / Task Tracking
|
|
1348
|
+
│ ├── token-checklist.md # Token 检查清单 / Checklist
|
|
1349
|
+
│ └── vm-tasks.md # VM 任务清单 / VM Tasks
|
|
1659
1350
|
│
|
|
1660
|
-
├── templates/
|
|
1661
|
-
├── config/
|
|
1662
|
-
│ ├── bug-patterns.yaml # Bug模式库 (14
|
|
1663
|
-
│ ├── prd-rules.yaml # PRD检测规则 (30
|
|
1664
|
-
│ ├── gate-config.yaml # 质量门控配置 (4
|
|
1665
|
-
│ ├── bpmn-rules.yaml # BPMN校验规则
|
|
1351
|
+
├── templates/ # 项目模板 / Project Templates
|
|
1352
|
+
├── config/ # 配置中心 / Configuration Center (Single Source of Truth)
|
|
1353
|
+
│ ├── bug-patterns.yaml # Bug模式库 / Bug Patterns (14个模式)
|
|
1354
|
+
│ ├── prd-rules.yaml # PRD检测规则 / PRD Rules (30条)
|
|
1355
|
+
│ ├── gate-config.yaml # 质量门控配置 / Quality Gates (4级)
|
|
1356
|
+
│ ├── bpmn-rules.yaml # BPMN校验规则 / BPMN Rules
|
|
1666
1357
|
│ ├── checkstyle.xml # Java Checkstyle配置
|
|
1667
1358
|
│ ├── eslint.config.js # ESLint配置
|
|
1668
1359
|
│ ├── pmd.xml # PMD配置
|
|
1669
1360
|
│ ├── ruff.toml # Python Ruff配置
|
|
1670
1361
|
│ └── sqlfluff.cfg # SQL SQLFluff配置
|
|
1671
|
-
├── hooks/
|
|
1672
|
-
└── package.json
|
|
1362
|
+
├── hooks/ # Hook 配置 / Hook Configuration
|
|
1363
|
+
└── package.json # v3.1.2
|
|
1673
1364
|
```
|
|
1674
1365
|
|
|
1675
1366
|
***
|
|
1676
1367
|
|
|
1677
|
-
## 配置说明
|
|
1368
|
+
## 配置说明 / Configuration
|
|
1678
1369
|
|
|
1679
|
-
### 全局配置文件
|
|
1680
|
-
|
|
1681
|
-
PDD-Skills 支持多层配置覆盖:
|
|
1370
|
+
### 全局配置文件 / Global Configuration
|
|
1682
1371
|
|
|
1683
1372
|
```bash
|
|
1684
|
-
# 查看当前配置
|
|
1373
|
+
# 查看当前配置 / View current config
|
|
1685
1374
|
pdd config --list
|
|
1686
1375
|
|
|
1687
|
-
# 设置配置项
|
|
1376
|
+
# 设置配置项 / Set config
|
|
1688
1377
|
pdd config --set server.port=8080
|
|
1689
1378
|
pdd config --set cache.l1.maxSize=200
|
|
1690
1379
|
pdd config --set quality.threshold=B
|
|
1691
1380
|
```
|
|
1692
1381
|
|
|
1693
|
-
### 配置优先级
|
|
1382
|
+
### 配置优先级 / Configuration Priority
|
|
1694
1383
|
|
|
1695
1384
|
```
|
|
1696
|
-
CLI 参数 > 环境变量 > .pddrc.local > .pddrc > defaults
|
|
1385
|
+
CLI 参数 / CLI Args > 环境变量 / Env Vars > .pddrc.local > .pddrc > defaults
|
|
1697
1386
|
```
|
|
1698
1387
|
|
|
1699
|
-
### 关键配置项
|
|
1700
|
-
|
|
1701
|
-
| 分类
|
|
1702
|
-
| --------- |
|
|
1703
|
-
|
|
|
1704
|
-
|
|
|
1705
|
-
|
|
|
1706
|
-
|
|
|
1707
|
-
|
|
|
1708
|
-
|
|
|
1709
|
-
| **Token** | budget.total
|
|
1710
|
-
|
|
|
1711
|
-
|
|
|
1712
|
-
|
|
|
1713
|
-
|
|
|
1714
|
-
|
|
|
1715
|
-
|
|
|
1716
|
-
|
|
|
1717
|
-
| **★ VM**
|
|
1718
|
-
|
|
|
1719
|
-
|
|
|
1720
|
-
|
|
|
1721
|
-
|
|
|
1722
|
-
|
|
|
1723
|
-
| **★
|
|
1724
|
-
|
|
|
1388
|
+
### 关键配置项 / Key Configurations
|
|
1389
|
+
|
|
1390
|
+
| 分类 / Category | 配置项 / Config | 默认值 / Default | 说明 / Description |
|
|
1391
|
+
| --------- | ------------------------ | ---------------- | ----------------- |
|
|
1392
|
+
| **服务器 / Server** | server.port | 3000 | API 端口 / API Port |
|
|
1393
|
+
| | server.cors | false | CORS 跨域 / Cross-origin |
|
|
1394
|
+
| | server.rateLimit | 100/min | 限流阈值 / Rate limit |
|
|
1395
|
+
| **缓存 / Cache** | cache.l1.enabled | true | L1 缓存开关 / L1 Cache |
|
|
1396
|
+
| | cache.l1.maxSize | 100 | L1 容量 / Capacity |
|
|
1397
|
+
| | cache.l3.dir | ./cache | L3 磁盘目录 / Disk directory |
|
|
1398
|
+
| **Token** | budget.total | 100000 | 总预算 / Total budget |
|
|
1399
|
+
| | budget.warnAt | 0.80 | 警告阈值 / Warning threshold |
|
|
1400
|
+
| | budget.blockAt | 0.95 | 阻断阈值 / Block threshold |
|
|
1401
|
+
| **质量 / Quality** | quality.grade | C | 最低通过等级 / Min pass grade |
|
|
1402
|
+
| | iteration.maxRounds | 5 | 最大迭代轮次 / Max iterations |
|
|
1403
|
+
| | iteration.convergence | 0.05 | 收敛阈值 / Convergence threshold |
|
|
1404
|
+
| **插件 / Plugins** | plugins.dir | ./plugins | 插件目录 / Plugins directory |
|
|
1405
|
+
| | sandbox.enabled | true | 沙箱开关 / Sandbox enabled |
|
|
1406
|
+
| **★ VM** | vm.port | 3001 | Dashboard 端口 / Dashboard port |
|
|
1407
|
+
| | vm.refreshInterval | 30 | 刷新间隔(秒) / Refresh interval (s) |
|
|
1408
|
+
| | vm.theme | light | 主题 / Theme light/dark |
|
|
1409
|
+
| | vm.autoOpen | true | 自动打开浏览器 / Auto open browser |
|
|
1410
|
+
| | vm.maxSSEConnections | 100 | 最大SSE连接数 / Max SSE connections |
|
|
1411
|
+
| | vm.tuiRefreshInterval | 5 | TUI 刷新间隔(秒) / TUI refresh (s) |
|
|
1412
|
+
| **★ 脚手架 / Scaffold** | scaffold.defaultTemplate | python-fullstack | 默认模板 / Default template |
|
|
1413
|
+
| | scaffold.outputDir | ./output | 输出目录 / Output directory |
|
|
1725
1414
|
|
|
1726
1415
|
***
|
|
1727
1416
|
|
|
1728
|
-
## 开发指南
|
|
1417
|
+
## 开发指南 / Development Guide
|
|
1729
1418
|
|
|
1730
|
-
### 贡献流程
|
|
1419
|
+
### 贡献流程 / Contribution Process
|
|
1731
1420
|
|
|
1732
|
-
1. Fork 本仓库
|
|
1733
|
-
2.
|
|
1734
|
-
3. 编写代码(遵循 ESM / JSDoc /
|
|
1735
|
-
4. 添加/更新 evals 测试
|
|
1736
|
-
5. 运行 `pdd i18n` 和 `pdd cso` 确保合规
|
|
1737
|
-
6. 提交 PR 并填写模板
|
|
1421
|
+
1. Fork 本仓库 / Fork this repository
|
|
1422
|
+
2. 创建特性分支 / Create feature branch: `git checkout -b feature/amazing`
|
|
1423
|
+
3. 编写代码(遵循 ESM / JSDoc / 零依赖原则)/ Write code (follow ESM / JSDoc / zero-dependency principles)
|
|
1424
|
+
4. 添加/更新 evals 测试 / Add/update evals tests
|
|
1425
|
+
5. 运行 `pdd i18n` 和 `pdd cso` 确保合规 / Run `pdd i18n` and `pdd cso` for compliance
|
|
1426
|
+
6. 提交 PR 并填写模板 / Submit PR with template
|
|
1738
1427
|
|
|
1739
|
-
### 代码规范
|
|
1428
|
+
### 代码规范 / Code Standards
|
|
1740
1429
|
|
|
1741
|
-
-
|
|
1742
|
-
-
|
|
1743
|
-
-
|
|
1744
|
-
-
|
|
1745
|
-
- **i18n**: 新技能必须包含 🇨🇳/🇺🇸 双语章节
|
|
1430
|
+
- **模块 / Modules**: ESM (`import`/`export`)
|
|
1431
|
+
- **风格 / Style**: JSDoc 注释 + 中文注释 / JSDoc + Chinese comments
|
|
1432
|
+
- **依赖 / Dependencies**: 仅 Node.js 内置模块(lib/ 下)/ Node.js built-in modules only
|
|
1433
|
+
- **测试 / Tests**: evals 框架(`pdd eval -c your-category`)/ evals framework
|
|
1434
|
+
- **i18n**: 新技能必须包含 🇨🇳/🇺🇸 双语章节 / New skills must include bilingual sections
|
|
1746
1435
|
|
|
1747
|
-
### 技能开发模板
|
|
1436
|
+
### 技能开发模板 / Skill Development Template
|
|
1748
1437
|
|
|
1749
|
-
详见 [开发者指南](docs/developer-guide/developer-guide.md) 或参考 `example-plugins/hello-world/`。
|
|
1438
|
+
详见 [开发者指南 / Developer Guide](docs/developer-guide/developer-guide.md) 或参考 `example-plugins/hello-world/`。
|
|
1750
1439
|
|
|
1751
1440
|
***
|
|
1752
1441
|
|
|
1753
|
-
## 版本历史
|
|
1442
|
+
## 版本历史 / Version History
|
|
1754
1443
|
|
|
1755
|
-
| 版本
|
|
1756
|
-
| ---------- | ---------- |
|
|
1757
|
-
| **v3.
|
|
1758
|
-
| **v3.1.
|
|
1759
|
-
| **v3.1.
|
|
1760
|
-
| **v3.0
|
|
1761
|
-
| **v3.0.
|
|
1762
|
-
|
|
|
1763
|
-
|
|
|
1444
|
+
| 版本 / Version | 日期 / Date | 重要变更 / Major Changes |
|
|
1445
|
+
| ---------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1446
|
+
| **v3.2.0** | 2026-05-08 | **★ 测试用例系统发布 / Testcase System Release**: 新增 testcase-modeler(测试用例建模师)和 testcase-agent(自动化测试执行专家)两个核心 Skill,基于 Chrome DevTools MCP 实现零代码 E2E 测试自动化,支持自然语言转 YAML 用例、5条执行铁律、4级自愈策略、深度网络校验、专业 HTML 报告生成,总技能数增至 **43+** |
|
|
1447
|
+
| **v3.1.2** | 2026-04-10 | **技能生态大扩展 / Skill Ecosystem Expansion**: 新增 7 个专家技能 / 7 new expert skills, 新增 4 个熵减技能 / 4 entropy skills, PR技能扩展至7个 / PR skills expanded to 7, 核心技能增至12个 / Core skills increased to 12, 总计41+技能 / Total 41+ skills |
|
|
1448
|
+
| **v3.1.1** | 2026-04-08 | **Windows兼容性+项目结构优化 / Windows Compatibility + Structure Optimization**: 添加 Windows 终端兼容支持 / Windows terminal support, 优化项目初始化流程 / Optimize init process |
|
|
1449
|
+
| **v3.1.0** | 2026-04-05 | **智能能力+生态集成 / Intelligence + Ecosystem**: Bug模式库集中化 / Centralized bug patterns, PRD Linter扩展 / Extended PRD linter, 4级门控引擎 / 4-level gate engine, OpenAPI契约同步 / OpenAPI sync, PRD感知动态模板 / PRD-aware templates, MVP分层交付策略 / MVP delivery, expert-ruoyi+expert-activiti专家技能 / Expert skills |
|
|
1450
|
+
| **v3.0.1** | 2026-04-07 | **PDD Visual Manager 发布 / PDD Visual Manager Release**: Web Dashboard + Terminal TUI 双形态可视化监控 / Dual-mode visualization, 11个REST API端点 / 11 REST endpoints, SSE实时推送 / SSE push, Canvas图表引擎 / Canvas charts, ANSI TUI组件库 / ANSI TUI components |
|
|
1451
|
+
| **v3.0.0** | 2026-04-05 | **正式发布版 / Official Release**: 6大Phase全部完成 / 6 Phases completed + 插件系统 / Plugin system + OpenClaw + gRPC + Python SDK |
|
|
1452
|
+
| v2.x | 2026-03 | 内部迭代版本 / Internal iteration: MCP/SDK/缓存/Token/质量/迭代 / Cache/Token/Quality/Iteration |
|
|
1453
|
+
| v1.x | 2025-12 | 初始版本 / Initial version: 基础设施 + 核心技能 + Linter / Infrastructure + Core skills + Linter |
|
|
1764
1454
|
|
|
1765
1455
|
***
|
|
1766
1456
|
|
|
1767
|
-
## 致谢
|
|
1457
|
+
## 致谢 / Acknowledgments
|
|
1768
1458
|
|
|
1769
|
-
- **Claude / Anthropic** — AI 原生开发的理想伙伴
|
|
1770
|
-
- **Node.js
|
|
1771
|
-
-
|
|
1459
|
+
- **Claude / Anthropic** — AI 原生开发的理想伙伴 / Ideal partner for AI-native development
|
|
1460
|
+
- **Node.js 社区 / Node.js Community** — 提供卓越的内置模块 / Providing excellent built-in modules
|
|
1461
|
+
- **开源社区 / Open Source Community** — 所有灵感和最佳实践的来源 / Source of all inspiration and best practices
|
|
1772
1462
|
|
|
1773
1463
|
***
|
|
1774
1464
|
|
|
1775
|
-
## 许可证
|
|
1465
|
+
## 许可证 / License
|
|
1776
1466
|
|
|
1777
1467
|
[MIT](LICENSE) © PDD Team 2025-2026
|
|
1778
1468
|
|
|
1779
1469
|
***
|
|
1780
1470
|
|
|
1781
1471
|
<p align="center">
|
|
1782
|
-
<b>PDD-Skills v3.1.
|
|
1472
|
+
<b>PDD-Skills v3.1.5 — 让 AI 成为你的全职结对编程伙伴 🤖</b>
|
|
1473
|
+
<br>
|
|
1474
|
+
<b>Let AI be your full-time pair programming partner 🤖</b>
|
|
1783
1475
|
</p>
|
|
1784
1476
|
|
|
1785
1477
|
<p align="center">
|
|
1786
|
-
<sub>
|
|
1478
|
+
<sub>43+ Skills ✅ · 14 Bug Patterns ✅ · 30 PRD Rules ✅ · 4-Level Gate ✅ · 4 Entropy Skills ✅ · ★ Testcase System ✅</sub>
|
|
1787
1479
|
</p>
|