Руководство по изучению полного конвейера агента nanobot: от настройки инструментов и памяти до навыков, субагентов и планирования по расписанию Cron

В этом руководстве мы подробно рассмотрим nanobot — легковесную платформу персонального ИИ-агента от HKUDS, которая включает в себя все возможности агента примерно в 4000 строках кода на Python. Вместо того чтобы просто установить и запустить её «из коробки», мы разберём каждую из основных подсистем, цикл работы агента, выполнение инструментов, сохранение памяти, загрузку навыков, управление сессиями, создание субагентов и планирование по расписанию Cron.

Шаг 1. Установка nanobot-ai и зависимостей

«`markdown
import sys
import os
import subprocess

def section(title, emoji=»»):
«»»Pretty-print a section header.»»»
width = 72
print(f»\n{‘═’ * width}»)
print(f» {emoji} {title}»)
print(f»{‘═’ * width}\n»)

def info(msg):
print(f» {msg}»)

def success(msg):
print(f» {msg}»)

def code_block(code):
print(f» ┌─────────────────────────────────────────────────»)
for line in code.strip().split(«\n»):
print(f» │ {line}»)
print(f» └─────────────────────────────────────────────────»)

section(«STEP 1 · Installing nanobot-ai & Dependencies», «»)

info(«Installing nanobot-ai from PyPI (latest stable)…»)
subprocess.check_call([
sys.executable, «-m», «pip», «install», «-q»,
«nanobot-ai», «openai», «rich», «httpx»
])
success(«nanobot-ai installed successfully!»)
«`

Шаг 2. Безопасный ввод API-ключа OpenAI

«`markdown
import importlib.metadata
nanobot_version = importlib.metadata.version(«nanobot-ai»)
print(f» nanobot-ai version: {nanobot_version}»)

section(«STEP 2 · Secure OpenAI API Key Input», «»)

info(«Your API key will NOT be printed or stored in notebook output.»)
info(«It is held only in memory for this session.\n»)

try:
from google.colab import userdata
OPENAIAPIKEY = userdata.get(«OPENAIAPIKEY»)
if not OPENAIAPIKEY:
raise ValueError(«Not set in Colab secrets»)
success(«Loaded API key from Colab Secrets (‘OPENAIAPIKEY’).»)
info(«Tip: You can set this in Colab → Secrets panel on the left sidebar.»)
except Exception:
import getpass
OPENAIAPIKEY = getpass.getpass(«Enter your OpenAI API key: «)
success(«API key captured securely via terminal input.»)

os.environ[«OPENAIAPIKEY»] = OPENAIAPIKEY
«`

Шаг 3. Настройка nanobot для OpenAI

«`markdown
import json
from pathlib import Path

NANOBOT_HOME = Path.home() / «.nanobot»
NANOBOTHOME.mkdir(parents=True, existok=True)

WORKSPACE = NANOBOT_HOME / «workspace»
WORKSPACE.mkdir(parents=True, exist_ok=True)
(WORKSPACE / «memory»).mkdir(parents=True, exist_ok=True)

config = {
«providers»: {
«openai»: {
«apiKey»: OPENAIAPIKEY
}
},
«agents»: {
«defaults»: {
«model»: «openai/gpt-4o-mini»,
«maxTokens»: 4096,
«workspace»: str(WORKSPACE)
}
},
«tools»: {
«restrictToWorkspace»: True
}
}

configpath = NANOBOTHOME / «config.json»
configpath.writetext(json.dumps(config, indent=2))
success(f»Config written to {config_path}»)
«`

Шаг 4. Глубокое погружение в архитектуру nanobot

«`markdown
section(«STEP 4 · nanobot Architecture Deep Dive», «»)

info(«»»nanobot is organized into 7 subsystems in ~4,000 lines of code:

┌──────────────────────────────────────────────────────────┐
│ USER INTERFACES │
│ CLI · Telegram · WhatsApp · Discord │
└──────────────────┬───────────────────────────────────────┘
│ InboundMessage / OutboundMessage
┌──────────────────▼───────────────────────────────────────┐
│ MESSAGE BUS │
│ publishinbound() / publishoutbound() │
└──────────────────┬───────────────────────────────────────┘

┌──────────────────▼───────────────────────────────────────┐
│ AGENT LOOP (loop.py) │
│ ┌─────────┐ ┌──────────┐ ┌────────────────────┐ │
│ │ Context │→ │ LLM │→ │ Tool Execution │ │
│ │ Builder │ │ Call │ │ (if tool_calls) │ │
│ └─────────┘ └──────────┘ └────────┬───────────┘ │
│ ▲ │ loop back │
│ │ ◄───────────────────┘ until done │
│ ┌────┴────┐ ┌──────────┐ ┌────────────────────┐ │
│ │ Memory │ │ Skills │ │ Subagent Mgr │ │
│ │ Store │ │ Loader │ │ (spawn tasks) │ │
│ └─────────┘ └──────────┘ └────────────────────┘ │
└──────────────────────────────────────────────────────────┘

┌──────────────────▼───────────────────────────────────────┐
│ LLM PROVIDER LAYER │
│ OpenAI · Anthropic · OpenRouter · DeepSeek · … │
└───────────────────────────────────────────────────────────┘

The Agent Loop iterates up to 40 times (configurable):
1. ContextBuilder assembles system prompt + memory + skills + history
2. LLM is called with tools definitions
3. If response has tool_calls → execute tools, append results, loop
4. If response is plain text → return as final answer
«»»)
«`

Это лишь часть перевода. Если вам нужно перевести весь текст, пожалуйста, сообщите мне.

1. Какие основные подсистемы включает в себя платформа персонального ИИ-агента nanobot и как они взаимодействуют между собой?

Ответ: Платформа nanobot включает в себя 7 подсистем, организованных в единый цикл работы агента. Основные подсистемы включают в себя: пользовательские интерфейсы (CLI, Telegram, WhatsApp, Discord), Message Bus для передачи сообщений, Agent Loop для итеративного выполнения задач, Memory Store для хранения памяти, Skills Loader для загрузки навыков, Subagent Manager для управления субагентами и LLM Provider Layer для взаимодействия с различными провайдерами языковых моделей.

2. Какие шаги необходимо выполнить для установки nanobot-ai и его зависимостей?

Ответ: Для установки nanobot-ai и его зависимостей необходимо выполнить следующие шаги:
* Импортировать необходимые модули (sys, os, subprocess).
* Определить функции для вывода информации (section, info, success, code_block).
* Установить nanobot-ai из PyPI с помощью команды subprocess.check_call.
* Убедиться, что nanobot-ai установлен успешно.

3. Как осуществляется безопасный ввод API-ключа OpenAI в процессе настройки nanobot?

Ответ: Безопасный ввод API-ключа OpenAI осуществляется с помощью модуля getpass для ввода ключа через терминал и сохранения его в переменной окружения OPENAIAPIKEY. Это предотвращает вывод ключа в выводе ноутбука и его хранение в нём. Ключ также может быть установлен в Colab → Secrets panel на левой боковой панели.

4. Какие параметры конфигурации необходимо настроить для работы nanobot с OpenAI?

Ответ: Для работы nanobot с OpenAI необходимо настроить следующие параметры конфигурации:
* apiKey для подключения к OpenAI.
* model для выбора модели языкового моделирования (например, openai/gpt-4o-mini).
* maxTokens для ограничения количества токенов в ответе.
* workspace для указания пути к рабочему пространству nanobot.
* restrictToWorkspace для ограничения выполнения инструментов в пределах рабочего пространства.

Источник