---
id: 0001
title: Chat con Claude sobre el grafo
status: completed
priority: high
created: 2026-04-30
---

## Objetivo

Panel "Chat" dentro de graph_explorer que permita conversar con Claude
(Anthropic API) usando el grafo activo como contexto. El agente debe poder:

- Leer el grafo (entidades, relaciones, metadata) via tool-use sobre operations.db.
- Responder preguntas tipo: "muestrame los nodos relacionados con X", "que
  patrones ves en estas conexiones", "que falta investigar".
- Proponer mutaciones (crear nodo, etiquetar relacion) que el usuario aprueba
  con un click antes de aplicarse.

## Alcance tecnico

- Cliente HTTP minimo (libcurl o WinHTTP) → POST a `https://api.anthropic.com/v1/messages`.
- Modelo por defecto: `claude-sonnet-4-6` (revisar al implementar).
- API key desde env var `ANTHROPIC_API_KEY` o `~/.fn_anthropic_key`.
- Tool-use: definir tools `query_entities`, `query_relations`, `propose_node`,
  `propose_relation`. Las "propose_*" no mutan: insertan en una cola que el
  usuario revisa antes de aplicar.
- Estado de conversacion en memoria (lista de messages). Persistencia opcional
  en `graph_explorer.db` tabla `chat_sessions`.
- Streaming SSE para feedback en vivo (puede dejarse para v2 — primer hit
  bloqueante esta bien).

## Decisiones a tomar

- Renderizado de markdown en ImGui (TextWrapped basico vs lib externa).
- Threading: bloqueante en hilo aparte → cola de mensajes → main thread lee.

## Trabajo previo

Ya existe en el registry `python/functions/agents/anthropic_chat_py_agents.py`
para inspiracion (usa el SDK Python). En C++ usaremos HTTP directo — sin SDK.

## Definicion de hecho

- Panel "Chat" dockeable.
- Conversacion con tool-use sobre operations.db funciona.
- Las mutaciones propuestas por el agente se confirman desde la UI antes de
  llegar a la BD.
