如何与 SRS Writer 对话

学习目标:掌握获得更好需求的对话技巧


概述

SRS Writer 理解自然语言,但如何与它交流会极大影响输出质量。本指南分享来自真实用户的实用技巧。


✅ 有效的对话模式

模式 1:提供上下文

为什么有效:上下文帮助 SRS Writer 理解你的业务领域、规模和约束。

模板

Plain Text
@srs-writer 我需要一个 [系统类型],给 [谁使用]。
[他们需要做什么]。[约束或特殊要求]。

示例

✅:

Plain Text
@srs-writer 我需要一个任务管理系统,给 20 人的软件团队使用。
他们需要创建任务、分配给团队成员、设置优先级和截止日期、
跟踪进度、接收通知。我们现在用 JIRA 但太复杂了。

image-20251210-215721.png

为什么有效

  • 指明了用户(软件团队,20 人)
  • 列出了核心需求(创建、分配、跟踪、通知)
  • 提到了背景(从 JIRA 迁移)
  • 暗示简洁性很重要

✅:

Plain Text
@srs-writer 我需要一个报销系统,给 200 人的公司使用。
员工提交报销单和发票。财务团队审核批准。
CFO 需要月度报表。我们每月处理约 500 笔报销。

为什么有效

  • 用户角色清晰(员工、财务、CFO)
  • 工作流程已定义(提交 → 审核 → 报表)
  • 规模已说明(200 人,500 笔/月)

太模糊 ❌:

Plain Text
@srs-writer 做一个任务管理应用

image-20251210-215721.png

问题:没有用户、规模或需求的上下文。SRS Writer 只能猜测。


模式 2:描述用户旅程

为什么有效:故事帮助 SRS Writer 推断隐含需求。

模板

Plain Text
@srs-writer 这是用户使用系统的方式:

1. [用户] 通过 [方式] 做 [动作]
2. [系统] 然后 [响应]
3. [用户] 还可以 [可选动作]

示例

Plain Text
@srs-writer 这是登录流程的工作方式:

1. 用户在登录页面输入邮箱和密码
2. 系统验证凭据并检查账户是否激活
3. 如果正确,用户跳转到仪表盘
4. 如果密码错误 3 次,账户锁定 15 分钟
5. 用户可以点击"忘记密码"收到重置邮件

image-20251210-215721.png

image-20251210-215721.png

SRS Writer 推断出

  • 安全需求:失败后账户锁定
  • 用户体验:需要密码重置流程
  • 系统行为:激活/未激活账户状态
  • 错误处理:多种失败场景

模式 3:使用具体示例

为什么有效:具体示例澄清抽象需求。

模板

Plain Text
@srs-writer 例如,[包含实际值的具体场景]

示例

Plain Text
@srs-writer 系统需要处理批量导入。

例如:
- 财务团队每周五上传包含 500 笔交易的 CSV
- 每行包含:日期、供应商、金额、类别、发票 URL
- 系统先验证所有行,然后在没有错误时导入
- 如果任何行无效,高亮显示错误并拒绝整个批次

image-20251210-215721.png

这澄清了

  • 导入格式(CSV)
  • 数据结构(具体字段)
  • 验证方式(全部或无)
  • 错误处理(高亮错误,不部分导入)

模式 4:说明目标受众

为什么有效:SRS Writer 会调整语气和详细程度。

给客户的提案

Plain Text
@srs-writer 这份 SRS 是给客户的提案,需要非常专业,
包含安全和合规章节,用商业语言解释技术决策。

image-20251210-215721.png

给内部开发团队

Plain Text
@srs-writer 这是给开发团队的内部文档。
专注于技术细节、API 规格和数据库设计。
保持实用,跳过商业论证。

image-20251210-215721.png

给监管提交

Plain Text
@srs-writer 这份 SRS 是给 FDA 提交的,必须严格遵循
IEC 62304 并包含到设计规格的完整追溯。

image-20251210-215721.png


模式 5:分步迭代

为什么有效:将复杂需求拆分成小对话能产生更好的结果。

多轮对话

第 1 轮

Plain Text
@srs-writer 我需要一个销售手工艺品的电商平台。
先从用户注册和认证开始。

第 2 轮(审查输出后):

Plain Text
@srs-writer 很好!现在添加产品目录功能:
- 卖家可以上传产品,包含照片、描述、价格
- 买家可以浏览、搜索、按类别筛选
- 购物车和结账

第 3 轮

Plain Text
@srs-writer 添加 Stripe 支付集成
和订单确认的邮件通知。

为什么比一个巨大的提示词更好

  • 你可以在每步后审查和调整
  • SRS Writer 逐步建立上下文
  • 更容易早期发现和修正错误

❌ 要避免的模式

反模式 1:太技术化

不好 ❌:

Plain Text
@srs-writer 用 React SPA 做前端,Node.js 后端、Express、PostgreSQL,
Redis 做缓存,Docker 容器,部署在 AWS ECS 用 CloudFront CDN。
认证用 JWT,密码用 bcrypt,用 Redis 实现限流。

问题:这些是实现细节,不是需求。

更好 ✅:

Plain Text
@srs-writer 构建一个 Web 应用,需要:
- 支持 1,000 个并发用户
- 200ms 内响应用户操作
- 安全存储用户数据
- 任何有网络的地方都能访问
- 每小时处理 10,000 个 API 请求

💡 规则:描述系统做什么(需求),而不是怎么做(实现)。


反模式 2:太简短

不好 ❌:

Plain Text
@srs-writer 做一个 CRM 系统

问题:CRM 可以有很多含义。没有提供上下文。

更好 ✅:

Plain Text
@srs-writer 做一个 CRM 系统给小型销售团队(5 人)使用。
他们需要跟踪线索、安排跟进、记录通话和邮件、
查看显示交易阶段和金额的销售管道仪表盘。

反模式 3:太冗长

不好 ❌:

Plain Text
@srs-writer [粘贴 10 页会议记录、PRD 和头脑风暴文档]
生成完整需求

问题:信息过多会混淆优先级。

更好 ✅:

Plain Text
@srs-writer 我有启动会的会议记录。让我分享关键点:

目标:
- [3-4 个主要目标]

核心功能:
- [5-7 个必备功能]

约束:
- [2-3 个主要约束]

能基于此生成 SRS 吗?我会在后续提供更多细节。

然后在后续消息中提供更多上下文。


反模式 4:混合需求和实现

不好 ❌:

Plain Text
@srs-writer 用户需要登录。用 Google 和 Facebook 的 OAuth。
会话存 Redis 24 小时过期。用 JWT token。

更好 ✅:

Plain Text
@srs-writer 用户需要用 Google 或 Facebook 账号登录。
会话在最后活动后保持 24 小时有效。

让 SRS Writer 处理实现细节放在"系统设计"章节,而你专注于需求。


🎯 对话流程

典型对话的演进过程:

Plain Text
┌─────────────────────────────────────────────────────┐
│ 你:初始项目描述                                      │
│                                                     │
│ "我需要 [系统] 给 [用户] 来 [目标]"                   │
└──────────────────┬──────────────────────────────────┘
                   ↓
┌─────────────────────────────────────────────────────┐
│ SRS Writer:生成初始 SRS                             │
│                                                     │
│ - 项目概述                                          │
│ - 核心功能需求                                       │
│ - 基本非功能需求                                     │
└──────────────────┬──────────────────────────────────┘
                   ↓
┌─────────────────────────────────────────────────────┐
│ 你:审查并提供反馈                                    │
│                                                     │
│ "添加功能 X"                                         │
│ "澄清需求 Y"                                         │
│ "删除功能 Z"                                         │
└──────────────────┬──────────────────────────────────┘
                   ↓
┌─────────────────────────────────────────────────────┐
│ SRS Writer:更新 SRS                                 │
│                                                     │
│ 同时更新 SRS.md 和 requirements.yaml                 │
└──────────────────┬──────────────────────────────────┘
                   ↓
┌─────────────────────────────────────────────────────┐
│ 你:请求质量审查                                      │
│                                                     │
│ "@srs-writer 做一轮质量检查并列出需要改进的章节"       │
└──────────────────┬──────────────────────────────────┘
                   ↓
┌─────────────────────────────────────────────────────┐
│ SRS Writer:解释质量问题                              │
│                                                     │
│ 按严重度/章节给出改进建议并可自动修正                  │
└──────────────────┬──────────────────────────────────┘
                   ↓
┌─────────────────────────────────────────────────────┐
│ 你:处理质量问题                                      │
│                                                     │
│ "让需求 FR-005 更具体"                               │
└──────────────────┬──────────────────────────────────┘
                   ↓
              [重复直到满意]

🔧 特殊命令和关键词

SRS Writer 理解自然语言,这些短语会触发特定行为:

添加内容

Plain Text
@srs-writer 添加一个功能 [描述]
@srs-writer 添加一条关于 [方面] 的非功能需求
@srs-writer 增加一个关于 [主题] 的章节

修改内容

Plain Text
@srs-writer 把 [旧描述] 改成 [新描述]
@srs-writer 更新需求 FR-XXX 包含 [修改]
@srs-writer 让 [需求] 更详细/更具体

删除内容

Plain Text
@srs-writer 删除 [功能/需求]
@srs-writer 删除所有与 [主题] 相关的内容

澄清需求

Plain Text
@srs-writer 详细解释需求 FR-XXX
@srs-writer 把 [功能] 拆分成更小的需求
@srs-writer [章节] 缺少什么?

质量检查

Plain Text
@srs-writer 做一轮质量检查,按严重度列出需要修改的章节
@srs-writer 直接修复质量问题并说明修改点
@srs-writer 哪些需求不可测试或不够具体?
@srs-writer 需求 FR-XXX 是否满足可测试性?给出改进建议

处理现有内容

Plain Text
@srs-writer 基于这个 [粘贴文档],生成需求
@srs-writer 读取文件 [路径] 并整合进来
@srs-writer 把这个与现有需求合并:[内容]

💡 专业技巧

技巧 1:明确优先级

Plain Text
@srs-writer 以下功能是 v1.0 的必备项:
- 用户认证
- 产品列表
- 购物车

这些是 v2.0 的可选项:
- 社交分享
- 心愿单
- 产品评价

SRS Writer 会在 requirements.yaml 中相应标记优先级。


技巧 2:尽早提及约束

Plain Text
@srs-writer 重要约束:
- 预算:5 万美元
- 时间:3 个月
- 团队:3 个开发、1 个设计
- 用户:主要是移动端(70% 移动,30% 桌面)

这帮助 SRS Writer 提出切实可行的建议。


技巧 3:提供反面示例

Plain Text
@srs-writer 对于管理后台:
- 要包含:用户管理、报表、系统设置
- 不要包含:复杂的分析仪表盘(我们用 Tableau)

说清不要什么可以防止范围蔓延。


技巧 4:要求解释

如果有不理解的地方:

Plain Text
@srs-writer 为什么包含 [需求]?
@srs-writer 能解释一下 [决策] 背后的原因吗?

SRS Writer 会解释它的思路。


技巧 5:引用外部文档

如果有 URL 或文件路径:

Plain Text
@srs-writer 查看我们的 API 文档 [URL] 并确保
需求与现有 API 结构一致

注意:这需要配置 MCP 才能访问外部内容


🎓 示例学习

来看一个产出高质量需求的完整对话:

示例:构建客户支持工单系统

用户

Plain Text
@srs-writer 我需要一个客户支持工单系统,给我们的 SaaS 公司用。

背景:
- 支持团队:10 个客服
- 客户:500 家 B2B 公司
- 当前痛点:用邮件,难以跟踪和排优先级
- 必须集成我们现有的认证系统

核心工作流:
1. 客户通过网页表单或邮件提交工单
2. 系统根据类别自动分配给可用客服
3. 客服回复,工单状态更新
4. 客户可以回复,添加到工单线程
5. 经理看到仪表盘展示指标(响应时间、解决时间、积压)

SRS Writer:[生成包含功能需求的初始 SRS]


用户(审查后):

Plain Text
@srs-writer 开始不错!添加这些需求:

优先级和 SLA:
- 工单有优先级:低、中、高、紧急
- SLA 计时:紧急=1小时,高=4小时,中=24小时,低=3天
- SLA 风险时(已过 80% 时间)显示视觉告警

分类:
- 类别:技术、账单、功能请求、Bug 报告
- 每个类别路由到专门客服
- 客户提交后不能更改类别(防止作弊)

SRS Writer:[更新 SRS,添加优先级/SLA 和分类需求]


用户

Plain Text
@srs-writer 现在检查 SRS 的质量

SRS Writer(示例响应):

Plain Text
质量审查摘要:
- 完整性:覆盖核心流程,但缺少异常处理
- 清晰度/可测试性:FR-005、NFR-003 需要补充量化标准

改进建议:
1) FR-005 "自动分配给可用客服" 需定义“可用”与无客服时的处理
2) NFR-003 "响应时间" 需明确目标值、适用范围
可自动应用修复,是否继续?

用户

Plain Text
@srs-writer 发现得好!修复这些问题:

关于自动分配:
- "可用"意味着客服状态是"在线"且未处理工单少于 10 个
- 如果没有客服可用,工单进入队列,所有客服可见
- 客服可以从队列手动认领

关于响应时间:
- API 响应:95 分位 < 200ms
- 网页加载:< 2 秒
- 数据库查询:读操作 < 100ms

SRS Writer:[更新需求,添加具体、可测试的标准]


最终结果:高质量 SRS 包含:

  • 清晰的上下文和约束
  • 详细的工作流程
  • 具体、可测试的需求
  • 质量审查通过,剩余问题可追踪

🚀 下一步

练习这些模式

  1. 开始一个新项目
  2. 使用本指南中的"好"模式
  3. 根据 SRS Writer 的输出迭代
  4. 检查质量并改进

继续学习: 👉 理解文档结构 👉 常见场景


有问题? 查看常见问题社区讨论