[Sync] LLM clients → Qwen3.6-35B-A3B-Thinking default, Ornith preset, fl GPU monitor abbrs

This commit is contained in:
Coja
2026-09-21 18:20:21 +02:00
parent 9fc7854751
commit 2fa113cd15
10 changed files with 32 additions and 43 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
# see https://github.com/sigoden/aichat/blob/main/config.example.yaml # see https://github.com/sigoden/aichat/blob/main/config.example.yaml
keybindings: vi keybindings: vi
editor: nvim editor: nvim
model: local:Qwen3-Coder-30B-Instruct-UD-Q3_K_XL model: local:Qwen3.6-35B-A3B-Thinking
# Sessions: persist REPL sessions and keep more history before summarizing. # Sessions: persist REPL sessions and keep more history before summarizing.
# The default compress_threshold (4000) summarizes far too early for 24k+ windows. # The default compress_threshold (4000) summarizes far too early for 24k+ windows.
-27
View File
@@ -1,27 +0,0 @@
# Global user preferences (applies to every project)
## Environment
- Arch Linux, Wayland, fish shell, kitty terminal. Prefer fish-compatible syntax in shell snippets (not bash-isms) when writing things the user will run interactively. Clipboard is `wl-copy`.
- Package manager: pacman / yay. Common abbrs: `pacs`, `yays`.
## Local-first LLMs
- The user self-hosts models on the LAN at `192.168.0.204`:
- llama.cpp server — `http://192.168.0.204:11343/v1` (OpenAI-compatible).
- Ollama — `192.168.0.204:11434`.
- The available models are the section names in `~/.dots/fl/.config/llamacpp/config.ini` (the router's client model ids) — read that file rather than trusting any list written here; the roster changes often. When configuring any AI/agent tool, default to these endpoints rather than a cloud API unless asked otherwise.
## Git
- **Do not run `git commit` or `git push`, and never offer or ask to do the committing/pushing yourself** — the user reviews and commits entirely manually (denied in settings.json and enforced by the `~/.claude/hooks/git-guard.py` PreToolUse hook, which catches `git -C … push`-style spellings the prefix rules miss and also blocks history rewrites and working-tree discards — `revert`, `cherry-pick`, `rebase`, `merge`, `reset` that moves HEAD or unstages everything, `restore <paths>`, `checkout --`, `stash drop/pop/clear`, `branch -D` — plus `gh pr merge/create/close/edit`; several sessions share this checkout, so never discard changes you did not make). Stage/prepare changes and stop there. You may suggest a commit message for the user to use, but nothing more.
- To hand off a suggested commit message, feed it to `~/.config/git/claude-commit-msg save` **after staging** (it records the staged paths with the message), as a quoted heredoc so quotes and backticks in the body survive:
```sh
~/.config/git/claude-commit-msg save <<'EOF'
<message>
EOF
```
Never write `CLAUDE_COMMIT_MSG` or `COMMIT_EDITMSG` directly — several sessions share this checkout, and the single file got overwritten. A `prepare-commit-msg` hook prefills the next `git commit` / lazygit `C` with the message(s) whose recorded paths are part of that commit, then consumes them. Just the raw message, no `#` comments. `claude-commit-msg list` shows what is pending.
## Formatting
- Lua: format with `stylua` (2-space indent, 120 col, no call parentheses — see any `.stylua.toml`).
## Dotfiles
- Configs live in the dots repo under `.config/` and are surfaced via **per-file** symlinks (GNU Stow `--no-folding`; directories stay real) into `~/.config/`, and from there into `~/.claude/` by `~/.config/claude/link.sh`. Editing an existing file under the repo's `.config/` is editing the live config — no deploy step. A **new** file is not live until a re-stow creates its symlink (`cd ~/.dots && ./install.sh`), on each host.
+4 -4
View File
@@ -1,6 +1,6 @@
{ {
"$schema": "https://opencode.ai/config.json", "$schema": "https://opencode.ai/config.json",
"model": "llama.cpp/gemma-4-26B-A4B-it-UD-IQ4_XS", "model": "llama.cpp/Qwen3.6-35B-A3B-Thinking",
"default_agent": "auto", "default_agent": "auto",
"instructions": ["CLAUDE.md", "AGENTS.md"], "instructions": ["CLAUDE.md", "AGENTS.md"],
"share": "disabled", "share": "disabled",
@@ -185,7 +185,7 @@
"mode": "primary", "mode": "primary",
"color": "info", "color": "info",
"steps": 30, "steps": 30,
"model": "llama.cpp/gemma-4-26B-A4B-it-UD-IQ4_XS", "model": "llama.cpp/Qwen3.6-35B-A3B-Thinking",
"permission": { "permission": {
"edit": "deny" "edit": "deny"
} }
@@ -194,7 +194,7 @@
"mode": "primary", "mode": "primary",
"color": "primary", "color": "primary",
"steps": 30, "steps": 30,
"model": "llama.cpp/gemma-4-26B-A4B-it-UD-IQ4_XS", "model": "llama.cpp/Qwen3.6-35B-A3B-Thinking",
"permission": { "permission": {
"edit": { "edit": {
"*": "allow", "*": "allow",
@@ -216,7 +216,7 @@
"mode": "primary", "mode": "primary",
"color": "#f9e2af", "color": "#f9e2af",
"steps": 30, "steps": 30,
"model": "llama.cpp/gemma-4-26B-A4B-it-UD-IQ4_XS", "model": "llama.cpp/Qwen3.6-35B-A3B-Thinking",
"permission": { "permission": {
"edit": { "edit": {
"*": "allow", "*": "allow",
+2 -2
View File
@@ -1,7 +1,7 @@
{ {
"defaultProvider": "duskadiy", "defaultProvider": "duskadiy",
"defaultModel": "gemma-4-26B-A4B-it-UD-IQ4_XS", "defaultModel": "Qwen3.6-35B-A3B-Thinking",
"defaultThinkingLevel": "off", "defaultThinkingLevel": "medium",
"theme": "catppuccin-mocha", "theme": "catppuccin-mocha",
"quietStartup": false, "quietStartup": false,
"collapseChangelog": true, "collapseChangelog": true,
+5 -1
View File
@@ -52,7 +52,7 @@ starves the desktop and freezes the PC (reboot). Hard-won rules:
| model id | decode t/s | ctx | extras | role | | model id | decode t/s | ctx | extras | role |
|---|---|---|---|---| |---|---|---|---|---|
| `gemma-4-E4B-it-UD-Q8_K_XL` | **57.3** | **96k** | vision, MTP, prefill 185 t/s | fast small generalist, long docs, images (ctx 96k ✓ 08-08, n_ctx_train 131072) | | `gemma-4-E4B-it-UD-Q8_K_XL` | **57.3** | **96k** | vision, MTP, prefill 185 t/s | fast small generalist, long docs, images (ctx 96k ✓ 08-08, n_ctx_train 131072) |
| `Qwen3.6-35B-A3B-Thinking` | 38.8 | 24k | MTP, vision, reasoning | hard problems, slow-but-smart answers | | `Qwen3.6-35B-A3B-Thinking` | 38.8 | 24k | MTP, vision, reasoning (budget 8k = "medium") | **default model** in opencode/pi/aichat since 09-21; hard problems, slow-but-smart answers |
| `gpt-oss-20b` | 38.4 | **64k** | reasoning, tools | fast reasoning + tool use · fast long-context (37 t/s vs Coder-Next 16; 131k ruled out) | | `gpt-oss-20b` | 38.4 | **64k** | reasoning, tools | fast reasoning + tool use · fast long-context (37 t/s vs Coder-Next 16; 131k ruled out) |
| `gpt-oss-20b-low` | 37.2 | **64k** | reasoning LOW, TTFT 0.8 s | same model, snappy answers (no long preamble) | | `gpt-oss-20b-low` | 37.2 | **64k** | reasoning LOW, TTFT 0.8 s | same model, snappy answers (no long preamble) |
| `Qwen3.6-35B-A3B-MTP-UD-IQ3_XXS` | 35.9 | 24k | MTP, vision, thinking OFF | **daily driver** — compact instant answers | | `Qwen3.6-35B-A3B-MTP-UD-IQ3_XXS` | 35.9 | 24k | MTP, vision, thinking OFF | **daily driver** — compact instant answers |
@@ -129,6 +129,9 @@ The same catalog is mirrored in every client — when adding/removing a preset,
- `common/.config/opencode/opencode.json` (both providers + agent model overrides) - `common/.config/opencode/opencode.json` (both providers + agent model overrides)
- `common/.pi/agent/models.json` (both providers; `contextWindow` = server `ctx-size`) - `common/.pi/agent/models.json` (both providers; `contextWindow` = server `ctx-size`)
- `common/.config/aichat/config.yaml` (both clients) - `common/.config/aichat/config.yaml` (both clients)
- `wm/.config/aichat/config.yaml` — full-file overlay for the off-LAN host (default client `duskadiy`);
every aichat change must be mirrored here too (missed for GLM Q3 + Ornith until 09-21). With the
lw/ overlays that makes **seven** client files.
Rule: client model **id = config.ini section name**, client context ≤ server `ctx-size`. Rule: client model **id = config.ini section name**, client context ≤ server `ctx-size`.
The embedder is deliberately absent from chat clients. The embedder is deliberately absent from chat clients.
@@ -140,6 +143,7 @@ the router, but chats/presets saved against the old id need re-picking.
(14.5 t/s MTP / 10.9 base, 2.8 GB free @1.5); server ctx restored to 24576 = client ctx, no client edits. (14.5 t/s MTP / 10.9 base, 2.8 GB free @1.5); server ctx restored to 24576 = client ctx, no client edits.
2026-09-21: `GLM-4.7-Flash-UD-Q3_K_XL` (⚡ fast coder) added to all six client files next to the Q4. 2026-09-21: `GLM-4.7-Flash-UD-Q3_K_XL` (⚡ fast coder) added to all six client files next to the Q4.
2026-09-21: `Ornith-1.5-35B-A3B-IQ3_XXS` (agentic coder, thinking + vision) added to all six client files after passing its gate (32.1 t/s @moe16). 2026-09-21: `Ornith-1.5-35B-A3B-IQ3_XXS` (agentic coder, thinking + vision) added to all six client files after passing its gate (32.1 t/s @moe16).
2026-09-21: default model → `Qwen3.6-35B-A3B-Thinking` everywhere (opencode global + plan/build/auto, pi defaultModel + thinking level medium, aichat common/lw/wm) — gemma-4-26B refused routine sysadmin work. Thinking preset gets `reasoning-budget 8192`. wm aichat caught up (GLM Q3, Ornith).
## Tuning cheat-sheet ## Tuning cheat-sheet
+7
View File
@@ -165,6 +165,13 @@ mmproj = /home/anon/software/models/mmproj-Qwen3.6-35B-A3B-F16.gguf
# 13.9 used / 3.3 free (2.8 dirty baseline), decode unchanged at 36-37 t/s. # 13.9 used / 3.3 free (2.8 dirty baseline), decode unchanged at 36-37 t/s.
spec-type = draft-mtp spec-type = draft-mtp
spec-draft-n-max = 2 spec-draft-n-max = 2
reasoning-budget = 8192 # "MEDIUM" thinking (added 2026-09-21 when this became the default model in
# opencode/pi/aichat): caps runaway 15-20k-token think loops, leaves 16k of
# the 24k ctx for prompt+answer; normal traces (0.5-5k) are untouched. The
# Qwen3.6 template knows only enable_thinking on/off (no reasoning_effort
# levels — verified in the gguf header), so this budget IS the depth knob.
# -1 = unlimited (old behaviour), 0 = the MTP alias. b10615's server README
# documents N>0; if startup rejects it → set -1 and update llama.cpp.
ctx-size = 24576 # thinking eats ctx — same footprint as the non-thinking preset ctx-size = 24576 # thinking eats ctx — same footprint as the non-thinking preset
n-gpu-layers = 99 n-gpu-layers = 99
n-cpu-moe = 16 n-cpu-moe = 16
+1 -1
View File
@@ -5,7 +5,7 @@
# see https://github.com/sigoden/aichat/blob/main/config.example.yaml # see https://github.com/sigoden/aichat/blob/main/config.example.yaml
keybindings: vi keybindings: vi
editor: nvim editor: nvim
model: local:Qwen3-Coder-30B-Instruct-UD-Q3_K_XL model: local:Qwen3.6-35B-A3B-Thinking
# Sessions: persist REPL sessions and keep more history before summarizing. # Sessions: persist REPL sessions and keep more history before summarizing.
# The default compress_threshold (4000) summarizes far too early for 24k+ windows. # The default compress_threshold (4000) summarizes far too early for 24k+ windows.
+4 -4
View File
@@ -1,6 +1,6 @@
{ {
"$schema": "https://opencode.ai/config.json", "$schema": "https://opencode.ai/config.json",
"model": "llama.cpp/gemma-4-26B-A4B-it-UD-IQ4_XS", "model": "llama.cpp/Qwen3.6-35B-A3B-Thinking",
"default_agent": "auto", "default_agent": "auto",
"instructions": ["CLAUDE.md", "AGENTS.md"], "instructions": ["CLAUDE.md", "AGENTS.md"],
"share": "disabled", "share": "disabled",
@@ -203,7 +203,7 @@
"mode": "primary", "mode": "primary",
"color": "info", "color": "info",
"steps": 30, "steps": 30,
"model": "llama.cpp/gemma-4-26B-A4B-it-UD-IQ4_XS", "model": "llama.cpp/Qwen3.6-35B-A3B-Thinking",
"permission": { "permission": {
"edit": "deny" "edit": "deny"
} }
@@ -212,7 +212,7 @@
"mode": "primary", "mode": "primary",
"color": "primary", "color": "primary",
"steps": 30, "steps": 30,
"model": "llama.cpp/gemma-4-26B-A4B-it-UD-IQ4_XS", "model": "llama.cpp/Qwen3.6-35B-A3B-Thinking",
"permission": { "permission": {
"edit": { "edit": {
"*": "allow", "*": "allow",
@@ -234,7 +234,7 @@
"mode": "primary", "mode": "primary",
"color": "#f9e2af", "color": "#f9e2af",
"steps": 30, "steps": 30,
"model": "llama.cpp/gemma-4-26B-A4B-it-UD-IQ4_XS", "model": "llama.cpp/Qwen3.6-35B-A3B-Thinking",
"permission": { "permission": {
"edit": { "edit": {
"*": "allow", "*": "allow",
+2 -2
View File
@@ -1,7 +1,7 @@
{ {
"defaultProvider": "duskadiy", "defaultProvider": "duskadiy",
"defaultModel": "gemma-4-26B-A4B-it-UD-IQ4_XS", "defaultModel": "Qwen3.6-35B-A3B-Thinking",
"defaultThinkingLevel": "off", "defaultThinkingLevel": "medium",
"theme": "catppuccin-mocha", "theme": "catppuccin-mocha",
"quietStartup": false, "quietStartup": false,
"collapseChangelog": true, "collapseChangelog": true,
+6 -1
View File
@@ -5,7 +5,7 @@
# see https://github.com/sigoden/aichat/blob/main/config.example.yaml # see https://github.com/sigoden/aichat/blob/main/config.example.yaml
keybindings: vi keybindings: vi
editor: nvim editor: nvim
model: duskadiy:Qwen3-Coder-30B-Instruct-UD-Q3_K_XL model: duskadiy:Qwen3.6-35B-A3B-Thinking
# Sessions: persist REPL sessions and keep more history before summarizing. # Sessions: persist REPL sessions and keep more history before summarizing.
# The default compress_threshold (4000) summarizes far too early for 24k+ windows. # The default compress_threshold (4000) summarizes far too early for 24k+ windows.
@@ -51,6 +51,11 @@ clients:
supports_vision: true supports_vision: true
- name: GLM-4.7-Flash-UD-Q4_K_XL - name: GLM-4.7-Flash-UD-Q4_K_XL
max_input_tokens: 22000 # ctx 24576 · ~21 t/s — quality coder max_input_tokens: 22000 # ctx 24576 · ~21 t/s — quality coder
- name: GLM-4.7-Flash-UD-Q3_K_XL
max_input_tokens: 22000 # ctx 24576 · ~28 t/s — fast coder (3-bit)
- name: Ornith-1.5-35B-A3B-IQ3_XXS
max_input_tokens: 22000 # ctx 24576 · ~32 t/s — agentic coder, thinking
supports_vision: true
- name: gpt-oss-20b - name: gpt-oss-20b
max_input_tokens: 62000 # ctx 65536 · ~38 t/s — fast reasoning + tools max_input_tokens: 62000 # ctx 65536 · ~38 t/s — fast reasoning + tools
- name: gpt-oss-20b-low - name: gpt-oss-20b-low