diff --git a/agent/config.yml b/agent/config.yml index 1fa944f..0cde0ac 100644 --- a/agent/config.yml +++ b/agent/config.yml @@ -55,10 +55,15 @@ autolearn: enabled: true autoContinue: true compaction: + # Server-side compaction always runs on frank-medium: the endpoint is + # frank-medium's /v1/chat/completions, and every model in models.yml + # carries compactionModel: llamacpp (dankserver)/frank-medium so the + # POST body's model id stays valid from any session model. + remoteEndpoint: http://192.168.0.235:7770/v1/chat/completions methodOrder: + - remote - shake - soft - - remote - handoff - snapcompact idleThresholdTokens: 100000 @@ -91,6 +96,12 @@ display: showTokenUsage: true task: showResolvedModelBadge: true + # Cap ACTIVE subagents at 2 (a semaphore on concurrency); total + # instantiations over a session are uncapped. + maxConcurrency: 2 + agentModelOverrides: + # scout/research runs on frank-small at xhigh thinking (the smol role) + scout: "@smol" snapcompact: systemPrompt: none toolResults: false diff --git a/agent/models.yml b/agent/models.yml index d72a733..47bc926 100644 --- a/agent/models.yml +++ b/agent/models.yml @@ -1,4 +1,6 @@ -# Imported from ~/.pi/agent/models.json (pi agent settings) +# OMP agent model registry — single source of truth (OMP is the primary +# harness; there is no second copy to keep in sync). +# Conversion notes from the pi-era import: # - apiKey "EMPTY" -> auth: none (keyless local endpoint) # - thinkingLevelMap {max: xhigh} -> compat.reasoningEffortMap providers: @@ -57,6 +59,11 @@ providers: models: - id: frank-large name: "frank-large (dankclaw-gpu)" + # Server-side compaction always runs on frank-medium (see + # compaction.remoteEndpoint in config.yml); this steers the + # compaction model candidate so the wire model id stays valid + # on the frank-medium endpoint even from a frank-large session. + compactionModel: llamacpp (dankserver)/frank-medium # halogen-flash-server. The model's native window is 262,144, but this # deployment caps a conversation at 200,192 — exactly half of its # 400,384-position KV pool, so two 200k conversations are resident at @@ -65,7 +72,13 @@ providers: contextWindow: 200192 # HALOGEN_MAX_TOKENS_CAP: above this a request is a 400 rather than a # silent truncation, and thinking counts against the budget. - maxTokens: 65536 + # maxTokens must also survive the harness compaction gap: OMP compacts at + # 70% of contextWindow = 140,134, so a pre-compaction prompt can legally + # reach that height. 140,134 + 57,344 = 197,478 <= 200,192, which closes + # the dead zone that 400'd a request on 2026-09-17 (prompt 138,898 + + # budget 64,000 = 202,898 > 200,192: above the server's fit check, below + # the compaction trigger). Any budget > 60,058 reopens the zone. + maxTokens: 57344 reasoning: true # Text only as of 2026-09-16: the vision tower moved to frank-small and # this server refuses image content parts. @@ -96,6 +109,10 @@ providers: models: - id: frank-small name: "frank-small (dankclaw-3090)" + # See frank-large: server-side compaction always runs on + # frank-medium, so the wire model id stays valid from a + # frank-small session. + compactionModel: llamacpp (dankserver)/frank-medium # Dankclaw's RTX 3090: mainline llama.cpp serving # HauhauCS/Gemma4-12B-QAT-Uncensored-HauhauCS-Balanced at Q4_K_M. # The MTP head ships as a separate assistant sidecar