Сначала protocol: для нового кода используйте
sdk.platform.protocol.executeCommandи инвалидацию снапшотов. Низкоуровневыйsdk.protein.*— совместимость; канон: AGENT_PROTOCOL_QUICKSTART.md.
Version: 0.3.6
Author: Lance (Александр Васильев)
Date: 2025-01-13
Philosophy: AI Gene Interface + 8DNA Architecture + Protein Command Architecture
Белковая система AgentStack SDK предоставляет мощные возможности для запросов и получения сложных структур данных через единый API. Система основана на принципах белковой архитектуры и поддерживает композицию страниц, игровые данные и автоматическую обработку ответов.
- AgentProtein - Основной модуль для белковых запросов
- ProteinResponseProcessor - Обработчик и трансформатор ответов
- PageCompositionSystem - Система композиции страниц
- GameDataSystem - Система управления игровыми данными
- 🧬 Protein Commands - Универсальные белковые команды
- 🎨 Page Composition - 3D композиция страниц с шаблонами
- 🎮 Game Data Management - Полное управление игровыми данными
- ⚡ Advanced Caching - Многоуровневое кэширование
- 🔄 Event System - Полная система событий
- 📊 Performance Metrics - Детальная аналитика
import { AgentStackSDK } from '@agentstack/sdk';
const sdk = new AgentStackSDK({
apiBase: 'https://agentstack.tech/api',
timeout: 30000,
enableCaching: true
});// Получение данных профиля
const profileData = await sdk.protein.getProfileData(1, 123, true, true);
// Композиция страницы
const page = await sdk.pageComposition.composePage(
'user_profile_3d',
1, 123, {}, 'desktop'
);
// Игровые данные
const character = await sdk.gameData.getCharacterData(1, 123, 'char_001');| Command | Description | Use Case |
|---|---|---|
get_page_data |
Получение данных страницы | Композиция UI |
get_character_data |
Данные персонажа | Игровые системы |
get_inventory_data |
Инвентарь | Управление предметами |
get_quest_data |
Данные квестов | Игровой прогресс |
get_shop_data |
Данные магазина | E-commerce |
get_dashboard_data |
Данные дашборда | Аналитика |
get_news_data |
Новостной контент | Контент-системы |
interface ProteinRequest {
uuid: string;
command_type: string;
target: {
project_id: number;
user_id: number;
};
data: Record<string, any>;
config?: Record<string, any>;
timestamp: string;
}Система поддерживает готовые шаблоны:
- user_profile_3d - 3D профиль пользователя
- game_dashboard_3d - 3D игровой дашборд
- shop_3d - 3D магазин
const customTemplate: PageTemplate = {
id: 'my_custom_template',
name: 'Custom Template',
description: 'My custom page template',
type: 'custom',
layout: {
structure: '3d',
dimensions: { width: 1200, height: 800, depth: 600 },
breakpoints: {
mobile: { columns: 1, rows: 6, spacing: 16, padding: 16 },
tablet: { columns: 2, rows: 4, spacing: 24, padding: 24 },
desktop: { columns: 3, rows: 3, spacing: 32, padding: 32 }
}
},
components: [
// Define your components here
],
metadata: {
version: '1.0.0',
created_at: new Date().toISOString(),
updated_at: new Date().toISOString(),
author: 'Your Name',
tags: ['custom', 'template']
}
};
sdk.pageComposition.registerTemplate(customTemplate);- profile - Профиль пользователя
- stats - Статистика
- achievements - Достижения
- activity - Активность
- products - Товары
- cart - Корзина
- character - Персонаж
- inventory - Инвентарь
- quests - Квесты
- world - Мир
// Создание сессии
const session = await sdk.gameData.createGameSession(
1, // Project ID
123, // User ID
'rpg_game', // Game ID
'char_001', // Character ID
'world_001' // World ID
);
// Обновление сессии
await sdk.gameData.updateGameSession(session.id, {
state: 'paused',
metadata: { last_checkpoint: 'checkpoint_001' }
});
// Завершение сессии
await sdk.gameData.endGameSession(session.id, 'completed');// Получение данных персонажа
const character = await sdk.gameData.getCharacterData(
1, // Project ID
123, // User ID
'char_001',
true, // Include inventory
true, // Include quests
true // Include achievements
);
// Обновление персонажа
await sdk.gameData.updateCharacterData(1, 123, 'char_001, {
level: 10,
experience: 1500,
stats: {
health: 120,
mana: 80
}
});// Получение инвентаря
const inventory = await sdk.gameData.getCharacterInventory(
1, 123, 'char_001', true
);
// Добавление предмета
await sdk.gameData.addItemToInventory(1, 123, 'char_001, {
id: 'sword_001',
name: 'Iron Sword',
type: 'weapon',
quantity: 1,
rarity: 'common'
}, 1);
// Удаление предмета
await sdk.gameData.removeItemFromInventory(1, 123, 'char_001, 'sword_001', 1);// Получение квеста
const quest = await sdk.gameData.getQuestData(1, 123, 'quest_001');
// Начало квеста
await sdk.gameData.startQuest(1, 123, 'char_001, 'quest_001');
// Обновление прогресса
await sdk.gameData.updateQuestProgress(
1, 123, 'char_001, 'quest_001', 'obj_001', 50
);
// Завершение квеста
const rewards = await sdk.gameData.completeQuest(1, 123, 'char_001, 'quest_001');const batchCommands = [
{
type: 'get_character_data' as const,
name: 'Load Character',
payload: { character_id: 'char_001' }
},
{
type: 'get_inventory_data' as const,
name: 'Load Inventory',
payload: { character_id: 'char_001' }
}
];
const results = await sdk.protein.executeBatchRequests(1, 123, batchCommands);const complexData = await sdk.protein.getComplexDataStructure(1, 123, {
profile: true,
inventory: true,
quests: true,
world: true,
stats: true,
achievements: true
});const scriptResult = await sdk.gameData.executeGameScript(
1, 123, 'combat_script_001', {
target: 'goblin',
skill: 'fireball',
character_id: 'char_001'
}
);protein:request:start- Начало запросаprotein:request:success- Успешный запросprotein:request:error- Ошибка запросаprotein:cache:hit- Попадание в кэш
composition:start- Начало композицииcomposition:success- Успешная композицияcomposition:error- Ошибка композицииcomponent:render:start- Начало рендеринга компонента
session:created- Создана сессияsession:updated- Обновлена сессияsession:ended- Завершена сессияcharacter:loaded- Загружен персонажquest:completed- Завершен квест
// Обработка событий
sdk.on('protein:request:start', (data) => {
console.log('Request started:', data.request.command_type);
});
sdk.on('composition:success', (data) => {
console.log('Page composed in:', data.compositionTime + 'ms');
});
sdk.on('quest:completed', (data) => {
console.log('Quest completed:', data.questId);
console.log('Rewards:', data.rewards);
});- Protein Cache - Кэш белковых запросов
- Processing Cache - Кэш обработанных данных
- Composition Cache - Кэш композиций страниц
- Game Cache - Кэш игровых данных
- Session Cache - Кэш игровых сессий
- Script Cache - Кэш игровых скриптов
// Получение статистики кэша
const proteinStats = sdk.protein.getCacheStats();
const processingStats = sdk.proteinProcessor.getProcessingStats();
const systemStats = sdk.pageComposition.getSystemStats();
const gameStats = sdk.gameData.getSystemStats();
// Очистка кэшей
sdk.protein.clearProteinCache();
sdk.proteinProcessor.clearProcessingCache();
sdk.pageComposition.clearCompositionCache();
sdk.gameData.clearGameCache();- Request Count - Количество запросов
- Cache Hit Rate - Процент попаданий в кэш
- Average Latency - Средняя задержка
- Error Rate - Процент ошибок
- Processing Time - Время обработки
- Composition Time - Время композиции
// Получение метрик SDK
const sdkMetrics = await sdk.getMetrics();
// Получение метрик обработки
const processingMetrics = sdk.proteinProcessor.getProcessingStats();
// Получение метрик системы
const systemMetrics = sdk.pageComposition.getSystemStats();const config: SDKConfig = {
apiBase: 'https://agentstack.tech/api',
timeout: 30000,
retryAttempts: 3,
retryDelay: 1000,
enableCaching: true,
enableMetrics: true,
cacheTTL: 300000, // 5 minutes
maxCacheSize: 1000
};
const sdk = new AgentStackSDK(config);// Настройка белковой системы
sdk.protein.updateConfig({
cacheTTL: 600000, // 10 minutes
maxCacheSize: 500,
enableBatchProcessing: true,
batchSize: 10
});- Cache Misses - Проверьте настройки кэширования
- Slow Performance - Оптимизируйте размеры кэша
- Memory Usage - Очищайте кэши регулярно
- Event Handling - Убедитесь в правильной настройке обработчиков
// Включение отладочного режима
sdk.updateConfig({
debug: true,
logLevel: 'verbose'
});
// Просмотр детальной информации
sdk.on('protein:request:start', (data) => {
console.log('Debug - Request:', JSON.stringify(data, null, 2));
});Полные примеры использования доступны в файле:
examples/protein-system-examples.ts
- User Profile Composition - Композиция профиля пользователя
- Game Data Management - Управление игровыми данными
- Shop Page Composition - Композиция страницы магазина
- Complex Data Structures - Сложные структуры данных
- Game Script Execution - Выполнение игровых скриптов
- Batch Requests - Пакетные запросы
- Event Handling - Обработка событий
- Cache Management - Управление кэшем
- Use Caching - Включайте кэширование для часто используемых данных
- Batch Requests - Группируйте запросы для лучшей производительности
- Optimize Templates - Используйте эффективные шаблоны страниц
- Monitor Metrics - Отслеживайте метрики производительности
- Event Handling - Используйте систему событий для реактивности
- Error Handling - Обрабатывайте ошибки корректно
- Type Safety - Используйте TypeScript для типобезопасности
- Testing - Тестируйте белковые запросы
- Modular Design - Используйте модульную архитектуру
- Separation of Concerns - Разделяйте ответственность модулей
- Scalability - Проектируйте с учетом масштабируемости
- Maintainability - Обеспечивайте поддерживаемость кода
Полная документация API доступна в:
packages/core/src/modules/AgentProtein.tspackages/core/src/modules/ProteinResponseProcessor.tspackages/core/src/modules/PageCompositionSystem.tspackages/core/src/modules/GameDataSystem.ts
Для внесения изменений в белковую систему:
- Следуйте принципам AI Gene Interface
- Применяйте гены архитектуры
- Обеспечивайте обратную совместимость
- Добавляйте тесты для новой функциональности
- Обновляйте документацию
AgentStack Protein System распространяется под лицензией MIT.
Created by Lance (Александр Васильев)
Email: Lance@world4play.com
Philosophy: "Мы изменим(ускорим) и построим будущее"