[Sync] LLM clients → Qwen3.6-35B-A3B-Thinking default, Ornith preset, fl GPU monitor abbrs
This commit is contained in:
@@ -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.
|
||||||
|
|||||||
@@ -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.
|
|
||||||
@@ -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",
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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,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
|
||||||
|
|||||||
Reference in New Issue
Block a user