运行时依赖
安装命令
点击复制技能文档
QQBot 发送 使用此技能以实现 QQ 文件发送的端到端功能。 核心规则 当用户希望通过 QQ 发送文件时,完成整个发送流程,而不是仅返回文件路径。 对于本地文件,始终先创建一个专用的临时副本,然后发送该临时副本,最后仅删除由临时脚本返回的临时副本。 绝不删除原始源文件。 内置的临时和清理流程 对于本地文件: 运行:python scripts/stage_media.py <源路径> 脚本将文件复制到:~/.openclaw/media/qqbot/ 脚本打印临时的绝对路径。 使用 临时绝对路径 发送临时路径。 在 QQBot 发送尝试完成后,通过运行以下命令清理临时文件: python scripts/stage_media.py --cleanup <临时绝对路径> 清理路径必须与临时命令返回的路径完全匹配。 不要在原始源路径上调用清理。 不要在手动猜测的路径上调用清理。 不要在 HTTP(S) URL 上调用清理。 决策流程 识别源。 如果源是本地绝对路径,先使用 python scripts/stage_media.py <源路径> 进行临时处理。 如果源已经在 OpenClaw QQ 媒体中继目录中,仍然先进行临时处理以创建一个新的可丢弃副本用于此次发送。 如果源是 HTTP(S) URL,则直接使用 ... 发送,不运行清理。 如果源是本地附件路径已经在上下文中提供,先进行临时处理然后发送。 对于每个本地文件发送: 使用捆绑的临时脚本。 捕获脚本打印的确切临时路径。 仅使用 ... 发送临时路径。 在发送后,仅在捕获的临时路径上运行清理。 对于 URL 媒体: 直接使用 ... 发送 URL。 不进行临时处理。 不进行清理。 默认实用流程 对于本地桌面/下载/工作区-外部文件,以及已经在 QQ 媒体中继目录下的本地文件: 将源文件临时到新的临时文件 dưới ~/.openclaw/media/qqbot/ 使用 ... 发送临时文件。 仅删除由临时脚本返回的临时文件。 源文件必须保持不变。 清理安全规则 仅允许对在当前发送流程中产生的临时文件进行清理。 唯一有效的清理目标是由以下命令返回的确切路径: python scripts/stage_media.py <源路径> 绝不清理以下内容: 原始源路径 用户提供的路径 HTTP(S) URL 从源文件名猜测的路径 仅因为它在 ~/.openclaw/media/qqbot/ 下的路径 未由当前临时命令返回的路径 如果临时处理失败,不发送也不清理。 如果发送失败,但临时处理成功,仍尝试清理临时路径。 如果清理失败,报告清理失败,但不重试清理任何其他路径。 大小和路径规则 仅限绝对本地路径 文件大小限制为 100 MB 复制文件,不修改原始文件 临时副本使用生成的 UUID 文件名 原始扩展名在语义上保持,但由临时脚本规范化为小写 不要声称无法发送本地文件,当路径可读且在大小限制范围内时 文件占用行为 如果临时脚本报告源文件被占用、锁定或无法打开,不发送文件。 报告文件当前被占用或不可用。 不尝试清理,因为没有安全创建临时文件。 响应行为 如果用户要求发送文件,实际发送它。 不要仅解释流程,除非用户问了一个概念性问题。 如果临时处理失败,因为文件不存在,直接说明。 如果临时处理失败,因为文件太大,直接说明。 如果临时处理失败,因为文件被占用,直接说明。 如果发送成功但清理失败,说明文件已发送,但临时清理失败。 绝不说或暗示原始文件被删除。 示例 示例 1:桌面 PDF 用户要求:发送 C:\Users\name\Desktop\resume.pdf 到 QQ 操作: 运行:python scripts/stage_media.py "C:\Users\name\Desktop\resume.pdf" 假设脚本返回:C:\Users\name\.openclaw\media\qqbot\abc123.pdf 发送:C:\Users\name\.openclaw\media\qqbot\abc123.pdf 在发送尝试完成后,运行: python scripts/stage_media.py --cleanup "C:\Users\name\.openclaw\media\qqbot\abc123.pdf" 绝不删除:C:\Users\name\Desktop\resume.pdf 示例 2:文件已经在 QQ 媒体中继目录下 用户要求发送:C:\Users\name\.openclaw\media\qqbot\old-file.pdf 操作: 仍然先进行临时处理: python scripts/stage_media.py "C:\Users\name\.openclaw\media\qqbot\old-file.pdf" 假设脚本返回:C:\Users\name\.openclaw\media\qqbot\new-uuid.pdf 发送:C:\Users\name\.openclaw\media\qqbot\new-uuid.pdf 仅清理: python scripts/stage_media.py --cleanup "C:\Users\name\.openclaw\media\qqbot\new-uuid.pdf"