Agent Methods
Метод — это способ исполнения задачи агентом. Один агент может иметь несколько методов с разными приоритетами.
Концепция
Методы хранятся в таблице agent_methods. Каждый метод имеет тип (type), ссылку (method_ref) и приоритет. При выполнении задачи агент выбирает метод с наивысшим приоритетом.
n8n_workflow
Исполнение через n8n workflow. method_ref = имя workflow
internal_api
Вызов внутреннего API endpoint. method_ref = путь
process
Запуск процесса через /internal/process/execute
llm_direct
Прямой вызов LLM. method_ref = модель
Структура agent_methods
Файл: db/init/374_agent_methods.sql
CREATE TABLE clowbot.agent_methods (
method_id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
agent_code text NOT NULL REFERENCES agent_profile(agent_code) ON DELETE CASCADE,
method_type text NOT NULL DEFAULT 'n8n_workflow', -- Тип метода
method_name text NOT NULL, -- Имя метода
method_ref text NOT NULL, -- Ссылка (workflow name / API path / model)
description text NOT NULL DEFAULT '',
input_contract jsonb NOT NULL DEFAULT '{}'::jsonb, -- Контракт входа
output_contract jsonb NOT NULL DEFAULT '{}'::jsonb, -- Контракт выхода
is_enabled boolean NOT NULL DEFAULT true,
priority integer NOT NULL DEFAULT 100, -- Приоритет (выше = лучше)
created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now(),
UNIQUE (agent_code, method_name)
);
CREATE INDEX idx_agent_methods_agent
ON clowbot.agent_methods (agent_code, priority DESC)
WHERE is_enabled = true;Пример INSERT
Файл: db/init/376_seed_agent_methods.sql
-- web_researcher имеет 4 метода с разным приоритетом
INSERT INTO clowbot.agent_methods (agent_code, method_type, method_name, method_ref, description, priority)
VALUES
('web_researcher', 'n8n_workflow', 'web_search', 'web-search', 'Web search via n8n workflow', 100),
('web_researcher', 'n8n_workflow', 'web_research_brief', 'web-research-brief', 'Deep web research via n8n', 90),
('web_researcher', 'process', 'web_search_local', 'web_search', 'Local web search process fallback', 80),
('web_researcher', 'internal_api', 'web_search_api', '/internal/web/search', 'Direct web search API', 70);При выполнении web_researcher сначала попробует n8n workflow (p=100), если не доступен — fallback на process (p=80).
Каталог методов по агентам
Данные из db/init/376_seed_agent_methods.sql
core_orchestrator
web_researcher
coder_executor
sql_analyst
task_decomposer
summarizer
critic_reviewer
memory_keeper
n8n_composer
Sub-agent отношения
Таблица agent_sub_agents определяет, какие агенты могут делегировать задачи другим.
CREATE TABLE clowbot.agent_sub_agents (
parent_agent_code text REFERENCES agent_profile(agent_code),
child_agent_code text REFERENCES agent_profile(agent_code),
delegation_rules jsonb NOT NULL DEFAULT '{}'::jsonb, -- Условия делегирования
priority integer NOT NULL DEFAULT 100,
PRIMARY KEY (parent_agent_code, child_agent_code)
);Примеры delegation_rules:
-- core_orchestrator делегирует task_decomposer при высокой сложности
INSERT INTO agent_sub_agents VALUES (
'core_orchestrator', 'task_decomposer',
'{"when_complexity": "high", "when_execution_mode": "multi_step", "auto_delegate": true}',
100
);
-- core_orchestrator делегирует web_researcher при web_search
INSERT INTO agent_sub_agents VALUES (
'core_orchestrator', 'web_researcher',
'{"when_task_type": ["web_search", "research"], "auto_delegate": true}',
90
);
-- memory_keeper не делегируется автоматически
INSERT INTO agent_sub_agents VALUES (
'core_orchestrator', 'memory_keeper',
'{"when_task_type": ["memory", "context"], "auto_delegate": false}',
50
);| Parent | Child | Condition | Auto |
|---|---|---|---|
| core_orchestrator | task_decomposer | complexity=high, multi_step | true |
| core_orchestrator | web_researcher | task_type=[web_search, research] | true |
| core_orchestrator | coder_executor | task_type=[code, sql] | true |
| task_decomposer | web_researcher | subtask_type=web_search | true |
| coder_executor | critic_reviewer | subtask_type=review | true |
Как добавить новый метод
- 1. Определить тип метода (n8n_workflow / internal_api / process / llm_direct)
- 2. Создать миграцию в
db/init/:INSERT INTO clowbot.agent_methods ( agent_code, method_type, method_name, method_ref, description, priority, input_contract, output_contract ) VALUES ( 'my_agent', 'internal_api', 'my_method', '/internal/my/endpoint', 'Description of what this method does', 100, '{"param": "string"}'::jsonb, '{"result": "object"}'::jsonb ); - 3. Если internal_api — реализовать endpoint в
bot/app/api/ - 4. Если n8n_workflow — создать workflow в
n8n/workflows/ - 5. Протестировать через
/internal/agent/select+/internal/process/execute