乐于分享
好东西不私藏

和 AI 沟通软件需求

和 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 二进制实现真正的单文件部署,还是前后端分离? → 嵌入二进制 (推荐)

  • 开发策略:一次性全部实现还是分阶段迭代? → 后端优先 (推荐)

技术栈:

tech stack: Go 1.22+ / Gin / GORM + SQLite / Vue3 + Element Plus / go:embed single binary

整个软件构建过程持续了两小时左右

当需求比较详细时,Claude Code 一般会长时间编程,动辄半小时以上。

软件需求沟通阶段,让Agent启用多轮沟通。
如果AI理解错误,开始构建代码,只能让它停下来,强调不写代码。
这个过程中,AI会提出多个问题,我们根据问题来回答就可以了。当然也可以提出自己的想法。
在需求沟通阶段,一般会经过多轮,每一轮会确定一个或两个问题,慢慢把需求描述清楚。
沟通的最终输出物是个需求说明、也叫软件需求说明书。软件需求说明书可以指导Claude Code等编程工具进行软件设计。
拿着软件需求说明书,就可以让Claude Code等编程工具去实现。Claude Code会根据软件需求说明书列出需要使用的技术栈。如果不太懂,可以使用推荐的技术栈。Claude Code会说明每个技术栈的优缺点。
对于一个包含前后端的复杂需求来说,Claude Code会选择优先实现的部分进行实现,比如先实现后端,再实现前端。
这里演示了如何和AI沟通需求,以及如何让claude code根据软件需求说明书进行代码设计。
全文完。