# DWS Skill 能力验证测试集 ## 目标 验证 `dws` skill 在各 AI Agent 工具中的**意图理解→CLI 命令生成**能力。 Agent 安装 dws skill 后,仅依据 skill 提供的参考文档,将自然语言意图翻译为 `dws` CLI 命令。 ## 一句话启动测试 复制以下 prompt 发给 Agent 即可: ``` 帮我跑一下 skill_tests.md 里的全部测试用例。 每条用例读 Prompt 后用 dws 命令实现,和 Expected 对比,输出 PASS/FAIL。 把每条用例的详细测试情况都打印出来。特别是依赖skill的哪个信息去判断的。 最后给个汇总:总数、通过数、按产品分组通过率、所有 FAIL 的详情。 以上所有输出内容都写入 skill_tests_results.md ``` ## 校验规则 | 维度 | 规则 | |------|------| | **命令路径** | `dws` 之后、第一个 `--` 之前的 token 序列必须与用例的命令路径一致 | | **参数** | 每个 `--key value` 对必须与 Flags 中列出的一致(`--format json` 忽略)| | **占位符** | `<...>` 形式的值表示动态 ID,验证时只需确认 key 存在 | | **[ASK_USER]** | Agent 应识别出缺少必要信息需要追问用户,只验证命令路径 | | **参数顺序** | 不要求参数顺序一致,只要 key-value 内容正确即可 | ## 评分标准 | 指标 | 计算方式 | |------|---------| | **命令准确率** | 命令路径正确的用例数 / 总用例数 × 100% | | **参数准确率** | 命令路径和所有参数都正确的用例数 / 总用例数 × 100% | | **产品识别率** | 正确选择产品命令的用例数 / 总用例数 × 100% | ## 测试覆盖总览 | 产品 | Skill 参考文档 | 命令数 | 用例数 | |------|---------------|--------|--------| | `aitable` | `references/products/aitable.md` | 16 | 41 | | `attendance` | `references/products/attendance.md` | 4 | 16 | | `calendar` | `references/products/calendar.md` | 13 | 30 | | `chat` | `references/products/chat.md` | 13 | 31 | | `contact` | `references/products/contact.md` | 7 | 14 | | `devdoc` | `references/products/simple.md` | 2 | 7 | | `dev` | `skills/multi/dingtalk-misc/references/devapp.md` | 19 | 25 | | `ding` | `references/products/ding.md` | 2 | 5 | | `event` | `skills/multi/dingtalk-event/SKILL.md` | 6 | 40 | | `report` | `references/products/report.md` | 6 | 26 | | `routing` | `references/intent-guide.md` | 1 | 3 | | `todo` | `references/products/todo.md` | 6 | 30 | | `workbench` | `references/products/workbench.md` | 2 | 6 | --- ## 测试用例 ### aitable(41 条) #### `dws aitable base create` **aitable_aitable_base_create_001** - Prompt: 创建 AI 表格,name 为 项目跟踪 - Expected: `dws aitable base create --name 项目跟踪 --format json` - Flags: `--name` = `项目跟踪` **aitable_aitable_base_create_002** - Prompt: 用模板tpl123创建一个AI表格叫项目管理 - Expected: `dws aitable base create --name "项目管理" --template-id tpl123 --format json` - Flags: `--name` = `项目管理`, `--template-id` = `tpl123` #### `dws aitable base delete` **aitable_aitable_base_delete_001** - Prompt: 删除 AI 表格 - Expected: `dws aitable base delete --base-id --format json` - Flags: `--base-id` = `` **aitable_aitable_base_delete_002** - Prompt: 删除AI表格base123,原因是项目已结项 - Expected: `dws aitable base delete --base-id base123 --reason "项目已结项" --format json` - Flags: `--base-id` = `base123`, `--reason` = `项目已结项` #### `dws aitable base get` **aitable_aitable_base_get_001** - Prompt: 获取 AI 表格 base123 的信息 - Expected: `dws aitable base get --base-id base123 --format json` - Flags: `--base-id` = `base123` **aitable_aitable_base_get_002** - Prompt: 查看一下 ID 为 base456 的多维表格的详情 - Expected: `dws aitable base get --base-id base456 --format json` - Flags: `--base-id` = `base456` #### `dws aitable base list` **aitable_aitable_base_list_001** - Prompt: 获取我的 AI 表格列表 - Expected: `dws aitable base list --format json` **aitable_aitable_base_list_002** - Prompt: 获取 AI 表格列表,每页5个 - Expected: `dws aitable base list --limit 5 --format json` - Flags: `--limit` = `5` **aitable_aitable_base_list_003** - Prompt: 获取 AI 表格列表,从游标 NEXT_CURSOR 继续翻页 - Expected: `dws aitable base list --cursor NEXT_CURSOR --format json` - Flags: `--cursor` = `NEXT_CURSOR` **aitable_aitable_base_list_004** - Prompt: 分页获取 AI 表格列表,从 NEXT_CURSOR 开始每页5个 - Expected: `dws aitable base list --limit 5 --cursor NEXT_CURSOR --format json` - Flags: `--cursor` = `NEXT_CURSOR`, `--limit` = `5` #### `dws aitable base search` **aitable_aitable_base_search_001** - Prompt: 搜索 AI 表格,query 为 项目管理 - Expected: `dws aitable base search --query 项目管理 --format json` - Flags: `--query` = `项目管理` **aitable_aitable_base_search_002** - Prompt: 搜索名为 销售 的 AI 表格,从游标 cursor123 开始翻页 - Expected: `dws aitable base search --query 销售 --cursor cursor123 --format json` - Flags: `--cursor` = `cursor123`, `--query` = `销售` #### `dws aitable base update` **aitable_aitable_base_update_001** - Prompt: 更新 AI 表格,name 为 新名称 - Expected: `dws aitable base update --base-id --name 新名称 --format json` - Flags: `--base-id` = ``, `--name` = `新名称` **aitable_aitable_base_update_002** - Prompt: 更新AI表格base123的名字为项目跟踪表,备注是用于Q2项目跟踪 - Expected: `dws aitable base update --base-id base123 --name "项目跟踪表" --desc "用于Q2项目跟踪" --format json` - Flags: `--base-id` = `base123`, `--desc` = `用于Q2项目跟踪`, `--name` = `项目跟踪表` #### `dws aitable field create` **aitable_aitable_field_create_001** - Prompt: 在 base123 的 table456 里创建一个单选字段 状态,选项有待办、进行中、已完成 - Expected: `dws aitable field create --base-id base123 --table-id table456 --fields '[{"fieldName":"状态","type":"singleSelect","config":{"options":[{"name":"待办"},{"name":"进行中"},{"name":"已完成"}]}}]' --format json` - Flags: `--base-id` = `base123`, `--fields` = `[{"fieldName":"状态","type":"singleSelect","config":{"options":[{"name":"待办"},{"name":"进行中"},{"name":"已完成"}]}}]`, `--table-id` = `table456` **aitable_aitable_field_create_002** - Prompt: 给 base789 的 tblABC 新加一个文本字段叫 备注 - Expected: `dws aitable field create --base-id base789 --table-id tblABC --fields '[{"fieldName":"备注","type":"text"}]' --format json` - Flags: `--base-id` = `base789`, `--fields` = `[{"fieldName":"备注","type":"text"}]`, `--table-id` = `tblABC` #### `dws aitable field delete` **aitable_aitable_field_delete_001** - Prompt: 删除 base123 的 table456 中的字段 fld789 - Expected: `dws aitable field delete --base-id base123 --field-id fld789 --table-id table456 --format json` - Flags: `--base-id` = `base123`, `--field-id` = `fld789`, `--table-id` = `table456` **aitable_aitable_field_delete_002** - Prompt: 把 base456 的 tblXYZ 里那个字段 fldABC 删掉 - Expected: `dws aitable field delete --base-id base456 --field-id fldABC --table-id tblXYZ --format json` - Flags: `--base-id` = `base456`, `--field-id` = `fldABC`, `--table-id` = `tblXYZ` #### `dws aitable field get` **aitable_aitable_field_get_001** - Prompt: 获取数据表 base123 的 table456 的所有字段详情 - Expected: `dws aitable field get --base-id base123 --table-id table456 --format json` - Flags: `--base-id` = `base123`, `--table-id` = `table456` **aitable_aitable_field_get_002** - Prompt: 只获取字段 fld1,fld2 的详情,表格 ID 是 table456,AI 表格 ID 是 base123 - Expected: `dws aitable field get --base-id base123 --table-id table456 --field-ids fld1,fld2 --format json` - Flags: `--base-id` = `base123`, `--field-ids` = `fld1,fld2`, `--table-id` = `table456` #### `dws aitable field update` **aitable_aitable_field_update_001** - Prompt: 更新字段,name 为 新字段名称 - Expected: `dws aitable field update --base-id --field-id --table-id --name "新字段名称" --format json` - Flags: `--base-id` = ``, `--field-id` = ``, `--table-id` = ``, `--name` = `新字段名称` **aitable_aitable_field_update_002** - Prompt: 把 base123 的 table456 中字段 fld1 的名字改为 状态字段 - Expected: `dws aitable field update --base-id base123 --table-id table456 --field-id fld1 --name 状态字段 --format json` - Flags: `--base-id` = `base123`, `--field-id` = `fld1`, `--name` = `状态字段`, `--table-id` = `table456` **aitable_aitable_field_update_003** - Prompt: 更新字段 fld2 的配置,将选项值改为 JSON 配置 - Expected: `dws aitable field update --base-id base123 --table-id table456 --field-id fld2 --config '{"options":[{"name":"进行中"}]}' --format json` - Flags: `--base-id` = `base123`, `--config` = `{"options":[{"name":"进行中"}]}`, `--field-id` = `fld2`, `--table-id` = `table456` **aitable_aitable_field_update_004** - Prompt: 同时更新 base123 的 table456 中字段 fld3 的名称为 优先级 并修改其选项配置 - Expected: `dws aitable field update --base-id base123 --table-id table456 --field-id fld3 --name 优先级 --config '{"options":[{"name":"高"},{"name":"中"},{"name":"低"}]}' --format json` - Flags: `--base-id` = `base123`, `--config` = `{"options":[{"name":"高"},{"name":"中"},{"name":"低"}]}`, `--field-id` = `fld3`, `--name` = `优先级`, `--table-id` = `table456` #### `dws aitable record create` **aitable_aitable_record_create_001** - Prompt: 在 base123 的 table456 中新增一条记录,任务名称为 开发需求评审,优先级为高 - Expected: `dws aitable record create --base-id base123 --table-id table456 --records '[{"cells":{"任务名称":"开发需求评审","优先级":"高"}}]' --format json` - Flags: `--base-id` = `base123`, `--records` = `[{"cells":{"任务名称":"开发需求评审","优先级":"高"}}]`, `--table-id` = `table456` **aitable_aitable_record_create_002** - Prompt: 往 base789 的 tblABC 里加一条记录,数据是姓名张三、部门研发 - Expected: `dws aitable record create --base-id base789 --table-id tblABC --records '[{"cells":{"姓名":"张三","部门":"研发"}}]' --format json` - Flags: `--base-id` = `base789`, `--records` = `[{"cells":{"姓名":"张三","部门":"研发"}}]`, `--table-id` = `tblABC` #### `dws aitable record query` **aitable_aitable_record_query_001** - Prompt: 查询记录 - Expected: `dws aitable record query --base-id --table-id --format json` - Flags: `--base-id` = ``, `--table-id` = `` **aitable_aitable_record_query_002** - Prompt: 在base123的table456中搜索包含待处理的记录,每页5条 - Expected: `dws aitable record query --base-id base123 --table-id table456 --keyword "待处理" --limit 5 --format json` - Flags: `--base-id` = `base123`, `--keyword` = `待处理`, `--limit` = `5`, `--table-id` = `table456` **aitable_aitable_record_query_003** - Prompt: 按 ID 查询 base123 的 table456 中指定记录 rec1,rec2 - Expected: `dws aitable record query --base-id base123 --table-id table456 --record-ids rec1,rec2 --format json` - Flags: `--base-id` = `base123`, `--record-ids` = `rec1,rec2`, `--table-id` = `table456` **aitable_aitable_record_query_004** - Prompt: 查询 base123 的 table456 中的记录,只返回字段 fld1,fld2 - Expected: `dws aitable record query --base-id base123 --table-id table456 --field-ids fld1,fld2 --format json` - Flags: `--base-id` = `base123`, `--field-ids` = `fld1,fld2`, `--table-id` = `table456` **aitable_aitable_record_query_005** - Prompt: 查询 base123 的 table456 中的记录,按字段 fld1 降序排列 - Expected: `dws aitable record query --base-id base123 --table-id table456 --sort '[{"fieldId":"fld1","order":"desc"}]' --format json` - Flags: `--base-id` = `base123`, `--sort` = `[{"fieldId":"fld1","order":"desc"}]`, `--table-id` = `table456` **aitable_aitable_record_query_006** - Prompt: 查询 base123 的 table456 中状态为进行中的记录 - Expected: `dws aitable record query --base-id base123 --table-id table456 --filters '{"operator":"and","operands":[{"operator":"eq","operands":["fldStatus","进行中"]}]}' --format json` - Flags: `--base-id` = `base123`, `--filters` = `{"operator":"and","operands":[{"operator":"eq","operands":["fldStatus","进行中"]}]}`, `--table-id` = `table456` **aitable_aitable_record_query_007** - Prompt: 在 base123 的 table456 中搜索关键词 项目评审,只返回字段 fld1,fld2,每页10条 - Expected: `dws aitable record query --base-id base123 --table-id table456 --keyword 项目评审 --limit 10 --field-ids fld1,fld2 --format json` - Flags: `--base-id` = `base123`, `--field-ids` = `fld1,fld2`, `--keyword` = `项目评审`, `--limit` = `10`, `--table-id` = `table456` #### `dws aitable table create` **aitable_aitable_table_create_001** - Prompt: 在 base123 中创建一张名为 任务表 的数据表,包含文本字段任务名称和单选字段优先级 - Expected: `dws aitable table create --base-id base123 --name 任务表 --fields '[{"fieldName":"任务名称","type":"text"},{"fieldName":"优先级","type":"singleSelect","config":{"options":[{"name":"高"},{"name":"中"},{"name":"低"}]}}]' --format json` - Flags: `--base-id` = `base123`, `--fields` = `[{"fieldName":"任务名称","type":"text"},{"fieldName":"优先级","type":"singleSelect","config":{"options":[{"name":"高"},{"name":"中"},{"name":"低"}]}}]`, `--name` = `任务表` **aitable_aitable_table_create_002** - Prompt: 帮我在多维表格 base456 里新建一张叫 人员信息 的表,字段有姓名和部门 - Expected: `dws aitable table create --base-id base456 --name 人员信息 --fields '[{"fieldName":"姓名","type":"text"},{"fieldName":"部门","type":"text"}]' --format json` - Flags: `--base-id` = `base456`, `--fields` = `[{"fieldName":"姓名","type":"text"},{"fieldName":"部门","type":"text"}]`, `--name` = `人员信息` #### `dws aitable table delete` **aitable_aitable_table_delete_001** - Prompt: 删除数据表 - Expected: `dws aitable table delete --base-id --table-id --format json` - Flags: `--base-id` = ``, `--table-id` = `` **aitable_aitable_table_delete_002** - Prompt: 删除 base123 中的数据表 table456,说明原因是该表已废弃 - Expected: `dws aitable table delete --base-id base123 --table-id table456 --reason 该表已废弃 --format json` - Flags: `--base-id` = `base123`, `--reason` = `该表已废弃`, `--table-id` = `table456` #### `dws aitable table get` **aitable_aitable_table_get_001** - Prompt: 获取 AI 表格 base123 里的所有数据表 - Expected: `dws aitable table get --base-id base123 --format json` - Flags: `--base-id` = `base123` **aitable_aitable_table_get_002** - Prompt: 只获取 AI 表格 base123 中指定的表 tbl1,tbl2 - Expected: `dws aitable table get --base-id base123 --table-ids tbl1,tbl2 --format json` - Flags: `--base-id` = `base123`, `--table-ids` = `tbl1,tbl2` #### `dws aitable table update` **aitable_aitable_table_update_001** - Prompt: 把 base123 里的数据表 table456 的名字改成 Q2任务跟踪 - Expected: `dws aitable table update --base-id base123 --table-id table456 --name Q2任务跟踪 --format json` - Flags: `--base-id` = `base123`, `--name` = `Q2任务跟踪`, `--table-id` = `table456` **aitable_aitable_table_update_002** - Prompt: 更新 base789 的 tblXYZ 表名为 销售漏斗 - Expected: `dws aitable table update --base-id base789 --table-id tblXYZ --name 销售漏斗 --format json` - Flags: `--base-id` = `base789`, `--name` = `销售漏斗`, `--table-id` = `tblXYZ` --- ### attendance(16 条) #### `dws attendance record get` **attendance_attendance_record_get_001** - Prompt: 查询个人考勤详情,date 为 2026-03-08, user 为 - Expected: `dws attendance record get --date 2026-03-08 --user --format json` - Flags: `--date` = `2026-03-08`, `--user` = `` **attendance_attendance_record_get_002** - Prompt: 查一下userId1在2026年3月16号的打卡情况 - Expected: `dws attendance record get --user userId1 --date 2026-03-16 --format json` - Flags: `--date` = `2026-03-16`, `--user` = `userId1` **attendance_attendance_record_get_003** - Prompt: 帮我查一下张三(user_zhangsan)今天2026-03-18的出勤情况 - Expected: `dws attendance record get --user user_zhangsan --date 2026-03-18 --format json` - Flags: `--date` = `2026-03-18`, `--user` = `user_zhangsan` **attendance_attendance_record_get_004** - Prompt: 我想看员工 emp001 在 2026-03-10 的考勤详情 - Expected: `dws attendance record get --user emp001 --date 2026-03-10 --format json` - Flags: `--date` = `2026-03-10`, `--user` = `emp001` #### `dws attendance rules` **attendance_attendance_rules_001** - Prompt: 查询 2026-03-14 的考勤组与考勤规则 - Expected: `dws attendance rules --date 2026-03-14 --format json` - Flags: `--date` = `2026-03-14` **attendance_attendance_rules_002** - Prompt: 今天2026年3月18日的考勤规则是什么 - Expected: `dws attendance rules --date 2026-03-18 --format json` - Flags: `--date` = `2026-03-18` **attendance_attendance_rules_003** - Prompt: 帮我看看2026-03-20这天的打卡规则 - Expected: `dws attendance rules --date 2026-03-20 --format json` - Flags: `--date` = `2026-03-20` **attendance_attendance_rules_004** - Prompt: 查一下 2026-03-17 09:00:00 对应的考勤组信息 - Expected: `dws attendance rules --date "2026-03-17 09:00:00" --format json` - Flags: `--date` = `2026-03-17 09:00:00` #### `dws attendance shift list` **attendance_attendance_shift_list_001** - Prompt: 查询用户 userId1 和 userId2 在 2026-03-03 到 2026-03-07 的班次 - Expected: `dws attendance shift list --end 2026-03-07 --start 2026-03-03 --users userId1,userId2 --format json` - Flags: `--end` = `2026-03-07`, `--start` = `2026-03-03`, `--users` = `userId1,userId2` **attendance_attendance_shift_list_002** - Prompt: 帮我看看张三(user001)上周一到上周五的排班情况 - Expected: `dws attendance shift list --end 2026-03-13 --start 2026-03-09 --users user001 --format json` - Flags: `--end` = `2026-03-13`, `--start` = `2026-03-09`, `--users` = `user001` **attendance_attendance_shift_list_003** - Prompt: 查询这周(2026-03-16到2026-03-22)团队成员 emp001,emp002,emp003 的排班 - Expected: `dws attendance shift list --start 2026-03-16 --end 2026-03-22 --users emp001,emp002,emp003 --format json` - Flags: `--end` = `2026-03-22`, `--start` = `2026-03-16`, `--users` = `emp001,emp002,emp003` **attendance_attendance_shift_list_004** - Prompt: 我想知道 staffA 和 staffB 下周的当班安排,日期是2026-03-23到2026-03-27 - Expected: `dws attendance shift list --start 2026-03-23 --end 2026-03-27 --users staffA,staffB --format json` - Flags: `--end` = `2026-03-27`, `--start` = `2026-03-23`, `--users` = `staffA,staffB` #### `dws attendance summary` **attendance_attendance_summary_001** - Prompt: 查询用户 user123 在 2026-03-12 的考勤统计摘要 - Expected: `dws attendance summary --date "2026-03-12 15:00:00" --user user123 --format json` - Flags: `--date` = `2026-03-12 15:00:00`, `--user` = `user123` **attendance_attendance_summary_002** - Prompt: 帮我看看员工 emp456 今天 2026-03-18 的打卡情况 - Expected: `dws attendance summary --date "2026-03-18 00:00:00" --user emp456 --format json` - Flags: `--date` = `2026-03-18 00:00:00`, `--user` = `emp456` **attendance_attendance_summary_003** - Prompt: 给我看 emp789 在 2026-03-15 这天的考勤汇总 - Expected: `dws attendance summary --date "2026-03-15 00:00:00" --user emp789 --format json` - Flags: `--date` = `2026-03-15 00:00:00`, `--user` = `emp789` **attendance_attendance_summary_004** - Prompt: 统计一下 userId99 在 2026-03-18 09:00:00 的考勤数据 - Expected: `dws attendance summary --date "2026-03-18 09:00:00" --user userId99 --format json` - Flags: `--date` = `2026-03-18 09:00:00`, `--user` = `userId99` --- ### calendar(30 条) #### `dws calendar busy search` **calendar_calendar_busy_search_001** - Prompt: 查询用户 user001 在 2026-03-10 14:00 到 18:00 的闲忙状态 - Expected: `dws calendar busy search --end 2026-03-10T18:00:00+08:00 --start 2026-03-10T14:00:00+08:00 --users user001 --format json` - Flags: `--end` = `2026-03-10T18:00:00+08:00`, `--start` = `2026-03-10T14:00:00+08:00`, `--users` = `user001` **calendar_calendar_busy_search_002** - Prompt: 看看 emp123 和 emp456 明天上午9点到12点是否有空 - Expected: `dws calendar busy search --start 2026-03-19T09:00:00+08:00 --end 2026-03-19T12:00:00+08:00 --users emp123,emp456 --format json` - Flags: `--end` = `2026-03-19T12:00:00+08:00`, `--start` = `2026-03-19T09:00:00+08:00`, `--users` = `emp123,emp456` #### `dws calendar event create` **calendar_calendar_event_create_001** - Prompt: 创建日程,end 为 2026-03-10T15:00:00+08:00, start 为 2026-03-10T14:00:00+08:00, title 为 Q1 复盘会 - Expected: `dws calendar event create --end 2026-03-10T15:00:00+08:00 --start 2026-03-10T14:00:00+08:00 --title "Q1 复盘会" --format json` - Flags: `--end` = `2026-03-10T15:00:00+08:00`, `--start` = `2026-03-10T14:00:00+08:00`, `--title` = `Q1 复盘会` **calendar_calendar_event_create_002** - Prompt: 创建一个日程,标题产品评审会,从2026-03-20T14:00:00+08:00到2026-03-20T16:00:00+08:00,描述是讨论Q2产品规划 - Expected: `dws calendar event create --title "产品评审会" --start "2026-03-20T14:00:00+08:00" --end "2026-03-20T16:00:00+08:00" --desc "讨论Q2产品规划" --format json` - Flags: `--desc` = `讨论Q2产品规划`, `--end` = `2026-03-20T16:00:00+08:00`, `--start` = `2026-03-20T14:00:00+08:00`, `--title` = `产品评审会` #### `dws calendar event delete` **calendar_calendar_event_delete_001** - Prompt: 删除日程 - Expected: `dws calendar event delete --id --format json` - Flags: `--id` = `` **calendar_calendar_event_delete_002** `[ASK_USER]` - Prompt: 把那个会议取消了 - Expected: `dws calendar event delete --format json` #### `dws calendar event get` **calendar_calendar_event_get_001** - Prompt: 获取日程 evt123 的详情 - Expected: `dws calendar event get --id evt123 --format json` - Flags: `--id` = `evt123` **calendar_calendar_event_get_002** - Prompt: 查看一下这个日程 evtABC 的具体内容 - Expected: `dws calendar event get --id evtABC --format json` - Flags: `--id` = `evtABC` #### `dws calendar event list` **calendar_calendar_event_list_001** - Prompt: 查询日程列表,start 为 2026-03-10T14:00:00+08:00, end 为 2026-03-10T18:00:00+08:00 - Expected: `dws calendar event list --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T18:00:00+08:00" --format json` - Flags: `--start` = `2026-03-10T14:00:00+08:00`, `--end` = `2026-03-10T18:00:00+08:00` **calendar_calendar_event_list_002** - Prompt: 看看我最近的日程 - Expected: `dws calendar event list --format json` #### `dws calendar event update` **calendar_calendar_event_update_001** - Prompt: 修改日程 ev123,只把标题改为 紧急会议 - Expected: `dws calendar event update --id ev123 --title 紧急会议 --format json` - Flags: `--id` = `ev123`, `--title` = `紧急会议` **calendar_calendar_event_update_002** - Prompt: 把日程 ev456 的开始时间改到 2026-03-26T09:00:00+08:00 - Expected: `dws calendar event update --id ev456 --start "2026-03-26T09:00:00+08:00" --format json` - Flags: `--id` = `ev456`, `--start` = `2026-03-26T09:00:00+08:00` **calendar_calendar_event_update_003** - Prompt: 把日程 ev789 的结束时间推迟到 2026-03-26T12:00:00+08:00 - Expected: `dws calendar event update --id ev789 --end "2026-03-26T12:00:00+08:00" --format json` - Flags: `--id` = `ev789`, `--end` = `2026-03-26T12:00:00+08:00` **calendar_calendar_event_update_004** - Prompt: 把日程eventId123的标题改成产品评审v2,时间改为2026-03-25T10:00:00+08:00到2026-03-25T12:00:00+08:00 - Expected: `dws calendar event update --id eventId123 --title "产品评审v2" --start "2026-03-25T10:00:00+08:00" --end "2026-03-25T12:00:00+08:00" --format json` - Flags: `--end` = `2026-03-25T12:00:00+08:00`, `--id` = `eventId123`, `--start` = `2026-03-25T10:00:00+08:00`, `--title` = `产品评审v2` **calendar_calendar_event_update_005** - Prompt: 帮我把会议 mtgXYZ 改名为周会,时间挪到下周一上午10点到11点 - Expected: `dws calendar event update --id mtgXYZ --title "周会" --start "2026-03-23T10:00:00+08:00" --end "2026-03-23T11:00:00+08:00" --format json` - Flags: `--end` = `2026-03-23T11:00:00+08:00`, `--id` = `mtgXYZ`, `--start` = `2026-03-23T10:00:00+08:00`, `--title` = `周会` #### `dws calendar participant add` **calendar_calendar_participant_add_001** - Prompt: 给日程 evt123 添加参与者 user001 - Expected: `dws calendar participant add --event evt123 --users user001 --format json` - Flags: `--event` = `evt123`, `--users` = `user001` **calendar_calendar_participant_add_002** - Prompt: 把 user002 和 user003 加到会议 evtXYZ 里 - Expected: `dws calendar participant add --event evtXYZ --users user002,user003 --format json` - Flags: `--event` = `evtXYZ`, `--users` = `user002,user003` #### `dws calendar participant delete` **calendar_calendar_participant_delete_001** - Prompt: 从日程 evt123 中移除参与者 user001 - Expected: `dws calendar participant delete --event evt123 --users user001 --format json` - Flags: `--event` = `evt123`, `--users` = `user001` **calendar_calendar_participant_delete_002** - Prompt: 把 user002 从会议 evtXYZ 的参与者里删掉 - Expected: `dws calendar participant delete --event evtXYZ --users user002 --format json` - Flags: `--event` = `evtXYZ`, `--users` = `user002` #### `dws calendar participant list` **calendar_calendar_participant_list_001** - Prompt: 查看日程 evt123 的参与者列表 - Expected: `dws calendar participant list --event evt123 --format json` - Flags: `--event` = `evt123` **calendar_calendar_participant_list_002** - Prompt: 这个会议 evtXYZ 有哪些人参加 - Expected: `dws calendar participant list --event evtXYZ --format json` - Flags: `--event` = `evtXYZ` #### `dws calendar room add` **calendar_calendar_room_add_001** - Prompt: 给日程 evt123 预定会议室 room001 - Expected: `dws calendar room add --event evt123 --rooms room001 --format json` - Flags: `--event` = `evt123`, `--rooms` = `room001` **calendar_calendar_room_add_002** - Prompt: 把 roomABC 这个会议室加到会议 evtXYZ - Expected: `dws calendar room add --event evtXYZ --rooms roomABC --format json` - Flags: `--event` = `evtXYZ`, `--rooms` = `roomABC` #### `dws calendar room delete` **calendar_calendar_room_delete_001** - Prompt: 从日程 evt123 中移除会议室 room001 - Expected: `dws calendar room delete --event evt123 --rooms room001 --format json` - Flags: `--event` = `evt123`, `--rooms` = `room001` **calendar_calendar_room_delete_002** - Prompt: 取消 evtXYZ 会议的会议室预定 roomABC - Expected: `dws calendar room delete --event evtXYZ --rooms roomABC --format json` - Flags: `--event` = `evtXYZ`, `--rooms` = `roomABC` #### `dws calendar room list-groups` **calendar_calendar_room_list_groups_001** - Prompt: 获取所有会议室分组列表 - Expected: `dws calendar room list-groups --format json` **calendar_calendar_room_list_groups_002** - Prompt: 查一下公司有哪些会议室分组 - Expected: `dws calendar room list-groups --format json` #### `dws calendar room search` **calendar_calendar_room_search_001** - Prompt: 搜索会议室,end 为 2026-03-10T15:00:00+08:00, start 为 2026-03-10T14:00:00+08:00 - Expected: `dws calendar room search --end 2026-03-10T15:00:00+08:00 --start 2026-03-10T14:00:00+08:00 --format json` - Flags: `--end` = `2026-03-10T15:00:00+08:00`, `--start` = `2026-03-10T14:00:00+08:00` **calendar_calendar_room_search_002** - Prompt: 搜一下2026年3月20日下午2点到4点有空的会议室 - Expected: `dws calendar room search --start "2026-03-20T14:00:00+08:00" --end "2026-03-20T16:00:00+08:00" --available --format json` - Flags: `--available`, `--end` = `2026-03-20T16:00:00+08:00`, `--start` = `2026-03-20T14:00:00+08:00` **calendar_calendar_room_search_003** - Prompt: 在分组 group123 中搜索 2026-03-25 上午9点到10点的空闲会议室 - Expected: `dws calendar room search --start 2026-03-25T09:00:00+08:00 --end 2026-03-25T10:00:00+08:00 --group-id group123 --format json` - Flags: `--end` = `2026-03-25T10:00:00+08:00`, `--group-id` = `group123`, `--start` = `2026-03-25T09:00:00+08:00` --- ### chat(31 条) #### `dws chat bot search` **chat_chat_bot_search_001** - Prompt: 搜索我创建的机器人 - Expected: `dws chat bot search --format json` **chat_chat_bot_search_002** - Prompt: 搜索我创建的名字包含日报的机器人,第1页每页10个 - Expected: `dws chat bot search --name "日报" --page 1 --size 10 --format json` - Flags: `--name` = `日报`, `--page` = `1`, `--size` = `10` #### `dws chat group create` **chat_chat_group_create_001** - Prompt: 创建群 — 当前登录用户自动成为群主,users 为 userId1,userId2,userId3, name 为 Q1 项目冲刺群 - Expected: `dws chat group create --users userId1,userId2,userId3 --name "Q1 项目冲刺群" --format json` - Flags: `--users` = `userId1,userId2,userId3`, `--name` = `Q1 项目冲刺群` **chat_chat_group_create_002** - Prompt: 拉一个群讨论Q2计划,把userId1和userId2拉进来,群名叫Q2规划讨论 - Expected: `dws chat group create --users userId1,userId2 --name "Q2规划讨论" --format json` - Flags: `--name` = `Q2规划讨论`, `--users` = `userId1,userId2` #### `dws chat group members` **chat_chat_group_members_001** - Prompt: 查看群 openConvABC 的成员列表 - Expected: `dws chat group members --id openConvABC --format json` - Flags: `--id` = `openConvABC` **chat_chat_group_members_002** - Prompt: 查看群 openConvABC 成员列表的下一页,游标是 cursor999 - Expected: `dws chat group members --id openConvABC --cursor cursor999 --format json` - Flags: `--cursor` = `cursor999`, `--id` = `openConvABC` #### `dws chat group members add` **chat_chat_group_members_add_001** - Prompt: 向群 conv123 添加成员 user001 和 user002 - Expected: `dws chat group members add --id conv123 --users user001,user002 --format json` - Flags: `--id` = `conv123`, `--users` = `user001,user002` **chat_chat_group_members_add_002** - Prompt: 把张三(empABC)拉进 convXYZ 这个群 - Expected: `dws chat group members add --id convXYZ --users empABC --format json` - Flags: `--id` = `convXYZ`, `--users` = `empABC` #### `dws chat group members add-bot` **chat_chat_group_members_add_bot_001** - Prompt: 将机器人 robot001 添加到群 conv123 - Expected: `dws chat group members add-bot --id conv123 --robot-code robot001 --format json` - Flags: `--id` = `conv123`, `--robot-code` = `robot001` **chat_chat_group_members_add_bot_002** - Prompt: 把 botXYZ 机器人拉进 convABC 这个群 - Expected: `dws chat group members add-bot --id convABC --robot-code botXYZ --format json` - Flags: `--id` = `convABC`, `--robot-code` = `botXYZ` #### `dws chat group members remove` **chat_chat_group_members_remove_001** - Prompt: 移除群成员 — 从指定群聊中移除成员,需传入群 ID 与待移除的用户 ID 列表,users 为 userId1,userId2 - Expected: `dws chat group members remove --id --users userId1,userId2 --format json` - Flags: `--id` = ``, `--users` = `userId1,userId2` **chat_chat_group_members_remove_002** - Prompt: 把userId1和userId2从群abc123里踢出去 - Expected: `dws chat group members remove --id abc123 --users userId1,userId2 --format json` - Flags: `--id` = `abc123`, `--users` = `userId1,userId2` #### `dws chat group rename` **chat_chat_group_rename_001** - Prompt: 更新群名称,name 为 新群名 - Expected: `dws chat group rename --id --name 新群名 --format json` - Flags: `--id` = ``, `--name` = `新群名` **chat_chat_group_rename_002** - Prompt: 把群abc123改名叫新项目讨论组 - Expected: `dws chat group rename --id abc123 --name "新项目讨论组" --format json` - Flags: `--id` = `abc123`, `--name` = `新项目讨论组` #### `dws chat message list` **chat_chat_message_list_001** - Prompt: 拉取群聊会话消息内容,time 为 2025-03-01 00:00:00 - Expected: `dws chat message list --group --time "2025-03-01 00:00:00" --format json` - Flags: `--group` = ``, `--time` = `2025-03-01 00:00:00` **chat_chat_message_list_002** - Prompt: 拉取和userId123的单聊消息记录,从2025年3月1号开始 - Expected: `dws chat message list --user userId123 --time "2025-03-01 00:00:00" --format json` - Flags: `--time` = `2025-03-01 00:00:00`, `--user` = `userId123` **chat_chat_message_list_003** - Prompt: 拉取群abc123从2025年3月10号开始往前的消息,最多50条 - Expected: `dws chat message list --group abc123 --time "2025-03-10 00:00:00" --forward false --limit 50 --format json` - Flags: `--forward` = `false`, `--group` = `abc123`, `--limit` = `50`, `--time` = `2025-03-10 00:00:00` #### `dws chat message recall-by-bot` **chat_chat_message_recall_by_bot_001** - Prompt: 用机器人 robot1 撤回群 openConvABC 中的消息,消息key是 msgKey001 - Expected: `dws chat message recall-by-bot --group --keys --robot-code --format json` - Flags: `--group` = ``, `--keys` = ``, `--robot-code` = `` **chat_chat_message_recall_by_bot_002** - Prompt: 用机器人myBot撤回单聊消息,消息key是key123和key456 - Expected: `dws chat message recall-by-bot --robot-code myBot --keys key123,key456 --format json` - Flags: `--keys` = `key123,key456`, `--robot-code` = `myBot` #### `dws chat message send` **chat_chat_message_send_001** - Prompt: 在群 openConvABC 发一条消息:大家好 - Expected: `dws chat message send --conversation-id openConvABC "大家好" --format json` - Flags: `--conversation-id` = `openConvABC` **chat_chat_message_send_002** - Prompt: 给userId123发一条私聊消息,标题是提醒,内容是请查收报告 - Expected: `dws chat message send --user userId123 --title "提醒" "请查收报告" --format json` - Flags: `--title` = `提醒`, `--user` = `userId123` **chat_chat_message_send_003** - Prompt: 在群 groupId456 发一条带标题的通知:周报提醒,请大家本周五前提交周报 - Expected: `dws chat message send --conversation-id groupId456 --title "周报提醒" "请大家本周五前提交周报" --format json` - Flags: `--conversation-id` = `groupId456`, `--title` = `周报提醒` #### `dws chat message send-by-bot` **chat_chat_message_send_by_bot_001** - Prompt: 机器人发送群聊消息,text 为 ## 今日完成..., title 为 日报 - Expected: `dws chat message send-by-bot --group --robot-code --text "## 今日完成..." --title 日报 --format json` - Flags: `--text` = `## 今日完成...`, `--group` = ``, `--robot-code` = ``, `--title` = `日报` **chat_chat_message_send_by_bot_002** - Prompt: 用机器人myBot给userId1和userId2发私聊消息,标题是通知,内容是请查收周报 - Expected: `dws chat message send-by-bot --robot-code myBot --users userId1,userId2 --title "通知" --text "请查收周报" --format json` - Flags: `--text` = `请查收周报`, `--robot-code` = `myBot`, `--title` = `通知`, `--users` = `userId1,userId2` #### `dws chat message send-by-webhook` **chat_chat_message_send_by_webhook_001** - Prompt: 通过 Webhook token1 发一条告警消息:CPU 超 90% - Expected: `dws chat message send-by-webhook --content "CPU 超 90%" --title 告警 --token token1 --format json` - Flags: `--content` = `CPU 超 90%`, `--title` = `告警`, `--token` = `token1` **chat_chat_message_send_by_webhook_002** - Prompt: 通过webhook发群消息,token是tokenABC,标题告警,内容CPU使用率超过90%,@所有人 - Expected: `dws chat message send-by-webhook --token tokenABC --title "告警" --content "CPU使用率超过90%" --at-all --format json` - Flags: `--at-all`, `--content` = `CPU使用率超过90%`, `--title` = `告警`, `--token` = `tokenABC` **chat_chat_message_send_by_webhook_003** - Prompt: 用 Webhook tokenXYZ 发消息,标题是「审批提醒」,内容是「请及时审批」,并@用户 user001 和 user002 - Expected: `dws chat message send-by-webhook --token tokenXYZ --title "审批提醒" --content "@user001 @user002 请及时审批" --at-users user001,user002 --format json` - Flags: `--at-users` = `user001,user002`, `--content` = `@user001 @user002 请及时审批`, `--title` = `审批提醒`, `--token` = `tokenXYZ` **chat_chat_message_send_by_webhook_004** - Prompt: 用 Webhook tokenDEF 发通知,标题是「会议通知」,内容是「请参加今日下午的会议」,并@手机号 13800138000 和 13900139000 - Expected: `dws chat message send-by-webhook --token tokenDEF --title "会议通知" --content "@13800138000 @13900139000 请参加今日下午的会议" --at-mobiles 13800138000,13900139000 --format json` - Flags: `--at-mobiles` = `13800138000,13900139000`, `--content` = `@13800138000 @13900139000 请参加今日下午的会议`, `--title` = `会议通知`, `--token` = `tokenDEF` #### `dws chat search` **chat_chat_search_001** - Prompt: 根据名称搜索会话列表,query 为 项目冲刺 - Expected: `dws chat search --query 项目冲刺 --format json` - Flags: `--query` = `项目冲刺` **chat_chat_search_002** - Prompt: 搜一下有没有叫项目组的群 - Expected: `dws chat search --query "项目组" --format json` - Flags: `--query` = `项目组` **chat_chat_search_003** - Prompt: 继续搜索关键词 项目冲刺 的下一页结果,游标 cursorXYZ - Expected: `dws chat search --query 项目冲刺 --cursor cursorXYZ --format json` - Flags: `--cursor` = `cursorXYZ`, `--query` = `项目冲刺` --- ### contact(14 条) #### `dws contact dept list-children` **contact_contact_dept_list_children_001** - Prompt: 查看部门 12345 的子部门列表 - Expected: `dws contact dept list-children --id 12345 --format json` - Flags: `--id` = `12345` **contact_contact_dept_list_children_002** - Prompt: 技术部(ID 67890)下面有哪些二级部门 - Expected: `dws contact dept list-children --id 67890 --format json` - Flags: `--id` = `67890` #### `dws contact dept list-members` **contact_contact_dept_list_members_001** - Prompt: 查看部门 12345 和 67890 的成员列表 - Expected: `dws contact dept list-members --ids 12345,67890 --format json` - Flags: `--ids` = `12345,67890` **contact_contact_dept_list_members_002** - Prompt: 研发部(ID 11111)有哪些员工 - Expected: `dws contact dept list-members --ids 11111 --format json` - Flags: `--ids` = `11111` #### `dws contact dept search` **contact_contact_dept_search_001** - Prompt: 搜索部门,keyword 为 技术部 - Expected: `dws contact dept search --query 技术部 --format json` - Flags: `--query` = `技术部` **contact_contact_dept_search_002** - Prompt: 搜一下技术部的部门信息 - Expected: `dws contact dept search --query "技术部" --format json` - Flags: `--query` = `技术部` #### `dws contact user get` **contact_contact_user_get_001** - Prompt: 批量获取用户 user001 和 user002 的详细信息 - Expected: `dws contact user get --ids user001,user002 --format json` - Flags: `--ids` = `user001,user002` **contact_contact_user_get_002** - Prompt: 查一下员工 empABC 的信息 - Expected: `dws contact user get --ids empABC --format json` - Flags: `--ids` = `empABC` #### `dws contact user get-self` **contact_contact_user_get_self_001** - Prompt: 获取当前用户信息 - Expected: `dws contact user get-self --format json` **contact_contact_user_get_self_002** - Prompt: 我是谁,查一下当前登录账号的资料 - Expected: `dws contact user get-self --format json` #### `dws contact user search` **contact_contact_user_search_001** - Prompt: 按关键词搜索用户,keyword 为 张三 - Expected: `dws contact user search --query 张三 --format json` - Flags: `--query` = `张三` **contact_contact_user_search_002** - Prompt: 帮我找一下张三的联系方式 - Expected: `dws contact user search --query "张三" --format json` - Flags: `--query` = `张三` #### `dws contact user search-mobile` **contact_contact_user_search_mobile_001** - Prompt: 按手机号 13800138000 搜索用户 - Expected: `dws contact user search-mobile --mobile 13800138000 --format json` - Flags: `--mobile` = `13800138000` **contact_contact_user_search_mobile_002** - Prompt: 查一下 15912345678 这个手机号是哪个员工 - Expected: `dws contact user search-mobile --mobile 15912345678 --format json` - Flags: `--mobile` = `15912345678` --- ### dev(25 条) #### `dws dev app list` **dev_app_list_001** - Prompt: 搜索开放平台应用,应用名是 DemoApp - Expected: `dws dev app list --name DemoApp --format json` - Flags: `--name` = `DemoApp` **dev_app_list_002** - Prompt: 分页查询开放平台应用,第 2 页,每页 10 条,按修改时间倒序 - Expected: `dws dev app list --page 2 --page-size 10 --sort gmt_modified --order desc --format json` - Flags: `--page` = `2`, `--page-size` = `10`, `--sort` = `gmt_modified`, `--order` = `desc` **dev_app_list_003** - Prompt: 在开发者后台搜索企业内部应用 DemoApp - Expected: `dws dev app list --name DemoApp --format json` - Flags: `--name` = `DemoApp` #### `dws dev app get` **dev_app_get_001** - Prompt: 查看统一应用 UNIFIED_APP_ID 的应用详情 - Expected: `dws dev app get --unified-app-id UNIFIED_APP_ID --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID` **dev_app_get_002** - Prompt: 按 appKey dingxxx 查开放平台应用详情 - Expected: `dws dev app get --app-key dingxxx --format json` - Flags: `--app-key` = `dingxxx` **dev_app_get_003** - Prompt: 查开放平台应用 DemoApp 的 appKey、clientId 和 agentId - Expected: `dws dev app list --name DemoApp --format json` - Flags: `--name` = `DemoApp` #### `dws dev app create` **dev_app_create_001** - Prompt: 创建一个企业内部应用,名称 DemoApp,描述是内部应用 - Expected: `dws dev app create --name DemoApp --desc "内部应用" --type internal --dry-run --format json` - Flags: `--name` = `DemoApp`, `--desc` = `内部应用`, `--type` = `internal` **dev_app_create_002** - Prompt: 已确认创建企业内部应用 DemoApp - Expected: `dws dev app create --name DemoApp --type internal --yes --format json` - Flags: `--name` = `DemoApp`, `--type` = `internal` #### `dws dev app update` **dev_app_update_001** - Prompt: 把应用 UNIFIED_APP_ID 的描述改成 新描述 - Expected: `dws dev app update --unified-app-id UNIFIED_APP_ID --desc "新描述" --dry-run --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--desc` = `新描述` #### `dws dev app delete` **dev_app_delete_001** - Prompt: 删除开放平台应用 UNIFIED_APP_ID,先给我预览 - Expected: `dws dev app delete --unified-app-id UNIFIED_APP_ID --dry-run --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID` #### `dws dev app credentials get` **dev_app_credentials_get_001** - Prompt: 查询应用 UNIFIED_APP_ID 的开放平台凭证 - Expected: `dws dev app credentials get --unified-app-id UNIFIED_APP_ID --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID` **dev_app_credentials_get_002** - Prompt: 查询 AgentId AGENT_ID 对应应用的开放平台凭证 - Expected: `dws dev app credentials get --agent-id AGENT_ID --format json` - Flags: `--agent-id` = `AGENT_ID` #### `dws dev app member list` **dev_app_member_list_001** - Prompt: 查看开放平台应用 UNIFIED_APP_ID 的成员 - Expected: `dws dev app member list --unified-app-id UNIFIED_APP_ID --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID` #### `dws dev app member add` **dev_app_member_add_001** - Prompt: 给开放平台应用 UNIFIED_APP_ID 添加开发者成员 userId1,userId2,先预览 - Expected: `dws dev app member add --unified-app-id UNIFIED_APP_ID --user-ids userId1,userId2 --member-type DEVELOPER --dry-run --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--user-ids` = `userId1,userId2`, `--member-type` = `DEVELOPER` #### `dws dev app member remove` **dev_app_member_remove_001** - Prompt: 已确认,从开放平台应用 UNIFIED_APP_ID 移除开发者成员 userId1 - Expected: `dws dev app member remove --unified-app-id UNIFIED_APP_ID --user-ids userId1 --member-type DEVELOPER --yes --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--user-ids` = `userId1`, `--member-type` = `DEVELOPER`, `--yes` #### `dws dev app security config` **dev_app_security_config_001** - Prompt: 给开放平台应用 UNIFIED_APP_ID 配置 IP 白名单 192.0.2.10,先预览 - Expected: `dws dev app security config --unified-app-id UNIFIED_APP_ID --ip-whitelist 192.0.2.10 --dry-run --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--ip-whitelist` = `192.0.2.10` #### `dws dev app permission list` **dev_app_permission_list_001** - Prompt: 查询应用 UNIFIED_APP_ID 已开通和未开通的全部 APP、SNS 权限 - Expected: `dws dev app permission list --unified-app-id UNIFIED_APP_ID --status all --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--status` = `all` **dev_app_permission_list_002** - Prompt: 搜索应用 UNIFIED_APP_ID 里机器人发送消息相关的未开通权限 - Expected: `dws dev app permission list --unified-app-id UNIFIED_APP_ID --keyword "机器人发送消息" --status unauthed --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--keyword` = `机器人发送消息`, `--status` = `unauthed` **dev_app_permission_list_003** - Prompt: 看一下权限 qyapi_robot_sendmsg 覆盖哪些 API - Expected: `dws dev app permission list --unified-app-id UNIFIED_APP_ID --scope qyapi_robot_sendmsg --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--scope` = `qyapi_robot_sendmsg` **dev_app_permission_list_004** - Prompt: 给开放平台应用 UNIFIED_APP_ID 搜索手机号权限,应用权限和个人权限都要展示 - Expected: `dws dev app permission list --unified-app-id UNIFIED_APP_ID --keyword "手机号" --status all --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--keyword` = `手机号`, `--status` = `all` #### `dws dev app permission add` **dev_app_permission_add_001** - Prompt: 给应用 UNIFIED_APP_ID 申请 qyapi_robot_sendmsg 权限,先预览 - Expected: `dws dev app permission add --unified-app-id UNIFIED_APP_ID --permissions qyapi_robot_sendmsg --dry-run --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--permissions` = `qyapi_robot_sendmsg` **dev_app_permission_add_002** - Prompt: 已确认,给应用 UNIFIED_APP_ID 申请 Contact.User.mobile 权限 - Expected: `dws dev app permission add --unified-app-id UNIFIED_APP_ID --permissions Contact.User.mobile --yes --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--permissions` = `Contact.User.mobile` #### `dws dev app permission remove` **dev_app_permission_remove_001** - Prompt: 从应用 UNIFIED_APP_ID 移除 qyapi_robot_sendmsg 权限,先预览 - Expected: `dws dev app permission remove --unified-app-id UNIFIED_APP_ID --permission qyapi_robot_sendmsg --dry-run --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--permission` = `qyapi_robot_sendmsg` #### `dws dev app event list` **dev_app_event_list_001** - Prompt: 查询应用 UNIFIED_APP_ID 的事件订阅配置 - Expected: `dws dev app event list --unified-app-id UNIFIED_APP_ID --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID` #### `dws dev app version publish` **dev_app_version_publish_001** - Prompt: 已确认,发布应用 UNIFIED_APP_ID 的版本 VERSION_ID,审批人是 USERID - Expected: `dws dev app version publish --unified-app-id UNIFIED_APP_ID --version-id VERSION_ID --approver USERID --yes --format json` - Flags: `--unified-app-id` = `UNIFIED_APP_ID`, `--version-id` = `VERSION_ID`, `--approver` = `USERID` --- ### event(40 条) #### `dws event +listen-im` **event_event_consume_at_001** - Prompt: 监听有人 @ 我的消息 - Expected: `dws event +listen-im --kind at-me` - Flags: `--kind` = `at-me` #### `dws event consume user_im_message_receive_o2o` **event_event_consume_o2o_001** - Prompt: 用原始 EventKey user_im_message_receive_o2o 监听我和 userId test-user-001 的单聊消息 - Expected: `dws event consume user_im_message_receive_o2o --user test-user-001 --flatten -f ndjson` - Flags: `--user` = `test-user-001` **event_event_consume_o2o_open_id_001** - Prompt: 用原始 EventKey user_im_message_receive_o2o 监听我和 openDingtalkId abc 的单聊消息 - Expected: `dws event consume user_im_message_receive_o2o --open-dingtalk-id abc --flatten -f ndjson` - Flags: `--open-dingtalk-id` = `abc` #### `dws event +listen-im` **event_event_consume_o2o_003** `[ASK_USER]` - Prompt: 监听我的个人单聊消息 - Expected: `dws event +listen-im` **event_event_consume_o2o_auto_reply_001** - Prompt: 监听 userId test-user-001 发给我的消息,并对方发什么自动回复什么 - Expected: `dws event +listen-im --kind sender --user test-user-001` - Flags: `--kind` = `sender`, `--user` = `test-user-001` - Contract: 等待 stderr 的 `[event] ready`;从每行 NDJSON 顶层读取 `content` 和 `sender_open_dingtalk_id`,持续读取 stdout,不使用轮询或 output-dir watcher #### `dws event +listen-im` **event_event_consume_group_001** - Prompt: 监听 openConversationId cid123 的群消息 - Expected: `dws event +listen-im --kind group --chat-id cid123` - Flags: `--chat-id` = `cid123`, `--kind` = `group` - Contract: 群自动回复时直接读取事件顶层 `conversation_id` #### `dws event +listen-im` **event_event_consume_user_001** - Prompt: 监听 userId test-user-001 发给我的消息,包括单聊和群聊 - Expected: `dws event +listen-im --kind sender --user test-user-001` - Flags: `--kind` = `sender`, `--user` = `test-user-001` **event_event_consume_user_open_id_001** - Prompt: 监听 openDingtalkId abc 发给我的消息,包括单聊和群聊 - Expected: `dws event +listen-im --kind sender --open-dingtalk-id abc` - Flags: `--kind` = `sender`, `--open-dingtalk-id` = `abc` #### `dws event +listen-im` **event_event_consume_o2o_all_001** - Prompt: 监听我收到的所有单聊消息 - Expected: `dws event +listen-im --kind all-direct` - Flags: `--kind` = `all-direct` - Contract: 只有用户明确要求“所有”时使用,不得替代指定用户的 `receive_o2o` #### `dws event +listen-im` **event_event_consume_group_all_001** - Prompt: 监听我所在的所有群消息 - Expected: `dws event +listen-im --kind all-group` - Flags: `--kind` = `all-group` - Contract: 只有用户明确要求“所有”时使用,不得替代指定群的 `receive_group` #### `dws event +listen-im` **event_event_consume_read_o2o_001** - Prompt: 监听我发给 userId test-user-001 的单聊消息是否已读 - Expected: `dws event +listen-im --kind sender --events read --user test-user-001` - Flags: `--events` = `read`, `--kind` = `sender`, `--user` = `test-user-001` - Contract: 从每行 NDJSON 顶层读取 `message_id`、`reader`、`reader_open_dingtalk_id`、`read_time` #### `dws event +listen-im` **event_event_consume_read_group_001** - Prompt: 监听 openConversationId cid123 群里我发的消息是否已读 - Expected: `dws event +listen-im --kind group --events read --chat-id cid123` - Flags: `--chat-id` = `cid123`, `--events` = `read`, `--kind` = `group` - Contract: 从每行 NDJSON 顶层读取 `conversation_id`、`reader`、`reader_open_dingtalk_id`、`read_time` #### `dws event +listen-im` **event_event_consume_recall_o2o_001** - Prompt: 监听我和 userId test-user-001 的单聊消息撤回事件 - Expected: `dws event +listen-im --kind sender --events recall --user test-user-001` - Flags: `--events` = `recall`, `--kind` = `sender`, `--user` = `test-user-001` - Contract: 从每行 NDJSON 顶层读取 `message_id`、`recaller`、`recaller_open_dingtalk_id`、`recall_time` #### `dws event +listen-im` **event_event_consume_recall_group_001** - Prompt: 监听 openConversationId cid123 的群消息撤回事件 - Expected: `dws event +listen-im --kind group --events recall --chat-id cid123` - Flags: `--chat-id` = `cid123`, `--events` = `recall`, `--kind` = `group` - Contract: 从每行 NDJSON 顶层读取 `conversation_id`、`recaller`、`recaller_open_dingtalk_id`、`recall_time` #### `dws event +listen-im` **event_event_consume_reaction_o2o_001** - Prompt: 监听我和 userId test-user-001 的单聊消息贴表情事件 - Expected: `dws event +listen-im --kind sender --events reaction --user test-user-001` - Flags: `--events` = `reaction`, `--kind` = `sender`, `--user` = `test-user-001` - Contract: 从每行 NDJSON 顶层读取 `operator`、`operator_open_dingtalk_id`、`reaction_name`、`operation_type` **event_event_consume_reaction_o2o_open_id_001** - Prompt: 监听我和 openDingtalkId abc 的单聊消息贴表情事件 - Expected: `dws event +listen-im --kind sender --events reaction --open-dingtalk-id abc` - Flags: `--events` = `reaction`, `--kind` = `sender`, `--open-dingtalk-id` = `abc` - Contract: 从每行 NDJSON 顶层读取 `operator`、`operator_open_dingtalk_id`、`reaction_name`、`operation_type` #### `dws event +listen-im` **event_event_consume_reaction_group_001** - Prompt: 监听 openConversationId cid123 的群消息表情回应事件 - Expected: `dws event +listen-im --kind group --events reaction --chat-id cid123` - Flags: `--chat-id` = `cid123`, `--events` = `reaction`, `--kind` = `group` - Contract: 从每行 NDJSON 顶层读取 `conversation_id`、`operator`、`reaction_name`、`reaction_text`、`operation_type` #### `dws event consume user_im_group_updated` **event_event_consume_group_updated_001** - Prompt: 监听 openConversationId cid123 群的群标题变更 - Expected: `dws event consume user_im_group_updated --group cid123 --flatten -f ndjson` - Flags: `--group` = `cid123` - Contract: 只读取顶层公共字段和实际 `payload`,不得猜测群标题或操作者字段 #### `dws event consume user_im_group_member_added` **event_event_consume_group_member_added_001** - Prompt: 监听有人加入 openConversationId cid123 群 - Expected: `dws event consume user_im_group_member_added --group cid123 --flatten -f ndjson` - Flags: `--group` = `cid123` - Contract: 从顶层读取 `conversation_id`、`operator`、`operator_open_dingtalk_id`、`members`、`event_time`;`members` 支持多人并读取 `nick/open_dingtalk_id` #### `dws event consume user_im_group_member_exited` **event_event_consume_group_member_exited_001** - Prompt: 监听有人退出 openConversationId cid123 群 - Expected: `dws event consume user_im_group_member_exited --group cid123 --flatten -f ndjson` - Flags: `--group` = `cid123` - Contract: 从顶层读取 `conversation_id`、`operator`、`operator_open_dingtalk_id`、`members`、`event_time`;成员自行退出时允许操作人字段为空 #### `dws event consume user_im_group_disbanded` **event_event_consume_group_disbanded_001** - Prompt: 监听 openConversationId cid-test-disbanded 测试群被解散 - Expected: `dws event consume user_im_group_disbanded --group cid-test-disbanded --flatten -f ndjson` - Flags: `--group` = `cid-test-disbanded` - Contract: 只监听事件;如需触发自测,必须确认目标是可销毁测试群并提示解散不可逆 #### `dws chat search` **event_lookup_group_001** - Prompt: 监听项目群的消息 - Expected: `dws chat search --query "项目群" --format json` - Flags: `--query` = `"项目群"` #### `dws event +listen-im` **event_event_consume_many_user_001** - Prompt: 同时监听 userId test-user-001 发给我的消息,以及我和他的单聊已读、撤回事件 - Expected: `dws event +listen-im --kind sender --events message,read,recall --user test-user-001` - Flags: `--events` = `message,read,recall`, `--kind` = `sender`, `--user` = `test-user-001` - Contract: 保存每条 `[event] subscription` 的 subscribe ID,等待 `[event] ready event_count=3` 后处理 stdout;停止一个 subscribe ID 时其余两个继续监听 #### `dws event consume` 多事件 **event_event_consume_many_group_001** - Prompt: 同时监听 openConversationId cid123 的群消息、群改名和群解散事件 - Expected: `dws event consume user_im_message_receive_group user_im_group_updated user_im_group_disbanded --group cid123 --flatten -f ndjson` - Flags: `--group` = `cid123` - Contract: 同一群使用一个多事件进程;不同群或不同过滤条件必须拆成多个 consume 进程 #### `dws event consume` OA 审批事件 **event_event_consume_oa_task_created_001** - Prompt: 有新的待我审批任务创建时实时通知我 - Expected: `dws event consume user_oa_approval_task_created --flatten -f ndjson` **event_event_consume_oa_task_finished_001** - Prompt: 我的审批任务完成时实时通知我 - Expected: `dws event consume user_oa_approval_task_finished --flatten -f ndjson` **event_event_consume_oa_task_redirected_001** - Prompt: 待我处理的审批任务被转交时实时通知我 - Expected: `dws event consume user_oa_approval_task_redirected --flatten -f ndjson` **event_event_consume_oa_instance_started_001** - Prompt: 有和我相关的审批实例发起时实时通知我 - Expected: `dws event consume user_oa_approval_instance_started --flatten -f ndjson` **event_event_consume_oa_instance_cc_001** - Prompt: 有审批实例抄送给我时实时通知我 - Expected: `dws event consume user_oa_approval_instance_cc --flatten -f ndjson` **event_event_consume_oa_instance_terminated_001** - Prompt: 和我相关的审批实例终止时实时通知我 - Expected: `dws event consume user_oa_approval_instance_terminated --flatten -f ndjson` **event_event_consume_oa_instance_finished_001** - Prompt: 我发起的审批实例完成时实时通知我 - Expected: `dws event consume user_oa_approval_instance_finished --flatten -f ndjson` #### `dws event consume` 底层控制 **event_event_consume_raw_envelope_001** - Prompt: 用原始 EventKey user_im_message_receive_at 监听,并输出原始 transport envelope - Expected: `dws event consume user_im_message_receive_at --max-events 1 -f raw` - Flags: `--max-events` = `1` **event_event_consume_filter_dsl_001** - Prompt: 用 Filter DSL 监听内容等于 urgent 的 @我消息 - Expected: `dws event consume user_im_message_receive_at --filter-json '{"field":"content","op":"eq","value":"urgent"}' --flatten -f ndjson` - Flags: `--filter-json` = `{"field":"content","op":"eq","value":"urgent"}` **event_event_consume_subscribe_id_001** - Prompt: 复用个人事件订阅 subId-existing 继续消费十分钟 - Expected: `dws event consume --subscribe-id subId-existing --duration 10m --flatten -f ndjson` - Flags: `--duration` = `10m`, `--subscribe-id` = `subId-existing` #### `dws event schema` **event_event_schema_im_001** - Prompt: 查看 user_im_message_receive_at 的扁平输出字段 - Expected: `dws event schema user_im_message_receive_at --flatten -f json` **event_event_schema_oa_001** - Prompt: 查看 user_oa_approval_task_created 的扁平输出字段 - Expected: `dws event schema user_oa_approval_task_created --flatten -f json` #### `dws chat message list` **event_negative_history_chat_001** - Prompt: 查看 cid123 群从 2026-08-01 00:00:00 开始的历史消息 - Expected: `dws chat message list --group cid123 --time "2026-08-01 00:00:00" --format json` - Flags: `--group` = `cid123`, `--time` = `2026-08-01 00:00:00` #### `dws oa approval list-pending` **event_negative_oa_crud_001** - Prompt: 查询 8 月第一周待我处理的审批单 - Expected: `dws oa approval list-pending --start "2026-08-01T00:00:00+08:00" --end "2026-08-08T00:00:00+08:00" --format json` - Flags: `--end` = `2026-08-08T00:00:00+08:00`, `--start` = `2026-08-01T00:00:00+08:00` #### `dws dev app event list` **event_negative_devapp_event_001** - Prompt: 查看开放平台应用 app123 已配置的回调事件 - Expected: `dws dev app event list --unified-app-id app123 --format json` - Flags: `--unified-app-id` = `app123` #### `dws event status` **event_event_status_001** - Prompt: 查看指定单聊个人事件订阅状态 - Expected: `dws event status --event user_im_message_receive_o2o` - Flags: `--event` = `user_im_message_receive_o2o` #### `dws event stop` **event_event_stop_001** - Prompt: 停止个人事件订阅 subId-abc123 - Expected: `dws event stop subId-abc123` --- ### ding(5 条) #### `dws ding message recall` **ding_ding_message_recall_001** - Prompt: 撤回 DING 消息 ding123,机器人代码 robot001 - Expected: `dws ding message recall --id ding123 --robot-code robot001 --format json` - Flags: `--id` = `ding123`, `--robot-code` = `robot001` **ding_ding_message_recall_002** - Prompt: 把刚发的 DING 消息 dingXYZ 用机器人 botABC 撤回 - Expected: `dws ding message recall --id dingXYZ --robot-code botABC --format json` - Flags: `--id` = `dingXYZ`, `--robot-code` = `botABC` #### `dws ding message send` **ding_ding_message_send_001** - Prompt: 发送 DING 消息,content 为 请查看, robot-code 为 , users 为 - Expected: `dws ding message send --content 请查看 --robot-code --users --format json` - Flags: `--content` = `请查看`, `--robot-code` = ``, `--users` = `` **ding_ding_message_send_002** - Prompt: 用机器人botCode123给userId1发一条电话DING,内容是紧急请回电 - Expected: `dws ding message send --robot-code botCode123 --users userId1 --content "紧急请回电" --type call --format json` - Flags: `--content` = `紧急请回电`, `--robot-code` = `botCode123`, `--type` = `call`, `--users` = `userId1` **ding_ding_message_send_003** - Prompt: 用机器人 botXYZ DING 提醒 alice 和 bob 参加今天下午的会议 - Expected: `dws ding message send --content "请参加今天下午的会议" --robot-code botXYZ --users alice,bob --format json` - Flags: `--content` = `请参加今天下午的会议`, `--robot-code` = `botXYZ`, `--users` = `alice,bob` --- ### report(26 条) #### `dws report detail` **report_report_detail_001** - Prompt: 获取日报 rpt123 的详情 - Expected: `dws report detail --report-id rpt123 --format json` - Flags: `--report-id` = `rpt123` **report_report_detail_002** - Prompt: 查看一下这份日志 rptXYZ 的完整内容 - Expected: `dws report detail --report-id rptXYZ --format json` - Flags: `--report-id` = `rptXYZ` #### `dws report list` **report_report_list_001** - Prompt: 获取 2026-03-10 收到的前20条日报,从游标 0 开始 - Expected: `dws report list --cursor 0 --end 2026-03-10T23:59:59+08:00 --size 20 --start 2026-03-10T00:00:00+08:00 --format json` - Flags: `--cursor` = `0`, `--end` = `2026-03-10T23:59:59+08:00`, `--size` = `20`, `--start` = `2026-03-10T00:00:00+08:00` **report_report_list_002** - Prompt: 查今天 2026-03-18 我收到的所有日报,每页10条 - Expected: `dws report list --cursor 0 --start 2026-03-18T00:00:00+08:00 --end 2026-03-18T23:59:59+08:00 --size 10 --format json` - Flags: `--cursor` = `0`, `--end` = `2026-03-18T23:59:59+08:00`, `--size` = `10`, `--start` = `2026-03-18T00:00:00+08:00` #### `dws report sent` **report_report_sent_001** `[ASK_USER]` - Prompt: 查询当前人创建的日志列表 - Expected: `dws report sent --format json` **report_report_sent_002** - Prompt: 查看我从2026年3月1号到3月15号写的周报 - Expected: `dws report sent --start "2026-03-01T00:00:00+08:00" --end "2026-03-15T23:59:59+08:00" --template-name "周报" --format json` - Flags: `--end` = `2026-03-15T23:59:59+08:00`, `--start` = `2026-03-01T00:00:00+08:00`, `--template-name` = `周报` **report_report_sent_003** - Prompt: 从游标位置 50 继续查询我提交的日志 - Expected: `dws report sent --cursor 50 --format json` - Flags: `--cursor` = `50` **report_report_sent_004** - Prompt: 查询我提交的日志,每页返回 20 条 - Expected: `dws report sent --size 20 --format json` - Flags: `--size` = `20` **report_report_sent_005** - Prompt: 查询我在 2026-03-01 之后提交的日志 - Expected: `dws report sent --start 2026-03-01T00:00:00+08:00 --format json` - Flags: `--start` = `2026-03-01T00:00:00+08:00` **report_report_sent_006** - Prompt: 查询我在 2026-03-31 之前提交的日志 - Expected: `dws report sent --end 2026-03-31T23:59:59+08:00 --format json` - Flags: `--end` = `2026-03-31T23:59:59+08:00` **report_report_sent_007** - Prompt: 查询 2026-03-10 之后修改过的日志 - Expected: `dws report sent --modified-start 2026-03-10T00:00:00+08:00 --format json` - Flags: `--modified-start` = `2026-03-10T00:00:00+08:00` **report_report_sent_008** - Prompt: 查询 2026-03-15 之前最后修改的日志 - Expected: `dws report sent --modified-end 2026-03-15T23:59:59+08:00 --format json` - Flags: `--modified-end` = `2026-03-15T23:59:59+08:00` **report_report_sent_009** - Prompt: 查询使用「日报」模板提交的日志 - Expected: `dws report sent --template-name 日报 --format json` - Flags: `--template-name` = `日报` **report_report_sent_010** - Prompt: 查看我2026年3月份提交的日志,时间范围从3月1号到3月31号 - Expected: `dws report sent --end 2026-03-31T23:59:59+08:00 --start 2026-03-01T00:00:00+08:00 --format json` - Flags: `--end` = `2026-03-31T23:59:59+08:00`, `--start` = `2026-03-01T00:00:00+08:00` **report_report_sent_011** - Prompt: 分页查询我提交的日志,从游标 100 开始,每次取 10 条 - Expected: `dws report sent --cursor 100 --size 10 --format json` - Flags: `--cursor` = `100`, `--size` = `10` **report_report_sent_012** - Prompt: 查询我在3月1到3月31日之间修改过的日志 - Expected: `dws report sent --modified-end 2026-03-31T23:59:59+08:00 --modified-start 2026-03-01T00:00:00+08:00 --format json` - Flags: `--modified-end` = `2026-03-31T23:59:59+08:00`, `--modified-start` = `2026-03-01T00:00:00+08:00` **report_report_sent_013** - Prompt: 查询3月份用「月报」模板提交的日志,时间范围3月1号到3月31号 - Expected: `dws report sent --end 2026-03-31T23:59:59+08:00 --start 2026-03-01T00:00:00+08:00 --template-name 月报 --format json` - Flags: `--end` = `2026-03-31T23:59:59+08:00`, `--start` = `2026-03-01T00:00:00+08:00`, `--template-name` = `月报` **report_report_sent_014** - Prompt: 查询3月1到3月31日之间提交的日报,从游标 0 开始,每页返回 50 条 - Expected: `dws report sent --cursor 0 --end 2026-03-31T23:59:59+08:00 --size 50 --start 2026-03-01T00:00:00+08:00 --template-name 日报 --format json` - Flags: `--cursor` = `0`, `--end` = `2026-03-31T23:59:59+08:00`, `--size` = `50`, `--start` = `2026-03-01T00:00:00+08:00`, `--template-name` = `日报` **report_report_sent_015** - Prompt: 查看本月1号到15号用「周报」模板写的,且在3月10号到3月15号之间修改过的日志 - Expected: `dws report sent --end 2026-03-15T23:59:59+08:00 --modified-end 2026-03-15T23:59:59+08:00 --modified-start 2026-03-10T00:00:00+08:00 --start 2026-03-01T00:00:00+08:00 --template-name 周报 --format json` - Flags: `--end` = `2026-03-15T23:59:59+08:00`, `--modified-end` = `2026-03-15T23:59:59+08:00`, `--modified-start` = `2026-03-10T00:00:00+08:00`, `--start` = `2026-03-01T00:00:00+08:00`, `--template-name` = `周报` **report_report_sent_016** - Prompt: 帮我列出我写过的日志 - Expected: `dws report sent --format json` #### `dws report stats` **report_report_stats_001** - Prompt: 获取日报 rpt123 的统计数据 - Expected: `dws report stats --report-id rpt123 --format json` - Flags: `--report-id` = `rpt123` **report_report_stats_002** - Prompt: 统计一下日志 rptXYZ 的提交、阅读人数 - Expected: `dws report stats --report-id rptXYZ --format json` - Flags: `--report-id` = `rptXYZ` #### `dws report template detail` **report_report_template_detail_001** - Prompt: 获取名称为 日报模板 的日志模版详情 - Expected: `dws report template detail --name 日报模板 --format json` - Flags: `--name` = `日报模板` **report_report_template_detail_002** - Prompt: 查看一下叫 周报模板 的这个日志模版是什么格式 - Expected: `dws report template detail --name 周报模板 --format json` - Flags: `--name` = `周报模板` #### `dws report template list` **report_report_template_list_001** - Prompt: 获取所有日志模版列表 - Expected: `dws report template list --format json` **report_report_template_list_002** - Prompt: 公司现在有哪些日报、周报模板 - Expected: `dws report template list --format json` --- ### devdoc(7 条) #### `dws devdoc article search` **devdoc_devdoc_article_search_001** - Prompt: 搜索开放平台文档,keyword 为 OAuth2 接入 - Expected: `dws devdoc article search --keyword "OAuth2 接入" --format json` - Flags: `--keyword` = `OAuth2 接入` **devdoc_devdoc_article_search_002** - Prompt: 搜索开放平台文档中关于 Webhook 的内容,第 2 页每页 5 条 - Expected: `dws devdoc article search --keyword Webhook --page 2 --size 5 --format json` - Flags: `--keyword` = `Webhook`, `--page` = `2`, `--size` = `5` **devdoc_devdoc_article_search_003** - Prompt: 搜索开放平台文档中关于消息卡片的内容,从第 2 页开始 - Expected: `dws devdoc article search --keyword 消息卡片 --page 2 --format json` - Flags: `--keyword` = `消息卡片`, `--page` = `2` **devdoc_devdoc_article_search_004** - Prompt: 搜索关键词为机器人的开放平台文档,每页返回 10 条 - Expected: `dws devdoc article search --keyword 机器人 --size 10 --format json` - Flags: `--keyword` = `机器人`, `--size` = `10` **devdoc_devdoc_article_search_005** - Prompt: 帮我在开发者文档里找一下关于免登鉴权的资料 - Expected: `dws devdoc article search --keyword 免登鉴权 --format json` - Flags: `--keyword` = `免登鉴权` #### `dws devdoc error diagnose` **devdoc_devdoc_error_diagnose_001** - Prompt: 排查开放平台 requestId 15r6h45w0muec 的调用失败 - Expected: `dws devdoc error diagnose --request-id 15r6h45w0muec --format json` - Flags: `--request-id` = `15r6h45w0muec` **devdoc_devdoc_error_diagnose_002** - Prompt: 排查开放平台错误码 33012,错误描述 missing scope - Expected: `dws devdoc error diagnose --error-code 33012 --error-message "missing scope" --format json` - Flags: `--error-code` = `33012`, `--error-message` = `missing scope` **devdoc_devdoc_article_search_006** - Prompt: 查询开放平台 API 错误码 403 的处理文档 - Expected: `dws devdoc article search --keyword "API 错误码 403" --format json` - Flags: `--keyword` = `API 错误码 403` **devdoc_devdoc_article_search_007** - Prompt: 开放平台机器人发消息接口怎么调用 - Expected: `dws devdoc article search --keyword "机器人发消息接口" --format json` - Flags: `--keyword` = `机器人发消息接口` --- ### routing(3 条) #### `dws --help` **routing_routing_clarify_001** `[ASK_USER]` - Prompt: 帮我创建一个应用 - Expected: `dws --help` **routing_routing_clarify_002** `[ASK_USER]` - Prompt: 做一个 AI 应用 - Expected: `dws --help` **routing_routing_clarify_003** `[ASK_USER]` - Prompt: 创建 MCP 服务并配置 HSF tool - Expected: `dws --help` --- ### todo(30 条) #### `dws todo task create` **todo_todo_task_create_001** - Prompt: 创建待办,executors 为 , title 为 修复线上Bug - Expected: `dws todo task create --executors --title 修复线上Bug --format json` - Flags: `--executors` = ``, `--title` = `修复线上Bug` **todo_todo_task_create_002** - Prompt: 创建一个高优先级待办,标题修复登录Bug,执行人userId1,截止时间2026-03-20T18:00:00+08:00 - Expected: `dws todo task create --title "修复登录Bug" --executors userId1 --priority 30 --due "2026-03-20T18:00:00+08:00" --format json` - Flags: `--due` = `2026-03-20T18:00:00+08:00`, `--executors` = `userId1`, `--priority` = `30`, `--title` = `修复登录Bug` **todo_todo_task_create_003** - Prompt: 给 alice 安排一个整理文档的任务 - Expected: `dws todo task create --executors alice --title 整理文档 --format json` - Flags: `--executors` = `alice`, `--title` = `整理文档` **todo_todo_task_create_004** - Prompt: 创建一个待办,执行人 userA,标题 准备季度汇报,截止日期 2026-04-01 - Expected: `dws todo task create --due 2026-04-01 --executors userA --title 准备季度汇报 --format json` - Flags: `--due` = `2026-04-01`, `--executors` = `userA`, `--title` = `准备季度汇报` **todo_todo_task_create_005** - Prompt: 新建一个高优先级的待办,执行人 userB,标题 发布版本v2.0 - Expected: `dws todo task create --executors userB --priority 30 --title 发布版本v2.0 --format json` - Flags: `--executors` = `userB`, `--priority` = `30`, `--title` = `发布版本v2.0` **todo_todo_task_create_006** - Prompt: 帮我给 userId2 创建一个提交周报的提醒事项 - Expected: `dws todo task create --executors userId2 --title 提交周报 --format json` - Flags: `--executors` = `userId2`, `--title` = `提交周报` #### `dws todo task delete` **todo_todo_task_delete_001** - Prompt: 删除待办任务 task123 - Expected: `dws todo task delete --task-id task123 --format json` - Flags: `--task-id` = `task123` **todo_todo_task_delete_002** - Prompt: 把 taskXYZ 这个待办删掉,已经不需要了 - Expected: `dws todo task delete --task-id taskXYZ --format json` - Flags: `--task-id` = `taskXYZ` #### `dws todo task done` **todo_todo_task_done_001** - Prompt: 修改执行者的待办完成状态,status 为 true - Expected: `dws todo task done --status true --task-id --format json` - Flags: `--status` = `true`, `--task-id` = `` **todo_todo_task_done_002** - Prompt: 把待办taskId123标记为已完成 - Expected: `dws todo task done --task-id taskId123 --status true --format json` - Flags: `--status` = `true`, `--task-id` = `taskId123` **todo_todo_task_done_003** - Prompt: 把待办 taskId456 的完成状态设置为未完成 - Expected: `dws todo task done --status false --task-id taskId456 --format json` - Flags: `--status` = `false`, `--task-id` = `taskId456` **todo_todo_task_done_004** - Prompt: 重新打开已关闭的待办任务 taskId789 - Expected: `dws todo task done --status false --task-id taskId789 --format json` - Flags: `--status` = `false`, `--task-id` = `taskId789` #### `dws todo task get` **todo_todo_task_get_001** - Prompt: 获取待办任务 task123 的详情 - Expected: `dws todo task get --task-id task123 --format json` - Flags: `--task-id` = `task123` **todo_todo_task_get_002** - Prompt: 查一下待办 taskXYZ 的状态和内容 - Expected: `dws todo task get --task-id taskXYZ --format json` - Flags: `--task-id` = `taskXYZ` #### `dws todo task list` **todo_todo_task_list_001** - Prompt: 查询待办列表 - Expected: `dws todo task list --format json` **todo_todo_task_list_002** - Prompt: 看看我还有哪些未完成的待办 - Expected: `dws todo task list --status false --format json` - Flags: `--status` = `false` **todo_todo_task_list_003** - Prompt: 查询第 2 页的待办,每页 10 条,且只要已完成的 - Expected: `dws todo task list --page 2 --size 10 --status true --format json` - Flags: `--page` = `2`, `--size` = `10`, `--status` = `true` **todo_todo_task_list_004** - Prompt: 查询第 3 页的待办列表 - Expected: `dws todo task list --page 3 --format json` - Flags: `--page` = `3` **todo_todo_task_list_005** - Prompt: 每页显示 20 条待办 - Expected: `dws todo task list --size 20 --format json` - Flags: `--size` = `20` **todo_todo_task_list_006** - Prompt: 分页查询待办,第 1 页,每页 5 条 - Expected: `dws todo task list --page 1 --size 5 --format json` - Flags: `--page` = `1`, `--size` = `5` **todo_todo_task_list_007** - Prompt: 查询已完成的待办,每页显示 15 条 - Expected: `dws todo task list --size 15 --status true --format json` - Flags: `--size` = `15`, `--status` = `true` **todo_todo_task_list_008** - Prompt: 把我所有的待办任务都列出来看看 - Expected: `dws todo task list --format json` #### `dws todo task update` **todo_todo_task_update_001** - Prompt: 把待办 task123 的标题改成 修订报告V2 - Expected: `dws todo task update --task-id task123 --title 修订报告V2 --format json` - Flags: `--task-id` = `task123`, `--title` = `修订报告V2` **todo_todo_task_update_002** - Prompt: 把待办 task456 的截止时间改到 2025-04-30 - Expected: `dws todo task update --task-id task456 --due 2025-04-30 --format json` - Flags: `--due` = `2025-04-30`, `--task-id` = `task456` **todo_todo_task_update_003** - Prompt: 将待办 task789 的 done 属性更新为 true - Expected: `dws todo task update --task-id task789 --done true --format json` - Flags: `--done` = `true`, `--task-id` = `task789` **todo_todo_task_update_004** - Prompt: 将任务 task012 的标题改为 紧急上线,优先级设为较高,截止日期 2025-03-20 - Expected: `dws todo task update --due 2025-03-20 --priority 30 --task-id task012 --title 紧急上线 --format json` - Flags: `--due` = `2025-03-20`, `--priority` = `30`, `--task-id` = `task012`, `--title` = `紧急上线` **todo_todo_task_update_005** - Prompt: 把待办 taskAAA 的优先级调整为低优先级 - Expected: `dws todo task update --priority 10 --task-id taskAAA --format json` - Flags: `--priority` = `10`, `--task-id` = `taskAAA` **todo_todo_task_update_006** - Prompt: 把待办 taskBBB 的截止时间改到 2026-05-01,优先级设为普通 - Expected: `dws todo task update --due 2026-05-01 --priority 20 --task-id taskBBB --format json` - Flags: `--due` = `2026-05-01`, `--priority` = `20`, `--task-id` = `taskBBB` **todo_todo_task_update_007** - Prompt: 把任务 taskCCC 重新打开(标记为未完成),并将标题改为 重新审核方案 - Expected: `dws todo task update --done false --task-id taskCCC --title 重新审核方案 --format json` - Flags: `--done` = `false`, `--task-id` = `taskCCC`, `--title` = `重新审核方案` **todo_todo_task_update_008** - Prompt: 任务 taskDDD 完成了,帮我更新一下状态 - Expected: `dws todo task update --done true --task-id taskDDD --format json` - Flags: `--done` = `true`, `--task-id` = `taskDDD` --- ### workbench(6 条) #### `dws workbench app get` **workbench_workbench_app_get_001** - Prompt: 批量获取应用 app001 和 app002 的详情 - Expected: `dws workbench app get --ids app001,app002 --format json` - Flags: `--ids` = `app001,app002` **workbench_workbench_app_get_002** - Prompt: 查一下应用 appXYZ 的详细信息 - Expected: `dws workbench app get --ids appXYZ --format json` - Flags: `--ids` = `appXYZ` **workbench_workbench_app_get_003** - Prompt: 查工作台应用 appXYZ 的详情 - Expected: `dws workbench app get --ids appXYZ --format json` - Flags: `--ids` = `appXYZ` #### `dws workbench app list` **workbench_workbench_app_list_001** - Prompt: 查看所有工作台应用列表 - Expected: `dws workbench app list --format json` **workbench_workbench_app_list_002** - Prompt: 钉钉工作台上有哪些应用 - Expected: `dws workbench app list --format json` **workbench_workbench_app_list_003** - Prompt: 列出所有钉钉工作台应用 - Expected: `dws workbench app list --format json` ---