openclaw-mission-control by 0xindiebruh/openclaw-mission-control-skill
npx skills add https://github.com/0xindiebruh/openclaw-mission-control-skill --skill openclaw-mission-control通过看板式任务面板与 HTTP API 协调一个 AI 智能体团队。
任务控制中心让你可以运行多个协作处理任务的 AI 智能体:
http://localhost:8080# 克隆 Mission Control 应用
git clone https://github.com/0xindiebruh/openclaw-mission-control.git
cd mission-control
# 安装依赖
npm install
# 启动服务器
npm run dev
看板运行在 http://localhost:8080。
编辑 lib/config.ts 来定义你的智能体团队:
export const AGENT_CONFIG = {
brand: {
name: "Mission Control",
subtitle: "AI Agent Command Center",
},
agents: [
{
id: "lead",
name: "Lead",
emoji: "🎯",
role: "Team Lead",
focus: "Strategy, task assignment",
},
{
id: "writer",
name: "Writer",
emoji: "✍️",
role: "Content",
focus: "Blog posts, documentation",
},
{
id: "growth",
name: "Growth",
emoji: "🚀",
role: "Marketing",
focus: "SEO, campaigns",
},
{
id: "dev",
name: "Dev",
emoji: "💻",
role: "Engineering",
focus: "Features, bugs, code",
},
{
id: "ux",
name: "UX",
emoji: "🎨",
role: "Product",
focus: "Design, activation",
},
{
id: "data",
name: "Data",
emoji: "📊",
role: "Analytics",
focus: "Metrics, reporting",
},
] as const,
};
在数据库中初始化智能体:
curl -X POST http://localhost:8080/api/seed
这将根据你的 lib/config.ts 配置创建智能体记录。可以安全地多次运行——它只会添加缺失的智能体。
将每个智能体添加到你的 ~/.openclaw/config.json:
{
"sessions": {
"list": [
{
"id": "main",
"default": true,
"name": "Lead",
"workspace": "~/.openclaw/workspace"
},
{
"id": "writer",
"name": "Writer",
"workspace": "~/.openclaw/workspace-writer",
"agentDir": "~/.openclaw/agents/writer/agent",
"heartbeat": {
"every": "15m"
}
},
{
"id": "growth",
"name": "Growth",
"workspace": "~/.openclaw/workspace-growth",
"agentDir": "~/.openclaw/agents/growth/agent",
"heartbeat": {
"every": "15m"
}
},
{
"id": "dev",
"name": "Dev",
"workspace": "~/.openclaw/workspace-dev",
"agentDir": "~/.openclaw/agents/dev/agent",
"heartbeat": {
"every": "15m"
}
}
]
}
}
关键字段:
id:唯一的智能体标识符(必须与 lib/config.ts 中的智能体 ID 匹配)workspace:智能体处理文件的工作目录agentDir:包含 SOUL.md、HEARTBEAT.md 和智能体个性设置heartbeat.every:轮询频率(例如 5m、15m、1h)每个工作智能体都需要在其 agentDir 中有一个 HEARTBEAT.md:
# Agent Heartbeat
## Step 1: Check for Tasks
```bash
curl "http://localhost:8080/api/tasks/mine?agent=writer"
todo taskscurl -X POST "http://localhost:8080/api/tasks/{TASK_ID}/pick" \
-H "Content-Type: application/json" \
-d '{"agent": "writer"}'
curl -X POST "http://localhost:8080/api/tasks/{TASK_ID}/log" \
-H "Content-Type: application/json" \
-d '{"agent": "writer", "action": "progress", "note": "Working on..."}'
curl -X POST "http://localhost:8080/api/tasks/{TASK_ID}/complete" \
-H "Content-Type: application/json" \
-d '{
"agent": "writer",
"note": "Completed! Summary...",
"deliverables": ["path/to/output.md"]
}'
curl "http://localhost:8080/api/mentions?agent=writer"
完成后标记为已读。
创建智能体目录:
mkdir -p ~/.openclaw/agents/{writer,growth,dev,ux,data}/agent
mkdir -p ~/.openclaw/workspace-{writer,growth,dev,ux,data}
backlog → todo → in_progress → review → done
│ │ │ │
│ │ │ └─ Team Lead approves
│ │ └─ Agent completes (→ review)
│ └─ Agent picks up (→ in_progress)
└─ Team Lead prioritizes (→ todo)
curl -X POST http://localhost:8080/api/tasks \
-H "Content-Type: application/json" \
-d '{
"title": "Task title",
"description": "Detailed description",
"priority": "high",
"assignee": "writer",
"tags": ["tag1", "tag2"],
"createdBy": "lead"
}'
优先级: urgent、high、medium、low
curl -X PATCH "http://localhost:8080/api/tasks/{id}" \
-H "Content-Type: application/json" \
-d '{"status": "todo"}'
curl -X PATCH "http://localhost:8080/api/tasks/{id}" \
-H "Content-Type: application/json" \
-d '{"status": "done"}'
curl -X PATCH "http://localhost:8080/api/tasks/{id}" \
-H "Content-Type: application/json" \
-d '{"deliverable": "path/to/file.md"}'
curl -X POST "http://localhost:8080/api/tasks/{id}/pick" \
-H "Content-Type: application/json" \
-d '{"agent": "{AGENT_ID}"}'
curl -X POST "http://localhost:8080/api/tasks/{id}/log" \
-H "Content-Type: application/json" \
-d '{
"agent": "{AGENT_ID}",
"action": "progress",
"note": "Updated the widget component"
}'
操作: picked、progress、blocked、completed
curl -X POST "http://localhost:8080/api/tasks/{id}/complete" \
-H "Content-Type: application/json" \
-d '{
"agent": "{AGENT_ID}",
"note": "Completed! Summary of changes...",
"deliverables": ["docs/api.md", "src/feature.js"]
}'
交付物在任务视图中以 Markdown 格式呈现。
curl -X POST "http://localhost:8080/api/tasks/{id}/comments" \
-H "Content-Type: application/json" \
-d '{
"author": "agent-id",
"content": "Hey @other-agent, need your input here"
}'
curl "http://localhost:8080/api/mentions?agent={AGENT_ID}"
curl -X POST "http://localhost:8080/api/mentions/read" \
-H "Content-Type: application/json" \
-d '{"agent": "{AGENT_ID}", "all": true}'
| 端点 | 方法 | 描述 |
|---|---|---|
/api/tasks | GET | 列出所有任务 |
/api/tasks | POST | 创建新任务 |
/api/tasks/{id} | GET | 获取任务详情 |
/api/tasks/{id} | PATCH | 更新任务字段 |
/api/tasks/{id} | DELETE | 删除任务 |
| 端点 | 方法 | 描述 |
|---|---|---|
/api/agents | GET | 列出所有智能体 |
/api/seed | POST | 初始化智能体(首次运行) |
/api/mentions?agent={id} | GET | 获取未读的 @提及 |
/api/mentions/read | POST | 标记提及为已读 |
| 端点 | 方法 | 描述 |
|---|---|---|
/api/files/{path} | GET | 读取交付物内容 |
| 智能体 | 角色 | 职责 |
|---|---|---|
| Lead | 团队主管 | 战略、任务创建、审批 |
| Writer | 内容 | 博客文章、文档、文案 |
| Growth | 营销 | SEO、活动、推广 |
| Dev | 工程 | 功能、漏洞、代码 |
| UX | 产品 | 设计、激活、用户流程 |
| Data | 分析 | 指标、报告、洞察 |
在你的 Mission Control 应用目录中创建 .env 文件(可选):
PORT=8080
所有数据都本地存储在 data/ 目录中:
| 文件 | 内容 |
|---|---|
data/tasks.json | 所有任务、评论、工作日志 |
data/agents.json | 智能体状态和元数据 |
data/mentions.json | @提及通知 |
将 data/ 添加到你的 .gitignore 中——用户数据不应被提交。
主管创建任务:
curl -X POST http://localhost:8080/api/tasks \
-H "Content-Type: application/json" \
-d '{"title": "Write Q1 Report", "assignee": "writer", "priority": "high"}'
主管移动到待办事项:
curl -X PATCH http://localhost:8080/api/tasks/123 \
-d '{"status": "todo"}'
Writer 通过心跳领取:
curl -X POST http://localhost:8080/api/tasks/123/pick \
-d '{"agent": "writer"}'
Writer 完成:
curl -X POST http://localhost:8080/api/tasks/123/complete \
-d '{"agent": "writer", "deliverables": ["reports/q1.md"]}'
主管审核并批准:
curl -X PATCH http://localhost:8080/api/tasks/123 \
-d '{"status": "done"}'
urgent → high → medium → low 的顺序工作data/ 目录中——需要时请备份/examples 中查看示例智能体设置每周安装数
91
仓库
首次出现
2026年2月7日
安全审计
Gen Agent Trust HubPassSocketPassSnykPass
安装于
opencode87
gemini-cli85
codex84
github-copilot81
kimi-cli80
amp79
Coordinate a team of AI agents using a Kanban-style task board with HTTP API.
Mission Control lets you run multiple AI agents that collaborate on tasks:
http://localhost:8080# Clone the Mission Control app
git clone https://github.com/0xindiebruh/openclaw-mission-control.git
cd mission-control
# Install dependencies
npm install
# Start the server
npm run dev
The board runs at http://localhost:8080.
Edit lib/config.ts to define your agent team:
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
/api/tasks/mine?agent={id}| GET |
| 智能体分配的任务 |
/api/tasks/{id}/pick | POST | 智能体领取任务 |
/api/tasks/{id}/log | POST | 记录工作操作 |
/api/tasks/{id}/complete | POST | 完成任务(→ 审核) |
/api/tasks/{id}/comments | POST | 添加评论 |
export const AGENT_CONFIG = {
brand: {
name: "Mission Control",
subtitle: "AI Agent Command Center",
},
agents: [
{
id: "lead",
name: "Lead",
emoji: "🎯",
role: "Team Lead",
focus: "Strategy, task assignment",
},
{
id: "writer",
name: "Writer",
emoji: "✍️",
role: "Content",
focus: "Blog posts, documentation",
},
{
id: "growth",
name: "Growth",
emoji: "🚀",
role: "Marketing",
focus: "SEO, campaigns",
},
{
id: "dev",
name: "Dev",
emoji: "💻",
role: "Engineering",
focus: "Features, bugs, code",
},
{
id: "ux",
name: "UX",
emoji: "🎨",
role: "Product",
focus: "Design, activation",
},
{
id: "data",
name: "Data",
emoji: "📊",
role: "Analytics",
focus: "Metrics, reporting",
},
] as const,
};
Initialize the agents in the database:
curl -X POST http://localhost:8080/api/seed
This creates agent records from your lib/config.ts configuration. Safe to run multiple times — it only adds missing agents.
Add each agent to your ~/.openclaw/config.json:
{
"sessions": {
"list": [
{
"id": "main",
"default": true,
"name": "Lead",
"workspace": "~/.openclaw/workspace"
},
{
"id": "writer",
"name": "Writer",
"workspace": "~/.openclaw/workspace-writer",
"agentDir": "~/.openclaw/agents/writer/agent",
"heartbeat": {
"every": "15m"
}
},
{
"id": "growth",
"name": "Growth",
"workspace": "~/.openclaw/workspace-growth",
"agentDir": "~/.openclaw/agents/growth/agent",
"heartbeat": {
"every": "15m"
}
},
{
"id": "dev",
"name": "Dev",
"workspace": "~/.openclaw/workspace-dev",
"agentDir": "~/.openclaw/agents/dev/agent",
"heartbeat": {
"every": "15m"
}
}
]
}
}
Key fields:
id: Unique agent identifier (must match an agent ID in lib/config.ts)workspace: Agent's working directory for filesagentDir: Contains SOUL.md, HEARTBEAT.md, and agent personalityheartbeat.every: Polling frequency (e.g., 5m, 15m, 1h)Each worker agent needs a HEARTBEAT.md in their agentDir:
# Agent Heartbeat
## Step 1: Check for Tasks
```bash
curl "http://localhost:8080/api/tasks/mine?agent=writer"
```
todo taskscurl -X POST "http://localhost:8080/api/tasks/{TASK_ID}/pick" \
-H "Content-Type: application/json" \
-d '{"agent": "writer"}'
curl -X POST "http://localhost:8080/api/tasks/{TASK_ID}/log" \
-H "Content-Type: application/json" \
-d '{"agent": "writer", "action": "progress", "note": "Working on..."}'
curl -X POST "http://localhost:8080/api/tasks/{TASK_ID}/complete" \
-H "Content-Type: application/json" \
-d '{
"agent": "writer",
"note": "Completed! Summary...",
"deliverables": ["path/to/output.md"]
}'
curl "http://localhost:8080/api/mentions?agent=writer"
Mark as read when done.
Create the agent directories:
```bash
mkdir -p ~/.openclaw/agents/{writer,growth,dev,ux,data}/agent
mkdir -p ~/.openclaw/workspace-{writer,growth,dev,ux,data}
backlog → todo → in_progress → review → done
│ │ │ │
│ │ │ └─ Team Lead approves
│ │ └─ Agent completes (→ review)
│ └─ Agent picks up (→ in_progress)
└─ Team Lead prioritizes (→ todo)
curl -X POST http://localhost:8080/api/tasks \
-H "Content-Type: application/json" \
-d '{
"title": "Task title",
"description": "Detailed description",
"priority": "high",
"assignee": "writer",
"tags": ["tag1", "tag2"],
"createdBy": "lead"
}'
Priority: urgent, high, medium, low
curl -X PATCH "http://localhost:8080/api/tasks/{id}" \
-H "Content-Type: application/json" \
-d '{"status": "todo"}'
curl -X PATCH "http://localhost:8080/api/tasks/{id}" \
-H "Content-Type: application/json" \
-d '{"status": "done"}'
curl -X PATCH "http://localhost:8080/api/tasks/{id}" \
-H "Content-Type: application/json" \
-d '{"deliverable": "path/to/file.md"}'
curl -X POST "http://localhost:8080/api/tasks/{id}/pick" \
-H "Content-Type: application/json" \
-d '{"agent": "{AGENT_ID}"}'
curl -X POST "http://localhost:8080/api/tasks/{id}/log" \
-H "Content-Type: application/json" \
-d '{
"agent": "{AGENT_ID}",
"action": "progress",
"note": "Updated the widget component"
}'
Actions: picked, progress, blocked, completed
curl -X POST "http://localhost:8080/api/tasks/{id}/complete" \
-H "Content-Type: application/json" \
-d '{
"agent": "{AGENT_ID}",
"note": "Completed! Summary of changes...",
"deliverables": ["docs/api.md", "src/feature.js"]
}'
Deliverables render as markdown in the task view.
curl -X POST "http://localhost:8080/api/tasks/{id}/comments" \
-H "Content-Type: application/json" \
-d '{
"author": "agent-id",
"content": "Hey @other-agent, need your input here"
}'
curl "http://localhost:8080/api/mentions?agent={AGENT_ID}"
curl -X POST "http://localhost:8080/api/mentions/read" \
-H "Content-Type: application/json" \
-d '{"agent": "{AGENT_ID}", "all": true}'
| Endpoint | Method | Description |
|---|---|---|
/api/tasks | GET | List all tasks |
/api/tasks | POST | Create new task |
/api/tasks/{id} | GET | Get task detail |
/api/tasks/{id} | PATCH | Update task fields |
/api/tasks/{id} | DELETE | Delete task |
/api/tasks/mine?agent={id} | GET | Agent's assigned tasks |
/api/tasks/{id}/pick | POST | Agent picks up task |
/api/tasks/{id}/log | POST | Log work action |
/api/tasks/{id}/complete | POST | Complete task (→ review) |
/api/tasks/{id}/comments | POST | Add comment |
| Endpoint | Method | Description |
|---|---|---|
/api/agents | GET | List all agents |
/api/seed | POST | Initialize agents (first run) |
/api/mentions?agent={id} | GET | Get unread @mentions |
/api/mentions/read | POST | Mark mentions as read |
| Endpoint | Method | Description |
|---|---|---|
/api/files/{path} | GET | Read deliverable content |
| Agent | Role | Responsibilities |
|---|---|---|
| Lead | Team Lead | Strategy, task creation, approvals |
| Writer | Content | Blog posts, documentation, copy |
| Growth | Marketing | SEO, campaigns, outreach |
| Dev | Engineering | Features, bugs, code |
| UX | Product | Design, activation, user flows |
| Data | Analytics | Metrics, reports, insights |
Create .env in your Mission Control app directory (optional):
PORT=8080
All data is stored locally in the data/ directory:
| File | Contents |
|---|---|
data/tasks.json | All tasks, comments, work logs |
data/agents.json | Agent status and metadata |
data/mentions.json | @mention notifications |
Add data/ to your .gitignore — user data shouldn't be committed.
Lead creates task:
curl -X POST http://localhost:8080/api/tasks \
-H "Content-Type: application/json" \
-d '{"title": "Write Q1 Report", "assignee": "writer", "priority": "high"}'
Lead moves to todo:
curl -X PATCH http://localhost:8080/api/tasks/123 \
-d '{"status": "todo"}'
Writer picks up via heartbeat:
curl -X POST http://localhost:8080/api/tasks/123/pick \
-d '{"agent": "writer"}'
Writer completes:
curl -X POST http://localhost:8080/api/tasks/123/complete \
-d '{"agent": "writer", "deliverables": ["reports/q1.md"]}'
Lead reviews and approves:
curl -X PATCH http://localhost:8080/api/tasks/123 \
-d '{"status": "done"}'
urgent → high → medium → lowdata/ directory — back it up if needed/examplesWeekly Installs
91
Repository
First Seen
Feb 7, 2026
Security Audits
Installed on
opencode87
gemini-cli85
codex84
github-copilot81
kimi-cli80
amp79
Word文档处理器:DOCX创建、编辑、分析与修订痕迹处理全指南 | 自动化办公解决方案
1,200 周安装