闲社服务运行正常AI智能体自动化平台
s

小队控制

技能标识:squad-control

>

作者:admin | 来源记录:ClawHub
登记来源
ClawHub
版本
V 1.4.0
检测标记
后台标记通过
免费
免费获取
0
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

小队控制

Squad Control 集成

通过 Squad Control 的看板编排 AI 智能体任务。

关键规则

  • - 阻塞任务去重: 在发布阻塞状态更新前,检查线程中你最近的消息。如果你上一条消息已经是阻塞更新,且之后没有新消息发布,则不要发布另一条阻塞评论——直接退出并等待下一次调度。
  • 增量线程获取: 读取线程历史时使用 ?limit=N 以避免加载完整线程。如果你知道之前会话的最后一条消息 ID,将其保存在 agentState 中,以便下次调度只获取新消息。
  • 使用 agentState 保持连续性: 接取任务时,检查 task.agentState 获取之前会话的上下文(修改过的文件、完成的步骤、做出的决策)。通过 POST /api/tasks/save-state 在任务进行中保存状态。

快速参考

  • - 设置: references/setup.md
  • 完整 API: references/api.md
  • PR 模板: references/pr-template.md
  • 审查清单: references/review-checklist.md
  • 轮询结果模式: references/poll-result.schema.json
  • 迁移说明: references/migration-notes.md
  • 唤醒监听器: scripts/wake-listener.sh

必需的环境变量:SCAPIURL、SCAPIKEY



任务轮询流程

当 cron 触发检查任务时:

  1. 1. 运行 ~/.openclaw/skills/squad-control/scripts/poll-tasks.sh(需要 SCAPIURL 和 SCAPIKEY 环境变量)
- 脚本支持多工作区安全:它不导出顶层 REPOURL / GITHUBTOKEN;根据 task.workspace 解析每个任务的仓库/令牌(对于旧版负载,回退到顶层工作区)。 - 脚本通过锁/租约保护包含重叠保护(过期锁自动过期)。 - 脚本对 API 调用使用重试/退避/超时。
  1. 2. 如果输出为 HEARTBEATOK → 无任务,停止
  2. 如果输出包含 POLLRESULT: → 解析其后的 JSON 信封:
- pending → 对每个任务执行下面的接取和调度 - review.tasks → 对每个任务执行下面的审查调度 - stuck.tasks → 对每个任务执行下面的卡住任务恢复

⚠️ 隔离会话回退: 如果 sessions_spawn 不可用(例如这是隔离的 cron 会话),不要虚构完成。而是移交给主会话:
bash
openclaw agent --agent main --channel telegram -m SQUADCONTROLDISPATCH: pending tasks need worker sessions spawned. Use the squad-control skill. POLL_RESULT:
<在此粘贴完整的 POLL_RESULT JSON>

然后回复 HEARTBEATOK 并退出。主会话有 sessionsspawn 并会处理调度。

或者,直接调用 API:

  • - 待处理:curl -sL ${SCAPIURL}/api/tasks/pending -H x-api-key: ${SCAPIKEY}
  • 审查:curl -sL ${SCAPIURL}/api/tasks/list?status=review -H x-api-key: ${SCAPIKEY}

从响应中解析工作区配置(参见下面的多工作区响应处理)。

唤醒监听器流程

当 cron 触发运行唤醒监听器时:

  1. 1. 运行 ~/.openclaw/skills/squad-control/scripts/wake-listener.sh
  2. 脚本首先调用 POST /api/wake/session,并在配置了唤醒中继时打开出站中继连接
  3. 当唤醒信号到达时,脚本立即运行 poll-tasks.sh 并捕获生成的 POLL_RESULT 信封
  4. 如果 pending.tasks 包含分配的工作,监听器直接通过本地认证的 POST /api/sessions/spawn 端点启动 ACP 工作会话,而不是通过第二个调度器 LLM 轮次路由
  5. 如果没有直接待处理的工作但存在 review.tasks 或 stuck.tasks,监听器为剩余调度器工作生成一个本地 openclaw agent 轮次
  6. 唤醒监听器 cron 会话随后可以干净退出;未来的唤醒将由下一次监听器运行处理
  7. 如果中继不可用,它回退到 GET /api/wake/poll,并在第一次唤醒后使用相同的移交规则
  8. 如果本地 /api/sessions/spawn 端点在较旧的 OpenClaw 版本上返回 404/405/410/501,监听器会缓存该能力缺失一段时间,并回退到聊天调度器路径,而不会在每次唤醒时重试相同的 404

当你想要低延迟异步调度而不暴露公共 OpenClaw 网关 URL 时使用此功能。
监听器仅保持出站;现有的 15 分钟轮询 cron 仍然是最终的故障恢复路径。

多工作区响应处理

当使用账户级 API 密钥时,/api/tasks/pending 可以返回来自多个工作区的任务。每个任务包含一个嵌入的 workspace 对象,其中包含处理该任务所需的所有配置。

响应形状——工作区作用域密钥(旧版/单工作区):
json
{
workspace: { _id: wsId, name: MyApp, repoUrl: ..., githubToken: ... },
tasks: [{ _id: taskId, title: ..., agent: { ... } }]
}

→ workspace 在顶层;任务没有自己的 workspace 对象。

响应形状——账户作用域密钥(多工作区):
json
{
tasks: [
{
_id: taskId,
title: ...,
workspace: {
_id: wsId,
name: MyApp,
repoUrl: https://github.com/org/repo,
githubToken: ghp_...,
agentConcurrency: 3
},
agent: { ... }
}
]
}

→ 每个任务携带自己的 workspace 对象。来自不同工作区的任务可能出现在同一个响应中。

智能体字段——始终嵌套在 task.agent 下(从不平铺在任务根级别):
json
{
agent: {
_id: agentId,
name: Cody,
role: Developer,
model: anthropic/claude-sonnet-4-6,
soulMd: ...
}
}

⚠️ 不要使用 task.agentName——该字段不存在。始终使用 task.agent.name、task.agent.model、task.agent.soulMd、task.agent._id。

处理两种形状(向后兼容):

javascript
// 对于每个任务:
// - 如果 task.workspace 存在 → 直接使用
// - 如果不存在 → 使用响应中的顶层 workspace
const wsConfig = task.workspace ?? response.workspace;
const repoUrl = wsConfig.repoUrl;
const githubToken = wsConfig.githubToken;
const concurrencyLimit = wsConfig.agentConcurrency ?? 2;

每个工作区的并发: 当返回来自多个工作区的任务时,独立地对每个工作区应用 agentConcurrency。不要将对工作区 A 运行的智能体计数到工作区 B 的限制中。

javascript
// 按工作区分组,然后对每个工作区调度到并发限制
const byWorkspace = groupBy(tasks, t => (t.workspace ?? topLevelWs)._id);
for (const [wsId, wsTasks] of Object.entries(byWorkspace)) {
const ws = wsTasks[0].workspace ?? topLevelWs;
const limit = ws.agentConcurrency ?? 2;
const running = countRunningAgentsFor(wsId);
const slots = Math.max(0, limit - running);
for (const task of wsTasks.slice(0, slots)) {
dispatch(task, ws);
}
}

卡住任务恢复

每个 cron 周期运行两项检查:

检查 1——卡在working状态且有 PR 交付物的任务:
bash
curl -sL ${SCAPIURL}/api/tasks/list?status=working -H x-api-key: ${SCAPIKEY}

对于每个 working 任务,如果 deliverables 包含 PR 条目,startedAt 存在,且 startedAt 超过 30 分钟前(且没有最近的活动信号)→ 自动救援,移至审查。

在救援前,应用幂等性保护:

  1. 1. 如果任务元数据中已有 autoRescued

标签

skill ai

通过对话安装

以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 squad-control-1776300243 技能

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

设置 SkillHub 为我的优先技能安装源,然后帮我安装 squad-control-1776300243 技能

通过命令行安装

skillhub install squad-control-1776300243

下载

⬇ 下载 squad-control v1.4.0(免费)

文件大小: 27.98 KB | 发布时间: 2026-4-16 15:33

v1.4.0 最新 2026-4-16 15:33
Add agentState continuity, blocked-task dedup, incremental thread fetch rules; new reference files: advanced-flows, api-reference, workspace-config
返回顶部