needware-cli 1.2.7 → 1.2.9
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/EXAMPLES.md +241 -0
- package/README.md +70 -5
- package/dist/commands/agent.d.ts +4 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +122 -17
- package/dist/commands/agent.js.map +1 -1
- package/dist/core/cli.js +1 -1
- package/dist/core/cli.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/prompt.d.ts +30 -0
- package/dist/types/prompt.d.ts.map +1 -0
- package/dist/types/prompt.js +5 -0
- package/dist/types/prompt.js.map +1 -0
- package/dist/utils/prompt-parser.d.ts +22 -0
- package/dist/utils/prompt-parser.d.ts.map +1 -0
- package/dist/utils/prompt-parser.js +148 -0
- package/dist/utils/prompt-parser.js.map +1 -0
- package/examples/sdk-message-example.json +10 -0
- package/install.sh +528 -0
- package/package.json +1 -1
- package/AGENT_COMMAND_SUMMARY.md +0 -364
- package/CHANGELOG.md +0 -172
- package/FEATURE_INTERACTIVE_MODE.md +0 -304
- package/INTERACTIVE_EXAMPLE.md +0 -306
- package/PROJECT_SUMMARY.md +0 -435
- package/QUICK_START.md +0 -216
- package/SETUP.md +0 -315
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
# 交互式多轮对话功能实现总结
|
|
2
|
-
|
|
3
|
-
## 🎯 功能概述
|
|
4
|
-
|
|
5
|
-
为 needware-cli 的 Agent 命令添加了交互式多轮对话支持,使用户能够与 Claude Agent 进行持续的对话交互,AI 会记住上下文历史,提供更连贯和智能的协作体验。
|
|
6
|
-
|
|
7
|
-
## ✨ 新增特性
|
|
8
|
-
|
|
9
|
-
### 1. 交互式对话模式
|
|
10
|
-
- ✅ 支持通过 `-i` 或 `--interactive` 选项启用
|
|
11
|
-
- ✅ 可选的初始提示词
|
|
12
|
-
- ✅ 持续的用户输入循环
|
|
13
|
-
- ✅ 输入 `exit` 或 `quit` 优雅退出
|
|
14
|
-
|
|
15
|
-
### 2. 上下文保持
|
|
16
|
-
- ✅ 每个会话拥有唯一的 session ID
|
|
17
|
-
- ✅ AI 记住整个对话历史
|
|
18
|
-
- ✅ 支持引用之前的对话内容
|
|
19
|
-
|
|
20
|
-
### 3. 增强配置
|
|
21
|
-
- ✅ 最大轮次从 30 增加到 100
|
|
22
|
-
- ✅ 所有现有选项在交互模式下仍然可用
|
|
23
|
-
- ✅ 保持向后兼容性
|
|
24
|
-
|
|
25
|
-
## 📝 代码更改
|
|
26
|
-
|
|
27
|
-
### 修改的文件
|
|
28
|
-
|
|
29
|
-
#### 1. `src/commands/agent.ts`
|
|
30
|
-
**主要更改:**
|
|
31
|
-
- 导入新依赖:`inquirer`, `SDKUserMessage`, `randomUUID`
|
|
32
|
-
- 修改 `execute()` 方法以支持交互模式判断
|
|
33
|
-
- 新增 `runInteractiveAgent()` 方法处理交互式会话
|
|
34
|
-
- 新增 `createMessageStream()` 异步生成器创建消息流
|
|
35
|
-
- 更新 `showHelp()` 方法包含交互模式说明
|
|
36
|
-
|
|
37
|
-
**关键代码:**
|
|
38
|
-
```typescript
|
|
39
|
-
// 异步生成器实现消息流
|
|
40
|
-
private async *createMessageStream(
|
|
41
|
-
sessionId: string,
|
|
42
|
-
initialPrompt?: string
|
|
43
|
-
): AsyncGenerator<SDKUserMessage> {
|
|
44
|
-
// 发送初始消息
|
|
45
|
-
if (initialPrompt) {
|
|
46
|
-
yield {
|
|
47
|
-
session_id: sessionId,
|
|
48
|
-
type: 'user',
|
|
49
|
-
message: { role: 'user', content: initialPrompt.trim() },
|
|
50
|
-
parent_tool_use_id: null,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// 持续接收用户输入
|
|
55
|
-
while (true) {
|
|
56
|
-
const { userInput } = await inquirer.prompt([...]);
|
|
57
|
-
if (userInput === 'exit' || userInput === 'quit') break;
|
|
58
|
-
yield { /* 用户消息 */ };
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
#### 2. `src/core/cli.ts`
|
|
64
|
-
**主要更改:**
|
|
65
|
-
- 将 `<prompt>` 参数改为 `[prompt]`(可选)
|
|
66
|
-
- 添加 `-i, --interactive` 选项
|
|
67
|
-
- 更新选项说明
|
|
68
|
-
|
|
69
|
-
**代码片段:**
|
|
70
|
-
```typescript
|
|
71
|
-
commandInstance
|
|
72
|
-
.argument('[prompt]', 'The task prompt (optional in interactive mode)')
|
|
73
|
-
.option('-i, --interactive', 'Enable interactive multi-turn conversation')
|
|
74
|
-
// ... 其他选项
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### 新增的文件
|
|
78
|
-
|
|
79
|
-
#### 1. `docs/INTERACTIVE_MODE.md`
|
|
80
|
-
- 完整的交互式模式文档
|
|
81
|
-
- 功能特性说明
|
|
82
|
-
- 使用方法和示例
|
|
83
|
-
- 技术实现细节
|
|
84
|
-
- 常见问题解答
|
|
85
|
-
|
|
86
|
-
#### 2. `INTERACTIVE_EXAMPLE.md`
|
|
87
|
-
- 实际使用示例
|
|
88
|
-
- 各种场景演示
|
|
89
|
-
- 最佳实践
|
|
90
|
-
- 实用技巧
|
|
91
|
-
|
|
92
|
-
#### 3. `docs/INTERACTIVE_QUICK_REF.md`
|
|
93
|
-
- 快速参考卡片
|
|
94
|
-
- 命令速查表
|
|
95
|
-
- 故障排除指南
|
|
96
|
-
- 快捷键和技巧
|
|
97
|
-
|
|
98
|
-
### 更新的文件
|
|
99
|
-
|
|
100
|
-
#### 1. `README.md`
|
|
101
|
-
- 添加交互式模式使用示例
|
|
102
|
-
- 更新文档链接
|
|
103
|
-
- 突出显示新特性
|
|
104
|
-
|
|
105
|
-
#### 2. `CHANGELOG.md`
|
|
106
|
-
- 记录新功能详情
|
|
107
|
-
- 技术实现说明
|
|
108
|
-
- 使用方式示例
|
|
109
|
-
|
|
110
|
-
## 🔧 技术实现
|
|
111
|
-
|
|
112
|
-
### 核心技术栈
|
|
113
|
-
```typescript
|
|
114
|
-
import { query, SDKUserMessage } from '@anthropic-ai/claude-agent-sdk';
|
|
115
|
-
import inquirer from 'inquirer';
|
|
116
|
-
import { randomUUID } from 'crypto';
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### 类型定义
|
|
120
|
-
```typescript
|
|
121
|
-
// SDK 支持两种 prompt 类型
|
|
122
|
-
type PromptType = string | AsyncIterable<SDKUserMessage>;
|
|
123
|
-
|
|
124
|
-
// SDKUserMessage 结构
|
|
125
|
-
interface SDKUserMessage {
|
|
126
|
-
uuid?: UUID;
|
|
127
|
-
session_id: string;
|
|
128
|
-
type: 'user';
|
|
129
|
-
message: APIUserMessage;
|
|
130
|
-
parent_tool_use_id: string | null;
|
|
131
|
-
isSynthetic?: boolean;
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### 流程图
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
用户启动交互模式
|
|
139
|
-
↓
|
|
140
|
-
生成唯一 session ID
|
|
141
|
-
↓
|
|
142
|
-
发送初始提示(如有)
|
|
143
|
-
↓
|
|
144
|
-
┌─────────────────┐
|
|
145
|
-
│ 等待用户输入 │←──────┐
|
|
146
|
-
└─────────────────┘ │
|
|
147
|
-
↓ │
|
|
148
|
-
检查是否退出命令 │
|
|
149
|
-
↓ │
|
|
150
|
-
是 → 退出会话 │
|
|
151
|
-
否 ↓ │
|
|
152
|
-
发送消息给 Agent │
|
|
153
|
-
↓ │
|
|
154
|
-
接收并显示 Agent 响应 │
|
|
155
|
-
↓ │
|
|
156
|
-
────────────────────────→┘
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
## 📊 功能对比
|
|
160
|
-
|
|
161
|
-
| 特性 | 单次对话 | 交互模式 |
|
|
162
|
-
|------|---------|---------|
|
|
163
|
-
| 命令格式 | `agent "prompt"` | `agent -i [prompt]` |
|
|
164
|
-
| 对话轮次 | 1 | 无限(最多100) |
|
|
165
|
-
| 上下文保持 | ❌ | ✅ |
|
|
166
|
-
| 会话 ID | ❌ | ✅ |
|
|
167
|
-
| 优雅退出 | 自动 | 手动(exit/quit) |
|
|
168
|
-
| 适用场景 | 简单任务 | 复杂任务 |
|
|
169
|
-
|
|
170
|
-
## 🚀 使用示例
|
|
171
|
-
|
|
172
|
-
### 基础用法
|
|
173
|
-
```bash
|
|
174
|
-
# 直接启动
|
|
175
|
-
needware-cli agent -i
|
|
176
|
-
|
|
177
|
-
# 带初始提示
|
|
178
|
-
needware-cli agent -i "创建一个待办应用"
|
|
179
|
-
|
|
180
|
-
# 指定工作目录
|
|
181
|
-
needware-cli agent -i --working-dir ./my-project
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
### 实际对话流程
|
|
185
|
-
```
|
|
186
|
-
$ needware-cli agent -i
|
|
187
|
-
|
|
188
|
-
🤖 启动交互式 Claude Agent...
|
|
189
|
-
💡 提示: 输入 'exit' 或 'quit' 退出对话
|
|
190
|
-
|
|
191
|
-
You: 创建一个登录表单
|
|
192
|
-
Agent: [创建组件...]
|
|
193
|
-
|
|
194
|
-
You: 添加表单验证
|
|
195
|
-
Agent: [添加验证...]
|
|
196
|
-
|
|
197
|
-
You: 使用 TypeScript
|
|
198
|
-
Agent: [添加类型...]
|
|
199
|
-
|
|
200
|
-
You: exit
|
|
201
|
-
👋 退出对话...
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
## ✅ 测试清单
|
|
205
|
-
|
|
206
|
-
- [x] 代码编译无错误
|
|
207
|
-
- [x] TypeScript 类型检查通过
|
|
208
|
-
- [x] ESLint 检查通过
|
|
209
|
-
- [x] 构建成功(`npm run build`)
|
|
210
|
-
- [x] 文档完整性
|
|
211
|
-
- [x] 向后兼容性
|
|
212
|
-
|
|
213
|
-
## 📚 文档结构
|
|
214
|
-
|
|
215
|
-
```
|
|
216
|
-
needware-code/
|
|
217
|
-
├── README.md (更新)
|
|
218
|
-
├── CHANGELOG.md (更新)
|
|
219
|
-
├── INTERACTIVE_EXAMPLE.md (新增)
|
|
220
|
-
├── FEATURE_INTERACTIVE_MODE.md (本文件)
|
|
221
|
-
├── docs/
|
|
222
|
-
│ ├── INTERACTIVE_MODE.md (新增)
|
|
223
|
-
│ └── INTERACTIVE_QUICK_REF.md (新增)
|
|
224
|
-
└── src/
|
|
225
|
-
├── commands/
|
|
226
|
-
│ └── agent.ts (更新)
|
|
227
|
-
└── core/
|
|
228
|
-
└── cli.ts (更新)
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
## 🎓 学习要点
|
|
232
|
-
|
|
233
|
-
### 1. AsyncIterable 的使用
|
|
234
|
-
```typescript
|
|
235
|
-
async function* generator() {
|
|
236
|
-
while (true) {
|
|
237
|
-
const input = await getUserInput();
|
|
238
|
-
yield processInput(input);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
### 2. Inquirer 交互式输入
|
|
244
|
-
```typescript
|
|
245
|
-
const { userInput } = await inquirer.prompt([{
|
|
246
|
-
type: 'input',
|
|
247
|
-
name: 'userInput',
|
|
248
|
-
message: 'You:',
|
|
249
|
-
validate: (input) => input.trim() || '请输入内容',
|
|
250
|
-
}]);
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
### 3. 会话管理
|
|
254
|
-
```typescript
|
|
255
|
-
import { randomUUID } from 'crypto';
|
|
256
|
-
const sessionId = randomUUID();
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
## 🔍 代码审查要点
|
|
260
|
-
|
|
261
|
-
1. **类型安全**: 所有 TypeScript 类型正确定义
|
|
262
|
-
2. **错误处理**: 妥善处理用户中断和异常
|
|
263
|
-
3. **向后兼容**: 原有单次对话功能不受影响
|
|
264
|
-
4. **用户体验**: 清晰的提示信息和帮助文档
|
|
265
|
-
5. **代码质量**: 遵循项目编码规范
|
|
266
|
-
|
|
267
|
-
## 🐛 已知限制
|
|
268
|
-
|
|
269
|
-
1. **会话不持久化**: 退出后会话历史丢失
|
|
270
|
-
2. **单会话限制**: 一次只能运行一个交互会话
|
|
271
|
-
3. **上下文窗口**: 受 AI 模型上下文窗口限制
|
|
272
|
-
4. **网络依赖**: 需要稳定的网络连接
|
|
273
|
-
|
|
274
|
-
## 🔮 未来改进方向
|
|
275
|
-
|
|
276
|
-
1. **会话持久化**: 保存和恢复对话历史
|
|
277
|
-
2. **多会话支持**: 同时管理多个会话
|
|
278
|
-
3. **会话导出**: 导出对话记录为文件
|
|
279
|
-
4. **快捷命令**: 在对话中使用特殊命令(如 `/help`, `/clear`)
|
|
280
|
-
5. **语音输入**: 支持语音转文本输入
|
|
281
|
-
|
|
282
|
-
## 📞 反馈和支持
|
|
283
|
-
|
|
284
|
-
- GitHub Issues: https://github.com/needware/needware-cli/issues
|
|
285
|
-
- 邮箱: support@needware.com
|
|
286
|
-
- 文档: 查看 `docs/INTERACTIVE_MODE.md`
|
|
287
|
-
|
|
288
|
-
## ✨ 总结
|
|
289
|
-
|
|
290
|
-
成功实现了 needware-cli Agent 命令的交互式多轮对话功能,通过使用 Claude Agent SDK 的 `AsyncIterable<SDKUserMessage>` 特性和 inquirer 实现持续的用户输入循环。该功能显著提升了处理复杂任务的能力,使 AI 能够在完整的上下文中理解和响应用户需求。
|
|
291
|
-
|
|
292
|
-
**核心价值:**
|
|
293
|
-
- 🎯 更自然的交互方式
|
|
294
|
-
- 🧠 上下文连续性
|
|
295
|
-
- 🔄 迭代式开发支持
|
|
296
|
-
- 💬 实时反馈和调整
|
|
297
|
-
|
|
298
|
-
---
|
|
299
|
-
|
|
300
|
-
**实现日期**: 2025-10-17
|
|
301
|
-
**版本**: v1.1.0 (Unreleased)
|
|
302
|
-
**作者**: Needware Team
|
|
303
|
-
|
|
304
|
-
|
package/INTERACTIVE_EXAMPLE.md
DELETED
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
# 交互式多轮对话使用示例
|
|
2
|
-
|
|
3
|
-
本文档提供了实际的使用示例,演示如何使用 needware-cli 的交互式多轮对话功能。
|
|
4
|
-
|
|
5
|
-
## 基础示例:创建一个 React 组件
|
|
6
|
-
|
|
7
|
-
### 场景:需要创建并不断优化一个 React 组件
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
$ needware-cli agent -i "创建一个用户卡片组件"
|
|
11
|
-
|
|
12
|
-
🤖 启动交互式 Claude Agent...
|
|
13
|
-
|
|
14
|
-
工作目录: /Users/yourname/my-app
|
|
15
|
-
|
|
16
|
-
💡 提示: 输入 'exit' 或 'quit' 退出对话
|
|
17
|
-
|
|
18
|
-
✓ Agent 已启动
|
|
19
|
-
|
|
20
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
21
|
-
|
|
22
|
-
Agent: [创建 UserCard.tsx 组件...]
|
|
23
|
-
|
|
24
|
-
You: 添加头像显示功能
|
|
25
|
-
|
|
26
|
-
Agent: [添加 Avatar 子组件和相关逻辑...]
|
|
27
|
-
|
|
28
|
-
You: 使用 TypeScript 接口定义 props
|
|
29
|
-
|
|
30
|
-
Agent: [添加 TypeScript 类型定义...]
|
|
31
|
-
|
|
32
|
-
You: 添加响应式布局
|
|
33
|
-
|
|
34
|
-
Agent: [使用 Tailwind CSS 实现响应式...]
|
|
35
|
-
|
|
36
|
-
You: 添加 hover 效果
|
|
37
|
-
|
|
38
|
-
Agent: [添加交互动画...]
|
|
39
|
-
|
|
40
|
-
You: exit
|
|
41
|
-
|
|
42
|
-
👋 退出对话...
|
|
43
|
-
|
|
44
|
-
✓ 对话结束
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## 高级示例:重构现有代码
|
|
48
|
-
|
|
49
|
-
### 场景:需要重构一个复杂的组件
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
$ needware-cli agent -i \
|
|
53
|
-
--working-dir ./src/components \
|
|
54
|
-
--additional-dirs ./src/types,./src/utils
|
|
55
|
-
|
|
56
|
-
🤖 启动交互式 Claude Agent...
|
|
57
|
-
|
|
58
|
-
工作目录: /Users/yourname/my-app/src/components
|
|
59
|
-
额外目录: ./src/types, ./src/utils
|
|
60
|
-
|
|
61
|
-
💡 提示: 输入 'exit' 或 'quit' 退出对话
|
|
62
|
-
|
|
63
|
-
✓ Agent 已启动
|
|
64
|
-
|
|
65
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
66
|
-
|
|
67
|
-
You: 帮我重构 Dashboard.tsx,将其拆分成多个小组件
|
|
68
|
-
|
|
69
|
-
Agent: [分析代码结构,提出重构建议...]
|
|
70
|
-
|
|
71
|
-
You: 好的,按照你的建议执行
|
|
72
|
-
|
|
73
|
-
Agent: [创建多个子组件文件...]
|
|
74
|
-
|
|
75
|
-
You: StatisticsCard 组件需要添加加载状态
|
|
76
|
-
|
|
77
|
-
Agent: [添加 loading skeleton...]
|
|
78
|
-
|
|
79
|
-
You: 使用自定义 hook 管理状态
|
|
80
|
-
|
|
81
|
-
Agent: [创建 useDashboard.ts hook...]
|
|
82
|
-
|
|
83
|
-
You: 添加错误处理
|
|
84
|
-
|
|
85
|
-
Agent: [添加 error boundary 和错误提示...]
|
|
86
|
-
|
|
87
|
-
You: 完美,请帮我更新相关的测试文件
|
|
88
|
-
|
|
89
|
-
Agent: [更新测试用例...]
|
|
90
|
-
|
|
91
|
-
You: exit
|
|
92
|
-
|
|
93
|
-
👋 退出对话...
|
|
94
|
-
|
|
95
|
-
✓ 对话结束
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
## 实用技巧
|
|
99
|
-
|
|
100
|
-
### 1. 从简单开始,逐步细化
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
$ needware-cli agent -i
|
|
104
|
-
|
|
105
|
-
You: 创建一个登录页面
|
|
106
|
-
|
|
107
|
-
Agent: [创建基础登录页面...]
|
|
108
|
-
|
|
109
|
-
You: 添加表单验证
|
|
110
|
-
|
|
111
|
-
Agent: [添加验证逻辑...]
|
|
112
|
-
|
|
113
|
-
You: 使用 React Hook Form
|
|
114
|
-
|
|
115
|
-
Agent: [重构为 React Hook Form...]
|
|
116
|
-
|
|
117
|
-
You: 添加记住密码功能
|
|
118
|
-
|
|
119
|
-
Agent: [添加 localStorage 逻辑...]
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### 2. 利用上下文记忆
|
|
123
|
-
|
|
124
|
-
AI 会记住之前的对话,你可以引用之前的内容:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
You: 创建一个博客文章列表组件
|
|
128
|
-
|
|
129
|
-
Agent: [创建 BlogList 组件...]
|
|
130
|
-
|
|
131
|
-
You: 为这个列表添加分页
|
|
132
|
-
|
|
133
|
-
Agent: [添加分页功能到 BlogList...]
|
|
134
|
-
|
|
135
|
-
You: 文章详情页也用类似的样式
|
|
136
|
-
|
|
137
|
-
Agent: [使用 BlogList 中的样式创建详情页...]
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### 3. 请求解释和建议
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
You: 解释一下你刚才做的重构
|
|
144
|
-
|
|
145
|
-
Agent: [详细解释重构的原因和好处...]
|
|
146
|
-
|
|
147
|
-
You: 还有什么地方可以优化吗?
|
|
148
|
-
|
|
149
|
-
Agent: [提出进一步优化建议...]
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### 4. 处理错误和调试
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
You: 这个组件运行时报错了
|
|
156
|
-
|
|
157
|
-
Agent: [请你提供错误信息...]
|
|
158
|
-
|
|
159
|
-
You: Cannot read property 'map' of undefined
|
|
160
|
-
|
|
161
|
-
Agent: [分析并修复空值检查问题...]
|
|
162
|
-
|
|
163
|
-
You: 还是有问题
|
|
164
|
-
|
|
165
|
-
Agent: [请求更多上下文,进一步调试...]
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
## 常见对话流程
|
|
169
|
-
|
|
170
|
-
### 模式 1:从零开始
|
|
171
|
-
|
|
172
|
-
```
|
|
173
|
-
1. 初始化项目结构
|
|
174
|
-
2. 创建基础组件
|
|
175
|
-
3. 添加样式
|
|
176
|
-
4. 实现功能
|
|
177
|
-
5. 优化和重构
|
|
178
|
-
6. 添加测试
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### 模式 2:增量开发
|
|
182
|
-
|
|
183
|
-
```
|
|
184
|
-
1. 描述需求
|
|
185
|
-
2. 实现核心功能
|
|
186
|
-
3. 测试反馈
|
|
187
|
-
4. 调整细节
|
|
188
|
-
5. 添加边界情况处理
|
|
189
|
-
6. 最终优化
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### 模式 3:重构现有代码
|
|
193
|
-
|
|
194
|
-
```
|
|
195
|
-
1. 让 AI 分析现有代码
|
|
196
|
-
2. 讨论重构方案
|
|
197
|
-
3. 逐步执行重构
|
|
198
|
-
4. 验证功能正常
|
|
199
|
-
5. 优化性能
|
|
200
|
-
6. 更新文档
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
## 最佳实践
|
|
204
|
-
|
|
205
|
-
### ✅ 推荐做法
|
|
206
|
-
|
|
207
|
-
1. **明确表达需求**
|
|
208
|
-
```
|
|
209
|
-
Good: "创建一个支持分页和搜索的表格组件,使用 TypeScript"
|
|
210
|
-
Bad: "做个表格"
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
2. **逐步推进**
|
|
214
|
-
```
|
|
215
|
-
先实现核心功能 → 再添加细节 → 最后优化
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
3. **及时反馈**
|
|
219
|
-
```
|
|
220
|
-
如果结果不符合预期,立即说明,AI 会调整
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
4. **保持对话连贯**
|
|
224
|
-
```
|
|
225
|
-
利用 AI 的上下文记忆,连续对话效率更高
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
### ❌ 避免的做法
|
|
229
|
-
|
|
230
|
-
1. **一次提出过多要求**
|
|
231
|
-
```
|
|
232
|
-
Bad: "创建完整的电商系统,包括用户、商品、订单、支付等所有功能"
|
|
233
|
-
Better: 先从用户模块开始,逐步添加其他模块
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
2. **频繁重启会话**
|
|
237
|
-
```
|
|
238
|
-
利用交互模式的上下文记忆,而不是每次都重新开始
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
3. **不提供足够的上下文**
|
|
242
|
-
```
|
|
243
|
-
如果 AI 需要了解现有代码结构,提供必要的信息
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
## 实际项目示例
|
|
247
|
-
|
|
248
|
-
### 创建一个完整的待办事项应用
|
|
249
|
-
|
|
250
|
-
```bash
|
|
251
|
-
$ needware-cli agent -i --working-dir ./todo-app
|
|
252
|
-
|
|
253
|
-
You: 创建一个待办事项应用的基础结构
|
|
254
|
-
|
|
255
|
-
Agent: [创建项目结构和基础文件...]
|
|
256
|
-
|
|
257
|
-
You: 实现 Todo 列表组件
|
|
258
|
-
|
|
259
|
-
Agent: [创建 TodoList 组件...]
|
|
260
|
-
|
|
261
|
-
You: 添加新增 Todo 的功能
|
|
262
|
-
|
|
263
|
-
Agent: [创建 AddTodo 表单...]
|
|
264
|
-
|
|
265
|
-
You: 实现完成和删除功能
|
|
266
|
-
|
|
267
|
-
Agent: [添加交互功能...]
|
|
268
|
-
|
|
269
|
-
You: 使用 localStorage 持久化数据
|
|
270
|
-
|
|
271
|
-
Agent: [实现数据持久化...]
|
|
272
|
-
|
|
273
|
-
You: 添加过滤功能(全部/已完成/未完成)
|
|
274
|
-
|
|
275
|
-
Agent: [添加过滤器...]
|
|
276
|
-
|
|
277
|
-
You: 使其响应式,在移动端也好看
|
|
278
|
-
|
|
279
|
-
Agent: [优化响应式布局...]
|
|
280
|
-
|
|
281
|
-
You: 添加暗色模式
|
|
282
|
-
|
|
283
|
-
Agent: [实现主题切换...]
|
|
284
|
-
|
|
285
|
-
You: 完成!帮我生成一个 README
|
|
286
|
-
|
|
287
|
-
Agent: [创建项目文档...]
|
|
288
|
-
|
|
289
|
-
You: exit
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
## 更多资源
|
|
293
|
-
|
|
294
|
-
- [Agent 命令完整文档](./docs/AGENT_COMMAND.md)
|
|
295
|
-
- [交互式模式详细说明](./docs/INTERACTIVE_MODE.md)
|
|
296
|
-
- [快速开始指南](./QUICK_START.md)
|
|
297
|
-
|
|
298
|
-
## 获取帮助
|
|
299
|
-
|
|
300
|
-
如果在使用过程中遇到问题:
|
|
301
|
-
|
|
302
|
-
1. 查看 [常见问题](./docs/INTERACTIVE_MODE.md#常见问题)
|
|
303
|
-
2. 提交 [GitHub Issue](https://github.com/needware/needware-cli/issues)
|
|
304
|
-
3. 发送邮件至 support@needware.com
|
|
305
|
-
|
|
306
|
-
|