@coze/cli 0.1.8-alpha.618a4c → 0.2.0-alpha.9f6611

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +344 -25
  2. package/lib/cli.js +3 -3
  3. package/lib/fetch-client-DC0c3ox3.js +1 -0
  4. package/lib/index-CkTEdvpA.js +1 -0
  5. package/lib/send-message.worker.js +1 -1
  6. package/lib/session-task-refresh.worker.js +1 -1
  7. package/lib/{task-worker-CxZeBKqU.js → task-worker-C2ZfSQY6.js} +1 -1
  8. package/package.json +4 -1
  9. package/skills/manifest.json +29 -0
  10. package/skills/using-coze-cli/SKILL.md +450 -0
  11. package/skills/using-coze-cli/coze-claw/MODULE.md +189 -0
  12. package/skills/using-coze-cli/coze-claw/references/coze-claw-agent-routing.md +45 -0
  13. package/skills/using-coze-cli/coze-claw/references/coze-claw-artifacts.md +52 -0
  14. package/skills/using-coze-cli/coze-claw/references/coze-claw-async-followup.md +266 -0
  15. package/skills/using-coze-cli/coze-claw/references/coze-claw-message.md +176 -0
  16. package/skills/using-coze-cli/coze-claw/references/coze-claw-podcast.md +73 -0
  17. package/skills/using-coze-cli/coze-claw/references/coze-claw-ppt.md +78 -0
  18. package/skills/using-coze-cli/coze-claw/references/coze-claw-progress.md +112 -0
  19. package/skills/using-coze-cli/coze-claw/references/coze-claw-session.md +144 -0
  20. package/skills/using-coze-cli/coze-code/MODULE.md +252 -0
  21. package/skills/using-coze-cli/coze-code/references/coze-code-db.md +537 -0
  22. package/skills/using-coze-cli/coze-code/references/coze-code-deploy.md +258 -0
  23. package/skills/using-coze-cli/coze-code/references/coze-code-domain.md +73 -0
  24. package/skills/using-coze-cli/coze-code/references/coze-code-env.md +82 -0
  25. package/skills/using-coze-cli/coze-code/references/coze-code-git.md +181 -0
  26. package/skills/using-coze-cli/coze-code/references/coze-code-message.md +240 -0
  27. package/skills/using-coze-cli/coze-code/references/coze-code-model.md +51 -0
  28. package/skills/using-coze-cli/coze-code/references/coze-code-preview.md +33 -0
  29. package/skills/using-coze-cli/coze-code/references/coze-code-project.md +176 -0
  30. package/skills/using-coze-cli/coze-code/references/coze-code-repo.md +285 -0
  31. package/skills/using-coze-cli/coze-code/references/coze-code-skill.md +117 -0
  32. package/skills/using-coze-cli/coze-code/references/coze-code-tools.md +47 -0
  33. package/skills/using-coze-cli/coze-file/MODULE.md +46 -0
  34. package/skills/using-coze-cli/coze-file/references/coze-file-upload.md +59 -0
  35. package/skills/using-coze-cli/coze-generate/MODULE.md +84 -0
  36. package/skills/using-coze-cli/coze-generate/references/coze-generate-audio.md +105 -0
  37. package/skills/using-coze-cli/coze-generate/references/coze-generate-image.md +80 -0
  38. package/skills/using-coze-cli/coze-generate/references/coze-generate-video.md +125 -0
  39. package/skills/using-coze-cli/coze-project/MODULE.md +125 -0
  40. package/skills/using-coze-cli/coze-project/references/coze-project-files.md +284 -0
  41. package/skills/using-coze-cli/coze-project/references/coze-project-query.md +177 -0
  42. package/lib/fetch-client-CWYDGe9Z.js +0 -1
  43. package/lib/index-BC9PFu7i.js +0 -1
@@ -0,0 +1,45 @@
1
+ # Agent routing contract
2
+
3
+ ## 路由目标
4
+
5
+ - `/coze-cli`:显式命中 Coze CLI skill
6
+ - `/coze`:`/coze-cli` 的短别名,行为完全一致
7
+
8
+ ## 适用范围
9
+
10
+ - 此规则适用于所有 Claw 子模块,不只限于 `session message`
11
+ - 只要最终会把用户正文转发到 Claw,会消费同一份规范化结果的链路都应遵守
12
+ - 当前至少覆盖:
13
+ - 普通消息链路:[`coze-claw-message.md`](coze-claw-message.md)
14
+ - PPT 场景:[`coze-claw-ppt.md`](coze-claw-ppt.md)
15
+ - 播客场景:[`coze-claw-podcast.md`](coze-claw-podcast.md)
16
+
17
+ ## 规范化规则
18
+
19
+ 1. 只移除首个路由 token
20
+ 2. 保留剩余正文中的所有业务 token
21
+ 3. 不改写正文中的中间 `/coze-cli`
22
+ 4. 不吞掉 `@PPT`、`@播客`、文件引用、引号和换行
23
+
24
+ ## 正例
25
+
26
+ - 输入:`/coze-cli 制作一个介绍潮汕美食的 PPT`
27
+ 输出正文:`制作一个介绍潮汕美食的 PPT`
28
+ - 输入:`/coze-cli @PPT 制作介绍海南美食的 PPT`
29
+ 输出正文:`@PPT 制作介绍海南美食的 PPT`
30
+ - 输入:`/coze 制作一个冒泡排序 markdown`
31
+ 输出正文:`制作一个冒泡排序 markdown`
32
+
33
+ ## 反例
34
+
35
+ - 错误:把 `/coze-cli` 原样发给 `coze session message`
36
+ - 错误:移除 `@PPT`
37
+ - 错误:移除 `@播客`
38
+ - 错误:把正文里的 `/coze-cli` 全局替换掉
39
+
40
+ ## 最小验收样例
41
+
42
+ 1. 不带前缀的自然语言,允许模型自行命中 skill,但不保证确定性
43
+ 2. 带 `/coze-cli` 的请求,必须命中 skill
44
+ 3. 命中后真正发给 Claw 的 message 不包含 `/coze-cli`
45
+ 4. 同一规则适用于 `@PPT`、`@播客` 等子模块入口
@@ -0,0 +1,52 @@
1
+ # claw artifact commands
2
+
3
+ > **前置条件:** 先阅读 [`../../SKILL.md`](../../SKILL.md) 和 [`coze-claw-message.md`](coze-claw-message.md)。
4
+
5
+ 本文档覆盖普通 session 产物处理。PPT 产物见 [`coze-claw-ppt.md`](coze-claw-ppt.md)。
6
+
7
+ ## 核心区别
8
+
9
+ | 字段 | 含义 | 处理方式 |
10
+ |------|------|----------|
11
+ | `file_url` | 可下载或可直接交付的 URL | 可传给 `file download` |
12
+ | `file_uri` | 平台内部文件引用 | 不能直接下载,需要先解析 |
13
+
14
+ Agent 不要猜测 `file_uri` 的公网 URL。
15
+
16
+ ## file download
17
+
18
+ ```bash
19
+ coze session file download "<file_url>" --format json
20
+ coze session file download "<file_url>" --output-path ./downloads/result.md --format json
21
+ ```
22
+
23
+ 关键输出:
24
+
25
+ | 字段 | 含义 |
26
+ |------|------|
27
+ | `status` | `saved` |
28
+ | `path` | 本地保存路径 |
29
+ | `filename` | 文件名 |
30
+ | `size` | 文件大小 |
31
+ | `url` | 原始下载 URL |
32
+
33
+ 如果用户需要在线链接,已有 `file_url` 时可直接返回它。不要只返回本地路径,除非用户明确只需要本机文件。
34
+
35
+ ## 普通文件链路
36
+
37
+ ```text
38
+ reply_completed.files[].file_url
39
+ -> coze session file download <file_url>
40
+ ```
41
+
42
+ 如果回复中只有 `file_uri`:
43
+
44
+ - 普通回复产物需要先通过 session 文件 URL 解析逻辑或后续命令拿到 `file_url`。
45
+ - PPT 类 `file_uri` 交给 [`coze-claw-ppt.md`](coze-claw-ppt.md)。
46
+ - 不要直接把 `file_uri` 拼成 URL。
47
+
48
+ ## 上传和下载边界
49
+
50
+ - 上传本地输入文件给 session message:使用 `coze session message --file` 或正文 `@<path>`。
51
+ - 下载 session 回复产物:使用 `coze session file download <file_url>`。
52
+ - 对用户交付产物:优先返回在线 `file_url`;如果需要本地落盘,再给出下载后的 `path`。
@@ -0,0 +1,266 @@
1
+ # claw async follow-up
2
+
3
+ > **前置条件:** 先阅读 [`coze-claw-message.md`](coze-claw-message.md) 和 [`coze-claw-progress.md`](coze-claw-progress.md)。
4
+
5
+ 当 `coze session message --wait` 或 `coze session message` 命中长任务后,Agent 不应依赖“当前这次对话进程还在”去等待终态。优先做法是登记一个独立的 follow-up 定时任务,周期刷新 `session task` 状态,任务完成后再在原消息上下文回复用户。
6
+
7
+ ## 适用场景
8
+
9
+ - OpenClaw + 飞书:用户在飞书里发消息,长任务完成后仍然回飞书原位置
10
+ - 宿主支持 cron / delayed job / background workflow / schedule
11
+ - 当前回合只适合先 ACK,再后台继续跟进
12
+
13
+ ## 核心原则
14
+
15
+ 1. **ACK 和 follow-up 分离**
16
+ - 当前回合负责快速确认“已接单/已转后台处理”
17
+ - 后续通知由独立 follow-up task 负责
18
+
19
+ 2. **回复位置必须持久化**
20
+ - `session_id` 只能恢复 Coze 任务
21
+ - `reply_target` 才决定最后把结果回到哪里
22
+
23
+ 3. **在哪里收到,就在哪里回复**
24
+ - 飞书 DM 回 DM
25
+ - 飞书群消息回原群
26
+ - 飞书 topic/thread 回原 thread
27
+ - 飞书消息卡片优先更新原卡片
28
+ - 飞书 Drive 评论必须 reply comment
29
+
30
+ 4. **必须防重**
31
+ - follow-up task 重试时不能重复通知用户
32
+ - 如果宿主已有任务幂等、去重或回执能力,优先复用,不要重复维护一套平行状态
33
+
34
+ 5. **创建结果必须说实话**
35
+ - 真正创建了 follow-up task,才可以对用户说“已转后台持续跟进/完成后自动回你”
36
+ - 如果当前没有创建成功,必须在同一回合明确告知“当前还没有创建后台 follow-up 任务”
37
+ - 禁止把“我准备创建”“理论上可以创建”表述成“我已经在后台盯着”
38
+
39
+ ## 执行分支
40
+
41
+ 命中长任务后,Agent 必须先判断当前宿主是否真的支持并允许创建 follow-up 定时任务:
42
+
43
+ ### 分支 A:当前就能创建
44
+
45
+ - 直接创建,不要把“要不要创建定时任务”再抛回给用户做默认选择题
46
+ - 当前回合应明确告诉用户:
47
+ - 已创建后台 follow-up 定时任务
48
+ - 结果会回到原消息上下文
49
+ - 当前这条回复只是 ACK,不是最终结果
50
+
51
+ ### 分支 B:当前不能创建
52
+
53
+ - 必须在同一回合明确告诉用户:
54
+ - 当前还没有创建后台 follow-up 定时任务
55
+ - 原因是当前宿主不支持、权限不允许,或本轮无法实际调用该能力
56
+ - 必须立即给出下一步,而不是停在“我继续盯着”
57
+ - 可给出的下一步至少包括:
58
+ - 当前回合继续前台代查,查到终态再回复
59
+ - 如果宿主支持后续补建,提醒用户当前可以创建一个后台定时轮询任务
60
+ - 没有真正创建 follow-up task 时,禁止说“完成后自动回你”“我会持续盯到结束”
61
+
62
+ ## 最小数据契约
63
+
64
+ 建议在宿主侧登记一条尽量轻量的 follow-up 记录。`coze session task show/refresh --format json` 已经能按 `task_id` 反查 `session_id`、`message_id`、`progress_id`、`status`、`reply_content`、`artifacts`,所以不要把这些 Coze task 元数据再重复存一份。
65
+
66
+ ```ts
67
+ type FollowUpJob = {
68
+ taskId: string;
69
+ replyTarget: ReplyTarget;
70
+ };
71
+
72
+ type FollowUpJobWithHostState = FollowUpJob & {
73
+ notifyPolicy?: NotifyPolicy;
74
+ dedupeKey?: string;
75
+ notifiedAt?: number;
76
+ notifyStatus?: "pending" | "sent" | "failed";
77
+ };
78
+
79
+ type ReplyTarget = {
80
+ source:
81
+ | "feishu_dm"
82
+ | "feishu_group"
83
+ | "feishu_thread"
84
+ | "feishu_card"
85
+ | "feishu_drive_comment";
86
+ accountId?: string;
87
+ chatId?: string;
88
+ threadId?: string;
89
+ topicId?: string;
90
+ messageId?: string;
91
+ commentId?: string;
92
+ replyMode:
93
+ | "reply"
94
+ | "thread_reply"
95
+ | "update_card"
96
+ | "reply_comment";
97
+ };
98
+
99
+ type NotifyPolicy = {
100
+ pollIntervalSec: number;
101
+ maxWaitSec: number;
102
+ maxAttempts: number;
103
+ backoff: "fixed" | "linear" | "exponential";
104
+ };
105
+ ```
106
+
107
+ 必填约束:
108
+
109
+ - `taskId` 必须保留
110
+ - `replyTarget` 必须在当前回合就确定
111
+
112
+ 可选宿主字段:
113
+
114
+ - 如果宿主没有内建幂等或任务状态,可使用 `FollowUpJobWithHostState` 额外保存 `dedupeKey`、`notifiedAt`、`notifyStatus`
115
+ - 如果宿主调度器需要显式参数,也可在 `FollowUpJobWithHostState` 中补 `notifyPolicy`
116
+ - 如果宿主本身已经有 cron/workflow 元数据、重试策略、任务状态机,就不要在 follow-up 记录里再镜像保存一套
117
+
118
+ 恢复说明:
119
+
120
+ - `taskId` 足够恢复 Coze 长任务
121
+ - follow-up 执行时,如需 `session_id`、`message_id`、`progress_id`,先执行:
122
+
123
+ ```bash
124
+ coze session task refresh <task_id> --format json
125
+ coze session task show <task_id> --format json
126
+ ```
127
+
128
+ - 只有 `replyTarget` 这类“Coze CLI 无法帮你恢复的宿主上下文”才值得持久化
129
+
130
+ ## 标准流程
131
+
132
+ ### 1. 当前回合 ACK
133
+
134
+ 当前回合只做三件事:
135
+
136
+ 1. 把前置回复回给用户
137
+ 2. 说明 follow-up 是否已经创建成功
138
+ 3. 创建成功则登记 follow-up task;未创建成功则明确给出下一步选项
139
+
140
+ 只有真正创建成功,才可以明确说“已登记后台跟进任务”。
141
+
142
+ ### 2. 创建 follow-up task
143
+
144
+ follow-up task 至少要能执行:
145
+
146
+ ```bash
147
+ coze session task refresh <task_id> --format json
148
+ coze session task show <task_id> --format json
149
+ # message_id 和 session_id 从上一步 task refresh/show 输出中获取
150
+ coze session replies <message_id> -s <session_id> --format json
151
+ ```
152
+
153
+ 推荐顺序:
154
+
155
+ 1. 先 `task refresh`
156
+ 2. 从输出里读取 `status`,并按需取 `session_id`、`message_id`
157
+ 3. 如果仍是 `running`,按宿主自己的 schedule/workflow 策略继续下一次调度
158
+ 4. 如果是 `finished/failed/cancelled`,进入终态回复流程
159
+
160
+ ### 3. 终态回复流程
161
+
162
+ 优先级:
163
+
164
+ 1. 如果 `task show/refresh` 已带 `reply_content` 或 `artifacts`,直接用它
165
+ 2. 否则调用 `replies <message_id>`
166
+ 3. 整理为最终用户可见结果
167
+ 4. 通过 `replyTarget` 回复到原上下文
168
+
169
+ ### 4. 回复成功后收口
170
+
171
+ - 如果宿主使用 `FollowUpJobWithHostState`,写入 `notifiedAt`
172
+ - 如果宿主使用 `FollowUpJobWithHostState`,写入 `notifyStatus=sent`
173
+ - 后续轮询不再重复发送
174
+
175
+ 如果宿主已有任务完成回执或幂等键,也可以不额外维护这两个字段,只要能保证“同一终态结果只通知一次”即可。
176
+
177
+ ## 飞书优先级规则
178
+
179
+ OpenClaw + 飞书场景,建议按这个顺序回复:
180
+
181
+ 1. `feishu_drive_comment`
182
+ - 必须 `reply_comment`
183
+ 2. `feishu_card`
184
+ - 优先 `update_card`
185
+ - 更新失败时退回 `thread_reply` 或普通 `reply`
186
+ 3. `feishu_thread`
187
+ - 优先回原 thread/topic
188
+ 4. `feishu_group`
189
+ - 回原群消息上下文
190
+ 5. `feishu_dm`
191
+ - 回原 DM
192
+
193
+ 禁止:
194
+
195
+ - 在飞书收到,最后却发到另一个渠道
196
+ - 原线程还能回复,却新开一条无关联消息
197
+ - 当前回合和 follow-up task 各发一次终态结果
198
+
199
+ ## 轮询与重试建议
200
+
201
+ 默认轮询建议:
202
+
203
+ - `pollIntervalSec`: 30
204
+ - `maxWaitSec`: 1800
205
+ - `maxAttempts`: 60
206
+ - `backoff`: `fixed`
207
+
208
+ 这是一组调度建议,不要求一定落成 `FollowUpJob` 字段。能复用宿主自己的 cron / delayed job / workflow 配置时,优先复用。
209
+
210
+ 更长任务可用:
211
+
212
+ - 前 600 秒(10 分钟)每 30 秒
213
+ - 之后每 120 秒(2 分钟)
214
+
215
+ 如果宿主调度成本高,可改成:
216
+
217
+ - 前 3 次 15 秒
218
+ - 之后 60 秒固定间隔
219
+
220
+ ## 幂等与 fallback
221
+
222
+ ### 幂等
223
+
224
+ - 每次发送前先检查 `notifiedAt`
225
+ - 如果宿主已有幂等键,优先用宿主能力;否则可用 `dedupeKey=<source>:<taskId>:terminal`
226
+ - 如果发送 API 超时但结果未知,也不要立即重发全文;应先查发送结果或写入待人工确认状态
227
+
228
+ ### fallback
229
+
230
+ 如果原上下文失效,按这个顺序退化:
231
+
232
+ 1. 原 thread/topic 不可用,退回同一 chat 的普通 reply
233
+ 2. 原 card 无法更新,退回同一 thread reply
234
+ 3. 原 comment 无法 reply,退回同一文档或同一会话中的普通通知
235
+ 4. 仍失败时,记录 `notifyStatus=failed` 并保留人工补发所需上下文
236
+
237
+ 禁止直接静默丢失通知。
238
+
239
+ ## 推荐示例
240
+
241
+ ### 示例 1:普通长任务
242
+
243
+ 1. 当前回合收到 `task_id`
244
+ 2. 先回复“任务已转后台处理,完成后我会在这里回复你”
245
+ 3. 保存 `replyTarget=feishu_dm`
246
+ 4. 创建 follow-up task
247
+ 5. follow-up `task refresh`
248
+ 6. 终态后读取 `reply_content`
249
+ 7. 回原 DM
250
+
251
+ ### 示例 2:PPT 长任务
252
+
253
+ 1. 当前回合先回前置回复
254
+ 2. 命中 `task_id`
255
+ 3. 保存 `replyTarget=feishu_group` 或 `feishu_thread`
256
+ 4. follow-up 定时轮询
257
+ 5. 终态后读取 `artifacts`
258
+ 6. 把 PPT 链接或导出产物回原消息位置
259
+
260
+ ### 示例 3:飞书评论触发
261
+
262
+ 1. 用户在文档评论区触发任务
263
+ 2. 保存 `replyTarget=feishu_drive_comment`
264
+ 3. follow-up 轮询 `task`
265
+ 4. 终态后用评论回复接口回结果
266
+ 5. 不再额外发一条普通 IM 消息
@@ -0,0 +1,176 @@
1
+ # claw message commands
2
+
3
+ > **前置条件:** 先阅读 [`../../SKILL.md`](../../SKILL.md) 和 [`coze-claw-session.md`](coze-claw-session.md)。
4
+
5
+ 消息相关命令覆盖发送、监听和补偿查询。Agent 应优先记录 `session_id` 和 `message_id`。当省略 `-s/--session-id` 时,这些命令会默认复用当前本地默认 session。
6
+
7
+ ## 命令导航
8
+
9
+ | 命令 | 说明 |
10
+ |------|------|
11
+ | `coze session message [message]` | 向 session 发送消息 |
12
+ | `coze session message --wait` | 等待当前 turn 回复并输出事件流 |
13
+ | `coze session task <subcommand>` | 查询或恢复本地持久化的 session 长任务 |
14
+ | `coze session watch` | 监听指定 session 的 websocket 回复 |
15
+ | `coze session replies <message_id>` | 回查某条请求消息的全部回复 |
16
+
17
+ ## message
18
+
19
+ 提交消息并立即返回 `message_id`,适合 Agent 长任务编排。
20
+
21
+ ```bash
22
+ coze session message "执行这个长任务" -s <session_id> --format json
23
+ coze session message "继续当前默认话题" --format json
24
+ ```
25
+
26
+ 关键输出:
27
+
28
+ ```json
29
+ {
30
+ "session_id": "...",
31
+ "message_id": "...",
32
+ "status": "accepted"
33
+ }
34
+ ```
35
+
36
+ 必须记录 `message_id`,后续断线或超时时用 `replies` 恢复。
37
+
38
+ ## Agent 路由前缀清洗
39
+
40
+ 通过 Agent 宿主的 `/coze-cli` 或 `/coze` 显式路由命中时,正文规范化规则统一见 [`coze-claw-agent-routing.md`](coze-claw-agent-routing.md)。
41
+
42
+ ## message --wait
43
+
44
+ 短任务可直接等待当前 turn。
45
+
46
+ ```bash
47
+ coze session message "请分析这份需求" \
48
+ -s <session_id> \
49
+ --wait \
50
+ --timeout 120000 \
51
+ --format json
52
+ ```
53
+
54
+ `--format json` 输出事件流,每行一个事件。不要整段 `JSON.parse()`。
55
+
56
+ | `type` | 含义 | 关键字段 |
57
+ |--------|------|----------|
58
+ | `reply_chunk` | 增量文本 | `delta`、`answer_message_id` |
59
+ | `reply_update` | 回复快照 | `content`、`answer_message_id` |
60
+ | `reply_completed` | 当前 turn 完成 | `content`、`files`、`event_source` |
61
+ | `background_progress_started` | 检测到后台任务 | `progress_id`、`progress_status` |
62
+
63
+ 收到 `background_progress_started` 后,优先读取末尾的 task 快照对象;如果拿到 `task_id`,转 [`coze-claw-progress.md`](coze-claw-progress.md) 里的 `session task *` 流程。
64
+
65
+ ### Agent 交付约束
66
+
67
+ - `reply_completed` 才是当前 turn 的最终 reply 事件;拿到后必须把 `content/files` 回给用户。
68
+ - 如果命中 `background_progress_started` 之前已经收到有语义的 `reply_update.content`,必须先把这段前置回复回给用户,不能吞掉。
69
+ - 推荐做法:记录同一 `message_id` 下最后一条有语义的 `reply_update.content`,一旦确认转入后台任务,先把它作为“当前已知回复”返回,再继续查 `task/progress`。
70
+ - 禁止把“已发送”“等待中”“已完成”“耗时 xx s”当作最终答复。
71
+ - 如果等待过程被打断,但已经拿到 `session_id` + `message_id`,必须用 `replies` 补查并回传结果。
72
+
73
+ ## Agent 编排约束:命中 `progress_id`
74
+
75
+ 当 `message --wait` 的事件流中出现 `background_progress_started`,Agent 应立刻切换心智模型:
76
+
77
+ - 不再把这次请求当作“继续同步等一会儿就会结束”的短任务
78
+ - 把 `progress_id` 视为当前版本的长任务句柄
79
+ - 必须同时保留:
80
+ - `session_id`
81
+ - `message_id`
82
+ - `progress_id`
83
+
84
+ 当前版本推荐恢复链路:
85
+
86
+ ```bash
87
+ coze session task show <task_id> --format json
88
+ coze session task refresh <task_id> --format json
89
+ coze session task watch <task_id> --timeout 300000 --format json
90
+ coze session replies <message_id> -s <session_id> --format json
91
+ ```
92
+
93
+ 如果当前宿主支持后台 schedule/job,优先改走 [`coze-claw-async-followup.md`](coze-claw-async-followup.md) 里的 follow-up 流程,而不是让当前 agent 进程前台等待到任务结束。
94
+
95
+ 规则:
96
+
97
+ - 有 `task_id` 后,优先查 task,不要重复发送同一条 message。
98
+ - `task_id` 是 CLI 本地恢复点,`progress_id` 仍要保留,必要时可退回 `progress poll/watch`。
99
+ - 如果命中 `progress_id` 之前已经出现前置回复,不要等终态才回给用户;应先回传前置回复,再继续后台跟进。
100
+ - 如果宿主支持后台 follow-up task,应在这里登记独立定时任务,保存 `reply_target`,后续由它负责终态通知。
101
+ - task/progress 结束后,再回查 `replies <message_id>` 获取最终回复或产物。
102
+ - 终态 `session task` 快照如果已包含 `reply_content` / `artifacts`,应把它们视为可直接交付给用户的缓存结果,而不是只报任务状态。
103
+
104
+ ## 输入文件
105
+
106
+ 两种方式都会作为 session 附件上传:
107
+
108
+ ```bash
109
+ coze session message "总结这些文件" -s <session_id> --file ./a.pdf --file ./b.png
110
+ coze session message "总结 @docs/notes.md" -s <session_id>
111
+ coze session message "总结这份默认会话里的材料" --file ./a.pdf
112
+ ```
113
+
114
+ - `--file` 可重复。
115
+ - `@<path>` 只引用文件,不引用目录。
116
+
117
+ ## watch
118
+
119
+ 监听 session 回复。Agent 使用时必须加 `--timeout`。
120
+
121
+ ```bash
122
+ coze session watch -s <session_id> --timeout 120000 --format json
123
+ coze session watch -s <session_id> --snapshot --timeout 120000 --format json
124
+ ```
125
+
126
+ - 默认输出流式增量。
127
+ - `--snapshot` 输出完整回复快照。
128
+ - 超时后如果仍未拿到结果,用 `replies <message_id>` 补偿查询。
129
+
130
+ ## replies
131
+
132
+ 按用户请求消息回查全部回复。
133
+
134
+ ```bash
135
+ coze session replies <message_id> -s <session_id> --format json
136
+ ```
137
+
138
+ 适用场景:
139
+
140
+ - `message --wait` 超时。
141
+ - `watch` 断线或超时。
142
+ - 已有 `message_id`,需要稳定结果而非实时流。
143
+
144
+ ## 推荐 Agent 流程
145
+
146
+ 短任务:
147
+
148
+ ```bash
149
+ coze session message "需求" -s <session_id> --wait --timeout 120000 --format json
150
+ coze session message "继续当前默认话题" --wait --timeout 120000 --format json
151
+ ```
152
+
153
+ 长任务:
154
+
155
+ ```bash
156
+ coze session message "需求" -s <session_id> --format json
157
+ coze session watch -s <session_id> --timeout 120000 --format json
158
+ coze session replies <message_id> -s <session_id> --format json
159
+ ```
160
+
161
+ 如果 `message --wait` 已经返回 `task_id` / `progress_id`,则改走:
162
+
163
+ ```bash
164
+ coze session task refresh <task_id> --format json
165
+ coze session task watch <task_id> --timeout 300000 --format json
166
+ coze session replies <message_id> -s <session_id> --format json
167
+ ```
168
+
169
+ 如果 Agent 宿主支持定时任务,推荐替换为:
170
+
171
+ 1. 当前回合先 ACK 原消息
172
+ 2. 记录 `task_id + reply_target`
173
+ 3. 创建独立 follow-up 定时任务
174
+ 4. follow-up 轮询 `task refresh/show`,按需从输出恢复 `session_id/message_id`
175
+ 5. 终态后读取 `reply_content/artifacts` 或 `replies`
176
+ 6. 在原渠道原消息上下文回复用户
@@ -0,0 +1,73 @@
1
+ # claw podcast commands
2
+
3
+ > **前置条件:** 先阅读 [`../../SKILL.md`](../../SKILL.md) 和 [`coze-claw-message.md`](coze-claw-message.md)。
4
+
5
+ podcast 能力包含 voice 查询和播客消息发送。`podcast message` 是播客场景的独立入口,底层复用 session message 发送链路。
6
+ 省略 `-s/--session-id` 时,`podcast message` 会默认复用当前本地默认 session。
7
+
8
+ ## Agent 路由说明
9
+
10
+ 通过 Agent 宿主的 `/coze-cli` 或 `/coze` 显式路由命中时,正文规范化规则统一见 [`coze-claw-agent-routing.md`](coze-claw-agent-routing.md)。
11
+
12
+ ## 命令导航
13
+
14
+ | 命令 | 说明 |
15
+ |------|------|
16
+ | `coze session podcast voice list` | 查询可用 podcast voice |
17
+ | `coze session podcast message` | 发送播客消息 |
18
+
19
+ ## voice list
20
+
21
+ ```bash
22
+ coze session podcast voice list --format json
23
+ coze session podcast voice list --mode solo --format json
24
+ coze session podcast voice list --keyword 鸡汤 --format json
25
+ ```
26
+
27
+ 先查 voice,再发送播客消息。`--mode` 和 `--keyword` 都是筛选条件。
28
+
29
+ ## podcast message
30
+
31
+ ```bash
32
+ coze session podcast message "@播客 制作一个介绍潮汕美食的播客" \
33
+ -s <session_id> \
34
+ --voice "鸡汤女生" \
35
+ --wait \
36
+ --timeout 120000 \
37
+ --format json
38
+ ```
39
+
40
+ 参数:
41
+
42
+ | 参数 | 必填 | 说明 |
43
+ |------|------|------|
44
+ | `<message>` | 条件必填 | 播客需求;也应支持 stdin |
45
+ | `-s` / `--session-id` | 否 | 目标 session;省略时默认复用当前本地默认 session |
46
+ | `--voice <voice>` | 否 | podcast voice,使用 `.option()`,不是 `.requiredOption()` |
47
+ | `--mode <mode>` | 否 | voice 歧义消解;传 `--mode` 时必须同时传 `--voice` |
48
+ | `--wait` | 否 | 等待当前 turn idle |
49
+ | `--timeout <ms>` | 否 | `--wait` 的超时 |
50
+ | `--file <path>` | 否 | 复用 message 附件逻辑,可重复 |
51
+
52
+ 不指定 `--voice` 时,命令仍可发送播客消息,只是不注入指定 voice。
53
+
54
+ ## 旧用法
55
+
56
+ 保留兼容:
57
+
58
+ ```bash
59
+ coze session message "@播客 制作一个介绍潮汕美食的播客" \
60
+ -s <session_id> \
61
+ --podcast-voice "鸡汤女生" \
62
+ --wait
63
+ ```
64
+
65
+ Agent 新流程推荐使用:
66
+
67
+ ```bash
68
+ coze session podcast message ...
69
+ ```
70
+
71
+ ## 输出解析
72
+
73
+ `podcast message --wait --format json` 复用 session message 事件流。按 [`coze-claw-message.md`](coze-claw-message.md) 的事件规则解析,不要整段 `JSON.parse()`。
@@ -0,0 +1,78 @@
1
+ # claw PPT commands
2
+
3
+ > **前置条件:** 先阅读 [`../../SKILL.md`](../../SKILL.md) 和 [`coze-claw-artifacts.md`](coze-claw-artifacts.md)。
4
+
5
+ PPT 命令围绕 session 产物中的 PPT `file_uri` 工作。不要把 PPT `file_uri` 直接传给 `file download`。
6
+
7
+ ## Agent 路由说明
8
+
9
+ 通过 Agent 宿主的 `/coze-cli` 或 `/coze` 显式路由命中时,正文规范化规则统一见 [`coze-claw-agent-routing.md`](coze-claw-agent-routing.md)。
10
+
11
+ ## 命令导航
12
+
13
+ | 命令 | 说明 |
14
+ |------|------|
15
+ | `coze session ppt info` | 获取 PPT 元信息、页数、file_url |
16
+ | `coze session ppt pages` | 提取页面标题和预览文本 |
17
+ | `coze session ppt export` | 导出 PPTX |
18
+ | `coze session ppt edit` | 通过 session message 发起页级编辑 |
19
+ | `coze session ppt share` | 生成分享链接 |
20
+
21
+ ## info
22
+
23
+ ```bash
24
+ coze session ppt info --file-uri "<file_uri>" --format json
25
+ ```
26
+
27
+ 用于确认 PPT 类型、页数和可访问 URL。
28
+
29
+ ## pages
30
+
31
+ ```bash
32
+ coze session ppt pages --file-uri "<file_uri>" --limit 5 --format json
33
+ ```
34
+
35
+ 用于快速理解 PPT 内容,再决定是否编辑或导出。
36
+
37
+ ## export
38
+
39
+ ```bash
40
+ coze session ppt export --file-uri "<file_uri>" --output-path ./deck.pptx --format json
41
+ coze session ppt export --file-uri "<file_uri>" --export-type editable --output-path ./deck.pptx --format json
42
+ ```
43
+
44
+ `--export-type` 支持:
45
+
46
+ | 类型 | 含义 |
47
+ |------|------|
48
+ | `ppt` | 默认 PPTX 导出 |
49
+ | `editable` | 可编辑版本导出 |
50
+
51
+ ## edit
52
+
53
+ ```bash
54
+ coze session ppt edit "标题更突出,减少正文密度" \
55
+ -s <session_id> \
56
+ --page 2 \
57
+ --wait \
58
+ --timeout 120000 \
59
+ --format json
60
+ ```
61
+
62
+ `ppt edit` 本质是构造页级编辑 query,并复用 session message 链路。可重复传 `--page`。
63
+ 省略 `-s/--session-id` 时,`ppt edit` 会默认复用当前本地默认 session。
64
+
65
+ ## share
66
+
67
+ ```bash
68
+ coze session ppt share --file-uri "<file_uri>" --format json
69
+ coze session ppt share --file-uri "<file_uri>" --no-short --format json
70
+ ```
71
+
72
+ 默认生成短链;`--no-short` 返回原始分享 URL。
73
+
74
+ ## Agent 注意事项
75
+
76
+ - PPT 产物优先记录 `file_uri`。
77
+ - 要下载 PPTX 用 `ppt export`,不要用 `file download <file_uri>`。
78
+ - 编辑后仍需按 message/watch/replies 的恢复策略处理结果。