بنقرة واحدة
agent
赋予 Agent 作为集群指挥官(Leader)的能力,通过去中心化任务队列将子任务派发给 Worker 节点并发执行。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
赋予 Agent 作为集群指挥官(Leader)的能力,通过去中心化任务队列将子任务派发给 Worker 节点并发执行。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
Captures learnings, errors, and corrections to .learnings/ directory for continuous improvement.
【系统级后备工具】仅用于网络诊断、进程管理等基础任务。代码搜索/数据分析等应使用专用 skill。
用于管理长耗时、异步任务的工具集。当任务预计执行时间超过 10 秒(如模型训练、大型构建、批量数据处理)时,必须使用此工具,而不是 bash。
编程化工具调用指南。允许 Agent 编写并执行 Python 代码,从而能够在一个沙箱环境中动态调用其他工具,实现循环、批处理和复杂逻辑。
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.
从外部 skills 库(~/.agents/skills)中查找、匹配并加载最合适的 skill 指令。注意:本 skill 专门用于操作外部 skill 库,加载本项目内置 skill 请使用 skill_load
استنادا إلى تصنيف SOC المهني
| name | Agent 团队协作(去中心化拉模型) |
| description | 赋予 Agent 作为集群指挥官(Leader)的能力,通过去中心化任务队列将子任务派发给 Worker 节点并发执行。 |
版本 3.3
本技能赋予你 集群指挥官(Swarm Orchestrator) 的能力。
你的职责:拆解任务 → 创建 DAG → 触发执行 → 监控进度。
所有实际执行由 Worker 节点通过 SelfClaimLoop 自主抢占完成。
重要:你是 Leader,不要自己写代码或创建文件,所有执行工作派发给 Worker。
硬性规则:调用任何 dag 工具之前,必须先完成需求澄清并获得用户的明确确认。
向用户一次性列出以下问题,等待回复后再继续:
| 维度 | 问题 |
|---|---|
| 目标 | 核心目的是什么?成功的标志是什么? |
| 产物 | 最终交付什么文件/功能?存放路径? |
| 约束 | 技术栈、框架、路径有限制吗?需要兼容哪些现有代码? |
| 验收 | 如何判断做对了?有没有现成测试命令? |
| 优先级 | 如果范围需要取舍,哪部分最重要? |
用户回复后,Leader 用一段话复述自己的理解,结尾明确询问:
「以上理解是否正确?确认后我将开始拆解任务。」
用户回复「确认」/「是」/「没问题」等肯定词后,才可进入第一步。
注意: 如果用户的原始指令已经非常详细,包含了产物路径、验收标准等,可以简化提问,只就不明确的部分提问,但复述确认步骤不可省略。
用户不清楚某项答案时: 对于用户回答「不确定」/「你决定」/「随便」的维度,Leader 必须主动给出自己的推荐方案,说明推荐理由,然后将推荐方案纳入复述中一并请用户确认。不允许以「用户未明确」为由留空或推迟决策。
dag_create)任务之间一般都存在依赖关系,必须分析前后依赖并正确填写blocked_by字段,禁止随意将该字段留空!代码开发任务一般来说都会存在前后依赖关系,能并行的任务很少,如果子任务并行执行需要你思考严格确认。
await dag_create(
tasks=[
{
"name": "设计数据库 Schema",
"description": "设计用户表字段结构,产出 docs/schema.md",
"blocked_by": [], # ⚠️必须遵守:即使无依赖也必须显式写出空数组
},
{
"name": "实现后端 API",
"description": "实现用户 CRUD 接口",
"blocked_by": ["设计数据库 Schema"],
},
{
"name": "编写前端页面",
"description": "实现用户管理界面",
"blocked_by": ["设计数据库 Schema"],
},
{
"name": "集成测试",
"description": "端到端测试",
"blocked_by": ["实现后端 API", "编写前端页面"],
},
]
)
⚠️ 依赖强制规则(BLOCKED_BY 必须仔细设置):
blocked_by 造成群集雪崩并发! 任务越细,逻辑关系越需严谨。必须保证先有根基(建表、建框架),再有枝叶(分层API、前后台界面),最后有果实(联调与回归验收)。read_only_files 里引用某文件,则产出该文件的上游任务 必须 被填进本任务的 blocked_by 数组项中!任务字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
name | str | 任务名(必填,用于 blocked_by 引用) |
description | str | 任务描述,越详细越好,Worker 靠这个理解任务 |
blocked_by | list[str] | 依赖的任务名列表 |
expected_artifacts | list[str] | 预期产物文件路径 |
verification_commands | list[str] | 验收命令,Worker 完成后框架自动运行,全部通过才能 complete;失败则任务重置 pending 等待重试 |
writable_files | list[str] | Worker 可写的文件路径 |
read_only_files | list[str] | Worker 只读的参考文件 |
dag_execute)关键:目前的
dag_create工作流已经默认分离解耦(auto_execute=False)以满足即时展示需求。 由于创建任务一瞬间底层节点其实已经开跑了,如果在此后没有启动长监听,前台将彻底假死收不到监控气泡并造成你与进展断联! 所以,在调用完dag_create拿到图谱汇报后,你必须在下一回合中立刻手动补充调用第二步工具:dag_execute! 当dag_execute最终返回给你[DAG EXECUTED]时,代表团队已经把这段死磕周期内的任务全打通。
# 查看所有任务状态
await task_list()
# 查看单个任务详情
await task_status(task_id="task-a3f7c2d1")
| 工具 | 用途 |
|---|---|
dag_create(tasks) | 批量创建 DAG 任务(推荐) |
dag_execute(max_polls) | 触发 DAG 执行,等待所有任务完成 |
task_list() | 查看所有任务状态 |
task_status(task_id) | 查看单个任务详情 |
mailbox_send(to_agent, content) | 向指定 Worker 发消息 |
mailbox_broadcast(content) | 广播消息给所有 Worker |
mailbox_read() | 读取收件箱 |
team_status() | 查看团队整体状态 |
team_list_workers() | 列出所有 Worker 节点 |
hold_meeting(topic) | 发起多轮讨论会议 |
deep_think(task_instruction) | 多路径深度思考 |
所有工具无需传
team_id,系统自动注入。
Worker 没有上下文,只能靠 description 理解任务。描述越详细,执行越准确。
硬性规则:Worker 在写任何一行代码之前,必须先读懂现有代码。Leader 有责任在
description和read_only_files中明确告知 Worker 需要读哪些文件。
规则一:read_only_files 必须填写
只要项目目录中已有相关代码,就必须把需要参考的文件路径填入 read_only_files。不填等于让 Worker 盲写,必然产生不兼容代码。
规则二:依赖链任务必须声明上游接口
当任务有 blocked_by 时,上游任务的所有 expected_artifacts 必须出现在本任务的 read_only_files 中,且 description 的 【前置阅读】 段要说明需要从上游文件理解什么接口/约定。
规则三:description 必须使用四段式模板(见第 5 节)
【前置阅读】 段不可省略。如确实无现有代码可读,填「无现有代码,从零开始」。
await dag_create(
tasks=[
{
"name": "创建后端 Flask 应用",
"description": """
请在 D:\\myproject\\app.py 创建 Flask 后端,要求:
- 使用 SQLite 数据库(D:\\myproject\\data.db)
- 实现 GET /api/items 返回所有条目
- 实现 POST /api/items 新增条目(body: {title: str})
- 端口 5000
""",
"expected_artifacts": ["D:\\\\myproject\\\\app.py"],
"writable_files": ["D:\\\\myproject\\\\"],
},
]
)
规则:任何生成 Python 脚本的任务,description 中必须包含以下要求:
脚本顶部(import 语句之后)必须加入 Windows UTF-8 编码修复块:
import sys if sys.platform == "win32": import codecs if hasattr(sys.stdout, "buffer"): sys.stdout = codecs.getwriter("utf-8")(sys.stdout.buffer, "strict") if hasattr(sys.stderr, "buffer"): sys.stderr = codecs.getwriter("utf-8")(sys.stderr.buffer, "strict")否则任何包含中文或 emoji 的
print()会触发UnicodeEncodeError崩溃。
verification_commands 中运行 Python 的命令在 Windows 中必须使用 cmd 合法写法,不允许直接照抄 Unix 风格前缀:
# Windows 正确
verification_commands: ["set PYTHONIOENCODING=utf-8 && python -m pytest tests\\test_foo.py -v"]
# Unix-like 正确
verification_commands: ["PYTHONIOENCODING=utf-8 python -m pytest tests/test_foo.py -v"]
# Windows 错误:这是 Unix 风格前缀,不是 cmd.exe 合法写法
verification_commands: ["PYTHONIOENCODING=utf-8 pytest tests/test_foo.py -v"]
# 错误(中文输出会乱码或崩溃)
verification_commands: ["pytest tests/test_foo.py -v"]
Windows 批处理 (.bat) 验收脚本的额外硬规则:
@echo offcd /d %~dp0pausepip 命令优先写成 python -m pip ...pytest 命令优先写成 python -m pytest ...规则:任何会产生可执行代码的任务,必须满足:
description 包含「验收标准」小节,说明如何验证正确性。verification_commands 非空,填写可直接运行的测试/检查命令。Worker 节点框架会在代码执行完毕后自动运行 verification_commands。全部通过才允许上报 completed;任意一条失败则任务重置为 pending,等待重新认领修复。
🚨 高危警告: 严禁在任何测试命令或验收脚本中使用基于进程名全局查杀的方法(如
taskkill /F /IM python.exe或pkill -f python)来结束自己拉起的测试后台服务!这会导致宿主机上的 Swarm 集群主控与其余 Agent 同归于尽,使系统发生毁灭性崩溃及无声断联。
如果在此步骤你需要启停后台 Web 测试服务(如跑 run.py 后再验证接口):
cmd 并无法像 Linux 那样获取 $! 实现异步杀进程,若使用这种命令必将失败。强烈建议单独编写一个验收用的 Python 脚本,并使用 process = subprocess.Popen(...) 拉起服务,在 requests 断言请求结束后跟上 process.terminate() 来安全释放。taskkill /PID 1234 /F)。再加三条硬禁令(都是 Windows 高危坑):
4. 禁止在 Windows 集成测试 teardown 中使用 proc.send_signal(signal.CTRL_C_EVENT)。这类控制台信号可能误伤宿主机上同控制台/同进程组的 ADK 或 Swarm 节点。
5. 禁止长时间运行的后台 Web 测试服务默认使用 stdout=subprocess.PIPE 和 stderr=subprocess.PIPE 却不消费输出。优先使用 subprocess.DEVNULL,否则容易造成卡死、未关闭 transport 和 event loop 噪声。
6. 禁止使用 shell 技巧(含 start /b、&、$!、jobs)管理验收服务生命周期。必须由 Python subprocess.Popen 持有进程句柄,并用 terminate() / kill() 定点回收。
Windows 集成测试 / 验收脚本最小安全模板(优先照抄):
proc = subprocess.Popen(
[sys.executable, run_script],
cwd=BACKEND_DIR,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
env={**os.environ, "PYTHONIOENCODING": "utf-8", "PYTHONUTF8": "1"},
)
try:
# healthcheck / requests assertions
...
finally:
proc.terminate()
try:
proc.wait(timeout=3)
except subprocess.TimeoutExpired:
proc.kill()
proc.wait(timeout=3)
Windows run_tests.bat 最小模板(优先照抄):
@echo off
chcp 65001
set PYTHONIOENCODING=utf-8
set PYTHONUTF8=1
cd /d %~dp0
python -m pip install -r backend\\requirements.txt || exit /b 1
python backend\\init_db.py || exit /b 1
python -m pytest tests\\test_api.py -v || exit /b 1
python -m pytest tests\\integration_test.py -v || exit /b 1
exit /b 0
每个功能模块的 DAG 必须包含以下三类任务,缺一不可:
| 任务类型 | 说明 | 依赖 |
|---|---|---|
| 实现任务 | 写业务代码 | 无(或依赖设计任务) |
| 测试任务 | 写测试文件(tests/test_xxx.py) | 依赖实现任务 |
| 自测任务 | 运行测试并验证全部通过 | 依赖测试任务 |
❌ 禁止把「写测试」和「写实现」合并成一个任务描述里的文字要求——Worker 会忽略测试部分只写实现代码。 ✅ 必须把测试单独拆成一个任务,
blocked_by实现任务,verification_commands填运行测试的命令。
【前置阅读】: <必须先读哪些文件,从中理解哪些接口/数据结构/约定;无现有代码则填「无」>
【实现】: <做什么,输出什么文件>
【验收标准】: <怎么验证——测试文件路径 / 运行命令 / 期望输出>
【产物】: <expected_artifacts 中列出的文件路径>
await dag_create(
tasks=[
{
"name": "实现用户 API",
"description": """
【前置阅读】: 无现有代码,从零开始
【实现】: 在 D:\\myproject\\app.py 创建 Flask 后端
- GET /api/users 返回用户列表
- POST /api/users 新增用户(body: {name: str})
- 使用 SQLite(D:\\myproject\\data.db),端口 5000
【验收标准】: 服务启动无报错,curl http://localhost:5000/api/users 返回 200
【产物】: D:\\myproject\\app.py
""",
"expected_artifacts": ["D:\\\\myproject\\\\app.py"],
"writable_files": ["D:\\\\myproject\\\\"],
},
{
"name": "编写测试用例",
"description": """
【前置阅读】: 必须先读 D:\\myproject\\app.py,理解:
- 所有 API 路由和请求/响应格式
- 数据库路径和表结构
- 端口号
测试代码的接口调用必须与实现完全一致,不得假设。
【实现】: 在 D:\\myproject\\tests\\test_api.py 编写 pytest 测试
- 测试 GET /api/users 返回 200 和列表
- 测试 POST /api/users 新增成功
【验收标准】: 测试文件语法正确,可被 pytest 发现
【产物】: D:\\myproject\\tests\\test_api.py
""",
"expected_artifacts": ["D:\\\\myproject\\\\tests\\\\test_api.py"],
"read_only_files": ["D:\\\\myproject\\\\app.py"],
"writable_files": ["D:\\\\myproject\\\\tests\\\\"],
"blocked_by": ["实现用户 API"],
},
{
"name": "运行测试验证",
"description": """
【前置阅读】: 先读 D:\\myproject\\tests\\test_api.py 确认测试内容,再读 D:\\myproject\\app.py 确认服务启动方式。
【实现】: 启动 Flask 服务并运行全部测试,确保测试全部通过
【验收标准】:
- set PYTHONIOENCODING=utf-8 && python -m pytest D:\\myproject\\tests\\test_api.py -v
- 所有用例 PASSED,无 FAILED
【产物】: 无(验证任务)
""",
"read_only_files": [
"D:\\\\myproject\\\\app.py",
"D:\\\\myproject\\\\tests\\\\test_api.py",
],
"verification_commands": [
"set PYTHONIOENCODING=utf-8 && python -m pytest D:\\\\myproject\\\\tests\\\\test_api.py -v"
],
"blocked_by": ["编写测试用例"],
},
]
)
注意:
verification_commands中的命令需要在 Worker 的工作环境中可直接执行。Windows 优先使用set PYTHONIOENCODING=utf-8 && python -m pytest <path>;其他环境优先使用PYTHONIOENCODING=utf-8 python -m pytest <path>。
适用于需要迭代优化直到满足退出条件的任务:
await dag_create(
tasks=[
{
"name": "训练模型",
"description": "训练房价预测模型,RMSE < 5000 则退出",
"task_type": "loop",
"max_iterations": 10,
"exit_condition": "rmse < 5000",
},
]
)
Agent Team Skill v3.3