auto-sync: 2026-05-19 14:00:01
This commit is contained in:
591
memory/2026-05-19-1057.md
Normal file
591
memory/2026-05-19-1057.md
Normal file
@@ -0,0 +1,591 @@
|
||||
# Session: 2026-05-19 10:57:28 UTC
|
||||
|
||||
- **Session Key**: agent:main:telegram:direct:126472752
|
||||
- **Session ID**: 7417786c-414e-4e51-a80b-cd7f7a269634
|
||||
- **Source**: telegram
|
||||
|
||||
## Conversation Summary
|
||||
|
||||
assistant: Хороший вопрос. Вот что я нашла:
|
||||
|
||||
**Да, можно сделать Analyst как отдельного агента в OpenClaw с использованием Claude CLI.** Есть два пути:
|
||||
|
||||
---
|
||||
|
||||
**Вариант 1: Полноценный агент OpenClaw (`agents.list[]`) + Claude CLI backend**
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
list: [
|
||||
{ id: "main", default: true, workspace: "~/.openclaw/workspace" },
|
||||
{
|
||||
id: "analyst",
|
||||
name: "Analyst",
|
||||
workspace: "~/.openclaw/workspace-analyst",
|
||||
model: "claude-cli/claude-sonnet-4-6",
|
||||
sandbox: { mode: "off" },
|
||||
tools: {
|
||||
profile: "coding",
|
||||
allow: ["read", "write", "edit", "exec"],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
**Плюсы:**
|
||||
- Полноценный агент OpenClaw со своим workspace, AGENTS.md, памятью, скиллами
|
||||
- Может получать сообщения через bindings (Plane webhook → канал → агент)
|
||||
- Может использовать OpenClaw tools (filesystem, exec, memory)
|
||||
- Claude CLI как backend = нативная работа с Claude Code (сессии, resume)
|
||||
- Можно общаться с ним через `sessions_send` из Стрим или Orchestrator
|
||||
|
||||
**Минусы:**
|
||||
- Claude CLI backend — это "text-only fallback", не primary path (по доке)
|
||||
- Но с `bundleMcp: true` получает доступ к OpenClaw tools через MCP bridge
|
||||
|
||||
---
|
||||
|
||||
**Вариант 2: Полноценный агент OpenClaw + обычный API model (не CLI)**
|
||||
|
||||
```json5
|
||||
{
|
||||
id: "analyst",
|
||||
model: "anthropic/claude-sonnet-4-6",
|
||||
workspace: "~/.openclaw/workspace-analyst",
|
||||
}
|
||||
```
|
||||
|
||||
**Плюсы:**
|
||||
- Стабильнее (API, не CLI)
|
||||
- Полный доступ к OpenClaw tools нативно
|
||||
- Проще в настройке
|
||||
|
||||
**Минусы:**
|
||||
- Не использует Claude Code CLI (а ты спрашивал именно про него)
|
||||
|
||||
---
|
||||
|
||||
**Вариант 3: Гибрид — агент OpenClaw, но запускает Claude CLI через exec/subagent для тяжёлой работы**
|
||||
|
||||
Агент `analyst` живёт в OpenClaw как обычный API-агент, но когда нужно — вызывает `claude -p "..."` через exec на mva154 для специфических задач (работа с git repo, чтение большого контекста).
|
||||
|
||||
---
|
||||
|
||||
**Моя рекомендация:**
|
||||
|
||||
**Вариант 2** (обычный OpenClaw агент на API) — самый надёжный и функциональный. Claude CLI backend задуман как fallback, а не как primary runtime для агента. Для Analyst'а важнее стабильность и доступ к Plane MCP / filesystem, чем фичи Claude Code.
|
||||
|
||||
Claude CLI имеет смысл для **Developer/Architect/Reviewer** — им нужна нативная работа с git repo, длинные сессии кодинга, `--resume`. Analyst'у это не нужно — он пишет документы.
|
||||
|
||||
Что думаешь? Или у тебя конкретная причина хотеть именно CLI для Analyst'а?
|
||||
user: Conversation info (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"chat_id": "telegram:126472752",
|
||||
"message_id": "14541",
|
||||
"sender_id": "126472752",
|
||||
"sender": "Слава",
|
||||
"timestamp": "Tue 2026-05-19 10:28 UTC"
|
||||
}
|
||||
```
|
||||
|
||||
Sender (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"label": "Слава (126472752)",
|
||||
"id": "126472752",
|
||||
"name": "Слава",
|
||||
"username": "SlavaMel"
|
||||
}
|
||||
```
|
||||
|
||||
Conversation context (untrusted, chronological, selected for current message):
|
||||
#14528 Mon 2026-05-18 20:22 UTC Слава: Вспомни проект мультиагенты
|
||||
#14530 Mon 2026-05-18 20:52 UTC Слава: Что готово из этого?
|
||||
#14533 Mon 2026-05-18 21:58 UTC ->#14531 Слава: Проверь глубокий анализ и ревью mva154, а также всей документации по проекту. Дай заключение
|
||||
#14535 Tue 2026-05-19 05:01 UTC ->#14534 Слава: Claude code cli установлен на mva154
|
||||
#14537 Tue 2026-05-19 05:02 UTC Слава: Почитай proposal , есть данные для роли аналитик?
|
||||
#14539 Tue 2026-05-19 05:12 UTC Слава: Да, хоче пересмотреть решение. При этом, ответь на вопрос, можно ли его сделать не как субагента, а как отдельного агента в openclaw, но с использованием claude cli?
|
||||
|
||||
Давай проговорим поведение и правила этого агента , на базе openclaw
|
||||
assistant: Давай проговорим. Вот как я вижу Analyst-агента на базе OpenClaw:
|
||||
|
||||
---
|
||||
|
||||
**Analyst — отдельный агент OpenClaw**
|
||||
|
||||
**Идентичность:**
|
||||
- `id: "analyst"`
|
||||
- Свой workspace: `~/.openclaw/workspace-analyst`
|
||||
- Свой AGENTS.md с системным промптом из proposal
|
||||
- Модель: `anthropic/claude-sonnet-4-6` (API, не CLI — для Analyst'а стабильность важнее)
|
||||
|
||||
---
|
||||
|
||||
**Триггеры запуска (когда он работает):**
|
||||
|
||||
1. **Стрим вызывает через `sessions_spawn(agentId: "analyst")`** — передаёт task с plane_id и контекстом
|
||||
2. **Или Orchestrator (когда будет)** — через webhook при создании Work Item в Plane
|
||||
|
||||
---
|
||||
|
||||
**Что он делает (поведение):**
|
||||
|
||||
1. Читает `00-business-request.md` из git-репо проекта
|
||||
2. Читает `CLAUDE.md` проекта для контекста
|
||||
3. Если неясности — формирует список вопросов, пишет `01-questions.md`, **останавливается**
|
||||
4. После получения ответов — пишет:
|
||||
- `01-brd.md`
|
||||
- `02-trz.md`
|
||||
- `03-acceptance-criteria.md`
|
||||
- `04-test-plan.yaml`
|
||||
5. Коммитит в ветку `feature/<plane-id>-*`
|
||||
6. Запрашивает approve у стейкхолдера (через Plane или через сообщение Стрим)
|
||||
|
||||
---
|
||||
|
||||
**Правила (constraints):**
|
||||
|
||||
- ❌ Не пишет код
|
||||
- ❌ Не трогает архитектуру, дизайн, ADR
|
||||
- ❌ Не закрывает задачу без `:approved:` от Славы
|
||||
- ❌ Не угадывает — если неясно, спрашивает
|
||||
- ✅ Может читать весь репо (для контекста)
|
||||
- ✅ Может писать только в `docs/work-items/<id>/`
|
||||
- ✅ Может коммитить в feature-ветку
|
||||
- ✅ Может общаться через Plane (комментарии) или через OpenClaw (sessions_send обратно к Стрим)
|
||||
|
||||
---
|
||||
|
||||
**Открытые вопросы для обсуждения:**
|
||||
|
||||
1. **Как он получает ответы на вопросы?** Варианты:
|
||||
- Через Plane (комментарий → webhook → повторный запуск)
|
||||
- Через Стрим (я передаю ответы Славы через sessions_send)
|
||||
- Ждёт в сессии (long-running session, не one-shot)
|
||||
|
||||
2. **Доступ к Plane** — через MCP, через API напрямую (exec curl), или через Стрим как прокси?
|
||||
|
||||
3. **Доступ к Git** — exec `git` на mva154 через SSH, или клонирует локально в свой workspace?
|
||||
|
||||
4. **Кто контролирует flow?** Пока нет Orchestrator'а:
|
||||
- Стрим запускает Analyst вручную
|
||||
- Analyst отчитывается Стрим
|
||||
- Стрим передаёт Славе на approve
|
||||
|
||||
5. **Итерации** — если Слава говорит "переделай BRD" — это новый spawn или resume сессии?
|
||||
|
||||
Что из этого хочешь зафиксировать, что поменять?
|
||||
user: Conversation info (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"chat_id": "telegram:126472752",
|
||||
"message_id": "14543",
|
||||
"sender_id": "126472752",
|
||||
"sender": "Слава",
|
||||
"timestamp": "Tue 2026-05-19 10:31 UTC"
|
||||
}
|
||||
```
|
||||
|
||||
Sender (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"label": "Слава (126472752)",
|
||||
"id": "126472752",
|
||||
"name": "Слава",
|
||||
"username": "SlavaMel"
|
||||
}
|
||||
```
|
||||
|
||||
Conversation context (untrusted, chronological, selected for current message):
|
||||
#14528 Mon 2026-05-18 20:22 UTC Слава: Вспомни проект мультиагенты
|
||||
#14530 Mon 2026-05-18 20:52 UTC Слава: Что готово из этого?
|
||||
#14533 Mon 2026-05-18 21:58 UTC ->#14531 Слава: Проверь глубокий анализ и ревью mva154, а также всей документации по проекту. Дай заключение
|
||||
#14535 Tue 2026-05-19 05:01 UTC ->#14534 Слава: Claude code cli установлен на mva154
|
||||
#14537 Tue 2026-05-19 05:02 UTC Слава: Почитай proposal , есть данные для роли аналитик?
|
||||
#14539 Tue 2026-05-19 05:12 UTC Слава: Да, хоче пересмотреть решение. При этом, ответь на вопрос, можно ли его сделать не как субагента, а как отдельного агента в openclaw, но с использованием claude cli?
|
||||
#14541 Tue 2026-05-19 10:28 UTC Слава: Давай проговорим поведение и правила этого агента , на базе openclaw
|
||||
|
||||
Может рассматреть вариант не суб агента а агента?
|
||||
assistant: Да, именно это я и описала — **полноценный агент**, не субагент. Разница:
|
||||
|
||||
**Субагент** (`sessions_spawn`) — одноразовый child-процесс внутри сессии Стрим. Умер — и нет его. Нет своего workspace, нет памяти между запусками.
|
||||
|
||||
**Агент** (`agents.list[]`) — первоклассный гражданин OpenClaw. Равноправен со Стрим. Имеет:
|
||||
- Свой `id` в конфиге
|
||||
- Свой workspace с AGENTS.md, памятью, скиллами
|
||||
- Свои сессии (persistent, с историей)
|
||||
- Может быть привязан к каналу через bindings
|
||||
- Может получать сообщения напрямую (не через Стрим)
|
||||
|
||||
---
|
||||
|
||||
**Что это меняет для Analyst'а:**
|
||||
|
||||
1. **Слава может писать Analyst'у напрямую** — через отдельный чат/канал, без Стрим как посредника
|
||||
2. **Analyst помнит контекст между сессиями** — свой workspace, свои daily notes
|
||||
3. **Analyst может быть привязан к Plane** — webhook приходит → binding направляет на analyst → он сам начинает работу
|
||||
4. **Итерации нативные** — Слава пишет "переделай" → Analyst видит в своей сессии, правит
|
||||
|
||||
---
|
||||
|
||||
**Как это выглядит в конфиге:**
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
list: [
|
||||
{ id: "main", default: true, workspace: "~/.openclaw/workspace" },
|
||||
{
|
||||
id: "analyst",
|
||||
name: "Analyst",
|
||||
workspace: "~/.openclaw/workspace-analyst",
|
||||
model: "anthropic/claude-sonnet-4-6",
|
||||
identity: { name: "Analyst", emoji: "📋" },
|
||||
sandbox: { mode: "off" },
|
||||
},
|
||||
],
|
||||
},
|
||||
bindings: [
|
||||
// Analyst получает сообщения из определённого канала/чата
|
||||
{ agentId: "analyst", match: { channel: "telegram", peer: { kind: "group", id: "<analyst-group-id>" } } },
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**Вопрос маршрутизации — как Слава общается с Analyst'ом:**
|
||||
|
||||
Варианты:
|
||||
- **Отдельный Telegram-чат/группа** — binding направляет туда Analyst'а
|
||||
- **Через Plane** (комментарии → webhook → канал Analyst'а)
|
||||
- **Через Стрим** — я передаю задачу через `sessions_send`, но Analyst живёт в своей сессии
|
||||
|
||||
Какой вариант ближе? И ещё вопрос — хочешь ли ты общаться с Analyst'ом напрямую, или всегда через Стрим как координатора?
|
||||
user: Conversation info (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"chat_id": "telegram:126472752",
|
||||
"message_id": "14545",
|
||||
"sender_id": "126472752",
|
||||
"sender": "Слава",
|
||||
"timestamp": "Tue 2026-05-19 10:35 UTC"
|
||||
}
|
||||
```
|
||||
|
||||
Sender (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"label": "Слава (126472752)",
|
||||
"id": "126472752",
|
||||
"name": "Слава",
|
||||
"username": "SlavaMel"
|
||||
}
|
||||
```
|
||||
|
||||
Conversation context (untrusted, chronological, selected for current message):
|
||||
#14528 Mon 2026-05-18 20:22 UTC Слава: Вспомни проект мультиагенты
|
||||
#14530 Mon 2026-05-18 20:52 UTC Слава: Что готово из этого?
|
||||
#14533 Mon 2026-05-18 21:58 UTC ->#14531 Слава: Проверь глубокий анализ и ревью mva154, а также всей документации по проекту. Дай заключение
|
||||
#14535 Tue 2026-05-19 05:01 UTC ->#14534 Слава: Claude code cli установлен на mva154
|
||||
#14537 Tue 2026-05-19 05:02 UTC Слава: Почитай proposal , есть данные для роли аналитик?
|
||||
#14539 Tue 2026-05-19 05:12 UTC Слава: Да, хоче пересмотреть решение. При этом, ответь на вопрос, можно ли его сделать не как субагента, а как отдельного агента в openclaw, но с использованием claude cli?
|
||||
#14541 Tue 2026-05-19 10:28 UTC Слава: Давай проговорим поведение и правила этого агента , на базе openclaw
|
||||
#14543 Tue 2026-05-19 10:31 UTC Слава: Может рассматреть вариант не суб агента а агента?
|
||||
|
||||
Хочу общаться напрямую через отдельную телегу и plane
|
||||
assistant: Отлично. Тогда вот схема:
|
||||
|
||||
---
|
||||
|
||||
**Analyst — полноценный агент OpenClaw, доступен через:**
|
||||
1. **Отдельный Telegram-чат** (direct с ботом или отдельный бот)
|
||||
2. **Plane** (комментарии на Work Item → webhook → агент)
|
||||
|
||||
---
|
||||
|
||||
**Поток работы:**
|
||||
|
||||
```
|
||||
Слава (Telegram) ──────► Analyst agent
|
||||
Слава (Plane comment) ──► Analyst agent (через webhook)
|
||||
Analyst ──► Git (коммит в feature-ветку)
|
||||
Analyst ──► Plane (обновление статуса, комментарии)
|
||||
Analyst ──► Слава (ответ в Telegram / Plane)
|
||||
```
|
||||
|
||||
Стрим в этой цепочке **не участвует** — Analyst автономен.
|
||||
|
||||
---
|
||||
|
||||
**Технические вопросы, которые нужно решить:**
|
||||
|
||||
1. **Telegram-бот** — тот же бот OpenClaw (второй аккаунт/чат) или отдельный бот?
|
||||
- Если тот же бот → binding по `peer.id` (отдельная группа или direct)
|
||||
- Если отдельный бот → второй Telegram channel в OpenClaw
|
||||
|
||||
2. **Plane webhook** — куда приходит?
|
||||
- Вариант А: напрямую в OpenClaw (нужен endpoint, который маршрутизирует на analyst)
|
||||
- Вариант Б: через Orchestrator (когда будет)
|
||||
- Вариант В: пока без webhook — Слава пишет в Telegram, Analyst сам смотрит Plane
|
||||
|
||||
3. **Доступ к Git-репо** — Analyst должен:
|
||||
- Клонировать репо в свой workspace
|
||||
- Коммитить и пушить в feature-ветку
|
||||
- Нужен git credentials (SSH key или token для Gitea)
|
||||
|
||||
4. **Доступ к Plane API** — через exec curl или через MCP?
|
||||
- Пока нет Plane MCP → exec curl с `PLANE_API_TOKEN`
|
||||
- Или написать простой скилл `plane-api`
|
||||
|
||||
5. **Память между сессиями** — Analyst помнит контекст проекта:
|
||||
- Свой workspace с `AGENTS.md` (системный промпт из proposal)
|
||||
- `memory/` для заметок между сессиями
|
||||
- Клон репо для доступа к `CLAUDE.md` и `docs/`
|
||||
|
||||
---
|
||||
|
||||
**Что нужно для запуска (минимум):**
|
||||
|
||||
- [ ] Добавить `analyst` в `agents.list[]` в openclaw.json
|
||||
- [ ] Создать workspace `~/.openclaw/workspace-analyst/` с AGENTS.md
|
||||
- [ ] Настроить binding на Telegram (отдельный чат/группа)
|
||||
- [ ] Дать доступ к Gitea (SSH key или token)
|
||||
- [ ] Дать `PLANE_API_TOKEN` в env
|
||||
|
||||
---
|
||||
|
||||
**Что решить сейчас:**
|
||||
|
||||
1. Тот же Telegram-бот или отдельный?
|
||||
2. Plane webhook сразу или пока руками (Слава пишет в Telegram)?
|
||||
3. Какой проект первый — enduro-trails?
|
||||
user: Conversation info (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"chat_id": "telegram:126472752",
|
||||
"message_id": "14547",
|
||||
"sender_id": "126472752",
|
||||
"sender": "Слава",
|
||||
"timestamp": "Tue 2026-05-19 10:37 UTC"
|
||||
}
|
||||
```
|
||||
|
||||
Sender (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"label": "Слава (126472752)",
|
||||
"id": "126472752",
|
||||
"name": "Слава",
|
||||
"username": "SlavaMel"
|
||||
}
|
||||
```
|
||||
|
||||
Conversation context (untrusted, chronological, selected for current message):
|
||||
#14528 Mon 2026-05-18 20:22 UTC Слава: Вспомни проект мультиагенты
|
||||
#14530 Mon 2026-05-18 20:52 UTC Слава: Что готово из этого?
|
||||
#14533 Mon 2026-05-18 21:58 UTC ->#14531 Слава: Проверь глубокий анализ и ревью mva154, а также всей документации по проекту. Дай заключение
|
||||
#14535 Tue 2026-05-19 05:01 UTC ->#14534 Слава: Claude code cli установлен на mva154
|
||||
#14537 Tue 2026-05-19 05:02 UTC Слава: Почитай proposal , есть данные для роли аналитик?
|
||||
#14539 Tue 2026-05-19 05:12 UTC Слава: Да, хоче пересмотреть решение. При этом, ответь на вопрос, можно ли его сделать не как субагента, а как отдельного агента в openclaw, но с использованием claude cli?
|
||||
#14541 Tue 2026-05-19 10:28 UTC Слава: Давай проговорим поведение и правила этого агента , на базе openclaw
|
||||
#14543 Tue 2026-05-19 10:31 UTC Слава: Может рассматреть вариант не суб агента а агента?
|
||||
#14545 Tue 2026-05-19 10:35 UTC Слава: Хочу общаться напрямую через отдельную телегу и plane
|
||||
|
||||
Пока запиши это в бэклог проекта мульти агента.
|
||||
assistant: (empty)
|
||||
assistant: Записала в `tasks/multi-agent/BACKLOG.md`. Там зафиксировано:
|
||||
|
||||
- Решение: Analyst = отдельный агент OpenClaw (не субагент, не Стрим)
|
||||
- Каналы: отдельный Telegram + Plane напрямую
|
||||
- Поведение и правила
|
||||
- TODO-лист для запуска
|
||||
- Статус инфраструктуры
|
||||
|
||||
Когда будешь готов двигать дальше — начнём с открытых вопросов: какой Telegram-бот и какой проект первый.
|
||||
user: Conversation info (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"chat_id": "telegram:126472752",
|
||||
"message_id": "14551",
|
||||
"sender_id": "126472752",
|
||||
"sender": "Слава",
|
||||
"timestamp": "Tue 2026-05-19 10:54 UTC"
|
||||
}
|
||||
```
|
||||
|
||||
Sender (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"label": "Слава (126472752)",
|
||||
"id": "126472752",
|
||||
"name": "Слава",
|
||||
"username": "SlavaMel"
|
||||
}
|
||||
```
|
||||
|
||||
Conversation context (untrusted, chronological, selected for current message):
|
||||
#14528 Mon 2026-05-18 20:22 UTC Слава: Вспомни проект мультиагенты
|
||||
#14530 Mon 2026-05-18 20:52 UTC Слава: Что готово из этого?
|
||||
#14533 Mon 2026-05-18 21:58 UTC ->#14531 Слава: Проверь глубокий анализ и ревью mva154, а также всей документации по проекту. Дай заключение
|
||||
#14535 Tue 2026-05-19 05:01 UTC ->#14534 Слава: Claude code cli установлен на mva154
|
||||
#14537 Tue 2026-05-19 05:02 UTC Слава: Почитай proposal , есть данные для роли аналитик?
|
||||
#14539 Tue 2026-05-19 05:12 UTC Слава: Да, хоче пересмотреть решение. При этом, ответь на вопрос, можно ли его сделать не как субагента, а как отдельного агента в openclaw, но с использованием claude cli?
|
||||
#14541 Tue 2026-05-19 10:28 UTC Слава: Давай проговорим поведение и правила этого агента , на базе openclaw
|
||||
#14543 Tue 2026-05-19 10:31 UTC Слава: Может рассматреть вариант не суб агента а агента?
|
||||
#14545 Tue 2026-05-19 10:35 UTC Слава: Хочу общаться напрямую через отдельную телегу и plane
|
||||
#14547 Tue 2026-05-19 10:37 UTC Слава: Пока запиши это в бэклог проекта мульти агента.
|
||||
|
||||
Я хочу, чтобы процесс запустился уже с учётом агента аналитика, plane и оркестратора, предложи как сделать
|
||||
assistant: Окей, давай подумаем как запустить **весь процесс** сразу, а не по кусочкам.
|
||||
|
||||
---
|
||||
|
||||
**Минимальный жизнеспособный конвейер (MVP):**
|
||||
|
||||
```
|
||||
Слава (Telegram/Plane) → Analyst → Git → Orchestrator → Developer (Claude CLI)
|
||||
```
|
||||
|
||||
Без Architect, Reviewer, Tester, Deployer на старте. Добавим их потом. Но Analyst + Orchestrator + Developer — это уже рабочий цикл "задача → код".
|
||||
|
||||
---
|
||||
|
||||
**Что нужно поднять одновременно (параллельно):**
|
||||
|
||||
**Трек 1: Analyst agent**
|
||||
- Создать workspace + AGENTS.md
|
||||
- Добавить в openclaw.json
|
||||
- Создать отдельного Telegram-бота (или группу)
|
||||
- Binding на Telegram
|
||||
- Доступ к Gitea + Plane API
|
||||
|
||||
**Трек 2: Orchestrator**
|
||||
- FastAPI-сервис (минимум):
|
||||
- `POST /webhook/plane` — слушает events от Plane
|
||||
- `POST /webhook/gitea` — слушает push/PR events
|
||||
- `GET /health`
|
||||
- Логика MVP:
|
||||
- Plane: Work Item создан → создать ветку + уведомить Analyst
|
||||
- Plane: `:approved:` на подзадаче «Анализ» → QG-1 check → запустить Developer
|
||||
- Gitea: PR создан + CI green → уведомить Славу
|
||||
- Деплой: Docker на mva154, endpoint за Nginx
|
||||
|
||||
**Трек 3: Developer agent (Claude CLI)**
|
||||
- Настроить `claude-cli` backend в OpenClaw **или** Orchestrator запускает `claude -p` через SSH
|
||||
- Доступ к git-репо на mva154
|
||||
- Системный промпт из proposal
|
||||
|
||||
**Трек 4: Plane настройка**
|
||||
- Webhooks → Orchestrator endpoint
|
||||
- Custom fields (qg_status, stage)
|
||||
- Лейблы (stage:*, back-to:*)
|
||||
- Шаблон Work Item с 7 подзадачами (или пока 3: Анализ, Разработка, Внедрение)
|
||||
|
||||
---
|
||||
|
||||
**Упрощения для MVP (чтобы запустить быстро):**
|
||||
|
||||
| Полная версия | MVP |
|
||||
|---|---|
|
||||
| 7 агентов | 2: Analyst + Developer |
|
||||
| 7 подзадач | 3: Анализ → Разработка → Done |
|
||||
| QG-0..QG-7 | QG-1 (ТЗ готово + approved) → QG-4 (CI green) |
|
||||
| Plane MCP | exec curl к Plane API |
|
||||
| Ephemeral preview | Нет |
|
||||
| Reviewer + Tester | Слава смотрит PR руками |
|
||||
| Auto-deploy | Ручной merge + deploy |
|
||||
|
||||
---
|
||||
|
||||
**Порядок действий (2-3 дня):**
|
||||
|
||||
**День 1:**
|
||||
1. Создать Telegram-бота для Analyst (или решить про группу)
|
||||
2. Настроить Analyst agent в OpenClaw (workspace, config, binding)
|
||||
3. Настроить Plane webhooks (endpoint пока заглушка)
|
||||
|
||||
**День 2:**
|
||||
4. Написать Orchestrator MVP (FastAPI, ~200 строк)
|
||||
5. Задеплоить за Nginx на mva154
|
||||
6. Подключить Plane webhooks к Orchestrator
|
||||
|
||||
**День 3:**
|
||||
7. Настроить Developer через Claude CLI (auth, доступ к репо)
|
||||
8. Связать: Orchestrator → запуск Developer при QG-1 pass
|
||||
9. **Тестовый прогон end-to-end** на enduro-trails
|
||||
|
||||
---
|
||||
|
||||
**Вопросы для старта:**
|
||||
|
||||
1. **Telegram-бот** — создать нового или использовать текущего OpenClaw бота с отдельной группой?
|
||||
2. **Orchestrator** — писать через Dev-агента или это как раз первая задача для нового конвейера (курица и яйцо)?
|
||||
3. **Пилотная задача** — какую фичу enduro-trails прогнать первой?
|
||||
user: Conversation info (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"chat_id": "telegram:126472752",
|
||||
"message_id": "14553",
|
||||
"sender_id": "126472752",
|
||||
"sender": "Слава",
|
||||
"timestamp": "Tue 2026-05-19 10:55 UTC"
|
||||
}
|
||||
```
|
||||
|
||||
Sender (untrusted metadata):
|
||||
```json
|
||||
{
|
||||
"label": "Слава (126472752)",
|
||||
"id": "126472752",
|
||||
"name": "Слава",
|
||||
"username": "SlavaMel"
|
||||
}
|
||||
```
|
||||
|
||||
Conversation context (untrusted, chronological, selected for current message):
|
||||
#14530 Mon 2026-05-18 20:52 UTC Слава: Что готово из этого?
|
||||
#14533 Mon 2026-05-18 21:58 UTC ->#14531 Слава: Проверь глубокий анализ и ревью mva154, а также всей документации по проекту. Дай заключение
|
||||
#14535 Tue 2026-05-19 05:01 UTC ->#14534 Слава: Claude code cli установлен на mva154
|
||||
#14537 Tue 2026-05-19 05:02 UTC Слава: Почитай proposal , есть данные для роли аналитик?
|
||||
#14539 Tue 2026-05-19 05:12 UTC Слава: Да, хоче пересмотреть решение. При этом, ответь на вопрос, можно ли его сделать не как субагента, а как отдельного агента в openclaw, но с использованием claude cli?
|
||||
#14541 Tue 2026-05-19 10:28 UTC Слава: Давай проговорим поведение и правила этого агента , на базе openclaw
|
||||
#14543 Tue 2026-05-19 10:31 UTC Слава: Может рассматреть вариант не суб агента а агента?
|
||||
#14545 Tue 2026-05-19 10:35 UTC Слава: Хочу общаться напрямую через отдельную телегу и plane
|
||||
#14547 Tue 2026-05-19 10:37 UTC Слава: Пока запиши это в бэклог проекта мульти агента.
|
||||
#14551 Tue 2026-05-19 10:54 UTC Слава: Я хочу, чтобы процесс запустился уже с учётом агента аналитика, plane и оркестратора, предложи как сделать
|
||||
|
||||
Не, посмотри какие субагенты уже естт
|
||||
assistant: (empty)
|
||||
assistant: Вот что уже есть:
|
||||
|
||||
| id | name | model | workspace |
|
||||
|---|---|---|---|
|
||||
| `main` | (Стрим) | vibecode/claude-opus-4.7 | default |
|
||||
| `dev` | Dev | vibecode/claude-sonnet-4.6 | workspace-dev |
|
||||
| `legal` | Юрист | openrouter/claude-sonnet-4.6 | workspace-legal |
|
||||
| `feda` | Федя | gigachat/GigaChat-2-Max | workspace-fedia |
|
||||
| `kids` | Детский | qwen/qwen3.6-plus | workspace-kids |
|
||||
| `bytik` | Байтик | qwen/qwen3.6-plus | workspace-bytik |
|
||||
|
||||
---
|
||||
|
||||
**Ключевое:** `dev` уже есть как отдельный агент. Это меняет картину.
|
||||
|
||||
Вопрос — ты имеешь в виду, что **Dev уже может быть Developer'ом** в мультиагентном конвейере? То есть:
|
||||
|
||||
- **Analyst** — новый агент (добавить)
|
||||
- **Developer** — уже есть (`dev`), нужно только дать ему правильный промпт и доступ к git
|
||||
- **Orchestrator** — новый сервис (написать)
|
||||
|
||||
И тогда MVP ещё проще:
|
||||
|
||||
```
|
||||
Слава → Analyst (новый) → Git → Orchestrator → Dev (уже есть) → PR
|
||||
```
|
||||
|
||||
Или ты хотел показать что-то другое? Какой из существующих агентов ты видишь в роли участника конвейера?
|
||||
Reference in New Issue
Block a user