AgenticAI — UI de agente com WebView2

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

AgenticAI é um front-end GUI do FiveWin para o motor agêntico ccharbour. Executa o mesmo laço de chat em streaming + chamadas de ferramentas que move o console cc.exe (CC_Client / CC_AgentRun), mas renderiza-o como um painel de chat web moderno hospedado num Edge WebView2 (TWebView2) embutido que preenche um diálogo redimensionável — sem RichEdit, sem .rc.

flowchart LR U[Utilizador escreve no webview] -->|SendToFWH| P[OnJsMessage enfileira] P --> T[TTimer inicia o turno] T --> A[CC_AgentRun] A -->|transporte libcurl| L[Stream SSE do LLM] L -->|eventos| E[OnEvent] E -->|oWeb:Eval JS| W[Painel de chat ao vivo] A -->|tool_call| G[Porta de permissoes] G -->|cartao permitir/rejeitar| W

O que o painel mostra

Ponte PRG ↔ página

O PRG conduz a página com oWeb:Eval( jsFunc(...) ); a página responde com SendToFWH( action, text ), entregue a TWebView2:bOnBind. Regista-se todo o conjunto local de ferramentas (read / write / edit / glob / grep / shell / web_search / web_fetch / memory) envolto numa porta de permissões.

Três armadilhas a lembrar

ProblemaCausa e solução
O clique permitir / ask / stop bloqueia a meio do turno O WebView2 não entrega uma segunda chamada de função vinculada enquanto o primeiro bOnBind ainda está na pilha. Por isso send apenas enfileira o prompt; um TTimer inicia o turno a partir de WM_TIMER, fora de qualquer bOnBind, onde os cliques aninhados permitir/ask/stop são entregues.
Acentos / emoji com mojibake WebView2_Eval converte o seu argumento a partir da codepage ANSI. Passe cada codepoint não-ASCII como literal JS escapado \uXXXX em ASCII puro (pares substitutos para emoji) para ser independente de codepage.
O <script> inteiro falhou em silêncio Um bloco TEXT INTO do Harbour processa escapes C: '\n' dentro do JS tornou-se uma quebra de linha real e partiu a string. Mantenha o JS embutido sem backslash — use String.fromCharCode(10) e regex com classes de caracteres ([0-9], [ ]) em vez de \n, \d, \s.

Compilar e executar

É multi-módulo (prg GUI + núcleo ccharbour), portanto compila com o seu próprio build.bat (hbmk2 + agenticai.hbp), não com samples/build_new.bat. Requer o runtime do WebView2 instalado e uma chave do LLM (env DEEPSEEK_API_KEY … ou /key em tempo de execução).

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

Ver também