360 Secure SkillHub
360 安全技能中心

weixin-debounce20s

纯指导型技能:在用户明确同意并完成可校验备份后,按规格修改用户本机已安装的 openclaw-weixin 渠道插件源码,为同一发送者的纯文本连发消息加入 20 秒尾窗防抖、8 条/6000 字符提前提交、媒体与斜杠命令直通,并完成确定性构建、重启与验证;不含补丁文件或插件包。

yechang1450
yechang1450
热度 38.65
最近更新 2026-09-12 10:36:28
分类:开发依赖:读写文件 / 代码执行应用场景:代码生成 / 调试排错 / DevOps / 工作流

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add weixin-debounce20s
Metadata
license
MIT
name
weixin-debounce20s
description
微信渠道连发防抖(20s 尾窗)的『功能装载器』(纯指导型)。**仅在用户明确要求为 openclaw-weixin 渠道启用/修复连发合并时**使用(触发短语:启用微信防抖、防抖没生效、openclaw-weixin 防抖)。本技能指导 agent 先取得明确同意并完成可校验的备份,**之后**才修改用户本机的微信渠道插件源码;完成后连发的多条文字合并为一轮回复。

微信 20s 连发防抖 —— 指导型装载与验证

目标:让 agent 按本文件的规格,修改用户本机已安装的微信渠道插件,使其具备 20s 连发防抖。 本技能不含补丁文件、不安装任何插件包。

激活条件(必须先确认)

  • 只有当用户明确要求为 openclaw-weixin 渠道启用或修复防抖时才执行本技能。
  • 触发短语(需与渠道/插件语境同时出现):启用微信防抖 / 防抖没生效 / openclaw-weixin 防抖。
  • 命中触发短语后,先复述将要做什么并取得用户确认,确认前不要读改任何文件(只读检查除外)。

不可协商的顺序(违反则中止)

① 只读定位 → ② 说明并取得明确同意 → ③ 备份并校验 → ④ 实现 → ⑤ 确定性构建 → ⑥ 重启 → ⑦ 验证 → ⑧ 报告与回滚

  • ①之前不得写入任何文件;③完成并校验前不得进入 ④。
  • 同意必须是明确的肯定答复:需列明目标路径、插件版本、将改动的文件、计划改动、以及重启影响。
  • 若用户拒绝、答复含糊或撤回同意 → 中止,不做任何改动。

权限边界(硬性)

  • 禁止在 sudo / root / 管理员终端下运行本技能的写入、构建动作。
  • 若插件位于系统级位置(macOS/Linux:/usr/local/lib/node_modules、/usr/lib/node_modules 等;Windows:%ProgramFiles%\nodejs 等)→ 停止,建议用户把插件改到用户级位置(或由用户自行处理权限),不要用提权方式修改。
  • openclaw 命令始终以当前普通用户运行。

目标行为(规格)

对同一发送者的纯文本消息:

  1. 首条进入缓冲,启动 20 秒静默窗口(取 messages.inbound.byChannel["openclaw-weixin"],默认 20000ms)。
  2. 每来一条可合并文字 → 取消并重启计时器(尾窗;不是固定窗口)。距最后一条满 20 秒后合并为一条,走原处理管线(一轮回复)。
  3. 单条文字同样等满 20 秒。
  4. 提前提交:缓冲达 8 条或正文达 6000 字符。
  5. 不合并(立即处理):图片、语音、文件、视频、斜杠命令。
  6. 发送/处理经串行队列,保持顺序。
  7. 缓冲键 = 账号 + 发送者;窗口设 0 关闭。

执行步骤

  1. 只读定位(不写)
    • openclaw plugins inspect openclaw-weixin --json → 取 rootDir / installPath 与 packageVersion。
    • 阅读 src/monitor/monitor.ts(运行态 dist/src/monitor/monitor.js)确认现有实现;已有等效防抖则只校验,不改(幂等)。
  2. 说明并取得明确同意
    • 列出:目标路径、版本、将改文件、计划改动(尾窗 + 上限 + 媒体直通 + 串行)、重启影响。等待肯定答复。
  3. 备份并校验
    • 把每个将改文件按相对路径复制到 <rootDir>/.clawbot-backup-<时间戳>/,保留目录结构;校验备份可读且完整;校验失败 → 中止。
  4. 实现规格
    • 纯文本分支前加缓冲 {msgs, chars, timer, generation},按 账号+发送者 建键。
    • 新文字:clearTimeout → generation++ → setTimeout(flush, windowMs);回调校验 generation。
    • flush:按序拼接为一条走原管线;上限到达立即 flush;媒体/语音/文件/斜杠命令不缓冲。
  5. 确定性构建(仅当改动 .ts)
    • 优先 npm ci --ignore-scripts(要求存在可审阅的 lockfile 且与清单一致);不要用无约束的 npm install。
    • 无 lockfile、lockfile 与清单不一致、或依赖来源不可信 → 停止并询问用户,不要自行安装。
    • 构建后确认 dist/*.js 与源同步;构建失败 → 用第 3 步备份还原并报告。
  6. 重启:openclaw gateway restart,等 20-30 秒。
  7. 验证:日志出现 debounce: buffered text ... windowMs=20000;连发多条(间隔 <20 秒)只收到一轮且提交时间随最后一条后移;单条等满 20 秒;媒体/斜杠命令立即响应。
  8. 报告:改动文件清单、备份目录、验证结果、精确回滚步骤。

回滚与升级

  • 回滚:用备份覆盖回去(或重装官方同版本)后重启。
  • 官方插件升级会覆盖改动:重新执行本技能(从第 1 步开始)。

隐私

  • 不读取、不外发任何密钥与聊天内容;不新增日志中的消息正文。