Skip to main content
Glama

🐮 Moo Tasks

CI License: MIT Node: >=18.0.0 MCP Ready

Агентный движок оркестрации и управления задачами, созданный для ИИ-агентов, которые пишут код (Claude Code, Cursor, Windsurf, Antigravity, Copilot), и для парного программирования с человеком в контуре (human-in-the-loop).

[Быстрый старт](#- quick-start) • [Настройка агента и MCP](#- agent--mcp-setup) • Архитектура • MCP-инструменты


🌟 Почему Moo Tasks?

Стандартные ИИ-агенты часто страдают от следующих проблем:

  1. Расползание объёма: уход от исходного намерения пользователя в бесконечные малозначимые рефакторинги.

  2. Перепланирование: создание 40 поверхностных задач без выполнения хотя бы одной из них.

  3. Зацикливание / топтание на месте:повторение одной и той же неудачной попытки исправления по кругу без остановки.

  4. Непроверяемая работа: заявление о завершённости кода без запуска тестов и без предоставления доказательств.

  5. Повторное оспаривание решений: переобсуждение уже принятых архитектурных решений при каждом сбросе контекста.

Moo Tasks решает эту проблему, предоставляя локальный SQLite-движок (режим WAL), полнофункциональный веб-интерфейс в реальном времени и сервер Model Context Protocol (MCP), который обеспечивает соблюдение строгих корпоративных инвариантов в рантайме.


Related MCP server: pith

✨ Ключевые возможности и функциональная матрица

🎯 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-инструментов

Имя инструмента

Назначение

moo_create_goal

Записать дословный запрос человека и установить лимит открытых задач

moo_list_goals

Список целей проекта и их статусов

moo_get_goal_status

Просмотр покрытия целей, открытых/лимитных задач и хвостов

moo_kill_goal

Удалить цель и каскадно удалить все дочерние задачи с указанием причины

moo_reopen_goal

Переоткрыть цель и её задачи

moo_create_task

Создать задачу в рамках цели с критериями приёмки и заявленными файлами

moo_create_tasks_batch

Массовое атомарное создание нескольких задач

moo_quick_start

⚡ Экспресс-инструмент за 1 вызов: атомарно создаёт и закрепляет задачу с арендой и заявленными файлами

moo_checkpoint

⚡ Быстрая контрольная точка прогресса: добавляет заметку о попытке и продлевает heartbeat

moo_get_compact_context

🧠 Сверхплотный оптимизированный по токенам блок контекста (< 400 токенов) для инъекции в промпт

moo_update_task

Обновить название, критерии, приоритет, заявленные файлы или цель

moo_link_dependencies

Связать блокирующие зависимости с проверкой циклов

moo_unlink_dependencies

Отвязать блокирующую зависимость

moo_get_next_task

Автоматически показать следующую разблокированную задачу с наивысшим приоритетом

moo_get_task

Получить полные сведения о задаче, подзадачах, заметках, зависимостях

moo_list_tasks

Фильтровать задачи по цели, статусу, приоритету, агенту, отложенным

moo_claim_task

Эксклюзивно закрепить задачу (с проверкой аренды и конфликтов)

moo_heartbeat_task

Продлить активную аренду при длительных задачах

moo_release_task

Добровольно вернуть закреплённую задачу в очередь

moo_handoff_task

Передать выполняемую задачу другому агенту с заметками

moo_complete_task

Отметить задачу выполненной с обязательными командами/доказательствами

moo_verify_task

Проверить выполнение задачи (человеком или агентом верификации)

moo_reject_task

Отклонить выполненную задачу с обязательным указанием причины

moo_ask_human

Эскалировать вопрос человеку и поставить задачу на паузу

moo_get_human_inbox

Список всех задач, ожидающих указаний человека

moo_answer_human

Ответить на вопрос и автоматически возобновить задачу

moo_capture_discovered_work

Добавить обнаруженную работу (обязательную к исправлению или отложенную)

moo_add_task_note

Добавить заметку с контекстом/попыткой с отметкой времени и автором

moo_list_task_notes

Список истории контекста и журналов попыток

moo_drop_task

Удалить задачу с обязательным указанием причины

moo_reopen_task

Переоткрыть задачу без потери истории аудита

moo_undo_status_change

Отменить последнее изменение статуса

moo_bulk_drop_tasks

Удалить несколько задач одной операцией

moo_bulk_reopen_tasks

Переоткрыть несколько задач одной операцией

moo_record_decision

Зафиксировать архитектурное решение уровня проекта

moo_list_decisions

Список принятых решений перед планированием

moo_supersede_decision

Заменить решение новым обоснованием

moo_merge_tasks

Объединить дублирующиеся задачи

moo_session_resume

Сводка сессии «На чём я остановился?»

moo_export_project

Экспортировать проект в Markdown, JSON или обычный текст

moo_archive_completed

Архивировать выполненные/удалённые задачи из активного списка


🏛️ Архитектура и чистый код

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.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Server-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.
    207
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP 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.
    4 npm
    9
    MIT