工作台任务模型跟随用户 AUTO:/api/run model_id 由钉死 deepseek-v4-flash 改为 'auto'(09-03 实证:调度接受 auto、会话 model=auto、任务 ACCEPTED success=1)

This commit is contained in:
maogeigei committed 2026-09-03 11:19:13 +08:00
1 parent 3de1c0ffcd
commit cf359f46c2
1 file changed
+4 -1
@@ -537,6 +537,9 @@ const server = http.createServer((req, res) => {
if (!prompt || typeof prompt !== 'string' || !prompt.trim()) return sendErr(400, 'prompt 不能为空');
// 09-01 参数级技能挂载:skills_json 是 automations 表原生字段(default '[]'),
// 客户端调度器创建会话时按该字段挂载技能;前端传技能名数组(如 ['短视频脚本创作'])即完成任务级技能绑定
// 09-03 模型跟随用户 AUTO:model_id 改 'auto'(原 'deepseek-v4-flash' 钉死绕过用户模型选择)。
// 调度器实证:model_id 有值 → setSessionModel 强制指定会话模型;'auto' 为用户界面合法模型模式(sessions.model 实证),
// 由系统按任务复杂度自动路由。若实测调度不认 'auto',可改留 NULL(调度不强制,走宿主默认初始模型)
const skillsArr = Array.isArray(skills) ? skills.filter((s) => typeof s === 'string' && s.trim()).map((s) => s.trim()) : [];
// 09-01 并发方案A:浏览器类任务(账号信息/视频列表/采集/导入)自动注入浏览器锁约束——
// 多个 AI 会话任务并行共享同一 9223 Chrome 实例,必须互斥使用,否则标签页互相导航抢占
@@ -566,7 +569,7 @@ const server = http.createServer((req, res) => {
const ownerUserId = uidRow ? uidRow.user_id : '';
db.prepare(`INSERT INTO automations (id,name,prompt,status,schedule_type,scheduled_at,next_run_at,rrule,cwds,created_at,updated_at,skills_json,connector_ids_json,model_id,permission_mode,owner_user_id,owner_status)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`)
.run(id, name || '工作台任务', finalPrompt, 'ACTIVE', 'once', scheduledAt, nextRunAt, '', JSON.stringify([cwd]), now, now, JSON.stringify(skillsArr), '[]', 'deepseek-v4-flash', 'fullAccess', ownerUserId, 'confirmed');
.run(id, name || '工作台任务', finalPrompt, 'ACTIVE', 'once', scheduledAt, nextRunAt, '', JSON.stringify([cwd]), now, now, JSON.stringify(skillsArr), '[]', 'auto', 'fullAccess', ownerUserId, 'confirmed');
db.close();
log('已提交 AI 任务: ' + id + (name ? ' (' + name + ')' : ''));
return sendJSON(200, { ok: true, id, message: '任务已提交,请在左侧会话栏查看执行' });