AgenticAI — UI de agente con WebView2

Fuente: samples/AgenticAI/agenticai.prg (+ agenticai.hbp, build.bat)

AgenticAI es un front-end GUI de FiveWin para el motor agéntico ccharbour. Ejecuta el mismo bucle de chat en streaming + llamadas a herramientas que mueve la consola cc.exe (CC_Client / CC_AgentRun), pero lo renderiza como un panel de chat web moderno alojado en un Edge WebView2 (TWebView2) embebido que llena un diálogo redimensionable — sin RichEdit, sin .rc.

flowchart LR U[Usuario escribe en webview] -->|SendToFWH| P[OnJsMessage encola] P --> T[TTimer lanza el turno] T --> A[CC_AgentRun] A -->|transporte libcurl| L[Stream SSE del LLM] L -->|eventos| E[OnEvent] E -->|oWeb:Eval JS| W[Panel de chat en vivo] A -->|tool_call| G[Puerta de permisos] G -->|tarjeta permitir/rechazar| W

Qué muestra el panel

Puente PRG ↔ página

PRG dirige la página con oWeb:Eval( jsFunc(...) ); la página responde con SendToFWH( action, text ), entregado a TWebView2:bOnBind. Se registra todo el conjunto local de herramientas (read / write / edit / glob / grep / shell / web_search / web_fetch / memory) envuelto en una puerta de permisos.

Tres trampas que conviene recordar

ProblemaCausa y solución
El click permitir / ask / stop bloquea a mitad de turno WebView2 no entrega una segunda llamada a función vinculada mientras el primer bOnBind sigue en la pila. Por eso send solo encola el prompt; un TTimer lanza el turno desde WM_TIMER, fuera de cualquier bOnBind, donde los clicks anidados permitir/ask/stop se entregan.
Acentos / emoji con mojibake WebView2_Eval convierte su argumento desde la codepage ANSI. Pasa cada codepoint no-ASCII como literal JS escapado \uXXXX en ASCII puro (pares sustitutos para emoji) para que sea independiente de codepage.
El <script> entero falló en silencio Un bloque TEXT INTO de Harbour procesa escapes C: '\n' dentro del JS se volvió un salto de línea real y rompió el string. Mantén el JS embebido sin backslash — usa String.fromCharCode(10) y regex con clases de caracteres ([0-9], [ ]) en vez de \n, \d, \s.

Compilar y ejecutar

Es multi-módulo (prg GUI + núcleo ccharbour), así que se compila con su propio build.bat (hbmk2 + agenticai.hbp), no con samples/build_new.bat. Requiere el runtime de WebView2 instalado y una clave del LLM (env DEEPSEEK_API_KEY … o /key en caliente).

cd /d C:\fwteam\samples\AgenticAI
build.bat

Ver también