名称: 提取 描述: 从文档(PDF、Markdown、Word、URLs)中提取需求。识别需求候选并以预规范格式输出。 参数提示: <路径或URL> [–domain <域名>] [–mode <自主模式>] [–type <文档类型>] 允许工具: Read, Glob, Grep, Write, Skill, WebFetch
提取命令
从文档中提取需求,用于系统化需求挖掘。
用法
/requirements-elicitation:extract 路径/到/文档.pdf
/requirements-elicitation:extract 路径/到/规范.md --domain "认证"
/requirements-elicitation:extract https://example.com/功能 --type 竞争者
/requirements-elicitation:extract ./文档/*.md --mode 全自动
参数
| 参数 | 必需 | 描述 |
|---|---|---|
| 路径或URL | 是 | 文件路径、全局模式或URL以提取 |
| –domain | 否 | 域名用于组织输出文件 |
| –mode | 否 | 自主模式: 引导式, 半自动, 全自动 (默认: 半自动) |
| –type | 否 | 文档类型提示: 规范, 转录稿, 监管, 竞争者, 自动 |
支持源
| 源类型 | 示例 |
|---|---|
文档.pdf, 规范.pdf |
|
| Markdown | 自述.md, 需求.md |
| 文本 | 笔记.txt, 转录稿.txt |
| Word | 文档.docx |
| URL | https://docs.example.com/api |
| 全局模式 | ./文档/*.md, ./规范/**/*.pdf |
工作流程
步骤 1: 源解析
解析输入以确定:
- 单个文件 vs. 多个文件(全局模式)
- 本地文件 vs. URL
- 文档类型(自动检测或从 --type)
步骤 2: 加载文档提取技能
调用 requirements-elicitation:document-extraction 技能以加载提取策略。
步骤 3: 处理每个文档
对每个文档:
-
读取/获取内容
- 使用 Read 工具用于本地文件
- 使用 WebFetch 用于 URLs
-
评估文档
- 如果未指定则确定文档类型
- 选择提取策略
-
提取需求
- 生成
document-miner代理 - 应用适当的模式
- 捕获并附加源属性
- 生成
-
分类和去重
- 分配类型和类别
- 在文档内和跨文档识别重复项
步骤 4: 保存结果
保存提取结果到:
.requirements/{域名}/文档/DOC-{文件名}-{时间戳}.yaml
步骤 5: 报告摘要
显示提取统计和关键发现。
示例
单个 PDF 提取
/requirements-elicitation:extract ./文档/需求.pdf --domain "项目-x"
输出:
从: 需求.pdf 提取
文档类型: 正式规范
模式: 半自动
处理中... [================] 100%
提取完成:
- 总候选: 45
- 已提取: 38
- 需要审核: 7
按类型:
- 功能性: 24
- 非功能性: 10
- 约束: 4
保存到: .requirements/项目-x/文档/DOC-需求-20251225.yaml
审核项已标记 - 运行 /requirements-elicitation:gaps 获取详情
多个文档使用全局模式
/requirements-elicitation:extract ./规范/*.md --mode 全自动
输出:
找到 5 个文档匹配模式
处理中:
1. api-规范.md .......... 12 需求
2. 用户故事.md ...... 18 需求
3. 约束.md ....... 5 需求
4. nfr-规范.md .......... 8 需求
5. 假设.md ....... 3 需求
总计: 46 需求已提取
检测到重复: 4 (已合并)
最终计数: 42 独特需求
保存到: .requirements/规范/文档/
URL 提取(竞争者分析)
/requirements-elicitation:extract https://竞争者.com/功能 --type 竞争者 --domain "竞争者分析"
输出:
获取: https://竞争者.com/功能
文档类型: 竞争者分析
提取完成:
- 识别功能: 15
- 转换为需求: 15
- 置信度: 低 (外部观察)
所有项已标记为需要验证。
保存到: .requirements/竞争者分析/文档/DOC-竞争者-功能.yaml
下一步: 使用 /requirements-elicitation:interview 与利益相关者验证
自主模式
引导模式
AI: "我在第 2.1 节找到这个潜在需求:
'系统应支持最多 1000 并发用户'
我是否应将其提取为性能需求?"
用户: "是"
AI: "已提取为 REQ-EXT-001 (性能/可扩展性)。
下一个候选..."
半自主模式
AI: [处理文档节]
"第 2 节已完成。提取了 8 个需求:
- 5 功能性
- 2 性能
- 1 约束
2 项已标记为需要审核。继续到第 3 节?"
全自主模式
AI: [处理整个文档]
"提取完成。
摘要:
- 34 需求已提取
- 6 标记为需要审核
- 3 潜在重复检测到
结果已保存。准备进行差距分析。"
输出格式
保存的 YAML 结构
提取会话:
时间戳: "2025-12-25T14:30:00Z"
模式: 半自动
域名: "{域名}"
源:
- 文件: "需求.pdf"
类型: 规范
页数: 45
已处理: true
统计:
总候选: 52
已提取: 45
已过滤: 7
需要审核: 8
重复: 3
需求:
- id: REQ-EXT-001
文本: "系统应通过 SSO 认证用户"
源:
文件: "需求.pdf"
位置: "第 3.1 节, 第 8 页"
类型: 功能性
类别: 安全
置信度: 高
需要审核: false
审核项:
- id: REQ-EXT-015
原因: "模糊的性能目标"
原始: "系统应具有响应性"
建议: "定义具体的响应时间"
重复:
- 组: [REQ-EXT-003, REQ-EXT-022]
推荐: REQ-EXT-003
原因: "更具体的陈述"
集成
后续命令
# 提取后检查差距
/requirements-elicitation:gaps
# 分析会议转录稿
/requirements-elicitation:analyze-transcript ./会议/启动.md
# 合并所有源
/requirements-elicitation:discover "{域名}" --sources 文档
# 导出到规范格式
/requirements-elicitation:export --to canonical
错误处理
文件未找到
错误: 文件未找到: ./文档/缺失.pdf
建议: 检查路径并重试
不支持格式
错误: 不支持的文件格式: .xyz
支持: .pdf, .md, .txt, .docx, URLs
URL 获取失败
错误: 无法获取 URL: https://example.com/页
原因: 404 未找到
建议: 验证 URL 可访问性