docs: expand lint scope batch51 (2 files)
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
|
||||
---
|
||||
|
||||
# 1. Базові принципи
|
||||
## 1. Базові принципи
|
||||
|
||||
1. Агент — це **чиста функція + конфіг**.
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
---
|
||||
|
||||
# 2. Інтерфейси агента
|
||||
## 2. Інтерфейси агента
|
||||
|
||||
```ts
|
||||
export type AgentRole =
|
||||
@@ -59,7 +59,7 @@ export interface AgentConfig {
|
||||
modelHint?: string; // підказка для modelRouter
|
||||
tools?: string[]; // назви інструментів, які дозволені
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
Повідомлення:
|
||||
|
||||
@@ -72,11 +72,11 @@ export interface AgentMessage {
|
||||
toolName?: string; // якщо role === "tool"
|
||||
ts?: string;
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 3. Runtime-контекст агента
|
||||
## 3. Runtime-контекст агента
|
||||
|
||||
```ts
|
||||
export interface AgentContext {
|
||||
@@ -94,11 +94,11 @@ export interface AgentContext {
|
||||
memory: AgentMemoryAdapter;
|
||||
llm: AgentLLMAdapter;
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 4. Інтерфейси Memory та LLM
|
||||
## 4. Інтерфейси Memory та LLM
|
||||
|
||||
## 4.1. AgentMemoryAdapter
|
||||
|
||||
@@ -109,11 +109,11 @@ export interface AgentMemoryAdapter {
|
||||
saveTurn(ctx: AgentContext, turn: AgentMessage): Promise<void>;
|
||||
appendFact(ctx: AgentContext, fact: string): Promise<void>;
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
* `short-term` — останні N ходів діалогу;
|
||||
- `short-term` — останні N ходів діалогу;
|
||||
|
||||
* `long-term` — узагальнені знання про команду/проект.
|
||||
- `long-term` — узагальнені знання про команду/проект.
|
||||
|
||||
## 4.2. AgentLLMAdapter
|
||||
|
||||
@@ -125,13 +125,13 @@ export interface AgentLLMAdapter {
|
||||
options?: { modelHint?: string }
|
||||
): Promise<string>;
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
Фактична реалізація використовує `openaiClient` + `modelRouter` з `11_llm_integration.md`.
|
||||
|
||||
---
|
||||
|
||||
# 5. Інструменти (Tools)
|
||||
## 5. Інструменти (Tools)
|
||||
|
||||
```ts
|
||||
export type ToolFn = (ctx: AgentContext, args: any) => Promise<any>;
|
||||
@@ -139,23 +139,23 @@ export type ToolFn = (ctx: AgentContext, args: any) => Promise<any>;
|
||||
export interface ToolRegistry {
|
||||
[name: string]: ToolFn;
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
Приклади tools:
|
||||
|
||||
* `create_followup`
|
||||
- `create_followup`
|
||||
|
||||
* `create_task`
|
||||
- `create_task`
|
||||
|
||||
* `get_project_summary`
|
||||
- `get_project_summary`
|
||||
|
||||
* `get_channel_history`
|
||||
- `get_channel_history`
|
||||
|
||||
Інструменти не викликаються напряму з UI, тільки через агентський runtime.
|
||||
|
||||
---
|
||||
|
||||
# 6. Головна функція: runAgentTurn
|
||||
## 6. Головна функція: runAgentTurn
|
||||
|
||||
```ts
|
||||
export interface AgentTurnResult {
|
||||
@@ -209,11 +209,11 @@ export async function runAgentTurn(ctx: AgentContext): Promise<AgentTurnResult>
|
||||
|
||||
return { reply, toolCalls };
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 7. buildLLMMessages: як формується промпт
|
||||
## 7. buildLLMMessages: як формується промпт
|
||||
|
||||
```ts
|
||||
function buildLLMMessages(
|
||||
@@ -240,43 +240,43 @@ function buildLLMMessages(
|
||||
|
||||
return [system, memoryMsg, ...shortTerm, userInput];
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
Надалі:
|
||||
|
||||
* можна додати Co-Memory / RAG (витягнути релевантні факти з векторної БД);
|
||||
- можна додати Co-Memory / RAG (витягнути релевантні факти з векторної БД);
|
||||
|
||||
* можна додати структуровані інструкції для tools.
|
||||
- можна додати структуровані інструкції для tools.
|
||||
|
||||
---
|
||||
|
||||
# 8. Життєвий цикл одного запиту агента (end-to-end)
|
||||
## 8. Життєвий цикл одного запиту агента (end-to-end)
|
||||
|
||||
1. UI (`AgentChatWindow` або `AgentOnboardingChat`) відправляє `/agents/{id}/chat`:
|
||||
|
||||
* `agentId`,
|
||||
- `agentId`,
|
||||
|
||||
* `channelId`,
|
||||
- `channelId`,
|
||||
|
||||
* `userId`,
|
||||
- `userId`,
|
||||
|
||||
* `input` (текст користувача).
|
||||
- `input` (текст користувача).
|
||||
|
||||
2. Backend:
|
||||
|
||||
* дістає `AgentConfig` з БД;
|
||||
- дістає `AgentConfig` з БД;
|
||||
|
||||
* формує `AgentContext`:
|
||||
- формує `AgentContext`:
|
||||
|
||||
* agent, teamId, channelId, userId,
|
||||
- agent, teamId, channelId, userId,
|
||||
|
||||
* history (опційно),
|
||||
- history (опційно),
|
||||
|
||||
* memory adapter,
|
||||
- memory adapter,
|
||||
|
||||
* llm adapter,
|
||||
- llm adapter,
|
||||
|
||||
* tools.
|
||||
- tools.
|
||||
|
||||
3. Викликає `runAgentTurn(ctx)`.
|
||||
|
||||
@@ -288,15 +288,15 @@ function buildLLMMessages(
|
||||
|
||||
---
|
||||
|
||||
# 9. Інтеграція з SML / локальними моделями
|
||||
## 9. Інтеграція з SML / локальними моделями
|
||||
|
||||
У майбутньому:
|
||||
|
||||
* `AgentLLMAdapter.complete` може:
|
||||
- `AgentLLMAdapter.complete` може:
|
||||
|
||||
* для простих задач (класифікація, короткі відповіді) викликати локальний SML,
|
||||
- для простих задач (класифікація, короткі відповіді) викликати локальний SML,
|
||||
|
||||
* для складних — OpenAI/велику LLM.
|
||||
- для складних — OpenAI/велику LLM.
|
||||
|
||||
Псевдокод:
|
||||
|
||||
@@ -308,63 +308,63 @@ export async function complete(ctx, messages, options) {
|
||||
return callLLM(messages, pickModel(ctx.agent.role));
|
||||
}
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 10. Використання для різних типів агентів
|
||||
## 10. Використання для різних типів агентів
|
||||
|
||||
### Guide Agent (онбординг)
|
||||
|
||||
* той самий runtime,
|
||||
- той самий runtime,
|
||||
|
||||
* інший `systemPrompt`,
|
||||
- інший `systemPrompt`,
|
||||
|
||||
* інший набір tools:
|
||||
- інший набір tools:
|
||||
|
||||
* `create_team`
|
||||
- `create_team`
|
||||
|
||||
* `update_team_mode`
|
||||
- `update_team_mode`
|
||||
|
||||
* `create_channel`
|
||||
- `create_channel`
|
||||
|
||||
* `create_agent`
|
||||
- `create_agent`
|
||||
|
||||
### Team Assistant
|
||||
|
||||
* general-purpose агент,
|
||||
- general-purpose агент,
|
||||
|
||||
* має tools:
|
||||
- має tools:
|
||||
|
||||
* `create_followup`
|
||||
- `create_followup`
|
||||
|
||||
* `create_task`
|
||||
- `create_task`
|
||||
|
||||
* `get_summary`
|
||||
- `get_summary`
|
||||
|
||||
* `search_memory`
|
||||
- `search_memory`
|
||||
|
||||
### Evolution Meta-Agent
|
||||
|
||||
* використовує:
|
||||
- використовує:
|
||||
|
||||
* `conversation_log` як input,
|
||||
- `conversation_log` як input,
|
||||
|
||||
* інший systemPrompt,
|
||||
- інший systemPrompt,
|
||||
|
||||
* tools:
|
||||
- tools:
|
||||
|
||||
* `create_improvement_proposal`
|
||||
- `create_improvement_proposal`
|
||||
|
||||
* `update_agent_rules`
|
||||
- `update_agent_rules`
|
||||
|
||||
---
|
||||
|
||||
# 11. Структура файлів
|
||||
## 11. Структура файлів
|
||||
|
||||
## 11.1. Core Runtime
|
||||
|
||||
```
|
||||
```text
|
||||
src/agent-runtime/
|
||||
core/
|
||||
types.ts # AgentConfig, AgentContext, AgentMessage
|
||||
@@ -379,18 +379,18 @@ src/agent-runtime/
|
||||
createFollowup.ts # Інструмент створення follow-up
|
||||
createTask.ts # Інструмент створення задачі
|
||||
getSummary.ts # Інструмент отримання підсумку
|
||||
```
|
||||
```text
|
||||
|
||||
## 11.2. Контролери
|
||||
|
||||
```
|
||||
```text
|
||||
src/controllers/
|
||||
agentsController.ts # HTTP endpoint /agents/{id}/chat
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 12. Реалізація адаптерів
|
||||
## 12. Реалізація адаптерів
|
||||
|
||||
## 12.1. Memory Adapter
|
||||
|
||||
@@ -447,7 +447,7 @@ export class DatabaseMemoryAdapter implements AgentMemoryAdapter {
|
||||
});
|
||||
}
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
## 12.2. LLM Adapter
|
||||
|
||||
@@ -474,11 +474,11 @@ export class OpenAILLMAdapter implements AgentLLMAdapter {
|
||||
return await callLLM(openaiMessages, model);
|
||||
}
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 13. Реєстр інструментів
|
||||
## 13. Реєстр інструментів
|
||||
|
||||
```ts
|
||||
import { ToolRegistry, ToolFn } from "./types";
|
||||
@@ -506,11 +506,11 @@ export function getAvailableTools(agent: AgentConfig): ToolRegistry {
|
||||
}
|
||||
return registry;
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 14. Парсинг викликів інструментів
|
||||
## 14. Парсинг викликів інструментів
|
||||
|
||||
```ts
|
||||
export function parseToolCalls(replyText: string): Array<{ name: string; args: any }> {
|
||||
@@ -533,13 +533,13 @@ export function parseToolCalls(replyText: string): Array<{ name: string; args: a
|
||||
|
||||
return calls;
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
Альтернативно, можна використовувати structured outputs або function calling API OpenAI.
|
||||
|
||||
---
|
||||
|
||||
# 15. HTTP Endpoint
|
||||
## 15. HTTP Endpoint
|
||||
|
||||
```ts
|
||||
import { Request, Response } from "express";
|
||||
@@ -610,11 +610,11 @@ export async function chatWithAgent(req: Request, res: Response) {
|
||||
res.status(500).json({ error: "Agent failed to respond" });
|
||||
}
|
||||
}
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 16. Тестування
|
||||
## 16. Тестування
|
||||
|
||||
## 16.1. Unit Tests
|
||||
|
||||
@@ -648,15 +648,15 @@ describe("runAgentTurn", () => {
|
||||
expect(mockLLM.complete).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 17. Завдання для Cursor
|
||||
## 17. Завдання для Cursor
|
||||
|
||||
Приклад промта:
|
||||
|
||||
```
|
||||
```text
|
||||
You are a senior backend engineer.
|
||||
|
||||
Implement the Agent Runtime Core for MicroDAO using:
|
||||
@@ -682,25 +682,24 @@ Output:
|
||||
- list of modified files
|
||||
- diff
|
||||
- summary
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 18. Результат
|
||||
## 18. Результат
|
||||
|
||||
Після впровадження цього ядра:
|
||||
|
||||
* усі агенти MicroDAO працюють через єдиний runtime;
|
||||
- усі агенти MicroDAO працюють через єдиний runtime;
|
||||
|
||||
* легко додавати нові типи агентів;
|
||||
- легко додавати нові типи агентів;
|
||||
|
||||
* пам'ять, LLM і tools чітко відокремлені;
|
||||
- пам'ять, LLM і tools чітко відокремлені;
|
||||
|
||||
* інтеграція з SML і DAGI стає питанням конфігурації, а не переписування коду.
|
||||
- інтеграція з SML і DAGI стає питанням конфігурації, а не переписування коду.
|
||||
|
||||
---
|
||||
|
||||
**Готово.**
|
||||
Це **повна специфікація Agent Runtime Core**, готова до використання в Cursor.
|
||||
|
||||
|
||||
|
||||
@@ -2,11 +2,14 @@
|
||||
|
||||
Агент-проєктний менеджер для команд і спільнот
|
||||
|
||||
Цей документ описує агентський модуль "Проєкти" у MicroDAO — систему управління роботою, яка повністю працює через агентів. Проєкти, задачі, дедлайни, фоллоуапи та прогрес — це не просто дані, а живий простір, у якому взаємодіють люди та агенти microDAO.
|
||||
Цей документ описує агентський модуль "Проєкти" у MicroDAO — систему
|
||||
управління роботою, яка повністю працює через агентів. Проєкти, задачі,
|
||||
дедлайни, фоллоуапи та прогрес — це не просто дані, а живий простір, у якому
|
||||
взаємодіють люди та агенти microDAO.
|
||||
|
||||
---
|
||||
|
||||
# 1. Ідея
|
||||
## 1. Ідея
|
||||
|
||||
Проєкт у MicroDAO — це:
|
||||
|
||||
@@ -19,7 +22,7 @@
|
||||
|
||||
---
|
||||
|
||||
# 2. Ролі агентів у модулі
|
||||
## 2. Ролі агентів у модулі
|
||||
|
||||
## 2.1. Projects Agent (основний)
|
||||
|
||||
@@ -52,7 +55,7 @@
|
||||
|
||||
---
|
||||
|
||||
# 3. Структура проєкту
|
||||
## 3. Структура проєкту
|
||||
|
||||
Проєкт складається з:
|
||||
|
||||
@@ -80,7 +83,7 @@
|
||||
|
||||
---
|
||||
|
||||
# 4. Модель задачі
|
||||
## 4. Модель задачі
|
||||
|
||||
Задача (`task`) має:
|
||||
|
||||
@@ -101,7 +104,7 @@
|
||||
|
||||
---
|
||||
|
||||
# 5. Основні спроможності Projects Agent
|
||||
## 5. Основні спроможності Projects Agent
|
||||
|
||||
## 5.1. Авто-створення задач з діалогів
|
||||
|
||||
@@ -160,7 +163,7 @@ Projects Agent може:
|
||||
|
||||
---
|
||||
|
||||
# 6. Tools для Projects Agent
|
||||
## 6. Tools для Projects Agent
|
||||
|
||||
У форматі, що сумісний з Runtime Core (12).
|
||||
|
||||
@@ -194,7 +197,7 @@ Projects Agent може:
|
||||
|
||||
---
|
||||
|
||||
# 7. Інтеграція з Runtime Core (12)
|
||||
## 7. Інтеграція з Runtime Core (12)
|
||||
|
||||
Projects Agent — звичайний агент:
|
||||
|
||||
@@ -215,57 +218,57 @@ const projectsAgentConfig: AgentConfig = {
|
||||
"auto_followup"
|
||||
],
|
||||
};
|
||||
```
|
||||
```text
|
||||
|
||||
Projects Agent працює з:
|
||||
|
||||
* памʼяттю (13),
|
||||
* каналами (14),
|
||||
* еволюційним агентом (09),
|
||||
* LLM (11).
|
||||
- памʼяттю (13),
|
||||
- каналами (14),
|
||||
- еволюційним агентом (09),
|
||||
- LLM (11).
|
||||
|
||||
---
|
||||
|
||||
# 8. Інтеграція з памʼяттю (13)
|
||||
## 8. Інтеграція з памʼяттю (13)
|
||||
|
||||
Projects Agent використовує:
|
||||
|
||||
### 8.1. Short-Term Memory
|
||||
|
||||
* поточні обговорення задач у каналі проєкту.
|
||||
- поточні обговорення задач у каналі проєкту.
|
||||
|
||||
### 8.2. Long-Term Memory
|
||||
|
||||
* ключові рішення команди,
|
||||
* визначення задач і стандартів,
|
||||
* історія пріоритетів.
|
||||
- ключові рішення команди,
|
||||
- визначення задач і стандартів,
|
||||
- історія пріоритетів.
|
||||
|
||||
### 8.3. Mid-Term Memory
|
||||
|
||||
* summary спринтів,
|
||||
* переліки завершених задач,
|
||||
* звіти про прогрес.
|
||||
- summary спринтів,
|
||||
- переліки завершених задач,
|
||||
- звіти про прогрес.
|
||||
|
||||
Projects Agent додає факти в памʼять:
|
||||
|
||||
* "Задачу X завершено 12 жовтня."
|
||||
* "Проєкт переходить до етапу тестування."
|
||||
- "Задачу X завершено 12 жовтня."
|
||||
- "Проєкт переходить до етапу тестування."
|
||||
|
||||
---
|
||||
|
||||
# 9. Інтеграція з Messenger Agent (14)
|
||||
## 9. Інтеграція з Messenger Agent (14)
|
||||
|
||||
Messenger Agent допомагає Projects Agent:
|
||||
|
||||
* показувати списки задач у чатах,
|
||||
* формувати треди для задач,
|
||||
* робити дайджести по каналах.
|
||||
- показувати списки задач у чатах,
|
||||
- формувати треди для задач,
|
||||
- робити дайджести по каналах.
|
||||
|
||||
Projects Agent може викликати Messenger Agent через tools або через делегацію.
|
||||
|
||||
---
|
||||
|
||||
# 10. API для проєктів та задач
|
||||
## 10. API для проєктів та задач
|
||||
|
||||
### 10.1. Projects
|
||||
|
||||
@@ -285,46 +288,46 @@ Projects Agent може викликати Messenger Agent через tools аб
|
||||
|
||||
---
|
||||
|
||||
# 11. UI інтеграція
|
||||
## 11. UI інтеграція
|
||||
|
||||
## 11.1. Sidebar → Projects
|
||||
|
||||
У лівому сайдбарі в блоці "Простори" відображаються:
|
||||
|
||||
* список проєктів,
|
||||
* кнопка "Створити проєкт".
|
||||
- список проєктів,
|
||||
- кнопка "Створити проєкт".
|
||||
|
||||
## 11.2. Right Sidebar → Project Context
|
||||
|
||||
Коли користувач знаходиться у каналі проєкту:
|
||||
|
||||
* правий сайдбар показує:
|
||||
- правий сайдбар показує:
|
||||
|
||||
* назву проєкту,
|
||||
* короткий опис,
|
||||
* задачі по статусам,
|
||||
* кнопку "Нова задача".
|
||||
- назву проєкту,
|
||||
- короткий опис,
|
||||
- задачі по статусам,
|
||||
- кнопку "Нова задача".
|
||||
|
||||
## 11.3. Task Panel
|
||||
|
||||
Клік по задачі відкриває:
|
||||
|
||||
* повну картку задачі,
|
||||
* чат-тред задачі,
|
||||
* дії:
|
||||
- повну картку задачі,
|
||||
- чат-тред задачі,
|
||||
- дії:
|
||||
|
||||
* змінити статус,
|
||||
* призначити,
|
||||
* додати опис,
|
||||
* переглянути памʼять.
|
||||
- змінити статус,
|
||||
- призначити,
|
||||
- додати опис,
|
||||
- переглянути памʼять.
|
||||
|
||||
---
|
||||
|
||||
# 12. Інструкції для Cursor
|
||||
## 12. Інструкції для Cursor
|
||||
|
||||
Приклад промта:
|
||||
|
||||
```
|
||||
```text
|
||||
Implement the Projects Agent module using:
|
||||
|
||||
- 15_projects_agent_module.md
|
||||
@@ -359,18 +362,16 @@ Output:
|
||||
- list of changed files
|
||||
- diff
|
||||
- summary
|
||||
```
|
||||
```text
|
||||
|
||||
---
|
||||
|
||||
# 13. Результат
|
||||
## 13. Результат
|
||||
|
||||
Після впровадження цього модуля:
|
||||
|
||||
* MicroDAO отримує повноцінний агентський менеджмент проєктів;
|
||||
* задачі створюються з діалогів, а не через форму;
|
||||
* агенти синхронізують роботу між каналами й людьми;
|
||||
* зʼявляється можливість планувати спринти, отримувати прогрес і формувати дайджести;
|
||||
* Projects Agent стає центральним "організатором роботи" у кожному microDAO.
|
||||
|
||||
|
||||
- MicroDAO отримує повноцінний агентський менеджмент проєктів;
|
||||
- задачі створюються з діалогів, а не через форму;
|
||||
- агенти синхронізують роботу між каналами й людьми;
|
||||
- зʼявляється можливість планувати спринти, отримувати прогрес і формувати дайджести;
|
||||
- Projects Agent стає центральним "організатором роботи" у кожному microDAO.
|
||||
|
||||
@@ -131,3 +131,5 @@ docs/cursor/11_llm_integration.md
|
||||
docs/cursor/17_comemory_knowledge_space.md
|
||||
docs/cursor/23_domains_wallet_dao_deepdive.md
|
||||
docs/cursor/14_messenger_agent_module.md
|
||||
docs/cursor/15_projects_agent_module.md
|
||||
docs/cursor/12_agent_runtime_core.md
|
||||
|
||||
Reference in New Issue
Block a user