diff --git a/analysis/ghidra/models/approved-models.json b/analysis/ghidra/models/approved-models.json index 98cfb6ef0..f99d27a11 100644 --- a/analysis/ghidra/models/approved-models.json +++ b/analysis/ghidra/models/approved-models.json @@ -68,7 +68,7 @@ "concurrency": 1, "context_tokens": 32768, "keep_alive": "10m", - "output_tokens": 512, + "output_tokens": 4096, "seed": 144, "temperature": 0, "thinking": false @@ -77,7 +77,7 @@ "concurrency": 1, "context_tokens": 32768, "keep_alive": "30m", - "output_tokens": 512, + "output_tokens": 4096, "seed": 144, "temperature": 0, "thinking": false @@ -123,7 +123,7 @@ "concurrency": 1, "context_tokens": 8192, "keep_alive": "10m", - "output_tokens": 512, + "output_tokens": 4096, "seed": 144, "temperature": 0, "thinking": false diff --git a/analysis/ghidra/worker/ghidra-worker.py b/analysis/ghidra/worker/ghidra-worker.py index 48d69beca..fa4ca6e6e 100755 --- a/analysis/ghidra/worker/ghidra-worker.py +++ b/analysis/ghidra/worker/ghidra-worker.py @@ -219,7 +219,7 @@ def _reassert_dir_perms(path: Path) -> None: "GHIDRA_TRIAGE_API_BASE", "http://127.0.0.1:11434/v1").rstrip("/") TRIAGE_MODEL = os.environ.get("GHIDRA_TRIAGE_MODEL", "qwen3:14b") TRIAGE_TIMEOUT = int(os.environ.get("GHIDRA_TRIAGE_TIMEOUT", "300")) -TRIAGE_OUTPUT_TOKENS = int(os.environ.get("GHIDRA_TRIAGE_OUTPUT_TOKENS", "512")) +TRIAGE_OUTPUT_TOKENS = int(os.environ.get("GHIDRA_TRIAGE_OUTPUT_TOKENS", "4096")) TRIAGE_SEED = int(os.environ.get("GHIDRA_TRIAGE_SEED", "144")) # #2646: temperature 0 and a fixed seed do not make two runs agree. Ollama diff --git a/analysis/ghidra/worker/tests/test_ghidra_worker.py b/analysis/ghidra/worker/tests/test_ghidra_worker.py index ec477e51e..b08052d57 100644 --- a/analysis/ghidra/worker/tests/test_ghidra_worker.py +++ b/analysis/ghidra/worker/tests/test_ghidra_worker.py @@ -700,7 +700,7 @@ def test_triage(ghidra, model, truncating): "the system prompt names the evidence as untrusted") check(all(p.get("reasoning_effort") == "none" for p in ModelStub.prompts), "bounded triage disables hidden reasoning") - check(all(p.get("max_tokens") == 512 for p in ModelStub.prompts), + check(all(p.get("max_tokens") == 4096 for p in ModelStub.prompts), "the approved output cap is sent to the model") check(all(p.get("seed") == 144 for p in ModelStub.prompts), "the approved deterministic seed is sent to the model")