Files
AIEC_Skills/.claude/skills/requirement-generator-v1/assets/agent_dev.md

394 lines
11 KiB
Markdown
Raw Normal View History

---
type: agent_dev
keywords: [agent, skill, 自动化, 智能助手, 助手, langchain, langgraph, 机器人, bot, 对话, workflow, 工作流, multi-agent]
priority: high
---
# Agent 开发项目配置
本配置用于端到端的 Agent 开发项目,包括但不限于:
- Claude Code Skill/Agent
- LangChain Agent
- LangGraph Workflow
- Multi-Agent 系统
- 其他 AI Agent 框架
## 模板路径
templates/agent_dev_template.md
## 启动问题示例
以下问题仅作为参考,根据用户初始描述的详细程度和信息完整度动态选择和调整。
### 示例问题:主要任务
```yaml
question: "这个智能助手主要帮助用户完成什么任务?(可多选,或在'其他'中详细描述;需要帮助请输入'需要帮助'"
options:
- label: "信息查询和检索"
description: "帮助用户查找、搜索、整理信息"
- label: "数据处理和分析"
description: "对数据进行清洗、转换、分析"
- label: "自动化任务执行"
description: "自动完成重复性工作或流程"
- label: "辅助决策支持"
description: "提供建议、分析、推荐"
multiSelect: true
```
**使用时机**:用户初始描述未明确说明具体任务时使用。如已明确,跳过此问题。
---
### 示例问题:预期价值
```yaml
question: "预期带来什么价值?(可多选,或在'其他'中详细描述;需要帮助请输入'需要帮助'"
options:
- label: "提高效率"
description: "节省时间,加快处理速度"
- label: "降低成本"
description: "减少人力投入,降低运营成本"
- label: "提升质量"
description: "提高准确性,减少错误"
- label: "增强用户体验"
description: "简化操作,提升满意度"
multiSelect: true
```
**使用时机**:用户初始描述未说明价值或目标时使用。可与其他问题合并。
---
### 示例问题:使用场景
```yaml
question: "用户在什么情况下会需要使用这个助手?(可多选,或在'其他'中描述具体场景;需要帮助请输入'需要帮助'"
options:
- label: "定期自动执行"
description: "按时间表自动运行,如每天早上、每周等"
- label: "用户主动调用"
description: "用户有需求时手动触发"
- label: "事件触发"
description: "特定事件发生时自动执行,如文件变化、消息到达等"
multiSelect: true
```
**使用时机**:了解基本任务后询问。根据回答深入询问具体触发条件、频率等细节。
---
### 示例问题:架构复杂度
```yaml
question: "任务是否需要多个专门的助手配合完成?(或在'其他'中描述;需要帮助请输入'需要帮助'"
options:
- label: "不需要,单个助手就能完成"
description: "任务相对简单,流程单一"
- label: "需要,任务复杂,需要多个助手协作"
description: "需要将任务拆分给不同的专门助手"
multiSelect: false
```
**使用时机**用户描述涉及多步骤、复杂流程时询问。如选择Multi-Agent后续深入询问各Agent职能和协作方式。
---
## 访谈启动策略
### 分析用户初始描述
访谈前先分析用户初始输入的信息完整度:
**信息完整度检查**
识别用户初始描述中已包含的信息:
- ✓ 明确任务/功能 → 跳过"主要任务"问题
- ✓ 说明使用场景 → 跳过或简化"使用场景"问题
- ✓ 提到价值/目标 → 跳过"预期价值"问题
- ✓ 描述复杂流程/多步骤 → 主动询问Multi-Agent需求
- ✓ 提及外部系统 → 深入询问数据集成细节
- ✓ 涉及性能/安全 → 追问具体指标
**动态起始点选择**
| 用户描述情况 | 起始策略 | 示例 |
|------------|---------|------|
| 详细完整 | 直接补充细节 | "如何定义'重要联系人'" |
| 基本清晰 | 从1-2个示例问题开始 | "使用场景"+"预期价值" |
| 模糊简略 | 依次使用示例问题 | "主要任务"→"使用场景"→... |
| 技术导向 | 引导到业务需求 | "这个功能主要帮用户解决什么问题?" |
### 启动原则
1. **先分析,后提问**
- 仔细阅读用户初始描述
- 识别已有信息和缺失信息
- 避免询问已明确的内容
2. **避免机械执行**
- 示例问题不是固定流程
- 根据实际情况选择和调整
- 灵活组合或跳过问题
3. **动态调整深度**
- 用户回答内容丰富 → 快速推进
- 用户回答简短模糊 → 追问细节
- 用户不确定 → 提供更多选项或示例
4. **保持对话自然**
- 基于上一轮回答提出下一个问题
- 合并相关信息的询问
- 避免突兀的话题跳转
## 访谈策略指南
### 访谈目标
收集完整的业务需求信息,用于生成结构化需求文档。
### 访谈方式
- 使用 AskUserQuestion 工具进行所有提问
- 每个问题独立、可单独回答
- 提供2-4个常见选项
- 在question中明确提示"可在'其他'中详细描述"或类似说明
- 系统自动添加"其他"选项
- 使用业务语言,避免技术术语
### 信息收集范围
**基础信息**
- 项目背景和目标
- 核心功能列表
- 目标用户和使用场景
- 使用入口和触发方式
**架构信息**如需Multi-Agent
- Agent角色划分和职能
- Agent能力边界
- Agent间协作关系和数据传递
**功能细节**
- 输入输出定义
- 需要访问的外部数据和系统
- 完整的交互流程
- 异常和分支处理
**交付规划**
- MVP核心功能
- 后续优化和高级功能
- 分阶段目标
**非功能需求**
- 用户明确的技术约束
- 性能要求(用户数、响应时间等业务指标)
- 安全和隐私要求(业务层面)
- 其他特殊需求
**验收标准**
- 功能验收条件
- 非功能验收条件
### 动态访谈原则
1. **基于回答识别缺口**
- 分析每轮回答获得的信息
- 识别仍缺失的领域
- 确定后续提问方向
2. **适应项目复杂度**
- 简单项目:快速收集核心信息即可
- 复杂项目:深入询问架构、流程、分阶段等
- Multi-Agent项目详细了解各Agent职能和协作
3. **聚焦关键特征**
- 如涉及高性能:追问具体性能指标
- 如涉及高安全:追问敏感数据处理
- 如需集成外部系统:追问数据流转细节
- 如涉及复杂流程:询问异常和分支处理
4. **避免重复和冗余**
- 不重复提问已获取的信息
- 合并相关信息的提问
- 综合考虑用户回答的详细程度
5. **灵活调整问题深度**
- 用户回答简短模糊:追问细节
- 用户回答内容丰富:快速推进其他信息
- 用户不确定:提供更具体的选项或示例
### 完整性检查
每轮访谈后评估已收集信息的完整性,当以下核心信息都已获取时,可结束访谈:
**必需信息**
- 项目背景和目标
- 核心功能列表至少3个
- 典型使用场景至少1个
- 基本输入输出
- 验收标准至少3条
- **分阶段交付计划**MVP功能、降级功能、难度依赖
**可选但建议收集**
- Agent架构细节如需Multi-Agent
- 外部系统集成需求
- 完整交互流程
- 性能和安全要求
### 问题生成规范
**语言风格**
- 使用业务语言
- 问题清晰具体
- 避免技术术语
**question文本**
- 在问题中明确提示用户可以使用"其他"选项
- 示例:"(可多选,或在'其他'中详细描述)"
- 示例:"(或在'其他'中说明您的具体情况)"
**选项设计**
- 尽可能从不同角度覆盖边界明晰简洁10个以内
- 选项描述简洁明确
- 覆盖主要情况,不穷尽所有可能
**选项设计规范**
#### 互斥性原则
**单选问题**multiSelect: false
- ✅ 选项应完全互斥,无重叠
- ✅ 边界清晰,用户能明确判断属于哪一个
- ❌ 避免数量范围重叠(如"1-10人"和"5-20人"
- ❌ 避免概念包含关系(如"Web界面"和"移动端界面"同时出现在"访问方式"问题中)
**多选问题**multiSelect: true
- ✅ 选项可从不同角度切分,允许合理组合
- ✅ 每个选项应代表独立的需求维度
- ❌ 避免选项之间有逻辑依赖(如"数据收集"和"基于收集的数据分析"
#### 维度统一原则
**同一问题的所有选项应属于同一分类维度**
**错误示例**(维度混乱):
```yaml
question: "用户如何使用这个工具?"
options:
- 输入问题主动调用 # 维度:触发方式
- 命令行/编程接口 # 维度:交互界面
- Web界面 # 维度:交互界面
multiSelect: false
```
问题第1个选项是"触发方式"第2、3个是"交互界面",维度不统一
**正确示例**(维度统一):
```yaml
question: "用户通过什么方式访问工具?"
options:
- 命令行接口
- Web界面
- 桌面应用
multiSelect: false
```
或者拆分为两个问题:
```yaml
question: "工具的触发方式?"
options:
- 用户主动输入问题调用
- 定时自动执行
- 事件触发(如文献更新)
multiSelect: true
---
question: "工具的交互界面?"
options:
- 命令行/API接口
- Web浏览器界面
- 桌面客户端
multiSelect: false
```
#### 边界清晰原则
**数量范围选项**
```yaml
# ❌ 边界重叠
- 1-10人
- 5-20人
# ✅ 边界清晰
- 个人使用1-5人
- 小团队6-50人
- 中大型50人以上
```
**概念分类选项**
```yaml
# ❌ 包含关系
- 医疗数据
- 患者健康记录 # 属于医疗数据的子集
# ✅ 平级分类
- 患者健康记录
- 医学影像数据
- 临床试验数据
```
#### 完备性检查
- 2-4个选项应覆盖**80%的常见场景**
- 如果某个场景>10%用户可能选择,应作为预设选项
- 剩余<20%的长尾场景通过"其他"覆盖
- 当不确定时,优先设计偏通用的选项+依赖"其他"
**multiSelect设置**
- 核心功能、使用场景、数据访问、触发方式、预期价值 → true
- 规模量级、架构复杂度、二选一决策 → false
**上下文关联**
- 基于之前的回答调整问题
- 识别项目特点后深入相关领域
- 根据项目复杂度调整问题数量
### 访谈示例场景
**场景1详细完整的描述**
用户输入:
```
我想做一个邮件助手每天早上7点自动扫描我的工作邮箱
提取来自重要联系人的邮件,总结关键内容,生成一份摘要报告
发送到企业微信。主要是为了节省每天30分钟的邮件筛选时间。
```
应对策略:
- 已包含任务邮件整理、场景每天早上7点、价值节省30分钟、触发方式定时
- 缺失:重要联系人定义、摘要格式、异常处理、输入输出细节
- 起始问题:"如何判断'重要联系人'?是基于发件人列表,还是其他规则?"
**场景2基本清晰的描述**
用户输入:
```
我想开发一个智能客服助手,帮助回答用户常见问题。
```
应对策略:
- 已包含:任务类型(辅助决策/信息查询)
- 缺失:使用场景、触发方式、价值、数据来源
- 起始问题:从示例问题"使用场景"开始,然后询问知识来源
**场景3模糊简略的描述**
用户输入:
```
想做一个自动化工具。
```
应对策略:
- 信息极少
- 从示例问题"主要任务"开始,依次引导