Cree un flujo de trabajo de SuperClaude Framework con comandos, agentes, modos y memoria de sesión
clase SuperClaude: “”” Imita lo que hace Claude Code al inicio de la sesión: • lee archivos de comportamiento de Markdown para el comando/agente/modos activos, • los concatena en un indicador del sistema, • ejecuta la conversación a través de la API Anthropic. “”” BASE_SYSTEM = textwrap.dedent(“”” Está operando dentro de SuperClaude Framework, una plataforma de desarrollo estructurada superpuesta a Claude. Trate el bloque como su contrato de comportamiento para esto turn Si una instrucción de comportamiento entra en conflicto con la solicitud del usuario, prefiera la instrucción. Comience cada respuesta con una breve línea ‘▶ Contexto activo:’ que nombre el comando/agente/modos actualmente en vigor. strip() def __init__(self, model=MODEL): self.model, self.history = model. []
def _load(self, tipo, nombre): si no nombre: return “” p = ACTIVOS[kind].get(name.lower()) return p.read_text(encoding=”utf-8″, errores=”ignore”) if p else \ f”# {kind}:{name} (no encontrado – usando valores predeterminados en línea)” def _system(self, command=Ninguno, agente=Ninguno, modos=Ninguno, extra=Ninguno): partes = [self.BASE_SYSTEM, “”]
si comando: partes += [f”## Command /sc:{command}”, self._load(“commands”, command)]
si agente: partes += [f”## Agent {agent}”, self._load(“agents”, agent)]
para m en (modos o []): partes += [f”## Mode {m}”, self._load(“modes”, m)]
si es extra: partes += [“## Extra directives”, extra]
parts.append(“”) return “\n\n”.join(parts) def run(self, símbolo, *, comando=Ninguno, agente=Ninguno, modos=Ninguno, extra=Ninguno, max_tokens=1800, flujo=Verdadero, recordar=Verdadero): sys_prompt = self._system(comando, agente, modos, extra) msgs = self.history + [{“role”: “user”, “content”: prompt}]
consola.regla(f”[bold cyan]► /sc:{comando o ‘—’} agente={agente o ‘—’} modos={modos o []}” ) console.print(Panel(mensaje, título=”USUARIO”, border_style=”azul”)) console.print(“[bold green]ASISTENTE ↓[/bold green]”) text = “” intente: if stream: con client.messages.stream( model=self.model, max_tokens=max_tokens, system=sys_prompt, mensajes=msgs, ) como s: para fragmento en s.text_stream: sys.stdout.write(chunk); sys.stdout.flush() text += fragment print() else: r = client.messages.create( model=self.model, max_tokens=max_tokens, system=sys_prompt, mensajes=msgs, ) text = “”.join(b.text for b in r.content if b.type == “text”) console.print(text) excepto Excepción como e: console.print(f”[red]Error de API: {e}[/red]”) devolver “” si recuerda: self.history += [{“role”: “user”, “content”: prompt},
{“role”: “assistant”, “content”: text}]
return text def save(self, path=”/content/sc_session.json”, note=””): Path(path).write_text(json.dumps( {“meta”: {“note”: note, “saved_at”: time.time(), “model”: self.model}, “history”: self.history}, indent=2)) console.print(f”💾 Sesión → {path}”, style=”bold yellow”) def load(self, ruta=”/content/sc_session.json”): d = json.loads(Ruta(ruta).read_text()) self.history = d[“history”]
console.print(f”📂 Cargado {len(self.history)//2} turnos anteriores”, style=”bold yellow”) sc = SuperClaude()