ashlr-workbench
Banco de trabajo de agente local que integra OpenHands, Goose, Aider y ashlrcode contra un LLM local, con servidores MCP ashlr-plugin preconfigurados.
Documentación
ashlr-workbench
Tu HQ local de agentes de codificación — cuatro agentes, un LLM local, diez servidores MCP, cero dependencias en la nube.
Qué es esto
Una caja de herramientas curada y totalmente local que conecta cuatro agentes de codificación de código abierto
(OpenHands, Goose, Aider, ashlrcode) con un solo modelo de LM Studio
(Qwen3-Coder-30B) y el mismo conjunto de diez servidores MCP de ashlr-plugin. El
workbench proporciona una CLI (aw), un healthcheck y una ruta de actualización para que todo el
conjunto se sienta cohesionado en lugar de cuatro herramientas sueltas que tienes que cuidar. Ningún
dato sale de la máquina a menos que optes por un fallback en la nube.
Inicio rápido
# 1. Clone the supporting plugin (provides the 10 MCP servers)
git clone https://github.com/ashlrai/ashlr-plugin ~/Desktop/ashlr-plugin
cd ~/Desktop/ashlr-plugin && bun install
# 2. Clone the workbench
git clone <this-repo-url> ~/Desktop/ashlr-workbench
cd ~/Desktop/ashlr-workbench
cp .env.example .env # then edit
# 3. Start LM Studio, load qwen/qwen3-coder-30b, click "Start Server"
# 4. Verify
./bin/aw doctor
# 5. Use
./bin/aw start aider # interactive session in cwd
./bin/aw start openhands # autonomous Docker-based agent
Para poner aw en tu PATH (revísalo primero):
ln -sf ~/Desktop/ashlr-workbench/bin/aw /usr/local/bin/aw
La alineación de agentes
| Agente | Forma | Mejor para | Costo |
|---|---|---|---|
| OpenHands | Daemon Docker + GUI | PRs autónomos de múltiples pasos, tareas con navegador | Memoria RAM alta |
| Goose | CLI nativa en Rust | Sesiones rápidas con uso de herramientas, bucle de aprobación inteligente | Ligero |
| Aider | CLI en Python | Refactorizaciones quirúrgicas archivo por archivo con diffs explícitos | Ligero |
| ashlrcode | CLI npm/Bun (de Mason) | Trabajo personal del día a día, consciente de hooks, fallback en la nube | Ligero |
Elige el que se ajuste a la forma del trabajo — consulta "Ejemplos de uso" más abajo.
Arquitectura
┌─────────────────────────────────────────────┐
│ ashlr-workbench │
│ │
│ bin/aw → scripts/{start,health,update} │
└─────────────────────────────────────────────┘
│
┌───────────────────┬───────┴────────┬──────────────────┐
▼ ▼ ▼ ▼
┌──────────┐ ┌────────┐ ┌────────┐ ┌──────────┐
│ OpenHands│ │ Goose │ │ Aider │ │ashlrcode │
│ (docker) │ │ (rust) │ │(python)│ │ (bun) │
└────┬─────┘ └───┬────┘ └───┬────┘ └────┬─────┘
│ │ │ │
└──────────────┬───┴────────────────┴───────────────────┘
│ same MCP surface
▼
┌─────────────────────────┐ ┌────────────────┐
│ ashlr-plugin (10 MCPs) │ ←── │ LM Studio │
│ efficiency / sql / │ │ Qwen3-Coder │
│ bash / tree / http / │ │ -30B :1234 │
│ diff / logs / genome / │ └────────────────┘
│ orient / github │
└─────────────────────────┘ ┌────────────────┐
│ Ollama :11434 │
│ (fallback) │
└────────────────┘
Los cuatro agentes hablan con el mismo LLM y las mismas herramientas MCP, por lo que el comportamiento es consistente sin importar cuál lances.
Requisitos
- macOS 14+ (Apple Silicon recomendado; Intel funciona pero es más lento)
- Docker Desktop — para OpenHands
- LM Studio con
qwen/qwen3-coder-30bcargado — LLM principal - Bun ≥ 1.1 — para los servidores MCP de ashlr-plugin y ashlrcode
- Python 3.12+ — para Aider
- Node ≥ 20 / npm — para
npm install -g ashlrcode - ~32 GB de RAM libre (Qwen3-Coder-30B en 4-bit necesita ~24 GB en vivo)
- ~30 GB de disco libre (imágenes de Docker + modelo)
- Opcional: Ollama como LLM de respaldo
- Opcional: CLI de
ghpara el PAT de GitHub (GITHUB_TOKEN="$(gh auth token)")
Instalación
# Plugin (provides the MCP servers all 4 agents share)
git clone https://github.com/ashlrai/ashlr-plugin ~/Desktop/ashlr-plugin
cd ~/Desktop/ashlr-plugin && bun install
# Workbench
git clone <this-repo-url> ~/Desktop/ashlr-workbench
cd ~/Desktop/ashlr-workbench
cp .env.example .env
# Per-agent installers (only run the ones you want)
./scripts/install-goose.sh # Goose via Homebrew
pipx install aider-chat # Aider (or: pip install --user aider-chat)
npm install -g ashlrcode # ashlrcode
# OpenHands needs no install — `aw start openhands` pulls the image on first run
Después de instalar, verifica:
./bin/aw doctor # actionable diagnosis
./bin/aw health # full 13-point check
Ejemplos de uso
| Escenario | Mejor agente | Comando |
|---|---|---|
| "Refactoriza el manejo de errores de este archivo" | Aider | aw start aider . |
| "Agrega pruebas, ejecútalas, corrige hasta que pasen — autónomo" | OpenHands | aw start openhands y luego prompt GUI |
| "Sesión interactiva rápida, mayormente llamadas a herramientas" | Goose | aw start goose |
| "Mi controlador habitual — hooks, memoria, rápido" | ashlrcode | aw start ashlrcode |
| "Abre un PR de principio a fin" | OpenHands | dale una URL de GitHub en la GUI |
| "Explica qué hace este código" | Goose | aw start goose → "orienta en el directorio actual" |
Configuración
Las configuraciones por agente viven en agents/:
agents/openhands/config.toml # OpenHands runtime settings
agents/openhands/mcp.json # MCP servers wired into OpenHands
agents/goose/config.yaml # Goose source-of-truth (copied to runtime on launch)
agents/aider/aider.conf.yml # Aider model + UX
agents/ashlrcode/settings.json # ashlrcode overlay (XAI primary, LM Studio fallback)
El entorno general del workbench vive en .env (ver .env.example).
Solución de problemas
| Síntoma | Arreglo |
|---|---|
aw start openhands dice que Docker no está en ejecución | Inicia Docker Desktop, espera el ícono de ballena, reintenta |
| LM Studio "endpoint no responde" | Abre LM Studio → Developer → Start Server, carga el modelo |
| El servidor MCP falla al iniciar en cualquier agente | cd ~/Desktop/ashlr-plugin && bun install |
| La GUI de OpenHands carga pero el agente falla en el primer turno | Confirma que qwen/qwen3-coder-30b es el modelo cargado |
aider no se encuentra después de la instalación | pipx ensurepath o agrega ~/.local/bin al PATH |
ashlrcode se queja de XAI_API_KEY | Establécelo en .env o ejecuta con fallback de LM Studio |
Para cualquier otra cosa, ejecuta aw doctor — imprime el arreglo exacto para cada problema
que detecta.
Contribución / Extensión
Para agregar un nuevo agente:
- Crea
agents/<name>/con el/los archivo(s) de configuración del agente. - Crea
scripts/start-<name>.shque lo lance apuntando a la configuración del workbench y al endpoint de LM Studio. - (Si tiene un daemon) Crea
scripts/stop-<name>.sh. - Agrégalo a las declaraciones de
caseenbin/aw(require_agent,cmd_start,cmd_stop,cmd_status). - Agrega líneas de validación para su configuración en
scripts/healthcheck.sh. - Actualiza la tabla de alineación de agentes y el diagrama de arquitectura de este README.
Consulta CLAUDE.md para las convenciones de todo el proyecto.
Licencia
MIT — ver LICENSE.