← Back to Plugins
Tools

Progress

cybersentia By cybersentia 👁 138 views ▲ 0 votes

Feishu-first progress skill plugin for OpenClaw with real-time task status updates

GitHub

Configuration Example

{
  "plugins": {
    "enabled": true,
    "load": {
      "paths": ["/opt/openclaw-progress-skill"]
    },
    "allow": ["openclaw-progress-skill"],
    "entries": {
      "openclaw-progress-skill": {
        "enabled": true,
        "config": {
          "feishu": {
            "enabled": true,
            "appId": "cli_xxx",
            "appSecret": "xxx",
            "receiveIdType": "chat_id",
            "defaultConversationId": "oc_xxx",
            "timeoutMs": 10000
          },
          "throttle": {
            "minEmitIntervalMs": 1000,
            "heartbeatIntervalMs": 5000
          }
        }
      }
    }
  }
}

README

# OpenClaw Progress Skill

[中文文档 / Chinese Documentation](./README.zh-CN.md)

`openclaw-progress-skill` is a Feishu-first progress plugin for OpenClaw.

It helps users see **what the agent is doing right now** during long-running runs by:
- emitting structured progress events,
- aggregating run state,
- and updating a single message card in chat clients (Feishu first).

---

## What this plugin solves

Many users only see the final answer and cannot perceive intermediate execution steps.

This plugin adds visible progress checkpoints such as:
- tool call started
- tool call finished
- run completed / failed

So users no longer wait in a black box.

---

## Repository layout

- `progress-schema.ts`: unified progress event schema
- `progress-state.ts`: run state model
- `reducer.ts`: event → run state reducer
- `progress-hub.ts`: throttled dispatch hub
- `progress-adapter.ts`: adapter interface
- `web-adapter.ts`: Web adapter skeleton
- `feishu-adapter.ts`: Feishu card update adapter
- `feishu-publisher.ts`: Feishu HTTP publisher (token + send/update)
- `plugin.ts`: OpenClaw plugin entry (hook wiring)
- `openclaw.plugin.json`: plugin manifest and config schema

---

## Prerequisites

1. A deployed OpenClaw gateway
2. Feishu app credentials:
   - `appId`
   - `appSecret`
3. A target Feishu conversation id (`chat_id` by default)

---

## Install and load

### 1) Clone plugin repository

```bash
git clone https://github.com/cybersentia/openclaw-progress-skill.git /opt/openclaw-progress-skill
```

### 2) Configure OpenClaw to load this plugin

Add this into your OpenClaw config (example):

```json
{
  "plugins": {
    "enabled": true,
    "load": {
      "paths": ["/opt/openclaw-progress-skill"]
    },
    "allow": ["openclaw-progress-skill"],
    "entries": {
      "openclaw-progress-skill": {
        "enabled": true,
        "config": {
          "feishu": {
            "enabled": true,
            "appId": "cli_xxx",
            "appSecret": "xxx",
            "receiveIdType": "chat_id",
            "defaultConversationId": "oc_xxx",
            "timeoutMs": 10000
          },
          "throttle": {
            "minEmitIntervalMs": 1000,
            "heartbeatIntervalMs": 5000
          }
        }
      }
    }
  }
}
```

### 3) Restart OpenClaw gateway

Restart your deployed OpenClaw gateway so plugin discovery reloads.

---

## Current hook coverage

From `plugin.ts`, the plugin currently maps these typed hooks:
- `message_received` (captures session→conversation route)
- `before_tool_call` (emits `tool_start`)
- `after_tool_call` (emits `tool_end` or `failed`)
- `agent_end` (emits `completed` or `failed`)

This already gives strong user-visible progress with zero OpenClaw core code changes.

---

## Feishu behavior

For each run:
1. first event sends one interactive card,
2. next events update the same message,
3. final state is rendered when run ends.

This minimizes message spam and keeps progress readable.

---

## Security notes

- Do **not** hardcode secrets into source files.
- Store `appSecret` in secure config/secrets management.
- Restrict plugin allowlist in OpenClaw config.

---

## Limitations and next steps

Current implementation focuses on high-value checkpoints (tool + final).

If you need finer granularity (e.g., model resolve / prompt build), extend hook mapping or emit more lifecycle events.

Potential next steps:
- add Slack/Telegram adapters
- richer phase timeline in card UI
- per-channel routing strategy

---

## License

MIT
tools

Comments

Sign in to leave a comment

Loading comments...