当用户在任意聊天界面(如Telegram、iMessage、Slack等)发送截图时,使用OpenClaw配置的视觉语言模型解析其中的事件和任务。
Scrask Bot.是一项面向实际任务的技能,主要用于Overview.;Scrask 是一个截图到意向解析器. 用户通过任何聊天表层发送截图. 他们已经连接到 OpenClaw( Telegram, iMessage, Slack等).;
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
Scrask 是一款截图转意图解析器(screenshot-to-intent parser)。用户通过已接入 OpenClaw 的任意聊天界面(Telegram、iMessage、Slack 等)发送一张截图。Scrask 会执行以下操作:
destination: "calendar" → calctl / accli / apple-calendar / brainz-calendar / gcal-pro / 等destination: "task" → apple-reminders / things-mac / notion / 等Scrask 从不直接写入任何存储系统。日历/任务层无需服务账号 JSON、OAuth 凭据或 API 密钥——这是目标技能的职责。
Scrask 支持两种调用方式:平台优先尝试显式调用;若无匹配别名,则回退至隐式触发条件。
若用户消息以以下任一别名开头(不区分大小写,允许带或不带 @ 或 / 前缀),平台将无视下方隐式条件,直接调度 Scrask:
scraskscrask thisscreenshotscreenshot to calendar强制路由至 Scrask 的示例:
scrask this(附带一张图片)@scrask(附带一张图片)/scrask(附带一张图片)screenshot to calendar(附带一张图片)若显式调用时未附带图片,Scrask 将返回简短提示,请求用户附加截图,随后终止执行。禁止在无图片输入的情况下运行解析器。
OpenClaw 智能体读取传入消息,并在满足以下全部条件时激活 Scrask:
以下情况不得**隐式激活**:
隐式路径是用户默认触发的方式。显式别名仅用于两类场景:
scrask this 恢复处理,无需重新发送。在用户当前使用的聊天界面中回复,使其知晓技能正在运行:
"📸 已收到 — 正在分析您的截图..."
python3 {baseDir}/scripts/scrask_bot.py
--image-path ""
--provider "$CONFIG_VISION_PROVIDER"
--timezone "$CONFIG_TIMEZONE"
--confidence-threshold "$CONFIG_CONFIDENCE_THRESHOLD"
--actionable-threshold "$CONFIG_ACTIONABLE_THRESHOLD"
--type-threshold "$CONFIG_TYPE_THRESHOLD"
--field-threshold "$CONFIG_FIELD_THRESHOLD"
脚本从环境变量中读取凭据——请勿通过命令行传递密钥。在默认 auto 模式下,其路由逻辑如下:
GEMINI_API_KEY → 优先使用 Gemini,Claude 作为备用(低成本 + 快速路径)。ANTHROPIC_API_KEY(未设 Gemini 密钥)→ 仅使用 Claude。OPENCLAW_VISION_PROVIDER、OPENCLAW_VISION_KEY 及可选的 OPENCLAW_VISION_MODEL。因此,只要 OpenClaw 用户已在平台层级配置了支持视觉能力的 LLM,该技能即可开箱即用。自行提供 Gemini 密钥仅额外带来成本与速度优化。
脚本返回的 JSON 包含以下字段:
success — 解析是否成功no_actionable_content — 若未发现可操作内容则为 trueactionable_confidence — 0.0–1.0,表示解析器对“该截图是否含可操作内容”的确信程度needs_actionable_confirmation — 若 actionable_confidence 处于“不确定区间”,则为 true;此时机器人应在分派前向用户确认:“这确实是一个事件或任务吗?”items[] — 每个检测到的项目对应一项,包含:type、destination、confidence(旧版聚合值)、type_confidenceconfidences{} — 各字段置信度得分(0.0–1.0),包括 title、date、time、location、participants、description、priority 等needs_confirmation — 若存在至少一项待澄清内容,则为 trueclarifications[] — 针对性提问列表,例如:{ "field": "time", "question": "与 Priya 共进晚餐的时间是?", "reason": "low_confidence" }title、date、time、location、participants 等)summary_text — 可直接发送至聊天界面的摘要预览;请原样发送,切勿改写screenshot_summary、parse_notes — 上下文信息若 no_actionable_content 为 true:
静默忽略该截图;若用户明显期望 Scrask 执行操作,则回复 summary_text 字段内容(该字段已包含礼貌的“未找到可操作内容”提示)。
若 success 为 true:
将 summary_text 的值原样返回至用户当前聊天界面。随后逐项处理 items[] 中的每个项目。
针对 items[] 中的每一项:
若顶层 needs_actionable_confirmation: true:
发送 summary_text(该字段已以“这确实是一个事件或任务吗?”开头),并等待用户响应。若用户回答“是”,则按下方规则逐项处理;若回答“否”,则回复“已收到,已跳过 ✓”,并终止流程。
对于每一项 — 若 needs_confirmation: false(无待澄清项):
无需征得用户同意,直接调用对应的目标技能。
destination: "calendar" → 调用用户已安装的日历技能。优先级顺序为:calctl → accli → apple-calendar → brainz-calendar → gcal-pro → 首个可用技能。destination: "task" → 调用用户已安装的任务技能。优先级顺序为:apple-reminders → things-mac → notion → 首个可用技能。将项目字段(title、date、time、end_time、end_date、location、participants、description、recurrence、online_link 等)传入该技能暴露的创建命令。若 end_date 存在且与 date 不同,则视为跨多日事件。
对于每一项 — 若 needs_confirmation: true:
clarifications[] 数组列出了需询问的具体内容。每项包含:
field — 需澄清的字段(如 "time"、"date"、"type")question — 面向用户的提问(已预先结合项目标题格式化)reason — "missing"(值为空)、"low_confidence"(已提取但置信度低)或 "low_type_confidence"(无法确定是日历事件还是任务)summary_text 已将这些内容渲染为项目符号列表。请按顺序向用户提问,并用其答复补全对应字段。待所有澄清完成后,再按前述方式将该项目路由至目标技能。若用户在任一环节回复跳过,则丢弃该项目并确认:“已收到,已跳过 ✓”。
对于特殊字段 field: "type",用户答复将决定该项目路由至 calendar 还是 task —— 请据此更新 destination 字段后再分派。
每个目标技能返回结果后,向用户发送一行确认消息。示例如下:
📅 已通过 calctl 添加至日历:**团队站会** — 2026-03-01 09:00🔔 已添加至提醒事项:**缴纳电费账单**(截止日期:2026-02-28)✅ 已添加至 Things:**向 Sandip 发送我的 resume**若目标技能报错,请向用户展示错误信息,并询问是否尝试切换至其他目标技能重试。
| 场景 | 行为 |
|---|---|
| 单张截图同时包含一个事件和一个任务 | 独立处理各项,分别路由至各自目标。 |
| 事件隐含前置准备步骤(例如:餐厅聚餐 → 预订座位) | 解析器同时输出一个事件和一个准备提醒。准备提醒中推断出的字段置信度通常落在 0.65–0.80 区间,因此大多数准备提醒会触发 needs_confirmation: true,并附带针对性澄清(通常为 time 和 date)。 |
| 跨多日事件(旅行、会议) | end_date 已设置且与 date 不同。将二者一同传入日历技能(例如:calctl add --date --end-date --all-day)。 |
| 已重新安排 / 取消的事件 | 解析器提取新日期;parse_notes 将其标记为“重新安排”。在覆写现有条目前,须先向用户确认。 |
| 截图语言为印地语、泰米尔语或其他语言 | 标题与描述已自动转为英文;language 字段保留 ISO 语言代码。按原样保存。 |
| 周期性事件(如“每周一”) | 将 recurrence 和 recurrence_day 传入日历技能。 |
| 日期已过期 | 在回复中标识:“⚠️ 此日期已过期。仍要保存吗?” |
| 他人日历的截图 | already_in_calendar_hint: true — 回复:“看起来该事件已在您的日历中 🗓️”,并跳过处理。 |
| 未安装日历 / 任务技能 | 回复缺失技能提示后终止。 |
| 检测到 Zoom / Meet 链接 | 将 online_link 传入日历技能;该技能应同时设置位置与描述字段。 |
| Meme / 无可操作内容的截图 | no_actionable_content: true — 静默忽略,除非用户明确要求执行操作。 |
{
"skills": {
"entries": {
"scrask-bot": {
"enabled": true,
"env": {
// 两个密钥在 v4.2+ 版本中均为可选项。若均未设置,Scrask 将使用
// OpenClaw 平台级配置的视觉 LLM,凭据来自平台注入的
// OPENCLAW_VISION_* 环境变量。设置 GEMINI_API_KEY 将启用
// 成本更低、速度更快的 Gemini 路由。设置 ANTHROPIC_API_KEY
// 将添加 Claude 作为备用(若未设置 Gemini 密钥,则作为主用)。
"GEMINI_API_KEY": "AIza-your-gemini-key",
"ANTHROPIC_API_KEY": "sk-ant-your-key-here"
},
"config": {
"vision_provider": "auto",
"fallback_threshold": 0.60,
"timezone": "Asia/Kolkata",
"confidence_threshold": 0.75,
"actionable_threshold": 0.70,
"type_threshold": 0.70,
"field_threshold": 0.70
}
}
}
}
}
ANTHROPIC_API_KEY 为可选项。若未设置,auto 模式将仅运行 Gemini。
image:read — 用于从聊天界面读取截图。network:outbound — 用于调用视觉模型 API(Gemini,以及可选的 Claude)。chat:reply — 用于通过用户的聊天界面发送确认消息。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章