返回顶部
i

interactive-widget交互式组件

>

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 0.1.2
安全检测
已通过
159
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

interactive-widget

Widget — 持久化交互式制品

用户实时观看 Widget — 快速流式传输内容,每次工具调用一个区块。

快速开始

bash
npm install -g @openduo/duoduo-widgets # 如未安装

1. 创建

bash
duoduo-widget open --title 仪表盘 --ttl-seconds 300

向用户发送 links.feishusidebar 或 links.browser。切勿发送 controlurl/control_token。

2. 骨架 + 推送

bash
cat > /tmp/w-{wid}.html << SKELETON


标题


副标题




SKELETON
cat /tmp/w-{wid}.html | duoduo-widget update --wid wid_...

3a. 通过完整HTML追加区块(经典方式)

bash
python3 - /tmp/w-{wid}.html << PYEOF
import sys
f = sys.argv[1]
html = open(f).read()
section =


区块标题


内容 — $100 安全,无需转义




html = html.replace(, section)
open(f, w).write(html)
PYEOF
cat /tmp/w-{wid}.html | duoduo-widget update --wid wid_...

使用引号包裹的 heredoc PYEOF — 写入原始HTML,无需shell转义。仅修改 ... 内部的内容。

3b. 通过 --patch 增量更新(数据密集型Widget推荐)

推送骨架后,使用 --patch 更新页面的特定部分,无需重新发送整个HTML。速度更快,带宽消耗更少,且避免morphdom重新渲染。

bash
duoduo-widget update --wid wid_... --patch [
{op:append,selector:#rows,html:新项目$100},
{op:text,selector:#count,text:42},
{op:innerHTML,selector:#status,html:完成}
]

补丁操作:

操作功能说明必需参数
append将 html 作为 selector 的最后一个子元素插入html
prepend
将 html 作为 selector 的第一个子元素插入 | html |
| replace | 替换匹配 selector 的元素 | html |
| innerHTML | 设置 selector 的 innerHTML | html |
| text | 设置 selector 的 textContent | text |
| remove | 移除匹配 selector 的元素 | — |

何时使用补丁 vs 完整HTML:

  • - 补丁:表格增加行、仪表盘更新数字、状态文本变更、渐进式列表构建
  • 完整HTML:首次骨架推送、布局变更、添加新脚本/CDN库

重要提示:补丁会立即更新实时观看者,但不会更新服务器上存储的HTML。为确保最终制品包含所有变更,请使用以下模式:

  1. 1. 通过完整 update --html 推送骨架(保留临时文件)
  2. 通过 --patch 流式传输数据以提升实时观看者速度
  3. 同时,持续在本地向 /tmp/w-{wid}.html 追加内容
  4. 在 finalize 之前,执行最后一次 cat /tmp/w-{wid}.html | duoduo-widget update --wid ...
  5. 然后执行 finalize

或者简单做法:如果可用,通过 duoduo-widget finalize --wid ... --html ... 传递最终的完整HTML。

补丁骨架设计:为目标元素添加 id 属性,以便补丁可以定位:

html


0

加载中...

4. 最终确定

bash
duoduo-widget finalize --wid wid_...

规则

  1. 1. 从 references/htmlpatterns.md 复制 — 先阅读,选择一个区块模板,仅修改数据值。切勿从头设计HTML
  2. 每次Bash调用一个区块 — 在单个命令中完成 heredoc + cat 管道
  3. 每个区块后立即推送 — 绝不批量处理
  4. 绝不在上下文中构建完整HTML — 临时文件逐步累积;上下文仅看到区块
  5. 绝不重新读取临时文件 — 它仅通过管道流动
  6. 根据更新输出中的 hints 采取行动:noviewers → 发送链接;ttllow/ttlexpiring → 立即最终确定;manyupdates → 收尾

交互式Widget

bash
duoduo-widget open --title 确认 --ttl-seconds 300 \
--interaction-mode submit --interaction-prompt 审核并确认

按钮:

读取结果:duoduo-widget wait --wid wid_... --timeout-seconds 120

HTML规则

  • - 仅使用内联样式。CDN:cdnjs.cloudflare.com、esm.sh、cdn.jsdelivr.net、unpkg.com
  • 禁止使用:fetch()、XMLHttpRequest、WebSocket、eval()、new Function()

模板 — 先阅读 references/html_patterns.md。复制模板,仅修改数据值。

CLI参考

命令用途关键标志
open创建草稿--title、--ttl-seconds、--interaction-mode、--interaction-prompt
update
推送HTML或补丁 | --wid、stdin或--html、--patch 、--text-fallback | | finalize | 冻结 | --wid | | wait | 阻塞等待提交 | --wid、--timeout-seconds | | get | 轮询状态 | --wid |

状态机

draft → finalized → awaiting_input → submitted(终态)

最终确定的制品是永久性的。分支:open --fork

环境变量

WIDGETSERVICEURL 环境变量(默认值:https://aidgets.dev)

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 interactive-widget-1776124688 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 interactive-widget-1776124688 技能

通过命令行安装

skillhub install interactive-widget-1776124688

下载

⬇ 下载 interactive-widget v0.1.2(免费)

文件大小: 5.64 KB | 发布时间: 2026-4-14 13:56

v0.1.2 最新 2026-4-14 13:56
**Version 0.1.2 Changelog**

- Added support and documentation for fast incremental widget updates using the new `update --patch` CLI flag.
- Described available patch operations (e.g., append, prepend, replace, innerHTML, text, remove).
- Clarified when to use patch vs. full HTML updates and how to ensure the finalized artifact is complete.
- Updated CLI reference to include `--patch`.
- Provided a best-practice section for designing skeletons with target IDs for patching.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部