|
@@ -72,6 +72,12 @@ watch(id, () => {
|
|
|
}, { immediate: true })
|
|
}, { immediate: true })
|
|
|
watch(profiles, resetDraft)
|
|
watch(profiles, resetDraft)
|
|
|
|
|
|
|
|
|
|
+// 手动切换引擎时,原模型(如 sonnet)不属于新引擎,换成新引擎的默认模型;否则输入框保留旧值,候选列表按旧值过滤后为空
|
|
|
|
|
+function onProviderChange() {
|
|
|
|
|
+ const d = draft.value
|
|
|
|
|
+ if (d && !models.value.includes(d.model)) d.model = providers.value.find(p => p.id === d.provider)?.defaultModel || models.value[0] || ''
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
// 技能列表随引擎切换
|
|
// 技能列表随引擎切换
|
|
|
watch(() => draft.value?.provider, async p => {
|
|
watch(() => draft.value?.provider, async p => {
|
|
|
if (p) skills.value = await admin.skills(p).catch(() => [])
|
|
if (p) skills.value = await admin.skills(p).catch(() => [])
|
|
@@ -191,14 +197,16 @@ onMounted(() => load().catch(err => toast(errorMessage(err), 'error')))
|
|
|
<div><label class="label" for="p-desc">说明</label><input id="p-desc" v-model="draft.description" class="field"></div>
|
|
<div><label class="label" for="p-desc">说明</label><input id="p-desc" v-model="draft.description" class="field"></div>
|
|
|
<div>
|
|
<div>
|
|
|
<label class="label" for="p-provider">引擎</label>
|
|
<label class="label" for="p-provider">引擎</label>
|
|
|
- <select id="p-provider" v-model="draft.provider" class="field" :disabled="!!current?.builtin" :title="current?.builtin ? '内置 Profile 的引擎不能修改' : ''">
|
|
|
|
|
|
|
+ <select id="p-provider" v-model="draft.provider" class="field" @change="onProviderChange" :disabled="!!current?.builtin" :title="current?.builtin ? '内置 Profile 的引擎不能修改' : ''">
|
|
|
<option v-for="p in providers" :key="p.id" :value="p.id" :disabled="!p.enabled">{{ p.id }}{{ p.enabled ? '' : '(未启用)' }}</option>
|
|
<option v-for="p in providers" :key="p.id" :value="p.id" :disabled="!p.enabled">{{ p.id }}{{ p.enabled ? '' : '(未启用)' }}</option>
|
|
|
</select>
|
|
</select>
|
|
|
</div>
|
|
</div>
|
|
|
<div>
|
|
<div>
|
|
|
<label class="label" for="p-model">模型</label>
|
|
<label class="label" for="p-model">模型</label>
|
|
|
- <input id="p-model" v-model="draft.model" class="field" list="p-models">
|
|
|
|
|
- <datalist id="p-models"><option v-for="m in models" :key="m" :value="m" :label="modelLabels[m]" /></datalist>
|
|
|
|
|
|
|
+ <select id="p-model" v-model="draft.model" class="field">
|
|
|
|
|
+ <option v-for="m in models" :key="m" :value="m">{{ m }}{{ modelLabels[m] ? ` · ${modelLabels[m]}` : '' }}</option>
|
|
|
|
|
+ <option v-if="draft.model && !models.includes(draft.model)" :value="draft.model">{{ draft.model }}(不在当前引擎的模型列表中)</option>
|
|
|
|
|
+ </select>
|
|
|
<div v-if="modelLabels[draft.model]" class="hint mt-1">{{ modelLabels[draft.model] }}</div>
|
|
<div v-if="modelLabels[draft.model]" class="hint mt-1">{{ modelLabels[draft.model] }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div>
|
|
<div>
|