moo-tasks
🐮 Moo Tasks
Агентный движок оркестрации и управления задачами, созданный для ИИ-агентов, которые пишут код (Claude Code, Cursor, Windsurf, Antigravity, Copilot), и для парного программирования с человеком в контуре (human-in-the-loop).
[Быстрый старт](#- quick-start) • [Настройка агента и MCP](#- agent--mcp-setup) • Архитектура • MCP-инструменты
🌟 Почему Moo Tasks?
Стандартные ИИ-агенты часто страдают от следующих проблем:
Расползание объёма: уход от исходного намерения пользователя в бесконечные малозначимые рефакторинги.
Перепланирование: создание 40 поверхностных задач без выполнения хотя бы одной из них.
Зацикливание / топтание на месте:повторение одной и той же неудачной попытки исправления по кругу без остановки.
Непроверяемая работа: заявление о завершённости кода без запуска тестов и без предоставления доказательств.
Повторное оспаривание решений: переобсуждение уже принятых архитектурных решений при каждом сбросе контекста.
Moo Tasks решает эту проблему, предоставляя локальный SQLite-движок (режим WAL), полнофункциональный веб-интерфейс в реальном времени и сервер Model Context Protocol (MCP), который обеспечивает соблюдение строгих корпоративных инвариантов в рантайме.
Related MCP server: agentloop
✨ Ключевые возможности и функциональная матрица
🎯 1. Цели и контроль объёма
Дословные промпты человека: находятся над задачами и сохраняют точный исходный запрос пользователя.
Покрытие цели и незакрытые задачи: живые метрики по проценту выполнения задач и по зависшим открытым задачам.
Обнаружение расползания объёма: автоматически находит и помечает задачи-сироты, не привязанные ни к одной цели.
Лимит открытых задач на цель: жёсткий предел максимального количества открытых задач на одну цель (по умолчанию: 10), который не даёт агентам перепланировать.
Каскадные операции: атомарно отменяет, останавливает или переоткрывает все задачи в рамках цели с обязательным указанием причин.
📋 2. Жизненный цикл задач и DAG-зависимости
Ограничение вложенности подзадач: ровно один уровень подзадач внутри родительской задачи.
Конечный автомат:
todo,doing,blocked-on-dependency,waiting-on-human,done,dropped.Граф зависимостей DAG: автоматическое обнаружение циклов и автоматическая разблокировка последующих задач.
Защита закрытия родителя: предотвращает закрытие родительской задачи, пока любая подзадача остаётся открытой.
Отмена и история статусов: откат случайных переходов состояния с помощью полной истории изменений.
🛡️ 3. Завершение, верификация и подтверждение работы
Критерии приёмки: обязательные критерии записываются в Markdown до начала работы.
Требование доказательств: закрытие задачи требует подтверждаемых доказательств (выполненные команды, вывод stdout, результаты тестов).
Двухфазная верификация: различает
agent_completedи подтверждение человекаverified_done.Отклонение с причиной: люди или другие агенты могут отклонить выполненную работу с обратной связью; задача возвращается в
todo, а счётчик переоткрытий увеличивается.
🙋 4. Взаимодействие с человеком и блокировки
Очередь ожидания человека: агенты ставят блокирующие задачи на паузу с прикреплёнными вопросами (
clarification,approval,credential,decision).Реактивное возобновление: ответ на вопрос через Web UI или MCP автоматически возвращает задачу в очередь готовности без перезапуска агента.
Отдельный инбокс человека: очередь в реальном времени для всего, что требует внимания человека.
🔍 5. Обнаруженная работа
Захват работы в середине задачи: фиксирует новую работу, обнаруженную на середине выполнения, не снимая захвата текущей задачи.
Обязательное исправление vs отложенное: помечается как
must-fix-now(вставляется как блокер) илиdeferred(в бэклог).
🤖 6. Владение, конкурентность и аренды
Эксклюзивный захват задач: аренда с автоматическим таймаутом (по умолчанию 5 минут), если агент замолчал.
Heartbeat-механизм: продление аренды на время выполнения долгих задач.
Лимит конкурентности агента: максимальное количество параллельных задач на одного агента (по умолчанию: 1).
Предупреждения о конфликтах файлов: заявленные файлы проверяются на пересечения с другими активными арендами.
🔄 7. Обнаружение застреваний и повторных циклов
Счётчик попыток: увеличивается при каждом захвате/попытке.
Автоматическая эскалация: после $N$ попыток (по умолчанию: 3) задача автоматически переводится в
waiting-on-humanвместо бесконечного цикла.Контроль времени в состоянии: аудит времени, проведённого в
doing, и обнаружение повторных переоткрытий.
🏛️ 8. Принятые архитектурные решения (ADR)
Запись уровня проекта: сохраняет решения и их обоснования, которые продолжают жить после завершения задач.
Консультация перед планированием: агенты читают принятые решения перед началом планирования.
Поддержка замены: обновляет и связывает заменённые решения с обязательным указанием причины.
🚀 Быстрый старт и установка
Вариант A: глобальная установка (рекомендуется для команды moo)
Установите moo-tasks глобально, чтобы получить доступ к короткой команде moo где угодно:
npm install -g moo-tasks
# or: pnpm add -g moo-tasks | bun add -g moo-tasksПосле установки вы можете использовать moo напрямую:
moo init # Initialize .moo workspace in current project
moo start # Launch real-time Web UI (http://127.0.0.1:4242)
moo ws # List registered global workspaces
moo status # Show Where-Did-I-Leave-Off context
moo search # Full-text SQLite search💡 Примечание о
mooиnpx:
Команда
moo <command>работает при глобальной установке черезnpm install -g moo-tasks.Если глобальной установки нет, используйте
npx moo-tasks <command>(и не используйтеnpx moo, потому чтоmooв npm-реестре — это другой пакет).Если после глобальной установки появляется ошибка
moo: command not found, убедитесь, что каталог глобальных бинарников npm находится в$PATH:export PATH="$(npm prefix -g)/bin:$PATH"
Вариант B: по запросу через npx moo-tasks
Запуск без глобальной установки:
1. Инициализация рабочего пространства и протоколов агента
Выполните в корне проекта:
npx moo-tasks initЭто:
инициализирует базу данных SQLite
.moo/tasks.dbв режиме WAL.генерирует
AGENTS.md,CLAUDE.md,.cursorrulesи.windsurfrules.
2. Запуск локального веб-интерфейса
npx moo-tasks startОткройте http://127.0.0.1:4242 в своём браузере.
Для доступа к веб-интерфейсу с другого устройства или планшета в локальной сети (LAN):
npx moo-tasks start --lan
# Automatically logs: http://192.168.x.x:4242/🔌 Настройка агентов и MCP
Установка для нескольких агентов одной командой
# Configure all detected agent IDEs at once:
npx moo-tasks install all
# Or configure specific clients:
npx moo-tasks install claude # Updates ~/.claude.json
npx moo-tasks install cursor # Generates .cursor/mcp.json
npx moo-tasks install windsurf # Updates ~/.codeium/windsurf/mcp_config.json
npx moo-tasks install antigravity # Generates .gemini/settings.jsonРучная настройка
{
"mcpServers": {
"moo-tasks": {
"command": "npx",
"args": ["moo-tasks", "mcp"]
}
}
}🤖 Обязательный протокол агента
Все ИИ-агенты, пишущие код, обязаны следовать этому жизненному циклу из 6 шагов:
1. SESSION RESUME → Call moo_session_resume() & moo_list_decisions()
2. ANCHOR GOAL → Call moo_create_goal(title, verbatimPrompt)
3. PLAN & CRITERIA → Call moo_create_task() with markdown criteria BEFORE code
4. EXCLUSIVE CLAIM → Call moo_claim_task(taskId, agentId, sessionId)
5. IMPLEMENTATION → If blocked, call moo_ask_human() or link blockers
6. VERIFIED PROOF → Call moo_complete_task() with test proof & output snippet
7. ADR RECORD → Call moo_record_decision() for architectural choices🛠️ Справочник MCP-инструментов
Имя инструмента | Назначение |
| Записать дословный запрос человека и установить лимит открытых задач |
| Список целей проекта и их статусов |
| Просмотр покрытия целей, открытых/лимитных задач и хвостов |
| Удалить цель и каскадно удалить все дочерние задачи с указанием причины |
| Переоткрыть цель и её задачи |
| Создать задачу в рамках цели с критериями приёмки и заявленными файлами |
| Массовое атомарное создание нескольких задач |
| ⚡ Экспресс-инструмент за 1 вызов: атомарно создаёт и закрепляет задачу с арендой и заявленными файлами |
| ⚡ Быстрая контрольная точка прогресса: добавляет заметку о попытке и продлевает heartbeat |
| 🧠 Сверхплотный оптимизированный по токенам блок контекста (< 400 токенов) для инъекции в промпт |
| Обновить название, критерии, приоритет, заявленные файлы или цель |
| Связать блокирующие зависимости с проверкой циклов |
| Отвязать блокирующую зависимость |
| Автоматически показать следующую разблокированную задачу с наивысшим приоритетом |
| Получить полные сведения о задаче, подзадачах, заметках, зависимостях |
| Фильтровать задачи по цели, статусу, приоритету, агенту, отложенным |
| Эксклюзивно закрепить задачу (с проверкой аренды и конфликтов) |
| Продлить активную аренду при длительных задачах |
| Добровольно вернуть закреплённую задачу в очередь |
| Передать выполняемую задачу другому агенту с заметками |
| Отметить задачу выполненной с обязательными командами/доказательствами |
| Проверить выполнение задачи (человеком или агентом верификации) |
| Отклонить выполненную задачу с обязательным указанием причины |
| Эскалировать вопрос человеку и поставить задачу на паузу |
| Список всех задач, ожидающих указаний человека |
| Ответить на вопрос и автоматически возобновить задачу |
| Добавить обнаруженную работу (обязательную к исправлению или отложенную) |
| Добавить заметку с контекстом/попыткой с отметкой времени и автором |
| Список истории контекста и журналов попыток |
| Удалить задачу с обязательным указанием причины |
| Переоткрыть задачу без потери истории аудита |
| Отменить последнее изменение статуса |
| Удалить несколько задач одной операцией |
| Переоткрыть несколько задач одной операцией |
| Зафиксировать архитектурное решение уровня проекта |
| Список принятых решений перед планированием |
| Заменить решение новым обоснованием |
| Объединить дублирующиеся задачи |
| Сводка сессии «На чём я остановился?» |
| Экспортировать проект в Markdown, JSON или обычный текст |
| Архивировать выполненные/удалённые задачи из активного списка |
🏛️ Архитектура и чистый код
src/
├── domain/ # Pure Enterprise Domain Rules & Invariants
│ ├── types.ts # Domain interfaces & value types
│ ├── errors.ts # Domain-specific typed error classes
│ ├── dependency.ts # DAG cycle detector & unblocked evaluator
│ ├── conflict.ts # File touch overlap conflict detector
│ └── similarity.ts # Duplicate task similarity detector
│
├── infrastructure/ # Persistence & External Integrations
│ ├── db/database.ts # SQLite manager (WAL mode, busy timeout)
│ ├── db/migrations.ts # Schema DDL and versioning
│ ├── git/git-context.ts # Git branch, commit, dirty status extractor
│ └── repositories/ # SQLite Repository Implementations
│
├── services/ # Application Services (Use Cases)
│ ├── goal-service.ts # Goal lifecycle & cap enforcement
│ ├── task-lifecycle-service.ts # State machine, ready queue, undo
│ ├── claim-service.ts # Exclusive claims, leases, dead-agent timeout
│ ├── verification-service.ts# Proof of work & two-phase verification
│ ├── human-collab-service.ts# Human Q&A queue & reactive resume
│ ├── discovered-work-service.ts # Mid-flight discovered work
│ ├── decision-service.ts # ADR logs & supersede linking
│ ├── duplicate-merge-service.ts # Idempotency & task merging
│ ├── session-service.ts # Where-did-I-leave-off session resume
│ ├── housekeeping-service.ts# Archiving & multi-format export
│ └── index.ts # Dependency Injection Container
│
├── mcp/ # Model Context Protocol Stdio Server
├── server/ # Fastify HTTP + Server-Sent Events (SSE) Engine
├── cli/ # CLI Commands (start, init, install, mcp)
└── ui/ # Vanilla JS + Tailwind + Lucide Icons Web UI🤝 Вклад в проект
Вклад приветствуется! Пожалуйста, ознакомьтесь с CONTRIBUTING.md для получения информации о настройке окружения, тестировании и правилах оформления PR.
📄 Лицензия
Этот проект распространяется под лицензией MIT.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceServer-enforced workflow discipline for AI agents. An MCP server providing persistent work items, dependency graphs, quality gates, and actor attribution. Schemas define what agents must produce — the server blocks the call if they don't. Works with any MCP-compatible client.199MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to run a deterministic orchestration loop with decomposition, subagent execution, and review feedback across multiple LLM backends.54MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for task management that enables AI agents to read, create, update tasks, and track work sessions, allowing agents and humans to collaborate on the same task board.27MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to manage hierarchical tasks, track progress, handle dependencies, and coordinate work through an MCP server.5715GPL 3.0
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
MCP server for generating rough-draft project plans from natural-language prompts.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/shekarsiri/moo-tasks'
If you have feedback or need assistance with the MCP directory API, please join our Discord server