Add Qwen3.5 2B
Rolling release / release (push) Successful in 6m37s

This commit is contained in:
2026-09-12 15:11:49 -04:00
parent 390b2fa098
commit 874154f39a
5 changed files with 9 additions and 1 deletions
@@ -690,6 +690,10 @@
"value": "laptop-8gb", "value": "laptop-8gb",
"label": "Small \u00b7 Qwen3 1.7B" "label": "Small \u00b7 Qwen3 1.7B"
}, },
{
"value": "laptop-8gb-mm",
"label": "Compact \u00b7 Qwen3.5 2B"
},
{ {
"value": "laptop-16gb", "value": "laptop-16gb",
"label": "Balanced \u00b7 Qwen3.5 4B" "label": "Balanced \u00b7 Qwen3.5 4B"
+1
View File
@@ -1,5 +1,6 @@
export const MODEL_PROFILES = Object.freeze({ export const MODEL_PROFILES = Object.freeze({
'laptop-8gb': { model: 'qwen3-1.7b', minRamGb: 8, vision: false }, 'laptop-8gb': { model: 'qwen3-1.7b', minRamGb: 8, vision: false },
'laptop-8gb-mm': { model: 'qwen3.5-2b', minRamGb: 6, vision: true },
'laptop-16gb': { model: 'qwen3.5-4b', minRamGb: 10, vision: true }, 'laptop-16gb': { model: 'qwen3.5-4b', minRamGb: 10, vision: true },
'desktop-gpu': { model: 'qwen3.5-9b', minRamGb: 16, vision: true }, 'desktop-gpu': { model: 'qwen3.5-9b', minRamGb: 16, vision: true },
}); });
+1 -1
View File
@@ -146,7 +146,7 @@ and WebP quality tune observation detail and processing cost.
### Chat model ### Chat model
- **Chat model profile** — `modelProfile`, default `"laptop-16gb"`. Requires a daemon restart. GPU inference remains required. Choices: `laptop-8gb`, `laptop-16gb`, `desktop-gpu`. - **Chat model profile** — `modelProfile`, default `"laptop-16gb"`. Requires a daemon restart. GPU inference remains required. Choices: `laptop-8gb`, `laptop-8gb-mm` (Qwen3.5 2B, vision), `laptop-16gb`, `desktop-gpu`.
- **Custom chat model** — `chatModel`, default `""`. Advanced: overrides the profile. Empty uses the profile model. Requires restart. - **Custom chat model** — `chatModel`, default `""`. Advanced: overrides the profile. Empty uses the profile model. Requires restart.
### Agent limits ### Agent limits
+2
View File
@@ -197,6 +197,8 @@ test('QVAC utility tools are exposed only through the master adapter', () => {
}); });
test('model profiles select one master model without creating another runtime', () => { test('model profiles select one master model without creating another runtime', () => {
assert.equal(profile('laptop-8gb-mm').model, 'qwen3.5-2b');
assert.equal(profile('laptop-8gb-mm').vision, true);
assert.equal(profile('desktop-gpu').model, 'qwen3.5-9b'); assert.equal(profile('desktop-gpu').model, 'qwen3.5-9b');
assert.throws(() => profile('missing'), /unknown Jarvis model profile/); assert.throws(() => profile('missing'), /unknown Jarvis model profile/);
}); });
+1
View File
@@ -32,6 +32,7 @@ test('saving one window preserves unrelated changes from another and removes con
const merged = mergeSettings({ tts_enabled: false, ttsSpeed: 1.5, unrelated: 'kept' }, { ttsEnabled: true }, SETTINGS_FIELDS); const merged = mergeSettings({ tts_enabled: false, ttsSpeed: 1.5, unrelated: 'kept' }, { ttsEnabled: true }, SETTINGS_FIELDS);
assert.deepEqual(merged, { ttsSpeed: 1.5, unrelated: 'kept', ttsEnabled: true }); assert.deepEqual(merged, { ttsSpeed: 1.5, unrelated: 'kept', ttsEnabled: true });
assert.equal(normalizeSettings(merged, SETTINGS_FIELDS).ttsSpeed, 1.5); assert.equal(normalizeSettings(merged, SETTINGS_FIELDS).ttsSpeed, 1.5);
assert.equal(voiceSettings({ modelProfile: 'laptop-8gb-mm' }).modelProfile, 'laptop-8gb-mm');
}); });
test('every speech preset uses a real registry asset and passes the installed SDK schema', () => { test('every speech preset uses a real registry asset and passes the installed SDK schema', () => {