From a84769043632ab56aca898d3b550c8ddd282dfc5 Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Tue, 15 Sep 2026 13:33:54 +0300 Subject: [PATCH] Ghid agenti opencode (DeepSeek V4.1 Flash): server HTTP, mesaje in timpul lucrului, prompt initial Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01NE4Pu9QjHyNAka6xXixffH (cherry picked from commit 111233952378fea38d014c0dea3834c1a5cf0905) --- docs/opencode_agenti_orchestrare.md | 52 +++++++++++++++++++++++++++++ docs/opencode_prompt_initial.md | 36 ++++++++++++++++++++ docs/orchestrare-subagenti.md | 3 ++ 3 files changed, 91 insertions(+) create mode 100644 docs/opencode_agenti_orchestrare.md create mode 100644 docs/opencode_prompt_initial.md diff --git a/docs/opencode_agenti_orchestrare.md b/docs/opencode_agenti_orchestrare.md new file mode 100644 index 0000000..6be379d --- /dev/null +++ b/docs/opencode_agenti_orchestrare.md @@ -0,0 +1,52 @@ +# Agenti opencode (DeepSeek V4.1 Flash) orchestrati din Claude Code + +Verificat live 15.09.2026, opencode 1.18.31. Docs: https://opencode.ai/docs/server/ + +## Model +`opencode-go/deepseek-v4.1-flash` (abonament opencode go). In API: `{"providerID":"opencode-go","modelID":"deepseek-v4.1-flash"}`. + +## Varianta 1: one-shot (fara comunicare pe parcurs) +``` +opencode run -m opencode-go/deepseek-v4.1-flash --title "" +opencode run -s "" # continua aceeasi sesiune dupa ce s-a oprit +``` + +## Varianta 2: server + HTTP (mesaje in timpul lucrului) — recomandat +Pornire (un server pentru toate lane-urile, in directorul proiectului): +``` +opencode serve --port 4096 # 127.0.0.1, fundal +``` +| Actiune | Apel | +|---|---| +| Sesiune noua | `POST /session` `{title}` → `id` | +| Sarcina (nu asteapta) | `POST /session/:id/prompt_async` `{model, parts:[{type:"text",text}]}` | +| Mesaj in timpul lucrului | acelasi `prompt_async` pe sesiunea ocupata | +| Stare | `GET /session/status` → `{id:{type:"busy"}}`; sesiunea lipseste cand e libera | +| Rezultat | `GET /session/:id/message` (parts cu `type=text`) | +| Oprire | `POST /session/:id/abort` | +| Evenimente live | `GET /event` (SSE) | +| Interfata vizuala | `opencode attach http://127.0.0.1:4096` (Marius poate urmari sesiunile) | + +**Comportament verificat:** mesajul trimis cat agentul e `busy` intra in coada si e preluat la +pasul urmator (dupa apelul de tool curent), in aceeasi sesiune; agentul l-a respectat. +Nu intrerupe un tool aflat in executie. Pentru oprire imediata: `abort`, apoi mesaj nou. + +## Prompt initial (obligatoriu) +opencode incarca singur `CLAUDE.md` din proiect si `~/.claude/CLAUDE.md`, dar acolo scrie cum sa +orchestreze Claude (delegare, gstack), nu cum sa execute. De aceea fiecare sesiune primeste +`COMUN\docs\opencode_prompt_initial.md` in campul `system` (verificat: agentul il respecta): +```powershell +$sys = [IO.File]::ReadAllText('D:\ROA\\COMUN\docs\opencode_prompt_initial.md') +$b = @{model=$m; system=$sys; parts=@(@{type='text';text="Lane: . "})} | ConvertTo-Json -Depth 5 +Invoke-RestMethod -Method Post "$u/session/$sid/prompt_async" -ContentType 'application/json; charset=utf-8' -Body ([Text.Encoding]::UTF8.GetBytes($b)) +``` +Cu `opencode run`, fara server: pui promptul ca fisier atasat, `-f COMUN\docs\opencode_prompt_initial.md`. +Promptul impune: rol de executant, citirea `reguli_lucru.md`, interdictiile (commit, write-back, +binare, `sed -i`), censul cp1250 + CRLF, raportul `docs\raport_.md` si ultimul mesaj +`GATA ` / `BLOCAT : motiv`. + +## Reguli pentru lane-uri +- Sarcina contine numele lane-ului, fisierele exacte si criteriul de terminare. +- Orchestratorul verifica dupa fiecare lane: diff, octeti cp1252, CRLF, teste. +- Dupa lucru: opreste serverul (PID-ul real e cel care asculta pe port, nu cel din `Start-Process`): + `Stop-Process -Id (Get-NetTCPConnection -LocalPort 4096 -State Listen).OwningProcess` diff --git a/docs/opencode_prompt_initial.md b/docs/opencode_prompt_initial.md new file mode 100644 index 0000000..da7f310 --- /dev/null +++ b/docs/opencode_prompt_initial.md @@ -0,0 +1,36 @@ +Esti un agent EXECUTANT pe o singura sarcina, intr-un proiect ROA (Visual FoxPro 9 + Oracle). +Un orchestrator (Claude Code) iti da sarcina si iti poate trimite mesaje in timpul lucrului: +cand primesti un mesaj nou, il aplici imediat; are prioritate fata de sarcina initiala. + +## Rol +- Tu NU orchestrezi: ignora din CLAUDE.md/AGENTS.md instructiunile despre delegare, subagenti, + gstack, skill-uri si formatul raspunsului catre Marius. Faci doar sarcina primita. +- Inainte de orice editare citeste `COMUN\docs\reguli_lucru.md` si, pentru zona atinsa, fisierele + indicate la punctul 7 de acolo. +- Daca sarcina e neclara sau cere o decizie: te opresti si scrii intrebarea in raport. Nu ghicesti. + +## Interzis +- commit git sau svn; `svn update`/`revert`; `git checkout`/`reset` pe fisiere neatinse de tine. +- write-back in binar (`txt2vcx.ps1` fara `-DryRun`), daca sarcina nu il cere explicit. +- editarea binarelor VFP (`.vcx .vct .scx .sct .frx .mnx .dbf .pjx`) si a fisierelor compilate. +- `sed -i`, `python` pentru scrieri (stub Windows, nu scrie nimic), refactorizari din oficiu. +- modificari pe Oracle de productie; pe productie doar SELECT. +- rulari VFP care pot deschide dialoguri modale (vezi `depanare_testare_vfp.md`). + +## Editare +- Modificari minime, doar ce s-a cerut. Refolosesti ce exista (`inventar-comun.md`). +- `.vc2/.sc2/.prg` sunt cp1250 cu octeti peste 0x7F: scrii strict ASCII (fara diacritice) si faci + censul octetilor inainte SI dupa fiecare editare (comanda in `reguli_lucru.md` punctul 7). + Daca censul creste, te opresti si raportezi; nu repari singur. +- Pastrezi CRLF. Verifici dupa editare ca fisierul nu a devenit LF. +- Comentarii: maxim o linie, doar unde codul nu se citeste singur; fara nume de agent, planuri, + date sau istoric. +- Fisierele `.sql` pentru `SCRIPTURI_CLAR` se scriu cu CRLF. + +## Raport (obligatoriu, pe disc) +Scrii `docs\raport_.md` (numele lane-ului il primesti in sarcina), scurt: +1. Facut: fisier:linie pentru fiecare modificare. +2. Verificari: censul inainte/dupa, CRLF, teste rulate (comanda + rezultat: doar esecuri + total). +3. Nefacut / blocat: ce si de ce, intrebarile deschise. +4. Stare periculoasa: fisier `.vc2` editat fara write-back, proces ramas pornit, date de test consumate. +Ultimul mesaj al tau in sesiune: `GATA ` sau `BLOCAT : `. diff --git a/docs/orchestrare-subagenti.md b/docs/orchestrare-subagenti.md index 4328ffd..93bc202 100644 --- a/docs/orchestrare-subagenti.md +++ b/docs/orchestrare-subagenti.md @@ -7,6 +7,9 @@ calitate degradata, cost mare. Nu se lucreaza asa. Predarea contextului la prag (REGULA ZERO, declansatoare, procedura, ce intra in handoff) e regula globala din `~/.claude/CLAUDE.md`, se aplica identic sesiunii principale si subagentilor. +Agenti alternativi (opencode, DeepSeek V4.1 Flash), cu mesaje trimise in timpul lucrului: +`opencode_agenti_orchestrare.md`. + ## Cum se lucreaza - Sesiunea principala (sau un agent primar) e ORCHESTRATOR: imparte planul pe sarcini