AI辅助需求沟通实战:从混乱到清晰的九轮对话技巧
经由九轮细致沟通,软件需求终于变得清晰明了。

软件需求说明书(摘选)
## 1. 项目概述### 1.1 项目背景Linux 系统的 iptables 和 ipset 是强大的防火墙工具,但存在以下痛点:- 纯命令行操作,语法复杂,学习成本高- 规则多了之后难以管理和查找- 不支持备注,时间长了不知道规则用途- ipset 和 iptables 配合使用时操作繁琐- 没有操作审计和备份机制- 无法通过 API 供其他系统自动化调用### 1.2 项目目标开发一个基于 Go 语言的 Web 管理工具,提供直观的 Web 界面和 RESTful API,简化 iptables 和 ipset 的管理操作。### 1.3 目标用户- 运维工程师:日常管理服务器防火墙规则- 自动化系统:通过 API 动态调整防火墙规则(如风控系统自动封禁 IP)### 1.4 运行环境- 操作系统:Linux(支持 iptables 和 ipset)- 部署方式:单二进制文件部署- 浏览器:现代桌面浏览器(Chrome、Firefox、Safari、Edge)---## 2. 总体设计### 2.1 技术栈| 层次 | 选型 | 说明 ||------|------|------|| 后端 | Go 1.22+ | 静态编译,单二进制部署 || Web 框架 | Gin / Echo / Fiber | 高性能 HTTP 服务 || 数据库 | SQLite | 轻量级,和二进制同目录,无额外依赖 || 前端 | Vue3 + Element Plus / Ant Design Vue | 简洁实用,亮色主题 || 部署 | 单二进制 + systemd | 运维友好 |### 2.2 部署架构```┌─────────────┐ HTTP ┌──────────────────┐│ 浏览器 │ ─────▶ │ iptables-manager │└─────────────┘ └─────────┬────────┘ │┌─────────────┐ HTTP ┌─────────▼────────┐│ 其他系统 │ ─────▶ │ Go 后端服务 │└─────────────┘ └─────────┬────────┘ │ ┌────────▼────────┐ │ iptables/ipset │ │ (系统调用) │ └─────────────────┘
与AI沟通时,核心要点是先让它给出方案而不是直接编写代码。方案确定后,再让AI去生成代码。虽然我完全不懂Go语言,AI还是提供了几个可行的实现建议,并说明了理由:
- Web框架在规范中列了Gin、Echo、Fiber三个选项 → 最终推荐Gin
- 前端UI组件库选择 → 推荐Element Plus
- 前端部署策略:将构建产物嵌入Go二进制实现真正的单文件部署,还是前后端分离? → 推荐嵌入二进制
- 开发策略:一次性全部实现还是分阶段迭代? → 推荐后端优先
最终确定的技术栈为:Go 1.22+ / Gin / GORM + SQLite / Vue3 + Element Plus,并通过go:embed实现单二进制发布。
整个软件构建过程大约花费两小时。

当需求描述比较详尽时,Claude Code往往会进入长时间编程状态,单次任务经常超过半小时。
在需求沟通环节,可以让Agent启用多轮交互模式,逐步细化问题。

如果AI错误地理解了指令并开始编写代码,需要立刻让其中止,并再次强调当前阶段只讨论方案,不输出代码。

整个沟通过程中,AI会不断提出各种疑问,我们只需基于实际情况逐一回答,也可以主动补充自己的构想。

需求沟通通常需要多轮推进,每一轮聚焦解决一个或两个问题,以此将需求一点点梳理清楚。

沟通的最终交付物是一份软件需求说明书,这份文档可以直接指导Claude Code等编程工具进行软件设计。拿到说明书后,即可让Claude Code着手实现。它会根据文档列出所需的技术栈,如果你不太熟悉,完全可以使用它推荐的技术组合,并附带解释每个选择的优缺点。面对包含前后端的复杂需求,Claude Code会自行评估并优先实现核心部分,例如先构建后端,再推进前端。
以上演示了如何高效地与AI沟通需求,以及如何借助Claude Code将软件需求说明书转化为实际代码设计。

全文完。