docs: expand lint scope batch51 (2 files)

This commit is contained in:
Apple
2026-02-16 07:47:45 -08:00
parent 1721b60401
commit 3c11d243c5
3 changed files with 141 additions and 139 deletions

View File

@@ -16,7 +16,7 @@
--- ---
# 1. Базові принципи ## 1. Базові принципи
1. Агент — це **чиста функція + конфіг**. 1. Агент — це **чиста функція + конфіг**.
@@ -38,7 +38,7 @@
--- ---
# 2. Інтерфейси агента ## 2. Інтерфейси агента
```ts ```ts
export type AgentRole = export type AgentRole =
@@ -59,7 +59,7 @@ export interface AgentConfig {
modelHint?: string; // підказка для modelRouter modelHint?: string; // підказка для modelRouter
tools?: string[]; // назви інструментів, які дозволені tools?: string[]; // назви інструментів, які дозволені
} }
``` ```text
Повідомлення: Повідомлення:
@@ -72,11 +72,11 @@ export interface AgentMessage {
toolName?: string; // якщо role === "tool" toolName?: string; // якщо role === "tool"
ts?: string; ts?: string;
} }
``` ```text
--- ---
# 3. Runtime-контекст агента ## 3. Runtime-контекст агента
```ts ```ts
export interface AgentContext { export interface AgentContext {
@@ -94,11 +94,11 @@ export interface AgentContext {
memory: AgentMemoryAdapter; memory: AgentMemoryAdapter;
llm: AgentLLMAdapter; llm: AgentLLMAdapter;
} }
``` ```text
--- ---
# 4. Інтерфейси Memory та LLM ## 4. Інтерфейси Memory та LLM
## 4.1. AgentMemoryAdapter ## 4.1. AgentMemoryAdapter
@@ -109,11 +109,11 @@ export interface AgentMemoryAdapter {
saveTurn(ctx: AgentContext, turn: AgentMessage): Promise<void>; saveTurn(ctx: AgentContext, turn: AgentMessage): Promise<void>;
appendFact(ctx: AgentContext, fact: string): Promise<void>; appendFact(ctx: AgentContext, fact: string): Promise<void>;
} }
``` ```text
* `short-term` — останні N ходів діалогу; - `short-term` — останні N ходів діалогу;
* `long-term` — узагальнені знання про команду/проект. - `long-term` — узагальнені знання про команду/проект.
## 4.2. AgentLLMAdapter ## 4.2. AgentLLMAdapter
@@ -125,13 +125,13 @@ export interface AgentLLMAdapter {
options?: { modelHint?: string } options?: { modelHint?: string }
): Promise<string>; ): Promise<string>;
} }
``` ```text
Фактична реалізація використовує `openaiClient` + `modelRouter` з `11_llm_integration.md`. Фактична реалізація використовує `openaiClient` + `modelRouter` з `11_llm_integration.md`.
--- ---
# 5. Інструменти (Tools) ## 5. Інструменти (Tools)
```ts ```ts
export type ToolFn = (ctx: AgentContext, args: any) => Promise<any>; 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 { export interface ToolRegistry {
[name: string]: ToolFn; [name: string]: ToolFn;
} }
``` ```text
Приклади tools: Приклади tools:
* `create_followup` - `create_followup`
* `create_task` - `create_task`
* `get_project_summary` - `get_project_summary`
* `get_channel_history` - `get_channel_history`
Інструменти не викликаються напряму з UI, тільки через агентський runtime. Інструменти не викликаються напряму з UI, тільки через агентський runtime.
--- ---
# 6. Головна функція: runAgentTurn ## 6. Головна функція: runAgentTurn
```ts ```ts
export interface AgentTurnResult { export interface AgentTurnResult {
@@ -209,11 +209,11 @@ export async function runAgentTurn(ctx: AgentContext): Promise<AgentTurnResult>
return { reply, toolCalls }; return { reply, toolCalls };
} }
``` ```text
--- ---
# 7. buildLLMMessages: як формується промпт ## 7. buildLLMMessages: як формується промпт
```ts ```ts
function buildLLMMessages( function buildLLMMessages(
@@ -240,43 +240,43 @@ function buildLLMMessages(
return [system, memoryMsg, ...shortTerm, userInput]; 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`: 1. UI (`AgentChatWindow` або `AgentOnboardingChat`) відправляє `/agents/{id}/chat`:
* `agentId`, - `agentId`,
* `channelId`, - `channelId`,
* `userId`, - `userId`,
* `input` (текст користувача). - `input` (текст користувача).
2. Backend: 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)`. 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)); return callLLM(messages, pickModel(ctx.agent.role));
} }
} }
``` ```text
--- ---
# 10. Використання для різних типів агентів ## 10. Використання для різних типів агентів
### Guide Agent (онбординг) ### 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 ### 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 ### 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 ## 11.1. Core Runtime
``` ```text
src/agent-runtime/ src/agent-runtime/
core/ core/
types.ts # AgentConfig, AgentContext, AgentMessage types.ts # AgentConfig, AgentContext, AgentMessage
@@ -379,18 +379,18 @@ src/agent-runtime/
createFollowup.ts # Інструмент створення follow-up createFollowup.ts # Інструмент створення follow-up
createTask.ts # Інструмент створення задачі createTask.ts # Інструмент створення задачі
getSummary.ts # Інструмент отримання підсумку getSummary.ts # Інструмент отримання підсумку
``` ```text
## 11.2. Контролери ## 11.2. Контролери
``` ```text
src/controllers/ src/controllers/
agentsController.ts # HTTP endpoint /agents/{id}/chat agentsController.ts # HTTP endpoint /agents/{id}/chat
``` ```text
--- ---
# 12. Реалізація адаптерів ## 12. Реалізація адаптерів
## 12.1. Memory Adapter ## 12.1. Memory Adapter
@@ -447,7 +447,7 @@ export class DatabaseMemoryAdapter implements AgentMemoryAdapter {
}); });
} }
} }
``` ```text
## 12.2. LLM Adapter ## 12.2. LLM Adapter
@@ -474,11 +474,11 @@ export class OpenAILLMAdapter implements AgentLLMAdapter {
return await callLLM(openaiMessages, model); return await callLLM(openaiMessages, model);
} }
} }
``` ```text
--- ---
# 13. Реєстр інструментів ## 13. Реєстр інструментів
```ts ```ts
import { ToolRegistry, ToolFn } from "./types"; import { ToolRegistry, ToolFn } from "./types";
@@ -506,11 +506,11 @@ export function getAvailableTools(agent: AgentConfig): ToolRegistry {
} }
return registry; return registry;
} }
``` ```text
--- ---
# 14. Парсинг викликів інструментів ## 14. Парсинг викликів інструментів
```ts ```ts
export function parseToolCalls(replyText: string): Array<{ name: string; args: any }> { 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; return calls;
} }
``` ```text
Альтернативно, можна використовувати structured outputs або function calling API OpenAI. Альтернативно, можна використовувати structured outputs або function calling API OpenAI.
--- ---
# 15. HTTP Endpoint ## 15. HTTP Endpoint
```ts ```ts
import { Request, Response } from "express"; 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" }); res.status(500).json({ error: "Agent failed to respond" });
} }
} }
``` ```text
--- ---
# 16. Тестування ## 16. Тестування
## 16.1. Unit Tests ## 16.1. Unit Tests
@@ -648,15 +648,15 @@ describe("runAgentTurn", () => {
expect(mockLLM.complete).toHaveBeenCalled(); expect(mockLLM.complete).toHaveBeenCalled();
}); });
}); });
``` ```text
--- ---
# 17. Завдання для Cursor ## 17. Завдання для Cursor
Приклад промта: Приклад промта:
``` ```text
You are a senior backend engineer. You are a senior backend engineer.
Implement the Agent Runtime Core for MicroDAO using: Implement the Agent Runtime Core for MicroDAO using:
@@ -682,25 +682,24 @@ Output:
- list of modified files - list of modified files
- diff - diff
- summary - summary
``` ```text
--- ---
# 18. Результат ## 18. Результат
Після впровадження цього ядра: Після впровадження цього ядра:
* усі агенти MicroDAO працюють через єдиний runtime; - усі агенти MicroDAO працюють через єдиний runtime;
* легко додавати нові типи агентів; - легко додавати нові типи агентів;
* пам'ять, LLM і tools чітко відокремлені; - пам'ять, LLM і tools чітко відокремлені;
* інтеграція з SML і DAGI стає питанням конфігурації, а не переписування коду. - інтеграція з SML і DAGI стає питанням конфігурації, а не переписування коду.
--- ---
**Готово.** **Готово.**
Це **повна специфікація Agent Runtime Core**, готова до використання в Cursor. Це **повна специфікація Agent Runtime Core**, готова до використання в Cursor.

View File

@@ -2,11 +2,14 @@
Агент-проєктний менеджер для команд і спільнот Агент-проєктний менеджер для команд і спільнот
Цей документ описує агентський модуль "Проєкти" у MicroDAO — систему управління роботою, яка повністю працює через агентів. Проєкти, задачі, дедлайни, фоллоуапи та прогрес — це не просто дані, а живий простір, у якому взаємодіють люди та агенти microDAO. Цей документ описує агентський модуль "Проєкти" у MicroDAO — систему
управління роботою, яка повністю працює через агентів. Проєкти, задачі,
дедлайни, фоллоуапи та прогрес — це не просто дані, а живий простір, у якому
взаємодіють люди та агенти microDAO.
--- ---
# 1. Ідея ## 1. Ідея
Проєкт у MicroDAO — це: Проєкт у MicroDAO — це:
@@ -19,7 +22,7 @@
--- ---
# 2. Ролі агентів у модулі ## 2. Ролі агентів у модулі
## 2.1. Projects Agent (основний) ## 2.1. Projects Agent (основний)
@@ -52,7 +55,7 @@
--- ---
# 3. Структура проєкту ## 3. Структура проєкту
Проєкт складається з: Проєкт складається з:
@@ -80,7 +83,7 @@
--- ---
# 4. Модель задачі ## 4. Модель задачі
Задача (`task`) має: Задача (`task`) має:
@@ -101,7 +104,7 @@
--- ---
# 5. Основні спроможності Projects Agent ## 5. Основні спроможності Projects Agent
## 5.1. Авто-створення задач з діалогів ## 5.1. Авто-створення задач з діалогів
@@ -160,7 +163,7 @@ Projects Agent може:
--- ---
# 6. Tools для Projects Agent ## 6. Tools для Projects Agent
У форматі, що сумісний з Runtime Core (12). У форматі, що сумісний з Runtime Core (12).
@@ -194,7 +197,7 @@ Projects Agent може:
--- ---
# 7. Інтеграція з Runtime Core (12) ## 7. Інтеграція з Runtime Core (12)
Projects Agent — звичайний агент: Projects Agent — звичайний агент:
@@ -215,57 +218,57 @@ const projectsAgentConfig: AgentConfig = {
"auto_followup" "auto_followup"
], ],
}; };
``` ```text
Projects Agent працює з: Projects Agent працює з:
* памʼяттю (13), - памʼяттю (13),
* каналами (14), - каналами (14),
* еволюційним агентом (09), - еволюційним агентом (09),
* LLM (11). - LLM (11).
--- ---
# 8. Інтеграція з памʼяттю (13) ## 8. Інтеграція з памʼяттю (13)
Projects Agent використовує: Projects Agent використовує:
### 8.1. Short-Term Memory ### 8.1. Short-Term Memory
* поточні обговорення задач у каналі проєкту. - поточні обговорення задач у каналі проєкту.
### 8.2. Long-Term Memory ### 8.2. Long-Term Memory
* ключові рішення команди, - ключові рішення команди,
* визначення задач і стандартів, - визначення задач і стандартів,
* історія пріоритетів. - історія пріоритетів.
### 8.3. Mid-Term Memory ### 8.3. Mid-Term Memory
* summary спринтів, - summary спринтів,
* переліки завершених задач, - переліки завершених задач,
* звіти про прогрес. - звіти про прогрес.
Projects Agent додає факти в памʼять: Projects Agent додає факти в памʼять:
* "Задачу X завершено 12 жовтня." - "Задачу X завершено 12 жовтня."
* "Проєкт переходить до етапу тестування." - "Проєкт переходить до етапу тестування."
--- ---
# 9. Інтеграція з Messenger Agent (14) ## 9. Інтеграція з Messenger Agent (14)
Messenger Agent допомагає Projects Agent: Messenger Agent допомагає Projects Agent:
* показувати списки задач у чатах, - показувати списки задач у чатах,
* формувати треди для задач, - формувати треди для задач,
* робити дайджести по каналах. - робити дайджести по каналах.
Projects Agent може викликати Messenger Agent через tools або через делегацію. Projects Agent може викликати Messenger Agent через tools або через делегацію.
--- ---
# 10. API для проєктів та задач ## 10. API для проєктів та задач
### 10.1. Projects ### 10.1. Projects
@@ -285,46 +288,46 @@ Projects Agent може викликати Messenger Agent через tools аб
--- ---
# 11. UI інтеграція ## 11. UI інтеграція
## 11.1. Sidebar → Projects ## 11.1. Sidebar → Projects
У лівому сайдбарі в блоці "Простори" відображаються: У лівому сайдбарі в блоці "Простори" відображаються:
* список проєктів, - список проєктів,
* кнопка "Створити проєкт". - кнопка "Створити проєкт".
## 11.2. Right Sidebar → Project Context ## 11.2. Right Sidebar → Project Context
Коли користувач знаходиться у каналі проєкту: Коли користувач знаходиться у каналі проєкту:
* правий сайдбар показує: - правий сайдбар показує:
* назву проєкту, - назву проєкту,
* короткий опис, - короткий опис,
* задачі по статусам, - задачі по статусам,
* кнопку "Нова задача". - кнопку "Нова задача".
## 11.3. Task Panel ## 11.3. Task Panel
Клік по задачі відкриває: Клік по задачі відкриває:
* повну картку задачі, - повну картку задачі,
* чат-тред задачі, - чат-тред задачі,
* дії: - дії:
* змінити статус, - змінити статус,
* призначити, - призначити,
* додати опис, - додати опис,
* переглянути памʼять. - переглянути памʼять.
--- ---
# 12. Інструкції для Cursor ## 12. Інструкції для Cursor
Приклад промта: Приклад промта:
``` ```text
Implement the Projects Agent module using: Implement the Projects Agent module using:
- 15_projects_agent_module.md - 15_projects_agent_module.md
@@ -359,18 +362,16 @@ Output:
- list of changed files - list of changed files
- diff - diff
- summary - summary
``` ```text
--- ---
# 13. Результат ## 13. Результат
Після впровадження цього модуля: Після впровадження цього модуля:
* MicroDAO отримує повноцінний агентський менеджмент проєктів; - MicroDAO отримує повноцінний агентський менеджмент проєктів;
* задачі створюються з діалогів, а не через форму; - задачі створюються з діалогів, а не через форму;
* агенти синхронізують роботу між каналами й людьми; - агенти синхронізують роботу між каналами й людьми;
* зʼявляється можливість планувати спринти, отримувати прогрес і формувати дайджести; - зʼявляється можливість планувати спринти, отримувати прогрес і формувати дайджести;
* Projects Agent стає центральним "організатором роботи" у кожному microDAO. - Projects Agent стає центральним "організатором роботи" у кожному microDAO.

View File

@@ -131,3 +131,5 @@ docs/cursor/11_llm_integration.md
docs/cursor/17_comemory_knowledge_space.md docs/cursor/17_comemory_knowledge_space.md
docs/cursor/23_domains_wallet_dao_deepdive.md docs/cursor/23_domains_wallet_dao_deepdive.md
docs/cursor/14_messenger_agent_module.md docs/cursor/14_messenger_agent_module.md
docs/cursor/15_projects_agent_module.md
docs/cursor/12_agent_runtime_core.md