feat: update README to include new DevClaw logo and adjust formatting
This commit is contained in:
42
README.md
42
README.md
@@ -1,9 +1,9 @@
|
|||||||
# DevClaw
|
<p align="left">
|
||||||
|
<img src="assets/DevClaw.png" width="300" alt="DevClaw Logo">
|
||||||
<p align="center">
|
|
||||||
<img src="assets/logo.jpg" width="300" alt="DevClaw Logo">
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
# DevClaw
|
||||||
|
|
||||||
**Every group chat becomes an autonomous development team.**
|
**Every group chat becomes an autonomous development team.**
|
||||||
|
|
||||||
Add the agent to a Telegram/WhatsApp group, point it at a GitLab/GitHub repo — that group now has an **orchestrator** managing the backlog, a **DEV** worker session writing code, and a **QA** worker session reviewing it. All autonomous. Add another group, get another team. Each project runs in complete isolation with its own task queue, workers, and session state.
|
Add the agent to a Telegram/WhatsApp group, point it at a GitLab/GitHub repo — that group now has an **orchestrator** managing the backlog, a **DEV** worker session writing code, and a **QA** worker session reviewing it. All autonomous. Add another group, get another team. Each project runs in complete isolation with its own task queue, workers, and session state.
|
||||||
@@ -27,7 +27,7 @@ DevClaw gives the orchestrator seven tools that replace hundreds of lines of man
|
|||||||
DevClaw uses a developer seniority model. Each tier maps to a configurable LLM model:
|
DevClaw uses a developer seniority model. Each tier maps to a configurable LLM model:
|
||||||
|
|
||||||
| Tier | Role | Default model | Assigns to |
|
| Tier | Role | Default model | Assigns to |
|
||||||
|------|------|---------------|------------|
|
| ---------- | ------------------- | ----------------------------- | ------------------------------------------------- |
|
||||||
| **junior** | Junior developer | `anthropic/claude-haiku-4-5` | Typos, single-file fixes, simple changes |
|
| **junior** | Junior developer | `anthropic/claude-haiku-4-5` | Typos, single-file fixes, simple changes |
|
||||||
| **medior** | Mid-level developer | `anthropic/claude-sonnet-4-5` | Features, bug fixes, multi-file changes |
|
| **medior** | Mid-level developer | `anthropic/claude-sonnet-4-5` | Features, bug fixes, multi-file changes |
|
||||||
| **senior** | Senior developer | `anthropic/claude-opus-4-5` | Architecture, migrations, system-wide refactoring |
|
| **senior** | Senior developer | `anthropic/claude-opus-4-5` | Architecture, migrations, system-wide refactoring |
|
||||||
@@ -110,6 +110,7 @@ Workers (DEV/QA sub-agent sessions) call `task_complete` directly when they fini
|
|||||||
### Auto-chaining
|
### Auto-chaining
|
||||||
|
|
||||||
When a project has `autoChain: true`, `task_complete` automatically dispatches the next step:
|
When a project has `autoChain: true`, `task_complete` automatically dispatches the next step:
|
||||||
|
|
||||||
- **DEV "done"** → QA is dispatched immediately (using the qa tier)
|
- **DEV "done"** → QA is dispatched immediately (using the qa tier)
|
||||||
- **QA "fail"** → DEV fix is dispatched immediately (reuses previous DEV tier)
|
- **QA "fail"** → DEV fix is dispatched immediately (reuses previous DEV tier)
|
||||||
- **QA "pass" / "refine"** → no chaining (pipeline done or needs human input)
|
- **QA "pass" / "refine"** → no chaining (pipeline done or needs human input)
|
||||||
@@ -146,7 +147,7 @@ The orchestrator LLM evaluates each issue's title, description, and labels to as
|
|||||||
The keyword heuristic in `model-selector.ts` serves as a **fallback only**, used when the orchestrator omits the `model` parameter.
|
The keyword heuristic in `model-selector.ts` serves as a **fallback only**, used when the orchestrator omits the `model` parameter.
|
||||||
|
|
||||||
| Tier | Role | When |
|
| Tier | Role | When |
|
||||||
|------|------|------|
|
| ------ | ------------------- | ----------------------------------------------------------- |
|
||||||
| junior | Junior developer | Typos, CSS, renames, copy changes |
|
| junior | Junior developer | Typos, CSS, renames, copy changes |
|
||||||
| medior | Mid-level developer | Features, bug fixes, multi-file changes |
|
| medior | Mid-level developer | Features, bug fixes, multi-file changes |
|
||||||
| senior | Senior developer | Architecture, migrations, security, system-wide refactoring |
|
| senior | Senior developer | Architecture, migrations, security, system-wide refactoring |
|
||||||
@@ -189,6 +190,7 @@ All project state lives in a single `memory/projects.json` file in the orchestra
|
|||||||
```
|
```
|
||||||
|
|
||||||
Key design decisions:
|
Key design decisions:
|
||||||
|
|
||||||
- **Session-per-tier** — each tier gets its own worker session, accumulating context independently. Tier selection maps directly to a session key.
|
- **Session-per-tier** — each tier gets its own worker session, accumulating context independently. Tier selection maps directly to a session key.
|
||||||
- **Sessions preserved on completion** — when a worker completes a task, `sessions` map is **preserved** (only `active` and `issueId` are cleared). This enables session reuse on the next pickup.
|
- **Sessions preserved on completion** — when a worker completes a task, `sessions` map is **preserved** (only `active` and `issueId` are cleared). This enables session reuse on the next pickup.
|
||||||
- **Plugin-controlled dispatch** — the plugin creates and dispatches to sessions via OpenClaw CLI (`sessions.patch` + `openclaw agent`). The orchestrator agent never calls `sessions_spawn` or `sessions_send`.
|
- **Plugin-controlled dispatch** — the plugin creates and dispatches to sessions via OpenClaw CLI (`sessions.patch` + `openclaw agent`). The orchestrator agent never calls `sessions_spawn` or `sessions_send`.
|
||||||
@@ -203,6 +205,7 @@ All writes go through atomic temp-file-then-rename to prevent corruption.
|
|||||||
Set up DevClaw in an agent's workspace. Creates AGENTS.md, HEARTBEAT.md, role templates, and configures models. Can optionally create a new agent.
|
Set up DevClaw in an agent's workspace. Creates AGENTS.md, HEARTBEAT.md, role templates, and configures models. Can optionally create a new agent.
|
||||||
|
|
||||||
**Parameters:**
|
**Parameters:**
|
||||||
|
|
||||||
- `newAgentName` (string, optional) — Create a new agent with this name
|
- `newAgentName` (string, optional) — Create a new agent with this name
|
||||||
- `models` (object, optional) — Model overrides per tier: `{ junior, medior, senior, qa }`
|
- `models` (object, optional) — Model overrides per tier: `{ junior, medior, senior, qa }`
|
||||||
|
|
||||||
@@ -211,12 +214,14 @@ Set up DevClaw in an agent's workspace. Creates AGENTS.md, HEARTBEAT.md, role te
|
|||||||
Pick up a task from the issue queue for a DEV or QA worker.
|
Pick up a task from the issue queue for a DEV or QA worker.
|
||||||
|
|
||||||
**Parameters:**
|
**Parameters:**
|
||||||
|
|
||||||
- `issueId` (number, required) — Issue ID
|
- `issueId` (number, required) — Issue ID
|
||||||
- `role` ("dev" | "qa", required) — Worker role
|
- `role` ("dev" | "qa", required) — Worker role
|
||||||
- `projectGroupId` (string, required) — Telegram group ID
|
- `projectGroupId` (string, required) — Telegram group ID
|
||||||
- `model` (string, optional) — Developer tier (junior, medior, senior, qa). The orchestrator should evaluate the task complexity and choose. Falls back to keyword heuristic if omitted.
|
- `model` (string, optional) — Developer tier (junior, medior, senior, qa). The orchestrator should evaluate the task complexity and choose. Falls back to keyword heuristic if omitted.
|
||||||
|
|
||||||
**What it does atomically:**
|
**What it does atomically:**
|
||||||
|
|
||||||
1. Resolves project from `projects.json`
|
1. Resolves project from `projects.json`
|
||||||
2. Validates no active worker for this role
|
2. Validates no active worker for this role
|
||||||
3. Fetches issue from issue tracker, verifies correct label state
|
3. Fetches issue from issue tracker, verifies correct label state
|
||||||
@@ -235,12 +240,14 @@ Pick up a task from the issue queue for a DEV or QA worker.
|
|||||||
Complete a task with one of four results. Called by workers (DEV/QA sub-agent sessions) directly, or by the orchestrator.
|
Complete a task with one of four results. Called by workers (DEV/QA sub-agent sessions) directly, or by the orchestrator.
|
||||||
|
|
||||||
**Parameters:**
|
**Parameters:**
|
||||||
|
|
||||||
- `role` ("dev" | "qa", required)
|
- `role` ("dev" | "qa", required)
|
||||||
- `result` ("done" | "pass" | "fail" | "refine", required)
|
- `result` ("done" | "pass" | "fail" | "refine", required)
|
||||||
- `projectGroupId` (string, required)
|
- `projectGroupId` (string, required)
|
||||||
- `summary` (string, optional) — For the Telegram announcement
|
- `summary` (string, optional) — For the Telegram announcement
|
||||||
|
|
||||||
**Results:**
|
**Results:**
|
||||||
|
|
||||||
- **DEV "done"** — Pulls latest code, moves label `Doing` → `To Test`, deactivates worker. If `autoChain` enabled, automatically dispatches QA.
|
- **DEV "done"** — Pulls latest code, moves label `Doing` → `To Test`, deactivates worker. If `autoChain` enabled, automatically dispatches QA.
|
||||||
- **QA "pass"** — Moves label `Testing` → `Done`, closes issue, deactivates worker
|
- **QA "pass"** — Moves label `Testing` → `Done`, closes issue, deactivates worker
|
||||||
- **QA "fail"** — Moves label `Testing` → `To Improve`, reopens issue. If `autoChain` enabled, automatically dispatches DEV fix (reuses previous DEV tier).
|
- **QA "fail"** — Moves label `Testing` → `To Improve`, reopens issue. If `autoChain` enabled, automatically dispatches DEV fix (reuses previous DEV tier).
|
||||||
@@ -251,6 +258,7 @@ Complete a task with one of four results. Called by workers (DEV/QA sub-agent se
|
|||||||
Create a new issue in the project's issue tracker. Used by workers to file follow-up bugs, or by the orchestrator to create tasks from chat.
|
Create a new issue in the project's issue tracker. Used by workers to file follow-up bugs, or by the orchestrator to create tasks from chat.
|
||||||
|
|
||||||
**Parameters:**
|
**Parameters:**
|
||||||
|
|
||||||
- `projectGroupId` (string, required) — Telegram group ID
|
- `projectGroupId` (string, required) — Telegram group ID
|
||||||
- `title` (string, required) — Issue title
|
- `title` (string, required) — Issue title
|
||||||
- `description` (string, optional) — Full issue body in markdown
|
- `description` (string, optional) — Full issue body in markdown
|
||||||
@@ -263,6 +271,7 @@ Create a new issue in the project's issue tracker. Used by workers to file follo
|
|||||||
Returns task queue counts and worker status across all projects (or a specific one).
|
Returns task queue counts and worker status across all projects (or a specific one).
|
||||||
|
|
||||||
**Parameters:**
|
**Parameters:**
|
||||||
|
|
||||||
- `projectGroupId` (string, optional) — Omit for all projects
|
- `projectGroupId` (string, optional) — Omit for all projects
|
||||||
|
|
||||||
### `session_health`
|
### `session_health`
|
||||||
@@ -270,13 +279,16 @@ Returns task queue counts and worker status across all projects (or a specific o
|
|||||||
Detects and optionally fixes state inconsistencies.
|
Detects and optionally fixes state inconsistencies.
|
||||||
|
|
||||||
**Parameters:**
|
**Parameters:**
|
||||||
|
|
||||||
- `autoFix` (boolean, optional) — Auto-fix zombies and stale state
|
- `autoFix` (boolean, optional) — Auto-fix zombies and stale state
|
||||||
|
|
||||||
**What it does:**
|
**What it does:**
|
||||||
|
|
||||||
- Queries live sessions via Gateway RPC (`sessions.list`)
|
- Queries live sessions via Gateway RPC (`sessions.list`)
|
||||||
- Cross-references with `projects.json` worker state
|
- Cross-references with `projects.json` worker state
|
||||||
|
|
||||||
**Checks:**
|
**Checks:**
|
||||||
|
|
||||||
- Active worker with no session key (critical)
|
- Active worker with no session key (critical)
|
||||||
- Active worker whose session is dead — zombie (critical)
|
- Active worker whose session is dead — zombie (critical)
|
||||||
- Worker active for >2 hours (warning)
|
- Worker active for >2 hours (warning)
|
||||||
@@ -287,6 +299,7 @@ Detects and optionally fixes state inconsistencies.
|
|||||||
Register a new project with DevClaw. Creates all required issue tracker labels (idempotent), scaffolds role instruction files, and adds the project to `projects.json`. One-time setup per project. Auto-detects GitHub/GitLab from git remote.
|
Register a new project with DevClaw. Creates all required issue tracker labels (idempotent), scaffolds role instruction files, and adds the project to `projects.json`. One-time setup per project. Auto-detects GitHub/GitLab from git remote.
|
||||||
|
|
||||||
**Parameters:**
|
**Parameters:**
|
||||||
|
|
||||||
- `projectGroupId` (string, required) — Telegram group ID (key in projects.json)
|
- `projectGroupId` (string, required) — Telegram group ID (key in projects.json)
|
||||||
- `name` (string, required) — Short project name
|
- `name` (string, required) — Short project name
|
||||||
- `repo` (string, required) — Path to git repo (e.g. `~/git/my-project`)
|
- `repo` (string, required) — Path to git repo (e.g. `~/git/my-project`)
|
||||||
@@ -296,6 +309,7 @@ Register a new project with DevClaw. Creates all required issue tracker labels (
|
|||||||
- `deployUrl` (string, optional) — Deployment URL
|
- `deployUrl` (string, optional) — Deployment URL
|
||||||
|
|
||||||
**What it does atomically:**
|
**What it does atomically:**
|
||||||
|
|
||||||
1. Validates project not already registered
|
1. Validates project not already registered
|
||||||
2. Resolves repo path, auto-detects GitHub/GitLab, and verifies access
|
2. Resolves repo path, auto-detects GitHub/GitLab, and verifies access
|
||||||
3. Creates all 8 state labels (idempotent — safe to run on existing projects)
|
3. Creates all 8 state labels (idempotent — safe to run on existing projects)
|
||||||
@@ -357,12 +371,22 @@ Restrict tools to your orchestrator agent only:
|
|||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"agents": {
|
"agents": {
|
||||||
"list": [{
|
"list": [
|
||||||
|
{
|
||||||
"id": "my-orchestrator",
|
"id": "my-orchestrator",
|
||||||
"tools": {
|
"tools": {
|
||||||
"allow": ["devclaw_setup", "task_pickup", "task_complete", "task_create", "queue_status", "session_health", "project_register"]
|
"allow": [
|
||||||
|
"devclaw_setup",
|
||||||
|
"task_pickup",
|
||||||
|
"task_complete",
|
||||||
|
"task_create",
|
||||||
|
"queue_status",
|
||||||
|
"session_health",
|
||||||
|
"project_register"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}]
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
BIN
assets/DevClaw.png
Normal file
BIN
assets/DevClaw.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
Reference in New Issue
Block a user