@rdmind/rdmind 0.0.12 → 0.0.14-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +3 -3
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.js +2 -0
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/ui/commands/techDesignCommand.d.ts +10 -0
- package/dist/src/ui/commands/techDesignCommand.js +347 -0
- package/dist/src/ui/commands/techDesignCommand.js.map +1 -0
- package/dist/src/ui/commands/techDesignCommand.md +296 -0
- package/dist/src/ui/commands/techDesignCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/techDesignCommand.test.js +53 -0
- package/dist/src/ui/commands/techDesignCommand.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
# /tech-design 命令使用文档
|
|
2
|
+
|
|
3
|
+
## 概述
|
|
4
|
+
|
|
5
|
+
`/tech-design` 是一个基于 AI 的技术方案和执行计划生成工具,可以帮助开发者快速生成标准化的技术文档。
|
|
6
|
+
|
|
7
|
+
## 功能特点
|
|
8
|
+
|
|
9
|
+
- ✅ 自动从 Redoc URL 获取文档内容
|
|
10
|
+
- ✅ 分析代码仓库结构和技术栈
|
|
11
|
+
- ✅ 基于模板生成标准化文档
|
|
12
|
+
- ✅ AI 自动调用工具完成整个流程
|
|
13
|
+
- ✅ 支持 git 仓库检查
|
|
14
|
+
- ✅ 文档自动保存到工作目录
|
|
15
|
+
|
|
16
|
+
## 使用前提
|
|
17
|
+
|
|
18
|
+
1. 必须在 **git 仓库目录** 下运行
|
|
19
|
+
2. 需要提供有效的 **Redoc 文档 URL**
|
|
20
|
+
3. 已配置好 RDMind 的 AI 模型
|
|
21
|
+
|
|
22
|
+
## 子命令
|
|
23
|
+
|
|
24
|
+
### 1. solution - 生成技术方案
|
|
25
|
+
|
|
26
|
+
根据 PRD 文档生成完整的技术方案文档。
|
|
27
|
+
|
|
28
|
+
**命令格式:**
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
/tech-design solution <prd-url>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**简写:**
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
/td s <prd-url>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**示例:**
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
/tech-design solution https://docs.xiaohongshu.com/doc/abc123def456
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**生成内容:**
|
|
47
|
+
|
|
48
|
+
- 评审信息表格
|
|
49
|
+
- 项目背景和 PRD 链接
|
|
50
|
+
- 需求分析(对应 PRD 功能点)
|
|
51
|
+
- 详细设计(技术方案、数据库设计、接口设计等)
|
|
52
|
+
- 工作量评估与排期
|
|
53
|
+
- 上线步骤
|
|
54
|
+
|
|
55
|
+
**输出文件:**
|
|
56
|
+
`tech-solution-YYYY-MM-DD.md`
|
|
57
|
+
|
|
58
|
+
### 2. plan - 生成执行计划
|
|
59
|
+
|
|
60
|
+
根据技术文档生成详细的执行计划和 AI Coding 指导。
|
|
61
|
+
|
|
62
|
+
**命令格式:**
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
/tech-design plan <tech-doc-url>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**简写:**
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
/td p <tech-doc-url>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**示例:**
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
/tech-design plan https://docs.xiaohongshu.com/doc/xyz789abc123
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**生成内容:**
|
|
81
|
+
|
|
82
|
+
- 项目概述(背景、目标、技术栈)
|
|
83
|
+
- 代码结构分析(目录结构、关键模块、依赖关系)
|
|
84
|
+
- 开发任务分解(前置任务、核心任务、后续任务)
|
|
85
|
+
- 编码规范(代码风格、命名约定、注释规范、测试要求)
|
|
86
|
+
- AI Coding 指导(使用建议、代码审查要点)
|
|
87
|
+
- 质量保证(单元测试、集成测试、代码审查流程)
|
|
88
|
+
- 部署和发布(环境、流程、回滚预案)
|
|
89
|
+
- 项目排期表
|
|
90
|
+
- 风险评估
|
|
91
|
+
|
|
92
|
+
**输出文件:**
|
|
93
|
+
`execution-plan-YYYY-MM-DD.md`
|
|
94
|
+
|
|
95
|
+
## 工作流程
|
|
96
|
+
|
|
97
|
+
### solution 子命令流程
|
|
98
|
+
|
|
99
|
+
1. **检查环境**
|
|
100
|
+
- 验证当前目录是否为 git 仓库
|
|
101
|
+
- 检查配置是否正确
|
|
102
|
+
|
|
103
|
+
2. **AI 自动执行**
|
|
104
|
+
- 使用 `redoc_fetch` 工具获取 PRD 文档内容
|
|
105
|
+
- 分析 PRD 需求和功能点
|
|
106
|
+
- 分析当前代码仓库的技术栈和架构
|
|
107
|
+
- 按照技术方案模板填充内容
|
|
108
|
+
|
|
109
|
+
3. **生成文档**
|
|
110
|
+
- 使用 `write` 工具保存文档到工作目录
|
|
111
|
+
- 文档命名:`tech-solution-{日期}.md`
|
|
112
|
+
|
|
113
|
+
### plan 子命令流程
|
|
114
|
+
|
|
115
|
+
1. **检查环境**
|
|
116
|
+
- 验证当前目录是否为 git 仓库
|
|
117
|
+
- 检查配置是否正确
|
|
118
|
+
|
|
119
|
+
2. **AI 自动执行**
|
|
120
|
+
- 使用 `redoc_fetch` 工具获取技术文档内容
|
|
121
|
+
- 分析代码仓库结构(目录、技术栈、代码风格)
|
|
122
|
+
- 提取技术文档中的实现细节
|
|
123
|
+
- 生成详细的任务分解和执行计划
|
|
124
|
+
|
|
125
|
+
3. **生成文档**
|
|
126
|
+
- 使用 `write` 工具保存文档到工作目录
|
|
127
|
+
- 文档命名:`execution-plan-{日期}.md`
|
|
128
|
+
|
|
129
|
+
## 完整使用示例
|
|
130
|
+
|
|
131
|
+
### 场景1:从 PRD 开始新项目
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# 1. 进入项目目录
|
|
135
|
+
cd /path/to/your/project
|
|
136
|
+
|
|
137
|
+
# 2. 确保是 git 仓库
|
|
138
|
+
git status
|
|
139
|
+
|
|
140
|
+
# 3. 启动 RDMind
|
|
141
|
+
rdmind
|
|
142
|
+
|
|
143
|
+
# 4. 在 RDMind 中生成技术方案
|
|
144
|
+
/tech-design solution https://docs.xiaohongshu.com/doc/prd-abc123
|
|
145
|
+
|
|
146
|
+
# 5. 等待 AI 生成完成,查看生成的文档
|
|
147
|
+
# 输出文件:tech-solution-2025-01-15.md
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### 场景2:根据技术方案生成执行计划
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# 1. 进入项目目录
|
|
154
|
+
cd /path/to/your/project
|
|
155
|
+
|
|
156
|
+
# 2. 在 RDMind 中生成执行计划
|
|
157
|
+
/td plan https://docs.xiaohongshu.com/doc/tech-design-xyz789
|
|
158
|
+
|
|
159
|
+
# 3. 等待 AI 生成完成,查看生成的文档
|
|
160
|
+
# 输出文件:execution-plan-2025-01-15.md
|
|
161
|
+
|
|
162
|
+
# 4. 使用执行计划指导开发
|
|
163
|
+
# 可以将执行计划作为上下文提供给 AI 进行代码开发
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## 注意事项
|
|
167
|
+
|
|
168
|
+
### 1. git 仓库要求
|
|
169
|
+
|
|
170
|
+
命令必须在 git 仓库目录下运行,如果不是 git 仓库会看到错误:
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
❌ 当前目录不是 git 仓库,请在代码仓库目录下使用此命令。
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**解决方法:**
|
|
177
|
+
|
|
178
|
+
- 进入正确的 git 仓库目录
|
|
179
|
+
- 或者在当前目录初始化 git:`git init`
|
|
180
|
+
|
|
181
|
+
### 2. Redoc URL 格式
|
|
182
|
+
|
|
183
|
+
支持的 URL 格式:
|
|
184
|
+
|
|
185
|
+
- `https://docs.xiaohongshu.com/doc/{doc_id}`
|
|
186
|
+
- doc_id 必须是 32 位十六进制字符串
|
|
187
|
+
|
|
188
|
+
### 3. AI 执行时间
|
|
189
|
+
|
|
190
|
+
生成过程可能需要几分钟时间,取决于:
|
|
191
|
+
|
|
192
|
+
- 文档内容的复杂度
|
|
193
|
+
- 代码仓库的规模
|
|
194
|
+
- AI 模型的响应速度
|
|
195
|
+
|
|
196
|
+
请耐心等待,不要中断操作。
|
|
197
|
+
|
|
198
|
+
### 4. 文档审查
|
|
199
|
+
|
|
200
|
+
生成的文档是基于 AI 理解和分析的结果,建议:
|
|
201
|
+
|
|
202
|
+
- ✅ 仔细审查生成的内容
|
|
203
|
+
- ✅ 根据实际情况调整和完善
|
|
204
|
+
- ✅ 补充 AI 可能遗漏的细节
|
|
205
|
+
- ✅ 验证技术方案的可行性
|
|
206
|
+
|
|
207
|
+
### 5. 文件冲突
|
|
208
|
+
|
|
209
|
+
如果同一天多次生成文档,文件会被覆盖。建议:
|
|
210
|
+
|
|
211
|
+
- 及时重命名重要的文档
|
|
212
|
+
- 或者手动指定不同的文件名
|
|
213
|
+
|
|
214
|
+
## 技术实现说明
|
|
215
|
+
|
|
216
|
+
### AI 工具调用
|
|
217
|
+
|
|
218
|
+
命令会自动让 AI 调用以下工具:
|
|
219
|
+
|
|
220
|
+
1. **redoc_fetch**
|
|
221
|
+
- 用途:从 Redoc URL 获取文档内容
|
|
222
|
+
- 参数:URL 和提示词
|
|
223
|
+
|
|
224
|
+
2. **write**
|
|
225
|
+
- 用途:将生成的文档保存到文件
|
|
226
|
+
- 参数:文件路径和内容
|
|
227
|
+
|
|
228
|
+
### 模板文件
|
|
229
|
+
|
|
230
|
+
技术方案模板位于:
|
|
231
|
+
|
|
232
|
+
- `packages/cli/templates/tech-design-template.md`
|
|
233
|
+
|
|
234
|
+
执行计划采用动态模板,在 AI 提示词中定义。
|
|
235
|
+
|
|
236
|
+
## 常见问题
|
|
237
|
+
|
|
238
|
+
### Q1: 命令没有反应?
|
|
239
|
+
|
|
240
|
+
**检查:**
|
|
241
|
+
|
|
242
|
+
- 是否在 RDMind 交互式界面中?
|
|
243
|
+
- 是否在 git 仓库目录下?
|
|
244
|
+
- 是否提供了有效的 Redoc URL?
|
|
245
|
+
|
|
246
|
+
### Q2: AI 生成的文档不完整?
|
|
247
|
+
|
|
248
|
+
**原因可能:**
|
|
249
|
+
|
|
250
|
+
- 源文档内容不够详细
|
|
251
|
+
- 代码仓库结构复杂
|
|
252
|
+
- AI 模型上下文限制
|
|
253
|
+
|
|
254
|
+
**解决:**
|
|
255
|
+
|
|
256
|
+
- 提供更详细的 PRD/技术文档
|
|
257
|
+
- 手动补充遗漏的内容
|
|
258
|
+
- 分多次生成不同部分
|
|
259
|
+
|
|
260
|
+
### Q3: 如何自定义模板?
|
|
261
|
+
|
|
262
|
+
**方法:**
|
|
263
|
+
|
|
264
|
+
- 修改 `packages/cli/templates/tech-design-template.md`
|
|
265
|
+
- 或者在 AI 提示词中调整要求
|
|
266
|
+
|
|
267
|
+
### Q4: 支持其他文档格式吗?
|
|
268
|
+
|
|
269
|
+
当前只支持 Redoc 格式的文档。如需支持其他格式:
|
|
270
|
+
|
|
271
|
+
- 可以手动复制文档内容
|
|
272
|
+
- 直接提供给 AI 进行处理
|
|
273
|
+
|
|
274
|
+
## 快捷键和别名
|
|
275
|
+
|
|
276
|
+
- `/tech-design` → `/td`(主命令简写)
|
|
277
|
+
- `solution` → `s`(子命令简写)
|
|
278
|
+
- `plan` → `p`(子命令简写)
|
|
279
|
+
|
|
280
|
+
**完整简写示例:**
|
|
281
|
+
|
|
282
|
+
```
|
|
283
|
+
/td s <url> # 生成技术方案
|
|
284
|
+
/td p <url> # 生成执行计划
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
## 相关命令
|
|
288
|
+
|
|
289
|
+
- `/help` - 查看所有命令帮助
|
|
290
|
+
- `/tools` - 查看可用工具列表
|
|
291
|
+
- `/create` - 创建项目脚手架
|
|
292
|
+
- `/import` - 导入中间件
|
|
293
|
+
|
|
294
|
+
## 反馈和建议
|
|
295
|
+
|
|
296
|
+
如遇到问题或有改进建议,请通过 `/bug` 命令提交反馈。
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
7
|
+
import { techDesignCommand } from './techDesignCommand.js';
|
|
8
|
+
import { CommandKind } from './types.js';
|
|
9
|
+
import { MessageType } from '../types.js';
|
|
10
|
+
import { createMockCommandContext } from '../../test-utils/mockCommandContext.js';
|
|
11
|
+
describe('techDesignCommand', () => {
|
|
12
|
+
let mockContext;
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
mockContext = createMockCommandContext({
|
|
15
|
+
services: {
|
|
16
|
+
config: {},
|
|
17
|
+
},
|
|
18
|
+
ui: {
|
|
19
|
+
addItem: vi.fn(),
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
it('should be defined', () => {
|
|
24
|
+
expect(techDesignCommand).toBeDefined();
|
|
25
|
+
expect(techDesignCommand.name).toBe('tech-design');
|
|
26
|
+
expect(techDesignCommand.kind).toBe(CommandKind.BUILT_IN);
|
|
27
|
+
});
|
|
28
|
+
it('should have subcommands', () => {
|
|
29
|
+
expect(techDesignCommand.subCommands).toBeDefined();
|
|
30
|
+
expect(techDesignCommand.subCommands?.length).toBe(2);
|
|
31
|
+
const subCommandNames = techDesignCommand.subCommands?.map((cmd) => cmd.name);
|
|
32
|
+
expect(subCommandNames).toContain('solution');
|
|
33
|
+
expect(subCommandNames).toContain('plan');
|
|
34
|
+
});
|
|
35
|
+
it('should have alt name', () => {
|
|
36
|
+
expect(techDesignCommand.altNames).toContain('td');
|
|
37
|
+
});
|
|
38
|
+
it('should show help when no subcommand provided', async () => {
|
|
39
|
+
await techDesignCommand.action?.(mockContext, '');
|
|
40
|
+
expect(mockContext.ui.addItem).toHaveBeenCalledWith(expect.objectContaining({
|
|
41
|
+
type: MessageType.INFO,
|
|
42
|
+
text: expect.stringContaining('技术方案和执行计划生成工具'),
|
|
43
|
+
}), expect.any(Number));
|
|
44
|
+
});
|
|
45
|
+
it('should show error for unknown subcommand', async () => {
|
|
46
|
+
await techDesignCommand.action?.(mockContext, 'unknown arg');
|
|
47
|
+
expect(mockContext.ui.addItem).toHaveBeenCalledWith(expect.objectContaining({
|
|
48
|
+
type: MessageType.ERROR,
|
|
49
|
+
text: expect.stringContaining('未知的子命令'),
|
|
50
|
+
}), expect.any(Number));
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=techDesignCommand.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"techDesignCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/techDesignCommand.test.ts"],"names":[],"mappings":"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"}
|