Skill: liuyh17/openclaw-coe (version 1.0.0)

--- name: openclaw-coe description: OpenClaw 原生执行链（Chain of Execution, CoE）技能。让 OpenClaw 在处理复杂任务时，实时分步输出执行过程：拆解问题 → 选择 skill → 调用 skill → 调用模型 → 等待响应 → 拿到结果 → 最终汇总，完全贴合 OpenClaw 实际运行流程，让用户清楚看到每一步在做什么。 version: 1.0.0 author: 刘跃华 / OpenClaw community triggers: - "执行链" - "分步执行" - "chain-of-execution" - "coe" - "一步一步" - "过程" metadata: {"openclaw":{"emoji":"🔗","requires":{"bins":[],"env":[]}}} --- # OpenClaw CoE (Chain of Execution) OpenClaw 原生执行链追踪技能。让 OpenClaw 在处理复杂任务时，**实时分步输出执行过程**，完全贴合 OpenClaw 实际运行流程——"大模型提议 → 安全审批 → 龙虾执行"，每一步都同步给用户。 ## 工作原理 这不是给大模型加 prompt 的"思维链"，而是 **OpenClaw 系统层面** 的执行过程同步： 1. **拆解问题**：收到复杂任务，先拆解成子任务，告诉用户 2. **选择 skill**：说明选哪个 skill / 哪个模型，为什么这么选 3. **调用 skill**：报告正在调用哪个 skill 4. **调用模型**：说明用哪个模型，大概做什么 5. **等待响应**：如果在等外部 API / 网页抓取，提前告诉用户"正在等响应，不会卡住" 6. **拿到结果**：报告 skill / 模型返回了什么 7. **思考推理**：给出推理过程，排除错误选项 8. **警告/错误**：出问题提前说，不会闷着卡住 9. **最终完成**：整合所有步骤，给出最终答案 ## 使用方式 ### 自动触发 当用户提问包含"分步"、"一步一步"、"执行过程"等关键词，自动启用 CoE。 ### 手动启用 在会话中说"启用 openclaw-coe"，后续任务都会走执行链流程。说"关闭 openclaw-coe"关闭。 ### API 调用 其他 skill 可以导入这个模块，手动触发分步输出： ```python from skills.openclaw-coe.cot_tracker import CoETracker tracker = CoETracker() tracker.start("任务标题") tracker.step("拆解问题", "把问题拆成三个子步骤...") tracker.step("选择skill", "使用 wechat-article 提取文章...") tracker.wait() # 等待外部响应 tracker.result("提取成功，获得 X 字符原文") tracker.done("最终结论：...") ``` ## 设计原则 - **低资源消耗**：只是输出过程文本，不额外调用大模型，token 消耗几乎为零 - **不改变原有逻辑**：只是在原有执行流程上加一层输出，不影响任何现有 skill 和模型 - **完全兼容**：所有现有 skill 都可以配合 CoE 使用，其他 skill 可以直接导入 - **贴合实际**：完全对齐 OpenClaw "大模型提议 → 安全审批 → 龙虾执行" 架构，每一步都对得上 - **提前预警**：遇到等待外部响应或者可能卡住的情况，提前告诉用户，不会闷着 - **简洁输出**：不说废话，每一步几句话讲清楚 ## 配置 不需要环境变量或 API key，纯原生 skill。

path: README.md
content: # OpenClaw CoE (Chain of Execution)

OpenClaw 原生执行链追踪技能。让 OpenClaw 在处理复杂任务时，**实时分步输出执行过程**，完全贴合 OpenClaw 原生架构「大模型提议 → 安全审批 → 龙虾执行」。

## 效果

🚀  开始处理任务：搞不懂Skills？看看Claude Code内部工程师们怎么玩

🔍  拆解问题：提取这篇公众号文章，总结Claude Code工程师实战经验

⚖️  选择skill：用 wechat-article 提取文章全文

🔧  调用skill：正在抓取文章内容...

⏳  网页提取需要几秒，正在等待...

📊  提取完成，一共 7383 字正文

🧠  分析整理：提炼工程师实战经验，总结成可复用要点

✅  完成

**核心经验总结**

1.  不要一次给太多内容 —— 把大任务拆成小步骤，做完一步再走下一步，不容易出错

2.  善用Skills —— 不用自己粘贴代码，直接让它read文件，你只说清楚要改什么就行

3.  放手让它自己干 —— 复杂任务开agent模式，它自己找文件、改代码、跑测试，你只负责最后验收

4.  说清楚优先级 —— 哪些必须做、哪些可以砍掉，避免做无用功

5.  方向不确定先问再做 —— 想清楚再动手，少返工

6.  读新项目找它帮忙 —— 新接手代码库，直接让它帮你梳理整体架构，比自己闷头找文件快多了

---

**一句话总结**：你当产品经理，它当工程师 —— 你想清楚需求，它动手干活，最后你来验收。

## 设计思想

这不是给大模型加prompt的"思维链"，而是 **OpenClaw 系统层面** 的执行过程同步：

- 拆解问题 → 告诉用户你怎么切分任务
- 选择工具 → 告诉用户你为什么选这个skill/模型
- 调用工具 → 明确说现在正在调用什么
- 等待响应 → 卡住之前先打招呼，不会让用户瞎等
- 报告结果 → 告诉用户拿到了什么
- 思考推理 → 说说你为什么这么决策
- 警告错误 → 出问题提前说，不会闷着
- 总结完成 → 最后给结果

### 核心价值

1.  **解决真实痛点**：用户经常不知道"现在到底在干嘛"，复杂任务要等外部响应，提前说一声就不会觉得卡住
2.  **完全贴合架构**：正好对上 OpenClaw "大模型提议 → 安全审批 → 龙虾执行" 这套哲学，只是把过程透明化
3.  **零额外成本**：不调用大模型，不消耗token，就是输出几行文字
4.  **完全兼容**：所有现有skill都能用，其他skill可以直接导入这个tracker
5.  **社区价值**：这是OpenClaw架构下第一个系统级执行追踪skill，给其他skill开发者打好基础

## 使用

### 在会话中启用

```
openclaw-coe enable
```

### 停用

```
openclaw-coe disable
```

### 其他skill 复用

```python
from skills.openclaw-coe.cot_tracker import CoETracker

tracker = CoETracker()
tracker.start("你的任务标题")
tracker.step("拆解问题", "拆成这几个步骤...")
tracker.step("选择skill", "选择 XX skill")
tracker.wait() # 告诉用户在等外部响应
tracker.result("拿到结果：...")
tracker.done("最终结论：...")
```

## 配置

不需要 API key，不需要额外依赖，纯原生OpenClaw skill。

## 作者

- 灵感来源于 DeepSeek CoT 思路，适配 OpenClaw 架构
- 刘跃华 / OpenClaw community

## License

MIT


path: cot_tracker.py
content: #!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
OpenClaw Chain of Execution (CoE)
- 实时追踪并输出OpenClaw执行过程
- 低资源消耗，只是打印执行步骤，不额外调用大模型
- 贴合 OpenClaw 实际运行流程：拆解 → 选择 → 调用 → 等待 → 结果 → 汇总
"""

from dataclasses import dataclass
from typing import List, Optional
import sys

@dataclass
class CoEStep:
    """Single step in the Chain of Execution"""
    step_type: str  # "拆解", "选择skill", "调用skill", "调用模型", "等待", "结果", "思考", "决策", "错误", "警告", "完成"
    content: str
    has_result: bool = False


class CoETracker:
    """
    Chain of Execution Tracker for OpenClaw

    Usage:
        tracker = CoETracker()
        tracker.start("分析 GTC 2026 Groq 架构")
        tracker.step("拆解问题", "把问题拆成三个部分：架构设计 / 能效对比 / 商业逻辑")
        tracker.step("选择skill", "使用 wechat-article 提取原文")
        tracker.wait() # 等待外部响应
        tracker.result("提取成功，获得 10K+ 字符原文")
        tracker.step("思考", "Groq 核心优势在确定性高带宽，命中 Agent Decoding 瓶颈")
        tracker.done("最终结论：...")
    """

    def __init__(self, enabled: bool = True, verbose: bool = True):
        self.enabled = enabled
        self.verbose = verbose
        self.steps: List[CoEStep] = []
        self._emoji_map = {
            "拆解": "🔍",
            "选择skill": "⚖️",
            "调用skill": "🔧",
            "调用模型": "🤖",
            "等待": "⏳",
            "结果": "📊",
            "思考": "🧠",
            "决策": "🤔",
            "错误": "❌",
            "警告": "⚠️",
            "完成": "✅",
            "info": "ℹ️",
        }

    def _print_step(self, emoji: str, content: str):
        """Print a step, clean line breaks for feishu"""
        if not self.enabled:
            return
        # 每个步骤单独换行，格式干净
        print(f"\n{emoji}  {content}")
        sys.stdout.flush()

    def start(self, task_title: str):
        """Start tracking a new task"""
        if not self.enabled:
            return
        self.steps.clear()
        self._print_step("🚀", f"开始处理任务：{task_title}")

    def step(self, step_type: str, content: str):
        """Add a step to the chain"""
        if not self.enabled:
            return
        emoji = self._emoji_map.get(step_type, "•")
        self.steps.append(CoEStep(step_type, content))
        self._print_step(emoji, content)

    def wait(self, content: str = "正在等待外部响应..."):
        """Indicate we're waiting for an external response (API/skill/...)"""
        self.step("等待", content)

    def result(self, content: str):
        """Report result from skill/model call"""
        self.step("结果", content)

    def error(self, content: str):
        """Report an error/status, warn user before getting stuck"""
        self.step("错误", content)

    def warn(self, content: str):
        """Warning about potential issue"""
        self.step("警告", content)

    def done(self, summary: str):
        """Complete the task and output summary"""
        if not self.enabled:
            return
        # 总结单独空一行，好看一点
        print(f"\n✅  完成\n\n{summary}")
        sys.stdout.flush()

    def is_enabled(self) -> bool:
        """Check if CoE is enabled"""
        return self.enabled

    def set_enabled(self, enabled: bool):
        """Enable/disable CoE output"""
        self.enabled = enabled

    def get_steps(self) -> List[CoEStep]:
        """Get all steps collected so far"""
        return self.steps.copy()

    def total_steps(self) -> int:
        """Get number of steps"""
        return len(self.steps)


path: main.py
content: #!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Main entry point for openclaw-coe skill
"""

import sys
from cot_tracker import CoETracker

def main():
    """Main function"""
    # Check if we're being called to enable/disable
    args = sys.argv[1:] if len(sys.argv) > 1 else []
    
    if len(args) == 0:
        print("OpenClaw CoE (Chain of Execution) Skill")
        print("")
        print("Usage:")
        print("  python main.py enable  - Enable CoE for current session")
        print("  python main.py disable - Disable CoE for current session")
        print("  python main.py status  - Show current status")
        return

    cmd = args[0].lower()
    if cmd == "enable":
        print("✅ OpenClaw CoE 已启用，接下来的任务会分步输出执行过程")
        # Note: Session-level enable is handled by the agent
        return
    elif cmd == "disable":
        print("✅ OpenClaw CoE 已禁用")
        return
    elif cmd == "status":
        print("ℹ️  OpenClaw CoE 已安装，可以用 'enable' 开启")
        return
    else:
        print(f"❓ Unknown command: {cmd}")
        return

if __name__ == "__main__":
    main()


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)