skills-experimental/coordinator-mode/SKILL.md
Claude Code 多代理协调模式,管理 Worker 工具权限和会话模式切换 Use when [coordinator mode] is needed.
npx skillsauth add bianhaifeng789-hue/openclaw-config coordinator-modeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
借鉴 Claude Code 的 Coordinator Mode,实现多代理协作时的统一管理:
// 检查环境变量或配置
isCoordinatorMode(): boolean
// 用法
if (isCoordinatorMode()) {
// 进入协调逻辑
const context = getCoordinatorUserContext(mcpClients)
}
// 会话恢复时匹配存储的模式
matchSessionMode(sessionMode: 'coordinator' | 'normal'): string | undefined
// 返回: 如果切换了模式,返回警告消息;否则 undefined
const warning = matchSessionMode('coordinator')
if (warning) {
console.log(warning) // "已进入协调模式以匹配恢复的会话"
}
// 设置 Worker 可用工具
setWorkerTools('basic') // Bash, Read, Edit
setWorkerTools('full') // 包含 Glob, Grep, Skill 等
// 检查工具可用性
isToolAvailableForWorker('Bash') // true
// 过滤工具列表
const filtered = filterToolsForWorker(['Bash', 'TeamCreate'])
// ['Bash'] — TeamCreate 是内部工具,不显示
// 获取协调器系统提示
const prompt = getCoordinatorSystemPrompt()
// 包含: 角色、工具、Worker、任务流程、并发管理
import { createCoordinatorHook } from './coordinator-service'
const hook = createCoordinatorHook()
// 在 sessions_spawn 前调用
const { allowedTools } = hook.beforeSpawn({
agentId: 'worker-001',
description: '研究认证问题',
mode: 'worker'
})
// 限制 Worker 工具
spawnParams.tools = allowedTools
// 会话统计卡片
const stats = getSystemStats()
// 发送飞书卡片
message({
action: 'send',
card: {
title: '协调器状态',
content: `模式: ${stats.state.mode}
Workers: ${stats.sessionStats.workersSpawned}
平均每会话: ${stats.sessionStats.avgWorkersPerSession}`
}
})
位置: memory/coordinator-state.json
{
"mode": "normal",
"sessionCount": 5,
"workersSpawned": 12,
"lastModeSwitch": null,
"workerTools": ["Bash", "Read", "Edit"],
"mcpClients": ["github", "filesystem"]
}
用户: 分析这个项目的架构问题
协调器:
启动 Worker 1: 研究目录结构
启动 Worker 2: 研究 API 设计
启动 Worker 3: 研究依赖关系
[等待 Worker 结果]
协调器: 综合发现,制定重构建议...
用户恢复上次会话
协调器检测 sessionMode = 'coordinator'
matchSessionMode('coordinator')
→ 自动切换到协调模式
Coordinator 配置:
workerTools: ['Bash', 'Read', 'Edit']
Worker 请求 Grep 工具:
isToolAvailableForWorker('Grep') → false
Worker 被限制为只读操作
- name: coordinator-stats
interval: 1h
prompt: "Check coordinator-state.json. If mode === 'coordinator', send Feishu card with worker stats and recent events"
export * as coordinator from './coordinator-service'
// 用法
import { coordinator } from './impl/utils'
coordinator.isCoordinatorMode()
coordinator.getCoordinatorSystemPrompt()
| 操作 | 预期耗时 | Ops/sec | |------|---------|---------| | isCoordinatorMode | < 0.01ms | 100M+ | | matchSessionMode | < 0.1ms | 10M+ | | getCoordinatorUserContext | < 1ms | 1M+ | | getCoordinatorSystemPrompt | < 2ms | 500K+ |
| 功能 | Claude Code | OpenClaw | 状态 | |------|-------------|----------|------| | isCoordinatorMode | env 检测 | env + config | ✅ | | matchSessionMode | env 切换 | env + state | ✅ | | Worker Tools | 13+ | 6+ | ⚠️ 简化 | | System Prompt | 400+ lines | 200+ lines | ⚠️ 简化 | | Scratchpad | 目录共享 | 配置项 | ⚠️ 待实现 |
sessions_spawn API生成时间: 2026-04-13 20:25 状态: Phase 9 实现完成 ✅
business
IAA 日报飞书输出能力。 支持把固定 CSV 模板一键转换成: - 中文运营结论 - 飞书卡片 JSON - 飞书发送载荷 Use when: - 需要把 IAA 日报直接发到飞书 - 需要从 CSV 一键生成运营日报
data-ai
IAA日报分析模型 功能: - 渠道日报自动分析 - 小时级+日级ROI联动判断 - 按地区输出加量/降量/停投建议 - 按产品类型输出阈值 - 自动识别利润区/观察区/止损区 Use when: - 分析每天投放数据 - 生成运营日报结论 - 判断是否加量/降量/停投 - 对比美加澳/日韩表现 Keywords: - 日报模型, 投放日报, 加量, 降量, 停投, ROI日报, 分地区分析
data-ai
IAA固定日报分析模板 功能: - 固定字段模板(可直接贴每天数据) - 自动输出总盘结论 - 自动输出美加澳/日韩结论 - 自动给出加量/降量/停投建议 - 适配文件修复/清理两类产品 Use when: - 需要固定日报格式 - 每天复盘渠道表现 - 给运营团队出统一结论 Keywords: - 固定模板, 日报模板, ROI模板, IAA日报, 运营模板
development
# HyperlinkPool Pattern Skill HyperlinkPool Pattern - HyperlinkPool class + strings array + stringMap + Index 0 no hyperlink + intern(hyperlink) + get(id) + undefined handling + 5-minute reset + OSC8 hyperlink interning。 ## 功能概述 从Claude Code的ink/screen.ts提取的HyperlinkPool模式,用于OpenClaw的OSC8超链接池管理。 ## 核心机制 ### HyperlinkPool Class ```typescript export class HyperlinkPool { private strings: string[] = [''] // Index 0 = no hyperlink private stringMap = new Map<string, number>() // strings