Install
openclaw skills install skill-orchestration-coreSkill 编排核心 - 上下文管理、流程编排、质量保证(Python 实现)
openclaw skills install skill-orchestration-core轻量级的 skill 编排系统,专注于上下文管理、流程编排和质量保证。 v2.1.0: 新增 4 个实用工作流模板(示例/Web全栈/数据分析/API产品),基于 DESIGN.md 的流程编排,集成 Hermes delegate_task 真正执行 skill。
cp -r templates/web-fullstack /path/to/my-projectpython3 scripts/workflow_orchestrator.py parse DESIGN.mdvalidate-all 全部通过,auto-fix 自动补全缺失文件python3 scripts/test_e2e.py 一键验证全部脚本协同工作管理 skill 之间的上下文传递和共享。
{
"project": {
"name": "my-project",
"path": "/path/to/project",
"description": "项目描述"
},
"state": {
"currentSkill": "test-driven-development",
"progress": 40.0,
"completedSkills": ["writing-plans"],
"startTime": "2026-06-10T20:00:00"
},
"data": {
"plan": "计划内容...",
"requirements": "需求内容..."
},
"config": {
"contextCompression": true,
"maxContextSize": 100000
}
}
from context_manager import ContextManager
ctx = ContextManager("/path/to/project")
ctx.load()
# 保存/获取数据
ctx.set("plan", plan_content)
value = ctx.get("plan")
# 传递给下一个 skill
ctx.pass_to("test-driven-development")
# 标记完成
ctx.mark_skill_completed("writing-plans")
print(ctx.is_skill_completed("writing-plans")) # True
# 压缩/恢复
compressed = ctx.compress()
ctx.restore(compressed)
# 保存到文件
ctx.save()
上下文保存在项目目录的 .orchestration/context.json,带文件锁防止并发写冲突。
python scripts/context_manager.py show [project_path]
python scripts/context_manager.py status [project_path]
python scripts/context_manager.py set <key> <value> [project_path]
python scripts/context_manager.py get <key> [project_path]
python scripts/context_manager.py complete <skill_name> [project_path]
python scripts/context_manager.py clear [project_path]
基于 DESIGN.md 的流程编排,集成 Hermes delegate_task 真正执行 skill。
---
name: my-project
description: 项目描述
version: 1.0.0
---
## 工作流程
### 阶段 1: 需求分析
**使用的 Skills**:
- writing-plans
**任务**:
- 分析需求
- 编写用户故事
**输出**:
- requirements.md
### Stage 2: Development
**Skills**:
- test-driven-development
**Tasks**:
- Write tests
- Implement features
**Outputs**:
- src/
- tests/
中英文兼容: 阶段标题支持
### 阶段 N:和### Stage N:两种格式。
执行工作流时,编排器会为每个阶段生成 [ORCHESTRATE] 指令,供 Hermes agent 通过 delegate_task 调度:
[ORCHESTRATE] 阶段 1: 需求分析
[ORCHESTRATE] → 执行 skill: writing-plans
[ORCHESTRATE] delegate_task goal: "使用 writing-plans skill 完成阶段 1(需求分析)的任务"
[ORCHESTRATE] delegate_task context: "项目路径=/path/to/project, 任务列表=[...], 期望输出=[...]"
[CONTEXT] writing-plans 输入: [requirements.md]
[CONTEXT] writing-plans 输出: [IMPLEMENTATION.md]
[CONTEXT] writing-plans → test-driven-development
[VALIDATE] writing-plans 验证规则: {...}
Hermes agent 读取这些指令后,调用 delegate_task 真正调度 skill 执行。
from workflow_orchestrator import WorkflowOrchestrator
orch = WorkflowOrchestrator("/path/to/DESIGN.md")
parsed = orch.parse_design()
orch.execute()
# 控制
orch.pause()
orch.resume()
orch.jump_to("开发")
# 检查点
orch.set_checkpoint("checkpoint-需求分析")
orch.restore_checkpoint("checkpoint-需求分析")
python scripts/workflow_orchestrator.py parse <DESIGN.md>
python scripts/workflow_orchestrator.py execute <DESIGN.md>
python scripts/workflow_orchestrator.py status <DESIGN.md>
python scripts/workflow_orchestrator.py checkpoint <DESIGN.md> <name>
python scripts/workflow_orchestrator.py restore <DESIGN.md> <name>
python scripts/workflow_orchestrator.py jump <DESIGN.md> <stage_name>
自动验证 skill 输出质量,真正读取项目文件做验证。
from output_validator import OutputValidator
validator = OutputValidator("/path/to/project")
# 从 DESIGN.md 加载规则
validator.load_from_design("/path/to/DESIGN.md")
# 验证单个 skill
result = validator.validate("writing-plans")
# result: {"valid": True/False, "errors": [...], "warnings": [...], "fixable": True/False}
# 验证所有
results = validator.validate_all()
# 自动修复
validator.auto_fix("writing-plans")
# 报告
report = validator.get_report()
python scripts/output_validator.py validate <skill> [project_path]
python scripts/output_validator.py validate-all [project_path]
python scripts/output_validator.py auto-fix <skill> [project_path]
python scripts/output_validator.py load-design <DESIGN.md>
python scripts/output_validator.py report
## 上下文传递
context:
writing-plans:
input: [requirements.md]
output: [IMPLEMENTATION.md]
pass_to: test-driven-development
test-driven-development:
input: IMPLEMENTATION.md
output: [tests/, src/]
pass_to: github-code-review
重要: 上下文传递的 YAML 内容不要用 ```yaml 代码块包裹,直接写在
## 上下文传递标题下即可。编排器会自动兼容两种格式。
## 质量验证
validation:
writing-plans:
required_sections: [overview, implementation, testing]
format: markdown
max_length: 10000
test-driven-development:
test_coverage: 80
expected_outputs: [tests/, src/]
## 状态管理
state:
checkpoints:
- name: requirements_complete
after: writing-plans
- name: tests_complete
after: test-driven-development
auto_save: true
save_interval: 300
skill-orchestration-core/
├── SKILL.md # Skill 文档
├── references/
│ └── workflow-orchestrator-regex-pitfalls.md
├── scripts/
│ ├── context_manager.py # 上下文管理
│ ├── workflow_orchestrator.py # 流程编排
│ ├── output_validator.py # 输出验证
│ └── test_e2e.py # 端到端测试
├── templates/
│ ├── README.md # 模板说明
│ ├── QUICKSTART.md # 快速入门
│ ├── example-project/ # 示例项目模板(4阶段)
│ ├── web-fullstack/ # Web全栈模板(5阶段)
│ ├── data-analysis/ # 数据分析模板(5阶段)
│ └── api-product/ # API产品模板(4阶段)
# 只传递必要的数据
ctx.set("plan", plan_content) # 好
ctx.set("everything", all_data) # 不好
# 使用有意义的键名
ctx.set("user_requirements", reqs) # 好
ctx.set("data", reqs) # 不好
# 定期清理不需要的数据
ctx.delete("temp_data")
# 明确每个阶段的输入输出
### 阶段 1: 需求分析
**使用的 Skills**:
- writing-plans
**任务**:
- 分析需求
**输出**:
- requirements.md
# 设置合理的验证规则
validator.add_rule("writing-plans", {
"required_sections": ["overview", "implementation"], # 合理
"max_length": 10000 # 合理
})
# 不要设置过于严格的规则
validator.add_rule("writing-plans", {
"required_sections": ["overview", "implementation", "testing", "deployment", "maintenance"], # 过于严格
"max_length": 100 # 过于严格
})
提供多种开箱即用的工作流模板,位于 templates/ 目录:
| 模板 | 路径 | 阶段数 | 适用场景 |
|---|---|---|---|
| 示例项目 | templates/example-project/ | 4 | 学习和测试编排系统 |
| Web 全栈 | templates/web-fullstack/ | 5 | React + FastAPI 全栈开发 |
| 数据分析 | templates/data-analysis/ | 5 | 数据采集/清洗/建模/报告 |
| API 产品 | templates/api-product/ | 4 | 免费 API 组合成商业产品 |
# 复制模板到你的项目
cp -r ~/.hermes/skills/devops/skill-orchestration-core/templates/web-fullstack /path/to/my-project
# 修改 DESIGN.md 适配你的项目
cd /path/to/my-project
# 编辑 DESIGN.md ...
# 解析验证
python3 ~/.hermes/skills/devops/skill-orchestration-core/scripts/workflow_orchestrator.py parse DESIGN.md
A: 使用上下文压缩:
ctx.context["config"]["contextCompression"] = True
ctx.context["config"]["maxContextSize"] = 50000
A: 使用检查点:
state:
checkpoints:
- name: requirements_complete
after: writing-plans
auto_save: true
A: 确保 YAML 内容不以 ```yaml 代码块包裹(编排器已兼容两种格式,但推荐裸写)。 同时注意 YAML 缩进必须一致,使用空格而非 Tab。
A: 编排器输出 [ORCHESTRATE] 指令后,Hermes agent 应读取这些指令,
通过 delegate_task 调度子 agent 执行对应的 skill。示例:
# Hermes agent 侧的编排逻辑
orch = WorkflowOrchestrator("DESIGN.md")
parsed = orch.parse_design()
for stage in parsed["workflow"]:
for skill_name in stage["skills"]:
# 通过 delegate_task 真正执行 skill
delegate_task(
goal=f"使用 {skill_name} skill 完成阶段 {stage['number']}({stage['name']})",
context=f"项目路径={project_path}, 任务={stage['tasks']}, 输出={stage['outputs']}",
toolsets=["terminal", "file", "web"]
)
### 阶段 N: 或 ### Stage N:,不支持其他格式checkpoint-阶段名 格式**使用的 Skills**:),正则必须用 \*{0,2} 包裹关键词,否则匹配失败导致 skills/tasks/outputs 全部为空列表。这是最常见的坑——直觉会写 (?:使用的\s*)?[Ss]kills?[::],但实际文本是 **使用的 Skills**:,星号捷足先登让正则完全失配STAGE_HEADING_REGEX 必须用 ([^\n]+) 在同一行捕获阶段名,再用 (.*?)(?=\n###|\n##|\Z) 捕获 rest-of-body。如果用 (.+?)(?=\n###|\n##|\Z) 把 name 和 body 混在一个组里,name 会吃进整个 body 文本直到下一个标题,导致阶段名变成 "需求分析\n\n使用的 Skills:..."scripts/test_e2e.py 验证三个脚本的协同工作——单脚本能导入不代表 parse 输出的 skills/tasks/outputs 非空workflow_orchestrator.py parse <DESIGN.md> 验证解析输出——阶段数、skills、tasks、outputs 必须非空。模板里用了加粗列表标题(**使用的 Skills**:)就触发陷阱 #7,不验不知道session_search 按关键词找到最近 session → 读尾部 TODO → 从最后一个未完成项继续。不要从头重做,也不要跳过验证步骤_extract_list 正则 bug,含根因分析和修复方案修改解析逻辑后,运行验证:
cd scripts && python3 test_e2e.py
验证内容:DESIGN.md 解析 → 上下文操作 → checkpoint/restore → 输出验证 → 状态查询。
web-fullstack(5阶段全栈开发)、data-analysis(5阶段数据分析)、api-product(4阶段API产品)[^\n]+,body 独立捕获)\*{0,2} 支持 **加粗**: Markdown 格式scripts/test_e2e.pyreferences/workflow-orchestrator-regex-pitfalls.mdStage N: 和中文 阶段 N: