Ciclo de vida de solicitudes
- Ejecutas
/mclawd ...,/mineclawd prompt ...o escribes una solicitud en la barra de entrada de la superposición. - MineClawd valida la configuración del proveedor y el acceso OP.
- MineClawd carga o crea el estado de Session activa.
- MineClawd envía una solicitud en streaming al endpoint compatible con OpenAI o Vertex.
- Los deltas de streaming se envían al cliente en tiempo real por el canal
AGENT_STREAM_EVENT. La superposición renderiza cada delta con cursor parpadeante. - Las respuestas del modelo pueden activar llamadas de herramientas. Los resultados de las herramientas se vuelven a inyectar en el ciclo del modelo.
- La salida final del asistente se muestra en chat (y en la superposición) y se guarda el historial de Session.
Familias de herramientas de runtime
- Ejecución de comandos y scripts:
execute-commandapply-instant-server-script
- Archivos de script persistentes:
list-server-scriptsread-server-scriptwrite-server-scriptdelete-server-scriptreload-gamesync-command-tree
- Aclaración:
ask-user-question
- Seguimiento de assets:
list-assetsupsert-asset-recordremove-asset-record
- Búsqueda web (requiere Tavily API key):
search
- Información de mods:
list_modslist_commandsfetch_modrinthfetch_url
- Placeholders dinámicos (solo cuando están habilitados):
list-dynamic-contentregister-dynamic-itemregister-dynamic-blockregister-dynamic-fluidupdate-dynamic-itemupdate-dynamic-blockupdate-dynamic-fluidunregister-dynamic-content
Estructura de almacenamiento
Internals de Session
- El id de Session es un token de 4 caracteres en minúsculas.
- El formato del token de comando es
<id>-<title-slug>. - El archivo de Session guarda historiales de OpenAI y Vertex por separado.
- El puntero de Session activa se guarda en
active.jsonpor propietario. - El título de Session se genera después de la primera ronda exitosa con el modelo de resumen.
Detalles de transporte LLM
- Ruta de solicitud compatible con OpenAI:
<endpoint>/chat/completions - Ruta de solicitud Vertex:
<endpoint>/<model>:generateContent?key=<api_key> - Ambas rutas usan timeout de solicitud de 60 segundos.
- Ambas rutas soportan llamadas de herramientas tipo función.
- Ambas rutas soportan streaming. Los deltas se reenvían al cliente por el canal de red
AGENT_STREAM_EVENT.
Arquitectura de streaming
Los eventos de streaming usan el canalAGENT_STREAM_EVENT con un request ID, byte de tipo de evento y payload string.
| Tipo de evento | Byte | Payload |
|---|---|---|
START | 0 | JSON con sessionId y texto de request |
DELTA | 1 | Fragmento de texto del LLM |
DONE | 2 | Vacío |
ERROR | 3 | String con mensaje de error |
TOOL_STATUS | 4 | Nombre de la herramienta que se está llamando |
TOOL_STATUS_CLEAR | 5 | Vacío (limpia el indicador de estado de herramienta) |
DONE o ERROR. Durante la generación, eventos TOOL_STATUS muestran un indicador animado con la herramienta que MineClawd está llamando en tiempo real. El indicador se limpia cuando llega TOOL_STATUS_CLEAR.
Las solicitudes activas se rastrean del lado servidor en los mapas ACTIVE_REQUESTS y ACTIVE_NETWORK_REQUESTS. El comando /mineclawd stop marca el request ID en CANCELLED_REQUEST_IDS y cancela conexiones HTTP en vuelo.
Internals de placeholders dinámicos
- Capacidad:
30slots de item,30slots de block,30slots de fluid. - IDs fijos incluyen:
mineclawd:dynamic_item_001mineclawd:dynamic_block_001mineclawd:dynamic_fluid_001
- La sincronización de estado usa payload de red
sync_dynamic_content. - La persistencia de estado usa
PersistentStatedel mundo con idmineclawd_dynamic_content. - El modo
AUTOhabilita placeholders de runtime en cliente y los deshabilita en servidores dedicados.
Canales de red
MineClawd define estos identificadores de paquetes:mineclawd:client_readymineclawd:client_gui_prefmineclawd:open_configmineclawd:sync_broadcast_targetmineclawd:sync_assistive_touchmineclawd:sync_dynamic_contentmineclawd:open_questionmineclawd:question_responsemineclawd:open_sessionsmineclawd:open_assetsmineclawd:open_history_bookmineclawd:agent_stream_event
Internals de seguimiento de assets
Los registros de assets se guardan por propietario enmineclawd/assets/<owner>.json. Cada registro contiene:
id— identificador únicocategory— una deENTITIES,ITEMS_BLOCKS_FLUIDS,SPECIAL_ITEMS,COMMANDS,GAME_MECHANICSname,summary,scriptPath,details- Campos por categoría:
contentId,specialItemId,specialItemNbt,command,entityUuid,entityDimension,entityX,entityY,entityZ sessionId— la Session que creó el assetcreatedAt,updatedAt— marcas de tiempo
upsert-asset-record.
Límites y temporizadores
| Ajuste o comportamiento | Valor |
|---|---|
| Rango de límite de llamadas a herramientas | 1 a 20 |
| Valor por defecto del límite de llamadas a herramientas | 16 |
| Estado por defecto del límite de llamadas a herramientas | deshabilitado |
| Máximo de opciones de ask-user | 5 |
| Timeout de ask-user | 60 segundos |
| TTL del token de reintento de solicitud fallida | 30 minutos |
| Reintentos por rate limit | 2 reintentos |
| Backoff por rate limit | 1500ms * retry_index |
| Máximo de entradas de historial para construir el libro | 300 |
| Longitud máxima de la barra de entrada de la superposición | 600 caracteres |
| Categorías de assets | 5 |
Modelo de seguridad
- Todas las rutas de comando están protegidas por OP.
- La ejecución de KubeJS es ejecución real de servidor, no simulación.
- Las API keys deben tratarse como secretos.
- Usa solo entornos de confianza.
