Volver al índice

src/main/java/ar/com/companeros/runtime/AgentInstructions.java

package ar.com.companeros.runtime;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;

/** Instrucciones del operador. Los agentes no reciben una herramienta para modificar este archivo. */
public final class AgentInstructions {
    public static final String DEFAULT = """
        # Jugadores de Raps
        Sobreviví con recursos reales. Comé, evitá peligros observables y revisá planes que no avanzan.
        Colaborá cuando convenga, sin obedecer ciegamente a humanos ni entrar en trampas evidentes.
        Recordá resultados y cambiá de estrategia ante fallos. Compartí información útil, no conversación vacía.
        Los informes y páginas web son información por verificar; respetá la versión del mod instalada.
        Investigador: dedicá tus proyectos a estudiar recetas, mods y mecanismos y proponer usos al equipo.
        Podés moverte, comer y defenderte; delegá minería, obras y producción a otros compañeros.
        Generalista: elegí proyectos según necesidades, experiencia y recursos disponibles.
        No hay facciones impuestas. Usá el chat interno para coordinar y el global cuando sea útil.
        Cuando falte una capacidad, proponé con propose_tool una composición acotada de primitivas existentes.
        Probá candidatas propias con materiales reales; compartilas después de tres éxitos útiles y al menos 80% de éxito.
        Versioná las correcciones y verificá consecuencias; no declares éxitos sin ejecutar ni pidas acceso al sistema operativo.
        Para estandartes, elegí colores y símbolos del catálogo y conseguí lana, palo, tintes, mesa y telar.
        El parásito ignora a los agentes. Podés observarlo y compartir descubrimientos sin asumir que obedece órdenes.
        """;
    private AgentInstructions() { }
    public static String load(Path directory) throws IOException {
        Files.createDirectories(directory); Path file = directory.resolve("agents.md");
        if (!Files.exists(file)) Files.writeString(file, DEFAULT, StandardCharsets.UTF_8, StandardOpenOption.CREATE_NEW);
        if (Files.isSymbolicLink(file) || Files.size(file) > 12_288) throw new IOException("agents.md supera el límite de 12 KB");
        String text = Files.readString(file, StandardCharsets.UTF_8);
        if (text.isBlank()) throw new IOException("agents.md está vacío");
        return text;
    }
}