功能分析器 feature-analyzer

功能分析器是一种技能,用于通过自然协作对话和结构化信息收集,将想法转化为完整的设计和规格。它适用于软件开发中的功能规划、架构设计或代码库重大更改,强调协作验证、渐进细化和严格遵循YAGNI原则。关键词:功能分析、设计规格、软件开发、架构设计、协作对话、信息收集、需求验证、代码优化。

架构设计 0 次安装 0 次浏览 更新于 3/7/2026

名称: 功能分析器 描述: “通过自然协作对话将想法转化为完整的设计和规格。用于规划新功能、设计架构或对代码库进行重大更改。”

功能分析器

帮助通过结构化信息收集和协作验证,将想法转化为完整的设计和规格。

开始时宣布: “我正在使用功能分析器技能来设计这个功能。”

阶段 1:上下文发现

首先,探索代码库以了解:

  • 项目结构和技术栈
  • 现有模式和约定
  • 相关功能或模块
  • 相关领域的最近更改

阶段 2:结构化信息收集

使用 AskUserQuestion 高效批量收集信息。每次调用可以询问最多 4 个问题。

第 1 轮:核心要求(4 个问题)

{
  "questions": [
    {
      "question": "这个功能的主要目标是什么?",
      "header": "目标",
      "multiSelect": false,
      "options": [
        { "label": "新功能", "description": "为系统添加全新能力" },
        { "label": "增强", "description": "改进或扩展现有功能" },
        { "label": "错误修复", "description": "修复不正确行为或问题" },
        { "label": "重构", "description": "在不改变行为的情况下提高代码质量" }
      ]
    },
    {
      "question": "这个功能的主要用户是谁?",
      "header": "用户",
      "multiSelect": true,
      "options": [
        { "label": "最终用户", "description": "使用产品的外部客户" },
        { "label": "管理员", "description": "内部管理员或操作员" },
        { "label": "开发者", "description": "使用 API 或 SDK 的其他开发者" },
        { "label": "系统", "description": "自动化进程或后台作业" }
      ]
    },
    {
      "question": "这个功能的预期范围是什么?",
      "header": "范围",
      "multiSelect": false,
      "options": [
        { "label": "小(1-2 天)", "description": "单个组件,有限更改" },
        { "label": "中(3-5 天)", "description": "多个组件,中等复杂度" },
        { "label": "大(1-2 周)", "description": "跨领域关注点,重大更改" },
        { "label": "不确定", "description": "需要进一步探索以估计" }
      ]
    },
    {
      "question": "有任何硬性截止日期或约束吗?",
      "header": "时间线",
      "multiSelect": false,
      "options": [
        { "label": "紧急", "description": "需要尽快完成,几天内" },
        { "label": "本冲刺", "description": "应在当前冲刺内完成" },
        { "label": "灵活", "description": "无硬性截止日期,质量优先" },
        { "label": "仅规划", "description": "现在仅设计,以后实施" }
      ]
    }
  ]
}

第 2 轮:技术要求(4 个问题)

{
  "questions": [
    {
      "question": "这个功能将触及系统的哪些层?",
      "header": "层",
      "multiSelect": true,
      "options": [
        { "label": "数据模型", "description": "数据库模式、模型、迁移" },
        { "label": "业务逻辑", "description": "服务、领域逻辑、规则" },
        { "label": "API", "description": "REST/GraphQL 端点、合同" },
        { "label": "UI", "description": "前端组件、用户界面" }
      ]
    },
    {
      "question": "关键质量要求是什么?",
      "header": "质量",
      "multiSelect": true,
      "options": [
        { "label": "高性能", "description": "必须处理高负载或非常快速" },
        { "label": "强安全", "description": "敏感数据、身份验证、访问控制" },
        { "label": "高可靠性", "description": "不能失败,需要冗余" },
        { "label": "易于维护", "description": "需要易于理解和修改" }
      ]
    },
    {
      "question": "错误应如何处理?",
      "header": "错误",
      "multiSelect": false,
      "options": [
        { "label": "快速失败", "description": "任何错误时立即停止" },
        { "label": "优雅降级", "description": "以减少的功能继续" },
        { "label": "重试和恢复", "description": "自动重试与恢复逻辑" },
        { "label": "上下文依赖", "description": "不同情况不同策略" }
      ]
    },
    {
      "question": "首选哪种测试方法?",
      "header": "测试",
      "multiSelect": false,
      "options": [
        { "label": "TDD(推荐)", "description": "先写测试,后实施" },
        { "label": "后测试", "description": "先实施,后添加测试" },
        { "label": "最小测试", "description": "仅关键路径测试" },
        { "label": "无测试", "description": "跳过此功能测试" }
      ]
    }
  ]
}

第 3 轮:集成和依赖(4 个问题)

{
  "questions": [
    {
      "question": "这个功能需要外部集成吗?",
      "header": "集成",
      "multiSelect": true,
      "options": [
        { "label": "数据库", "description": "新表、查询或迁移" },
        { "label": "外部 API", "description": "第三方服务调用" },
        { "label": "消息队列", "description": "异步处理、事件" },
        { "label": "无", "description": "不需要外部集成" }
      ]
    },
    {
      "question": "是否有对其他功能或团队的依赖?",
      "header": "依赖",
      "multiSelect": true,
      "options": [
        { "label": "身份验证系统", "description": "用户身份验证或授权" },
        { "label": "其他功能", "description": "依赖于正在开发的功能" },
        { "label": "外部团队", "description": "需要另一团队的输入" },
        { "label": "无", "description": "完全独立的功能" }
      ]
    },
    {
      "question": "我们应如何处理向后兼容性?",
      "header": "兼容",
      "multiSelect": false,
      "options": [
        { "label": "必须维护", "description": "不能破坏现有客户端" },
        { "label": "版本 API", "description": "创建新版本,弃用旧版本" },
        { "label": "破坏性更改可接受", "description": "可以进行破坏性更改" },
        { "label": "不适用", "description": "新功能,无现有用户" }
      ]
    },
    {
      "question": "需要什么文档?",
      "header": "文档",
      "multiSelect": true,
      "options": [
        { "label": "API 文档", "description": "端点文档" },
        { "label": "用户指南", "description": "最终用户使用指南" },
        { "label": "开发者指南", "description": "技术实施细节" },
        { "label": "无", "description": "不需要文档" }
      ]
    }
  ]
}

第 4 轮:澄清问题(上下文相关)

基于之前的答案,询问后续问题。示例:

如果选择了 UI 层:

{
  "questions": [
    {
      "question": "我们应该使用哪种 UI 框架/方法?",
      "header": "UI 技术",
      "multiSelect": false,
      "options": [
        { "label": "React", "description": "使用钩子的 React 组件" },
        { "label": "Vue", "description": "Vue.js 组件" },
        { "label": "服务器端", "description": "服务器渲染的 HTML 模板" },
        { "label": "现有模式", "description": "遵循当前项目约定" }
      ]
    }
  ]
}

如果选择了高安全:

{
  "questions": [
    {
      "question": "需要哪些安全措施?",
      "header": "安全",
      "multiSelect": true,
      "options": [
        { "label": "输入验证", "description": "严格输入净化" },
        { "label": "速率限制", "description": "防止滥用和 DoS" },
        { "label": "审计日志", "description": "跟踪所有敏感操作" },
        { "label": "加密", "description": "加密静态/传输中的数据" }
      ]
    }
  ]
}

阶段 3:方法探索

收集要求后,提出 2-3 种方法:

## 方法选项

### 选项 A: [名称](推荐)
**优点:** ...
**缺点:** ...
**最适合:** ...

### 选项 B: [名称]
**优点:** ...
**缺点:** ...
**最适合:** ...

### 选项 C: [名称]
**优点:** ...
**缺点:** ...
**最适合:** ...

使用 AskUserQuestion 确认方法:

{
  "questions": [
    {
      "question": "您想继续进行哪种方法?",
      "header": "方法",
      "multiSelect": false,
      "options": [
        { "label": "选项 A(推荐)", "description": "方法 A 的简要总结" },
        { "label": "选项 B", "description": "方法 B 的简要总结" },
        { "label": "选项 C", "description": "方法 C 的简要总结" }
      ]
    }
  ]
}

阶段 4:设计呈现

分节呈现设计(每节 300-500 字),每节后验证:

  1. 架构概述 - 高级结构
  2. 数据模型 - 实体、关系、模式
  3. API 设计 - 端点、请求/响应
  4. 组件设计 - 内部模块、接口
  5. 错误处理 - 错误案例、恢复策略
  6. 测试策略 - 测试什么和如何测试

每节后,使用 AskUserQuestion:

{
  "questions": [
    {
      "question": "此节看起来正确吗?",
      "header": "审查",
      "multiSelect": false,
      "options": [
        { "label": "看起来好", "description": "继续到下一节" },
        { "label": "微小更改", "description": "需要小调整" },
        { "label": "重大修订", "description": "需要显著更改" },
        { "label": "问题", "description": "在继续前需要澄清" }
      ]
    }
  ]
}

阶段 5:文档和任务

保存设计文档

写入 docs/designs/YYYY-MM-DD-<主题>-设计.md

# 功能: [名称]

## 总结
[简要描述]

## 要求
[来自阶段 2 答案]

## 架构
[来自阶段 4]

## 实施任务
[任务清单]

生成实施任务

## 实施任务

- [ ] **任务标题** `priority:1` `phase:model` `time:15min`
  - 文件: src/file1.py, tests/test_file1.py
  - [ ] 为 X 编写失败测试
  - [ ] 运行测试,验证失败
  - [ ] 实施最小代码
  - [ ] 运行测试,验证通过
  - [ ] 提交

- [ ] **另一任务** `priority:2` `phase:api` `deps:任务标题` `time:10min`
  - 文件: src/api.py
  - [ ] 编写失败测试
  - [ ] 实施和验证
  - [ ] 提交

阶段 6:执行移交

{
  "questions": [
    {
      "question": "您想如何进行实施?",
      "header": "下一步",
      "multiSelect": false,
      "options": [
        { "label": "立即执行", "description": "在此会话中运行 /feature-pipeline" },
        { "label": "新会话", "description": "为实施启动新会话" },
        { "label": "稍后", "description": "保存设计,以后手动实施" },
        { "label": "修订设计", "description": "返回并修改设计" }
      ]
    }
  ]
}

关键原则

  • 高效批量提问 - 适当时使用所有 4 个问题槽位
  • 非独占选项使用多选 - 层、功能、要求
  • 决策使用单选 - 方法、时间线、策略
  • 标记推荐 - 为优选选项添加“(推荐)”
  • 渐进细化 - 从一般到特定问题
  • 增量验证 - 每阶段检查理解
  • 严格遵循 YAGNI - 从设计中移除不必要功能