user-confirm-skill
用途: 判别式确认 - 展示内容并获取用户反馈
核心理念:
- •做选择题,不做填空题
- •人类擅长判别(喜不喜欢),不擅长生成(描述细节)
- •展示具体方案,让用户说"对/不对"
输入参数
yaml
input: content: object | string # 要确认的内容(方案、结果等) format: string # 展示格式(见下方) question: string # 确认问题 options: array # 可选:预定义的选项
format 选项
| 格式 | 说明 | 适用场景 |
|---|---|---|
visual_summary | 可视化摘要(emoji + 结构化) | 展示设计方案 |
file_list_with_summary | 文件列表 + 功能说明 | 展示执行结果 |
comparison_table | 对比表格 | 展示多个选项 |
markdown | 完整 Markdown | 通用 |
simple | 简单文本 | 快速确认 |
输出
yaml
output: approved: boolean # 是否通过 satisfied: boolean # 是否满意(同义,兼容性) confidence: number # 用户信心(1-10) comments: string # 用户反馈 specific_issues: array # 具体问题点(如果有) suggestions: array # 改进建议(如果有)
执行逻辑
1. 格式化内容
根据 format 参数,将 content 格式化为易读的展示:
python
def format_content(content, format_type):
if format_type == "visual_summary":
return format_visual_summary(content)
elif format_type == "file_list_with_summary":
return format_file_list(content)
elif format_type == "comparison_table":
return format_comparison(content)
elif format_type == "markdown":
return content # 已经是 markdown
else:
return str(content)
2. 展示给用户
展示模板:
code
[格式化的内容]
{question}
请回答:
✅ 通过/满意/可以
❌ 需要调整(请说明哪里需要改)
❓ 有疑问(请提出)
3. 解析用户回复
识别关键词:
| 用户回复 | approved | confidence |
|---|---|---|
| "通过" / "可以" / "满意" / "好的" | true | 9 |
| "基本可以" / "还行" / "差不多" | true | 7 |
| "需要调整" / "不太对" / "有问题" | false | 5 |
| "完全不对" / "重新来" | false | 2 |
4. 提取反馈
如果用户说"需要调整",引导提取具体问题:
code
Claude: "明白了,具体哪里需要调整?我可以帮你改进。" 用户: "workflow 太复杂了,而且缺少 XXX 功能" → specific_issues: ["workflow 过于复杂", "缺少 XXX 功能"] → suggestions: ["简化 workflow", "增加 XXX 功能"]
实现示例
示例 1: 展示设计方案
输入:
yaml
content:
system_name: health-system
structure:
agents: 1
skills: 8
workflows: 3
workflows:
- name: daily-check
trigger: "21:00"
- name: weekly-report
trigger: "Sunday 20:00"
- name: checkup-analysis
trigger: "file_upload"
format: visual_summary
question: "这个方案符合你的预期吗?需要调整哪里?"
Claude 输出:
code
我已经完成设计!这是方案摘要: 📁 系统结构: - 1 个 Agent(健康顾问) - 8 个 Skills(体检分析、指标追踪等) - 3 个 Workflows(每日检查、每周报告、体检分析) 🔄 核心流程: ① 每天 21:00 自动检查当日数据,生成健康提醒 ② 每周日汇总本周情况,分析趋势 ③ 上传体检报告时,自动分析并更新健康档案 📊 数据管理: - 个人档案:基础信息、病史 - 指标记录:按日期存储 - 报告输出:Markdown 格式 这个方案符合你的预期吗?需要调整哪里? 请回答: ✅ 通过/满意/可以 ❌ 需要调整(请说明哪里需要改) ❓ 有疑问(请提出)
用户回复: "看起来不错,可以开始创建"
输出:
json
{
"approved": true,
"satisfied": true,
"confidence": 9,
"comments": "看起来不错,可以开始创建",
"specific_issues": [],
"suggestions": []
}
示例 2: 用户提出调整
用户回复: "需要调整,我还想要饮食记录功能,而且每日检查改到早上 8 点"
Claude 追问:
code
明白了!你希望: 1. 增加饮食记录功能 2. 每日检查改到早上 8:00 还有其他需要调整的吗?
用户: "没了"
输出:
json
{
"approved": false,
"satisfied": false,
"confidence": 7,
"comments": "需要调整,我还想要饮食记录功能,而且每日检查改到早上 8 点",
"specific_issues": [
"缺少饮食记录功能",
"每日检查时间不合适(应该是早上 8:00)"
],
"suggestions": [
"增加 diet-log-skill",
"调整 daily-check workflow 的触发时间为 08:00"
]
}
示例 3: 展示执行结果
输入:
yaml
content:
created_files:
- "health-system/.claude/agents/health-advisor.md"
- "health-system/.claude/skills/checkup-analysis/SKILL.md"
- "health-system/.claude/workflows/daily-check.yaml"
# ... 更多文件
summary:
total_files: 25
agents: 1
skills: 8
workflows: 3
format: file_list_with_summary
question: "试用一下,有没有不符合预期的地方?"
Claude 输出:
code
✅ 系统创建完成! 📁 health-system/ ├── .claude/ │ ├── agents/health-advisor.md │ ├── skills/ (8 个) │ │ ├── checkup-analysis/ │ │ ├── health-indicators/ │ │ ├── risk-assessment/ │ │ └── ... │ └── workflows/ (3 个) │ ├── daily-check.yaml │ ├── weekly-report.yaml │ └── checkup-analysis.yaml ├── data/ │ ├── profile.json (示例) │ └── indicators/ ├── outputs/ └── README.md 🚀 下一步: 1. 填写 data/profile.json(你的基本信息) 2. 试用: "执行每日健康检查" 3. 上传体检报告测试分析功能 试用一下,有没有不符合预期的地方? 请回答: ✅ 满意/没问题 ❌ 有问题(请说明)
格式化函数
visual_summary 格式
python
def format_visual_summary(content):
"""
可视化摘要格式
使用 emoji + 结构化展示
"""
output = []
# 系统结构
if "structure" in content:
output.append("📁 系统结构:")
structure = content["structure"]
if "agents" in structure:
output.append(f" - {structure['agents']} 个 Agent")
if "skills" in structure:
output.append(f" - {structure['skills']} 个 Skills")
if "workflows" in structure:
output.append(f" - {structure['workflows']} 个 Workflows")
# 核心流程
if "workflows" in content:
output.append("\n🔄 核心流程:")
for i, wf in enumerate(content["workflows"], 1):
trigger = wf.get("trigger", "手动触发")
output.append(f" {chr(9311 + i)} {wf['name']}: {trigger}")
# 数据管理
if "data_structure" in content:
output.append("\n📊 数据管理:")
for item in content["data_structure"]:
output.append(f" - {item}")
return "\n".join(output)
file_list_with_summary 格式
python
def format_file_list(content):
"""
文件列表 + 摘要格式
"""
output = ["✅ 系统创建完成!\n"]
# 文件树
if "created_files" in content:
output.append("📁 创建的文件:")
# 简化显示,只显示关键文件
for file in content["created_files"][:10]:
output.append(f" - {file}")
if len(content["created_files"]) > 10:
output.append(f" ... 共 {len(content['created_files'])} 个文件")
# 摘要
if "summary" in content:
output.append("\n📊 摘要:")
summary = content["summary"]
for key, value in summary.items():
output.append(f" - {key}: {value}")
return "\n".join(output)
关键设计
1. 判别式交互
❌ 错误方式(生成式):
code
Claude: "你想要什么功能?" 用户: "呃...我想要...那个...嗯..."
✅ 正确方式(判别式):
code
Claude: "我设计了这个方案:[具体方案]。符合预期吗?" 用户: "基本可以,但需要调整 X"
2. 引导式反馈
当用户说"需要调整"时,不要让用户自己描述:
❌ 错误:
code
Claude: "好的,请详细描述你想要的调整" 用户: "呃...怎么说呢..."
✅ 正确:
code
Claude: "明白了!具体哪里需要调整? A. 功能缺失(缺少某个功能) B. 流程问题(步骤不对) C. 时间安排(触发时间) D. 其他(请说明)"
3. 信心评估
根据用户的措辞判断信心:
| 措辞 | confidence | 含义 |
|---|---|---|
| "完美" / "很好" | 10 | 非常满意 |
| "可以" / "不错" | 9 | 满意 |
| "还行" / "基本可以" | 7 | 勉强接受 |
| "有些问题" | 5 | 不满意但可修复 |
| "不对" / "重新来" | 2 | 严重不满 |
使用场景
场景 1: 设计方案确认
yaml
input: content: <设计方案> format: "visual_summary" question: "这个方案符合你的预期吗?"
场景 2: 执行结果验证
yaml
input: content: <执行结果> format: "file_list_with_summary" question: "试用一下,有没有不符合预期的地方?"
场景 3: 快速二选一
yaml
input: content: "方案 A vs 方案 B" format: "comparison_table" question: "你更倾向哪个?" options: ["A", "B", "都可以", "都不要"]
实现注意事项
1. 自然语言理解
需要识别各种表达:
- •肯定:✅ "可以" / "好的" / "满意" / "没问题" / "👍"
- •否定:❌ "不行" / "需要调整" / "有问题" / "重新来"
- •中性:❓ "还行" / "差不多" / "基本可以"
2. 提取具体反馈
使用简单的 NLP 技巧:
- •识别否定词:不、没、缺、少
- •识别需求词:需要、想要、希望、增加
- •识别问题词:问题、错误、不对、太...
3. 超时处理
如果用户长时间没回复:
code
(等待 24 小时后) Claude: "我还在等待你的确认。如果暂时没时间查看,我会先执行当前方案,后续你可以再调整。"
评价标准
见 criteria.md
版本历史
- •v1.0.0 (2026-01-19): 初始版本