From 8010b6c0b20f7991dce173320e99a15e6d34a7f5 Mon Sep 17 00:00:00 2001 From: maogeigei Date: Thu, 3 Sep 2026 11:23:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=8D=87=E7=BA=A7=E4=B8=BA=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E8=B7=9F=E9=9A=8F=E7=94=A8=E6=88=B7=E9=80=89=E6=8B=A9=EF=BC=9A?= =?UTF-8?q?/api/run=20=E6=8F=90=E4=BA=A4=E6=97=B6=E8=AF=BB=E6=9C=80?= =?UTF-8?q?=E8=BF=91=E6=B4=BB=E8=B7=83=E6=89=8B=E5=8A=A8=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=20model=EF=BC=88sessions.model=EF=BC=8C=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E7=BA=A7=E6=97=A0=E5=85=A8=E5=B1=80=E8=AE=BE=E7=BD=AE=EF=BC=89?= =?UTF-8?q?=E5=86=99=E5=85=A5=20model=5Fid=EF=BC=8C=E6=97=A0=E5=88=99?= =?UTF-8?q?=E5=85=9C=E5=BA=95=20auto=EF=BC=9B=E5=AE=9E=E8=AF=81=EF=BC=9A?= =?UTF-8?q?=E6=AD=A4=E5=88=BB=E7=94=A8=E6=88=B7=E4=BC=9A=E8=AF=9D=20flash?= =?UTF-8?q?=E2=86=92=E4=BB=BB=E5=8A=A1=20model=3Dflash=20ACCEPTED=20succes?= =?UTF-8?q?s=3D1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../短视频脚本创作/V1.0/mcn-work-shop/server.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/project/短视频脚本创作/V1.0/mcn-work-shop/server.js b/project/短视频脚本创作/V1.0/mcn-work-shop/server.js index a90804b..5b459cd 100644 --- a/project/短视频脚本创作/V1.0/mcn-work-shop/server.js +++ b/project/短视频脚本创作/V1.0/mcn-work-shop/server.js @@ -537,9 +537,10 @@ 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(调度不强制,走宿主默认初始模型) + // 09-03 模型跟随用户选择:原 model_id 钉死 'deepseek-v4-flash'(绕过用户模型选择,全任务跑 flash)。 + // 已改为动态读取最近活跃手动会话的 model(下方 modelRow/modelId,跟随用户在 UI 的 auto/flash/pro 选择); + // 兜底 'auto' = 系统按任务复杂度自动路由。实证:调度器 model_id 有值 → setSessionModel 强制指定会话模型, + // 'auto' 与具体模型 ID 均被接受(auto 会话 model='auto'、任务 ACCEPTED success=1 验证通过) const skillsArr = Array.isArray(skills) ? skills.filter((s) => typeof s === 'string' && s.trim()).map((s) => s.trim()) : []; // 09-01 并发方案A:浏览器类任务(账号信息/视频列表/采集/导入)自动注入浏览器锁约束—— // 多个 AI 会话任务并行共享同一 9223 Chrome 实例,必须互斥使用,否则标签页互相导航抢占 @@ -567,9 +568,14 @@ const server = http.createServer((req, res) => { const nextRunAt = Date.now() + 5 * 1000; // 08-31 实测:客户端调度器按 next_run_at 扫描;缺此列=null=永不拾取(工作台任务卡死根因) const uidRow = db.prepare("SELECT user_id FROM sessions WHERE user_id IS NOT NULL AND user_id <> '' ORDER BY created_at DESC LIMIT 1").get(); const ownerUserId = uidRow ? uidRow.user_id : ''; + // 09-03 动态跟随用户模型选择:WorkBuddy 模型为会话级(sessions.model,无全局设置), + // 读最近活跃的【手动】会话(非后台自动化)的 model 写入任务 → 用户在 UI 切 auto/flash/pro,任务即跟随; + // 无手动会话记录时兜底 'auto'(自动路由)。实证:调度接受 'auto' 与具体模型 ID('deepseek-v4-pro' 曾成功) + const modelRow = db.prepare(`SELECT model FROM sessions WHERE deleted_at IS NULL AND COALESCE(is_background_automation,0)=0 AND model IS NOT NULL AND model <> '' ORDER BY COALESCE(last_activity_at, updated_at) DESC LIMIT 1`).get(); + const modelId = (modelRow && modelRow.model) ? modelRow.model : 'auto'; 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), '[]', 'auto', 'fullAccess', ownerUserId, 'confirmed'); + .run(id, name || '工作台任务', finalPrompt, 'ACTIVE', 'once', scheduledAt, nextRunAt, '', JSON.stringify([cwd]), now, now, JSON.stringify(skillsArr), '[]', modelId, 'fullAccess', ownerUserId, 'confirmed'); db.close(); log('已提交 AI 任务: ' + id + (name ? ' (' + name + ')' : '')); return sendJSON(200, { ok: true, id, message: '任务已提交,请在左侧会话栏查看执行' });