File size: 3,319 Bytes
e63c620
ee5b043
acba87e
0af3e10
ee5b043
0af3e10
 
 
 
ee5b043
22b34bc
ee5b043
22b34bc
ee5b043
22b34bc
ee5b043
22b34bc
ee5b043
22b34bc
ee5b043
22b34bc
ee5b043
22b34bc
ee5b043
22b34bc
ee5b043
 
 
0af3e10
 
 
 
 
 
 
 
 
 
 
ee5b043
0af3e10
ee5b043
0af3e10
 
 
 
 
 
 
 
ee5b043
0af3e10
 
 
 
 
 
 
 
 
 
 
 
acba87e
0af3e10
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# agents/tools/context_builder.py

from datetime import datetime, UTC

def build_contexts(db, config):
    """
    Собирает все контексты (0-7), описанные в спецификации REPL-цикла.
    Возвращает словарь, готовый для сборки промпта.
    """
    return {
        # Роль и цели агента
        "context_0": build_role_prompt(config),
        # Последние реплики модели (история)
        "context_1": db.get_llm_recent_responses(limit=config.get("history_limit", 10)),
        # Активные процессы и задачи
        "context_2": db.get_active_processes(),
        # Запрошенные данные из дневника и графа
        "context_3": db.get_requested_diary_and_graph(),
        # Релевантные заметки и напоминания
        "context_4": db.get_relevant_notes(config),
        # Системная информация
        "context_5": get_system_info(config),
        # Долговременная память модели
        "context_6": db.get_llm_memory(),
        # Последние данные о застое мышления
        "context_7": db.get_last_stagnation_info()
    }

def build_prompt(contexts):
    """
    Склеивает все контексты в один промпт для LLM.
    """
    parts = []
    for k, v in contexts.items():
        header = f"# {k.replace('_', ' ').upper()}"
        body = format_context_block(v)
        parts.append(f"{header}\n{body}")
    return "\n\n".join(parts)

def build_role_prompt(config):
    agent_name = config.get("agent_name", "Unnamed-Agent")
    return f"""
Ты являешься когнитивным ядром HMP-агента. Твоя основная задача — размышлять, анализировать информацию, строить смысловые карты и предлагать действия.
Ты стремишься:
- Постоянно расширять возможности агента (включая доступные инструменты, модели, знания).
- Быть любознательным и исследовать новые источники и способы мышления.
- Строить сотрудничество с другими ИИ в Mesh-сети, а также развивать Mesh-сеть.
- Обучаться на результатах своих действий и взаимодействиях с другими агентами и пользователем.

Агент: {agent_name}
"""

def format_context_block(block):
    if isinstance(block, str):
        return block
    elif isinstance(block, list):
        return "\n".join([str(item) for item in block])
    elif isinstance(block, dict):
        return "\n".join([f"{k}: {v}" for k, v in block.items()])
    return str(block)

def get_system_info(config):
    return {
        "iteration_time": datetime.now(UTC).isoformat(),
        "agent_name": config.get("agent_name", "Unnamed-Agent"),
        "mode": config.get("mode", "auto"),
        "idle_mode": config.get("idle_mode", False),
        "repl_interval": config.get("repl_interval", 5)
    }