docs: адаптеры, типы задач, ревью, БД
- Разделение агент/адаптер (capabilities на адаптере) - JSON конфиг для разных провайдеров - Типы задач: coding, analytics, design, testing, docs - Не каждая задача = PR - Флоу ревью для задач с PR и без - Итерации ревью - Схема БД: adapters, agents, tasks, dependencies, files
This commit is contained in:
parent
cf2289516e
commit
51a091148f
215
IDEAS.md
215
IDEAS.md
@ -128,6 +128,13 @@ team-board/
|
||||
описание: "Markdown текст с деталями"
|
||||
статус: draft | ready | in_progress | review | completed | blocked
|
||||
|
||||
# Тип задачи (флаги/теги)
|
||||
теги: ["кодинг", "api", "auth"]
|
||||
тип: coding | analytics | design | testing | docs | other
|
||||
|
||||
# PR (только для задач с кодом)
|
||||
требует_pr: true | false # автоматически по типу задачи
|
||||
|
||||
# Назначение
|
||||
назначен: agent_id (или null)
|
||||
|
||||
@ -215,39 +222,91 @@ Task A ──depends_on──→ Task B
|
||||
|
||||
---
|
||||
|
||||
## Агенты
|
||||
## Агенты и адаптеры
|
||||
|
||||
### Типы провайдеров (адаптеры)
|
||||
### Адаптер (провайдер)
|
||||
|
||||
| Провайдер | Описание |
|
||||
|-----------|----------|
|
||||
| `anthropic` | Claude API (Opus, Sonnet) |
|
||||
| `openai` | GPT, Codex |
|
||||
| `google` | Gemini |
|
||||
| `openclaw` | Через OpenClaw Gateway (с инструментами) |
|
||||
| `cli` | Claude Code CLI (без API токенов) |
|
||||
Адаптер — это подключение к конкретной нейросети. Один адаптер может использоваться несколькими агентами.
|
||||
|
||||
### Настройки агента
|
||||
```yaml
|
||||
Адаптер:
|
||||
id: uuid
|
||||
название: "Claude Opus"
|
||||
провайдер: anthropic | openai | google | openclaw | cli
|
||||
|
||||
# Конфиг — JSON поле, разное для каждого провайдера
|
||||
config:
|
||||
# Anthropic
|
||||
api_key: "sk-ant-..."
|
||||
model: "claude-opus-4-5"
|
||||
max_tokens: 8192
|
||||
|
||||
# Или OpenAI
|
||||
api_key: "sk-..."
|
||||
model: "gpt-4"
|
||||
organization: "org-..."
|
||||
|
||||
# Или OpenClaw
|
||||
gateway_url: "http://localhost:18789"
|
||||
gateway_token: "..."
|
||||
agent_id: "main"
|
||||
|
||||
# Или CLI
|
||||
command: "claude"
|
||||
working_dir: "/workspace"
|
||||
|
||||
# Возможности адаптера (что умеет эта нейросеть)
|
||||
capabilities: ["coding", "analytics", "review", "design", "docs", "testing"]
|
||||
```
|
||||
|
||||
**Важно:** Capabilities привязаны к адаптеру, не к агенту. Потому что возможности определяются нейросетью.
|
||||
|
||||
### Агент
|
||||
|
||||
Агент — это "личность" с ролью, которая использует адаптер.
|
||||
|
||||
```yaml
|
||||
Агент:
|
||||
id: uuid
|
||||
имя: "Кодер"
|
||||
slug: "coder"
|
||||
провайдер: anthropic
|
||||
модель: claude-sonnet-4-20250514
|
||||
api_key: "sk-..." # зашифрован
|
||||
|
||||
# Привязка к адаптеру
|
||||
адаптер_id: uuid
|
||||
|
||||
# Роль
|
||||
системный_промпт: "Ты — backend разработчик..."
|
||||
|
||||
# Подписка
|
||||
подписка:
|
||||
режим: mentions # all | mentions | assigned
|
||||
проекты: ["*"] # или конкретные
|
||||
|
||||
ограничения:
|
||||
макс_параллельных: 2
|
||||
таймаут: 600 # секунд
|
||||
# Ограничения
|
||||
макс_параллельных: 2
|
||||
таймаут: 600 # секунд
|
||||
```
|
||||
|
||||
### Связка: типы задач ↔ адаптеры
|
||||
|
||||
```
|
||||
Задача с тегом "coding" → только агенты с адаптером, у которого capability "coding"
|
||||
Задача с тегом "design" → только агенты с адаптером, у которого capability "design"
|
||||
Задача с тегом "analytics" → только агенты с адаптером, у которого capability "analytics"
|
||||
```
|
||||
|
||||
Агент-дизайнер НЕ возьмёт задачу на кодинг — у его адаптера нет такой возможности.
|
||||
|
||||
### Типы провайдеров
|
||||
|
||||
| Провайдер | Описание | Конфиг |
|
||||
|-----------|----------|--------|
|
||||
| `anthropic` | Claude API | api_key, model, max_tokens |
|
||||
| `openai` | GPT, Codex | api_key, model, organization |
|
||||
| `google` | Gemini | api_key, model |
|
||||
| `openclaw` | OpenClaw Gateway | gateway_url, gateway_token, agent_id |
|
||||
| `cli` | Claude Code CLI | command, working_dir |
|
||||
|
||||
### Подписка на события
|
||||
|
||||
| Режим | Агент получает |
|
||||
@ -288,6 +347,64 @@ agent.heartbeat — пульс
|
||||
|
||||
---
|
||||
|
||||
## Ревью и PR
|
||||
|
||||
### Не каждая задача = PR
|
||||
|
||||
| Тип задачи | Нужен PR? |
|
||||
|------------|-----------|
|
||||
| coding | Да |
|
||||
| testing | Да |
|
||||
| analytics | Нет — результат в виде файла/отчёта |
|
||||
| design | Нет — результат в виде файла |
|
||||
| docs | Возможно — зависит от проекта |
|
||||
|
||||
Поле `требует_pr` определяется автоматически по типу, но можно переопределить вручную.
|
||||
|
||||
### Флоу ревью (для задач с PR)
|
||||
|
||||
```
|
||||
1. Агент работает → коммитит в feature branch
|
||||
2. Создаёт PR в Gitea
|
||||
3. Сдвигает задачу в Review
|
||||
4. Трекер назначает ревьюера (другой агент, НЕ автор)
|
||||
5. Ревьюер смотрит PR, пишет комментарии В ЗАДАЧЕ
|
||||
6. Ок → Approve → Done, PR мержится
|
||||
7. Не ок → замечания → обратно In Progress → автор исправляет
|
||||
```
|
||||
|
||||
### Флоу ревью (для задач без PR)
|
||||
|
||||
```
|
||||
1. Агент работает → прикрепляет результат (файл/отчёт) к задаче
|
||||
2. Сдвигает в Review
|
||||
3. Ревьюер проверяет результат
|
||||
4. Ок → Done
|
||||
5. Не ок → замечания → обратно In Progress
|
||||
```
|
||||
|
||||
### Правила ревью
|
||||
|
||||
- Автор ≠ ревьюер (всегда)
|
||||
- Максимум 3 итерации — потом эскалация к человеку
|
||||
- Все комментарии в задаче (единый контекст)
|
||||
- Чат проекта = лог событий (всё видно)
|
||||
|
||||
### Итерации ревью
|
||||
|
||||
```yaml
|
||||
review_history:
|
||||
- iteration: 1
|
||||
reviewer: analyst
|
||||
status: changes_requested
|
||||
comments: ["Нужна валидация", "Нет тестов"]
|
||||
- iteration: 2
|
||||
reviewer: analyst
|
||||
status: approved
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Workflow: от идеи до деплоя
|
||||
|
||||
### Фаза 1: Идея → Проект
|
||||
@ -335,6 +452,72 @@ agent.heartbeat — пульс
|
||||
|
||||
---
|
||||
|
||||
## База данных (ключевые таблицы)
|
||||
|
||||
```sql
|
||||
-- Адаптеры (подключения к нейросетям)
|
||||
CREATE TABLE adapters (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name TEXT NOT NULL,
|
||||
provider TEXT NOT NULL, -- anthropic, openai, google, openclaw, cli
|
||||
config JSONB NOT NULL, -- всё специфичное для провайдера
|
||||
capabilities TEXT[] NOT NULL, -- ["coding", "analytics", "review", ...]
|
||||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Агенты (личности с ролями)
|
||||
CREATE TABLE agents (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name TEXT NOT NULL,
|
||||
slug TEXT UNIQUE NOT NULL,
|
||||
adapter_id UUID REFERENCES adapters(id),
|
||||
system_prompt TEXT,
|
||||
subscription_mode TEXT DEFAULT 'mentions', -- all, mentions, assigned
|
||||
max_concurrent INT DEFAULT 1,
|
||||
timeout_seconds INT DEFAULT 600,
|
||||
status TEXT DEFAULT 'idle',
|
||||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Задачи
|
||||
CREATE TABLE tasks (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
project_id UUID REFERENCES projects(id),
|
||||
parent_id UUID REFERENCES tasks(id), -- подзадачи
|
||||
title TEXT NOT NULL,
|
||||
description TEXT,
|
||||
status TEXT DEFAULT 'draft',
|
||||
task_type TEXT DEFAULT 'other', -- coding, analytics, design, testing, docs
|
||||
tags TEXT[],
|
||||
requires_pr BOOLEAN DEFAULT FALSE,
|
||||
assigned_agent_id UUID REFERENCES agents(id),
|
||||
priority TEXT DEFAULT 'medium',
|
||||
pr_url TEXT,
|
||||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Зависимости задач
|
||||
CREATE TABLE task_dependencies (
|
||||
task_id UUID REFERENCES tasks(id) ON DELETE CASCADE,
|
||||
depends_on_id UUID REFERENCES tasks(id) ON DELETE CASCADE,
|
||||
PRIMARY KEY (task_id, depends_on_id)
|
||||
);
|
||||
|
||||
-- Файлы задач
|
||||
CREATE TABLE task_files (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
task_id UUID REFERENCES tasks(id) ON DELETE CASCADE,
|
||||
filename TEXT NOT NULL,
|
||||
mime_type TEXT,
|
||||
file_path TEXT NOT NULL,
|
||||
uploaded_by UUID, -- agent_id или null (человек)
|
||||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Открытые вопросы
|
||||
|
||||
1. Как интегрировать CLI-агентов (Claude Code, Cline)?
|
||||
|
||||
Loading…
Reference in New Issue
Block a user