← 返回
未分类

Weixin Task Workbench

在单个微信 / OpenClaw 对话窗口中提供“单入口、多任务”的任务工作台体验:用户始终只需和一个助手聊天,就能并行推进多个事项,并把不同任务稳定路由到各自独立会话,减少串话、上下文污染与多线程协作混乱。适用于微信中的长期协作、任务切换、任务总结、任务归档与任务生命周期管理;当用户发送“任务列表 / 新建任务...
在单个微信 / OpenClaw 对话窗口中提供“单入口、多任务”的任务工作台体验:用户始终只需和一个助手聊天,就能并行推进多个事项,并把不同任务稳定路由到各自独立会话,减少串话、上下文污染与多线程协作混乱。适用于微信中的长期协作、任务切换、任务总结、任务归档与任务生命周期管理;当用户发送“任务列表 / 新建任务...
shawnhan98
未分类 clawhub v1.0.4 1 版本 100000 Key: 无需
★ 1
Stars
📥 488
下载
💾 23
安装
1
版本
#latest#openclaw#task-management#weixin#workflow#zh

概述

微信任务工作台

在一个微信对话窗口中运行单入口、多任务工作台。

它面向这样一种典型场景:用户只想和一个助手持续对话,但实际工作里同时存在多个并行事项。这个 skill 会把“单窗口交互体验”和“多会话执行隔离”结合起来,让用户前台感觉始终在同一个聊天里,后台则把不同任务拆分到各自独立会话中执行。

对用户只暴露一组简单、稳定的任务动作:新建列表切换继续总结关闭归档

核心价值:

  • 用一个微信窗口管理多个并行任务,而不是来回切换不同会话
  • 为每个任务绑定独立会话,减少串话、遗忘和上下文污染
  • 用 registry 持久化任务状态、当前任务指针与摘要,便于恢复与追踪
  • 兼容自然中文命令,适合作为 OpenClaw 的微信任务中枢

任务状态以 scripts/task_registry.py 为唯一事实来源。

触发信号(强匹配)

当用户出现以下任一表达时,应优先激活本技能,而不是进入泛化问答澄清:

  • 任务列表
  • 新建任务:...
  • 切到 # / 切换到 #
  • 继续(在任务上下文中)
  • 总结 #
  • 关闭 #
  • 归档 #
  • 任务状态

同义英文命令(task listtask newtask use 等)同样适用。

强制能力门禁(必需)

如果缺少以下任一会话工具,本技能必须阻断执行

  • sessions_spawn
  • sessions_send
  • sessions_history

执行规则:

  1. 在会话中的第一次任务命令时检查能力。
  2. 如果缺任何工具,立即停止并返回阻断提示。
  3. 阻断状态下不允许创建或更新任务 registry。
  4. 明确提示如何修复主机配置(tools.allowagentToAgentsessions.visibility)。

禁止静默降级为 registry-only 模式。

主机配置提醒

要获得真实任务隔离,通常需要:

  • agent allowlist 包含 sessions_spawnsessions_sendsessions_history,通常还需要 sessions_list
  • tools.agentToAgent.enabled=true
  • tools.sessions.visibility=all

参考配置:

{
  "tools": {
    "agentToAgent": { "enabled": true },
    "sessions": { "visibility": "all" }
  },
  "agents": {
    "list": [
      {
        "id": "main",
        "tools": {
          "allow": [
            "sessions_spawn",
            "sessions_send",
            "sessions_history",
            "sessions_list"
          ]
        }
      }
    ]
  }
}

核心运行模型

  • 一个用户可见的微信聊天窗口
  • 每个微信账号+联系人对应一个任务 registry 文件
  • 一个当前任务指针
  • 每个任务对应一个独立会话
  • 非全局命令默认路由到当前任务

除非用户明确要求查看实现细节,否则不要暴露 sessionKey

Registry 路径策略

使用“联系人隔离”路径:

tasks/weixin/<account>/<peer>.json

规则:

  • 使用当前微信账号 id
  • 使用当前微信用户 id(xxx@im.wechat),并做文件名安全化
  • 不同 account+peer 严禁共享同一 registry 文件

首次使用先初始化:

python3 scripts/task_registry.py --registry tasks/weixin/<account>/<peer>.json init

标准命令(与飞书流程兼容)

  • 新建任务:</code></li><li><code>任务列表</code></li><li><code>切到 #<id></code></li><li><code>继续</code></li><li><code>总结 #<id></code></li><li><code>关闭 #<id></code></li><li><code>归档 #<id></code></li><li><code>任务状态</code></li></ul><p>可兼容英文等价命令(如 <code>task new</code>、<code>task list</code>、<code>task use</code>)。</p><h2>控制面动作</h2><h3>1. 新建任务</h3><ol><li>先执行能力门禁(仅首次任务命令)</li><li>先校验标题非空;若用户只发送 <code>新建任务</code> 或空标题,必须返回补全提示,不得创建空任务</li><li>用 <code>sessions_spawn</code> 创建任务专属会话</li><li>用 registry <code>add --session-key ... --make-current</code> 持久化任务</li><li>回执任务 id 与当前任务</li></ol><h3>2. 查看任务列表</h3><p>执行:</p><pre><code>python3 scripts/task_registry.py --registry <path> list </code></pre><p>返回任务列表,并标记当前任务。</p><p>如果任务数为 0,不要只返回原始 JSON 或泛化提示;必须按“任务列表”样式返回空状态,并给出 1~2 个可直接复制的 <code>新建任务:...</code> 示例。</p><h3>3. 切换任务</h3><p>执行:</p><pre><code>python3 scripts/task_registry.py --registry <path> switch <id> </code></pre><p>回执已切换目标。</p><p>如果 <code>id</code> 不存在,必须返回“任务 #<id> 不存在,请先发送任务列表查看可用任务”,不要直接透出脚本原始错误。</p><h3>4. 继续当前任务</h3><ol><li>读取当前任务(<code>show</code>)</li><li>使用 <code>sessions_send</code> 把消息路由到当前任务 <code>sessionKey</code></li><li>需要时将状态更新为 <code>in_progress</code></li></ol><p>若无当前任务,提示先新建或先查看列表。</p><p>若当前任务状态为 <code>completed</code> 或 <code>archived</code>,不要直接继续执行;先提示用户切换到其他任务,或明确要求恢复该任务后再继续。</p><h3>5. 总结任务</h3><ol><li>读取 registry(<code>summarize <id></code>)</li><li>需要时调用 <code>sessions_history</code> 补充上下文</li><li>输出“进展/产出/阻塞/下一步”</li><li>可选写回 <code>update --summary</code></li></ol><p>如果 <code>id</code> 不存在,返回“任务 #<id> 不存在,请先发送任务列表查看可用任务”。</p><h3>6. 关闭 / 归档任务</h3><p>执行:</p><pre><code>python3 scripts/task_registry.py --registry <path> close <id> --summary "..." python3 scripts/task_registry.py --registry <path> archive <id> --summary "..." </code></pre><p>如果 <code>id</code> 不存在,返回“任务 #<id> 不存在,请先发送任务列表查看可用任务”。</p><p>如果任务已经是 <code>completed</code> / <code>archived</code>,应返回幂等提示,不要重复执行状态变更。</p><h3>7. 任务状态(替代 <code>/status</code> 的任务视图)</h3><p>当用户发送 <code>任务状态</code> 时:</p><ol><li>读取 <code>show</code>(当前任务)+ <code>list</code>(任务清单)</li><li>若存在当前任务,返回当前任务编号、标题、状态</li><li>返回当前任务绑定的 <code>sessionKey</code>(仅用于排障;无当前任务时省略)</li><li>返回 registry 路径(便于定位持久化文件)</li><li>若没有任何任务,明确返回“当前任务:无 / 任务总数:0 / 先发送 新建任务:...”</li></ol><p>说明:<code>/status</code> 是 OpenClaw 全局会话状态,不等价于任务工作台的任务路由状态。</p><h2>测试与回归</h2><p>修改以下任一文件后,优先阅读并对照 <code>references/test-matrix.md</code> 做回归检查:</p><ul><li><code>SKILL.md</code></li><li><code>references/protocol.md</code></li><li><code>references/implementation.md</code></li><li><code>scripts/task_registry.py</code></li></ul><p>至少覆盖:空状态、新建任务、切换、继续、总结、关闭、归档、能力门禁、英文等价命令。</p><h2>回复样式约束</h2><p>对控制面命令(如 <code>任务列表</code>、<code>任务状态</code>、<code>新建任务</code>、<code>切换</code>、<code>关闭</code>、<code>归档</code>),优先套用 <code>references/protocol.md</code> 中的固定响应模板,避免每次自由发挥。</p><p>对于路由到具体任务的非全局回复,必须加任务头:</p><pre><code>[任务:#2 周报] </code></pre><p>该任务头需要在每次任务回复中可见,便于用户核对路由是否正确。</p></div> </div> </div> <div id="tab-versions" class="detail-content"> <div class="detail-section"> <h2>版本历史</h2> <p style="margin-bottom:12px;font-size:14px;color:#94a3b8;">共 1 个版本</p> <ul class="version-list"> <li> <div> <span class="version-tag">v1.0.4</span> <span style="font-size:11px;color:#5b6abf;margin-left:8px;background:#eef0ff;padding:1px 8px;border-radius:10px;">当前</span> </div> <div style="font-size:12px;color:#94a3b8;"> 2026-03-30 19:40 安全 安全 </div> </li> </ul> </div> </div> <div id="tab-security" class="detail-content"> <div class="detail-section"> <h2>安全检测</h2> <div class="sec-grid"> <div class="sec-card"> <h4>腾讯云安全 (Keen)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://tix.qq.com/search/skill?keyword=9ff6e077c0cab45978a41bd710f8baa9" target="_blank">查看报告</a> </div> <div class="sec-card"> <h4>腾讯云安全 (Sanbu)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://static.cloudsec.tencent.com/html-report-v2/2026/05/25/416939_c4ebdd05da0ac3c5715f9fb4945c34fb.html?q-sign-algorithm=sha1&q-ak=AKID8JMG1bzBC1dz96qNhssfFftujT1NCoFi&q-sign-time=1781508747%3B1813044747&q-key-time=1781508747%3B1813044747&q-header-list=host&q-url-param-list=&q-signature=655261a1924e5bf55ecce93b724ffbb4708ab45b" target="_blank">查看报告</a> </div> </div> </div> </div> <!-- Recommended Skills --> <div style="margin-top:24px;"> <h2 style="font-size:18px;font-weight:600;margin-bottom:16px;">🔗 相关推荐</h2> <div class="rec-grid"> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">developer-tools</span> <h3><a href="/s/github">Github</a></h3> <div class="rec-owner">steipete</div> <div class="rec-desc">使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 672</span> <span style="color:#5b6abf;">📥 324,946</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">ai-intelligence</span> <h3><a href="/s/self-improving">Self-Improving + Proactive Agent</a></h3> <div class="rec-owner">ivangdavila</div> <div class="rec-desc">自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 1,371</span> <span style="color:#5b6abf;">📥 319,668</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">security-compliance</span> <h3><a href="/s/skill-vetter">Skill Vetter</a></h3> <div class="rec-owner">spclaudehome</div> <div class="rec-desc">AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 1,223</span> <span style="color:#5b6abf;">📥 267,323</span> </div> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded',function(){ document.querySelectorAll('.detail-tab').forEach(function(btn){ btn.addEventListener('click',function(e){ var tab = this.getAttribute('data-tab'); document.querySelectorAll('.detail-tab').forEach(function(b){b.classList.remove('active')}); document.querySelectorAll('.detail-content').forEach(function(c){c.classList.remove('active')}); this.classList.add('active'); var el = document.getElementById('tab-'+tab); if(el) el.classList.add('active'); }); }); }); </script> <div class="footer"> <p>Skill工具集 © 2026</p> </div></body> </html>