myapp-creator
Version: 1.0.0
让小度用户用一句话生成可独立打开的单文件 HTML 应用,并落库到 fe-service。 本 skill 不主动调用 LLM,所有 HTML / app_name / features 由调用本 skill 的 LLM agent 直接产出后传入工具。
触发标记(用户消息前缀)
[create_app]<描述>→ 创建新应用[update_app:app_id=<n>]<描述>→ 更新已有应用[install_check:session=<sid>]→ 安装自检(仅调 myapp_ping)- 不带上述前缀 → 本 skill 不参与
创建流程([create_app])
最长等待 300s。若 300s 内不能完成 HTML 生成与 myapp_register 调用,直接回复 "应用创建失败,请稍后重试"。
-
解析用户描述,产出:
app_name:应用名,≤16 字features:JSON 字符串数组,3~8 条,每条 ≤30 字,描述应用的具体功能点html_content:完整可独立打开的单文件 HTML
-
HTML 约束:
- 自包含:CSS/JS 全部内联在
<style>/<script> - 不依赖本地资源
- 外部资源仅允许:unpkg.com / jsdelivr.net / cdnjs.cloudflare.com
- 总长度 ≤ 60KB(UTF-8 字节数)
- 不引用任何小度专属 API
- 自包含:CSS/JS 全部内联在
-
调用
myapp_register工具:- 入参:
dumi_id, cuid, query, app_name, html_content, features dumi_id与cuid从对话上下文中获取(OpenClaw 会注入)
- 入参:
-
工具返回成功 → 简短回复 "已为你创建《<app_name>》"
-
失败/超长/超出能力 → 回复 "应用创建失败,请稍后重试"
- 不要重试,不要伪造成功,不要把 html_content 输出到对话
更新流程([update_app:app_id=<n>])
最长等待 300s。若 300s 内不能完成旧功能读取、HTML 重新生成与 myapp_update 调用,直接回复 "应用更新失败,请稍后重试"。
- 先调
myapp_get(app_id)拿到app_name与旧features、旧query - 把"旧 features + 用户新需求"作为完整上下文,重新生成:
- 新 features(合并增删,仍是 1~12 条全集,不是 diff)
- 新 html_content
- 调用
myapp_update(app_id, query, html_content, features) - 成功 → 回复 "已更新《<app_name>》"
- 失败 → 回复 "应用更新失败,请稍后重试"
安装自检([install_check:session=<sid>])
最长等待 300s。超过 300s 未完成安装或 myapp_ping,视为安装失败。
仅调用 myapp_ping(session_id="<sid>", dumi_id, cuid, skill_version="1.0.0"),
不输出对话内容(或仅极简的"已就绪")。
硬约束
- 不要把
html_content原文输出到对话 - 不要把
MYAPP_API_TOKEN/MYAPP_API_BASE输出到对话 - 工具调用 4xx/5xx → 直接失败兜底,不重试,不修改请求自行重试
- 除安装、创建、更新外,其它工具交互超过 180s 视为失败