From 1b0b5eb198ed2aaeec7bf4cb2d957b99fbd01c79 Mon Sep 17 00:00:00 2001 From: jaakko Date: Wed, 8 Apr 2026 10:33:43 +0300 Subject: [PATCH] =?UTF-8?q?Eksaktit=20mallinimet=20agenteille:=20qwen-code?= =?UTF-8?q?r=20=E2=86=92=20qwen2.5-coder:7b?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Kaikki agentPrompts.model vaihdettu 'qwen-coder' → 'qwen2.5-coder:7b' - Native-node selected_task: 'qwen2.5-coder:7b' - Hub-reititys: qwen-perhe matchaa keskenään (selain qwen-coder-05b, natiivi qwen2.5-coder:7b) taaksepäin yhteensopivuuden vuoksi Co-Authored-By: Claude Opus 4.6 (1M context) --- network-poc/hub/src/main.rs | 5 +++-- network-poc/native-node/src/main.rs | 4 ++-- network-poc/static/index.html | 12 ++++++------ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/network-poc/hub/src/main.rs b/network-poc/hub/src/main.rs index 94b5bdf..e5233dc 100644 --- a/network-poc/hub/src/main.rs +++ b/network-poc/hub/src/main.rs @@ -1059,8 +1059,9 @@ async fn api_chat_completions( let busy = state.node_busy.lock().unwrap(); let node_types = state.node_types.lock().unwrap(); let matching: Vec = tasks.iter().filter(|(_, task)| { - if payload.model == "qwen-coder" || payload.model.starts_with("qwen2.5-coder") { - task.starts_with("qwen-coder") || task.starts_with("qwen2.5-coder") + // Eksakti match tai qwen-perheen yhteensopivuus (selain: qwen-coder-05b, natiivi: qwen2.5-coder:7b) + if payload.model.starts_with("qwen") { + task.starts_with("qwen") } else { **task == payload.model } diff --git a/network-poc/native-node/src/main.rs b/network-poc/native-node/src/main.rs index 98ded24..09ba82b 100644 --- a/network-poc/native-node/src/main.rs +++ b/network-poc/native-node/src/main.rs @@ -227,7 +227,7 @@ fn build_auth_message(allocated_gb: u32) -> String { "status": "agent_ready", "node_type": "native", "allocated_gb": allocated_gb, - "selected_task": "qwen-coder-05b", + "selected_task": "qwen2.5-coder:7b", "system": sys, }); @@ -326,7 +326,7 @@ async fn main() { let task_id = task.get("task_id").and_then(|v| v.as_str()).unwrap_or("?"); let msg_model = task.get("model").and_then(|v| v.as_str()).unwrap_or(""); - if !prompt.is_empty() && msg_model.starts_with("qwen-coder") { + if !prompt.is_empty() && (msg_model.starts_with("qwen-coder") || msg_model.starts_with("qwen2.5-coder")) { if let Some(ref engine) = llm { busy = true; diff --git a/network-poc/static/index.html b/network-poc/static/index.html index 7b515c7..5c39266 100644 --- a/network-poc/static/index.html +++ b/network-poc/static/index.html @@ -1159,11 +1159,11 @@ const agentPrompts = { client: { name: 'Asiakas — Projektin vaatimukset', model: 'user-input', default: 'Kirjoita tähän asiakkaan toiveet ja projektin vaatimukset. Orkestraattori (Manageri) purkaa ja delegoi nämä työt asiantuntijoille.' }, observer: { name: 'Tarkkailija — System Prompt', model: 'deepseek-r1', default: 'Olet ohjelmistoprojektin riippumaton valvoja. Sinulla on täysi pääsy kaikkiin projektin tietoihin ja muiden agenttien keskusteluihin. Valvo tiimin (Manageri, Koodari, Data, QA, DevOps) toimintaa asiantuntijana kokonaisuutena ja huomauta välittömästi visio- tai turvallisuusriskeistä.' }, - manager: { name: 'Manageri — System Prompt', model: 'qwen-coder', default: 'Olet projektipäällikkö. Jaa tehtävät osiin, priorisoi ja koordinoi tiimin työtä.' }, - coder: { name: 'Koodari — System Prompt', model: 'qwen-coder', default: 'Olet kokenut ohjelmistokehittäjä. Kirjoita selkeää, testattavaa koodia ja vastaa aina koodilla.' }, - data: { name: 'Data-Agentti — System Prompt', model: 'qwen-coder', default: 'Olet tietokanta-asiantuntija. Vastaat skeemojen suunnittelusta, SQL-kyselyiden optimoinnista ja datamalleista.' }, - qa: { name: 'QA — System Prompt', model: 'qwen-coder', default: 'Olet laadunvarmistaja (QA). Kirjoitat testejä, etsit virheitä ja varmistat, että kaikki reunatapaukset on huomioitu.' }, - tester: { name: 'DevOps — System Prompt', model: 'qwen-coder', default: 'Olet DevOps-insinööri. Kirjoitat Dockerfile- ja docker-compose.yml-tiedostot, README:t ja käynnistysohjeet. Käytä aina multi-stage Docker buildia ja docker compose -orkestrointia.' }, + manager: { name: 'Manageri — System Prompt', model: 'qwen2.5-coder:7b', default: 'Olet projektipäällikkö. Jaa tehtävät osiin, priorisoi ja koordinoi tiimin työtä.' }, + coder: { name: 'Koodari — System Prompt', model: 'qwen2.5-coder:7b', default: 'Olet kokenut ohjelmistokehittäjä. Kirjoita selkeää, testattavaa koodia ja vastaa aina koodilla.' }, + data: { name: 'Data-Agentti — System Prompt', model: 'qwen2.5-coder:7b', default: 'Olet tietokanta-asiantuntija. Vastaat skeemojen suunnittelusta, SQL-kyselyiden optimoinnista ja datamalleista.' }, + qa: { name: 'QA — System Prompt', model: 'qwen2.5-coder:7b', default: 'Olet laadunvarmistaja (QA). Kirjoitat testejä, etsit virheitä ja varmistat, että kaikki reunatapaukset on huomioitu.' }, + tester: { name: 'DevOps — System Prompt', model: 'qwen2.5-coder:7b', default: 'Olet DevOps-insinööri. Kirjoitat Dockerfile- ja docker-compose.yml-tiedostot, README:t ja käynnistysohjeet. Käytä aina multi-stage Docker buildia ja docker compose -orkestrointia.' }, tofuist: { name: 'Tofuist — System Prompt', model: 'qwen2.5-coder:7b', docs: '/docs/tofu-cheatsheet.md', default: 'You are an OpenTofu/Terraform IaC specialist. You write HCL infrastructure code: providers, resources, modules, variables, outputs, state management, and encryption. You follow OpenTofu best practices: use planning behaviors before apply, handle resource lifecycle (create_before_destroy, prevent_destroy), configure state encryption for sensitive data, and structure code with clear module boundaries. Always output valid HCL code. Use provider references correctly (required_providers block). Prefer data sources over hardcoded values.' }, }; const selectedAgents = new Set(); @@ -1441,7 +1441,7 @@ if (val) parts.push(`${key}: ${val}`); }); const prompt = parts.join('\n\n'); - const model = agentPrompts[modalAgent]?.model || 'qwen-coder'; + const model = agentPrompts[modalAgent]?.model || 'qwen2.5-coder:7b'; closePromptModal(); termLog(`$ ↻ Aja uudelleen: ${esc(modalAgent)}`); kpnRun(model, prompt);