feat(orchestrator): agent 节点思考级别设置 + 模型视觉能力展示 - #114
Merged
Conversation
节点面板此前无法设置模型思考级别,也看不出所选模型是否具备视觉输入, 而 dsh 底座(0.1.x)两块能力都已齐备: - ctx.llm.resolveModelInfo 返回模型 reasoning.efforts/defaultEffort 与 inputModalities(含 image 即具备视觉) - dsh-agent 导出 installModelSelection:selection.current 携带 reasoningEffort,经 agent/request waterfall 套用到每次模型请求 (AgentOptions 本身不收 effort,官方 apiproxy selectModel 同款语义) 引擎侧: - agent 节点新增 reasoningEffort 配置;与全局选择同渠道同模型时继承 dsh 默认档位,节点显式配置优先。创建 agent 时在 setup 内 resolveCallConfig 校验档位(不支持则降级 provider 默认)后注入 selection - llm-config 端点逐模型附带 reasoning(档位清单+默认档)与 vision (true/false,未知省略)元数据,单模型解析失败只降级自身不拖垮目录; 响应新增 defaultReasoningEffort 供前端展示继承档位 前端侧(NodePanel 模型与轮次区): - 模型下拉项带 👁 视觉标记;选项下方展示能力摘要(支持/不支持/未知视觉、 思考档位数) - 新增「思考级别」下拉:跟随默认(显示继承档位)/ 模型各档位(title 带 档位说明);切换渠道/模型时清空已选档位防跨模型残留 依赖:bootstrap-deps.sh 与 orchestrator peerDeps 补 @deepseek-ai/dsh-agent (optional),本机 profile 已补链。
节点 timeoutSec(总超时)此前是 agent 卡死的唯一兜底,一次挂起的模型 请求就能吃掉整个 500s 窗口。拆出两个独立旋钮: - 新增 modelTimeoutSec(默认 300s):单次模型调用粒度看门狗。 watchTick 扫 session events 的 step/start(=一次模型调用开始), step/start 后 300s 内无任何新事件落盘即判卡死,agent.cancel 并把 失败原因改写为显式超时错误——引擎按非取消类失败接手指数退避重试 (重试重新计时,与 timeoutSec 不叠加)。step/end 或任意新事件刷新计时 - timeoutSec 语义不变:整个节点生命周期(含多轮 turn + 工具执行), 默认 500s;重试时每轮独立计时 - 轮数上限 placeholder 6→3(引擎 maxRounds=0 仍为不限轮数、超时兜底, placeholder 只是面板提示值;后端无 defaultMaxRounds 概念) - 面板字段拆分展示:轮数上限(附轮定义 hint)/ 节点超时 / 单次请求超时
复杂文稿生成类工作流(多节点长 agent 轮)在 300s 默认超时下易误杀, 默认值放宽到 500s: - engine.js NODE_TIMEOUT_MS 5*60*1000 → 500*1000(运行引擎每节点兜底) - index.js 节点试运行兜底超时同步改(与引擎同语义,避免两处漂移) - NodePanel 超时输入框 placeholder 300→500(agent 面板 + 高级面板两处) 节点级 timeoutSec 显式配置不受影响;测试均显式传 timeoutSec,无需调整。
chumingjun
added a commit
that referenced
this pull request
Sep 2, 2026
* feat(orchestrator): agent 节点默认渠道/模型/思考级别(设置面板后端) - 新增 lib/agent-defaults.js:dsh 用户级持久化(plugin-data/.../agent-defaults.json, 0600 原子写)、normalize 整形(model 依附渠道、档位依附模型)、对照 ctx.llm 目录 校验、resolveAgentModelSelection 解析链纯函数 - runAgentNode 解析链改为:节点显式配置 > Workflow One 默认值 > dsh 全局选择; 模型与思考档位只在同渠道同模型时继承,跨渠道不错配 - 新增 /wf1/api/agent-defaults(GET/PUT,scoped:false——设置面板没有会话上下文, 偏好本身是 dsh 用户级,与飞书凭据同存放层级) - /wf1/api/llm-config 改 scoped:false:目录只读 ctx.llm 运行时,与工作区无关, 设置面板需要它渲染渠道/模型/档位选项 - 测试:agent-defaults 16 例 + 路由集成 7 例(含畸形请求体 400 兜底) - 顺带同步 package-lock 到 0.8.0 + dsh-agent peer(#114 漏更,npm install 自动对齐) * feat(canvasui): 设置面板「Workflow One」加 agent 节点默认值卡片 - 渠道/模型/思考级别三个下拉,目录来自 /wf1/api/llm-config(视觉模型带 👁 标记) - 级联重置:换渠道清空模型与档位、换模型清空档位;无档位模型禁用档位下拉 - 已保存值从目录下线时保留展示(目录中不可用/模型不支持),不静默改写用户配置 - 保存前显示「当前生效」解析结果,保存后与后端同一解析链回显 - __test 暴露 modelOptionsFor/effortOptionsFor/providerNameOf 并补装配用例
chumingjun
added a commit
that referenced
this pull request
Sep 3, 2026
背景:渠道/模型/思考级别已有设置面板默认值层(#117/#125),但 agent 节点 的两个超时旋钮(节点总超时 500s / 模型单请求超时 300s)只能逐节点配置。 另发现 #122 意外把 engine NODE_TIMEOUT_MS 从 500s 回退成 300s(#114 语义 是 500s),UI placeholder 与引擎实际值不符。 方案(解析链与模型层同构:节点 data > WF1 默认值 > 内置默认): - agent-defaults:新增 nodeTimeoutSec/modelTimeoutSec(正整数秒,0=不设置, 上限 86400);resolveAgentTimeouts 统一解析,导出 500/300 内置默认 - 引擎:engine.js 加 resolveNodeTimeout 注入位(仅 agent 节点吃 WF1 默认值, 其余节点维持内置 300s);runAgentNode 单请求超时、单节点测试入口同步走链 - API:agent-defaults GET/PUT 回包 defaults/effective 带超时字段; llm-config 的 wf1Defaults 自动同源下发;旧配置文件读回自动补 0 - 设置面板:AgentDefaultsCard 加「节点超时(秒)/单次超时(秒)」两个输入框, 前端预校验非法值 - NodePanel:agent 面板超时 placeholder 如实展示实际生效秒数(WF1 默认值 或内置);容错区占位按节点类型区分(agent 500 / 其他 300),上限放宽到 86400 验证:orchestrator 17+ 套、web 15 套、全仓 npm test 绿;build-web.sh 双构建 + canvasui 防漂移通过;实机 dsh 验证 PUT 900/180 落盘、llm-config 下发、 非法值 400、旧文件兼容读回。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
智能体(agent)节点面板没有设置模型思考级别的入口,也看不出所选模型是否支持视觉(图片)输入。调研确认 dsh 0.1.x 底座两块能力都已齐备,只是 WF1 没接:
ctx.llm.resolveModelInfo(provider, model)→reasoning.efforts/defaultEffort+inputModalities(含image即视觉)@deepseek-ai/dsh-agent导出installModelSelection:selection.current携带reasoningEffort,经agent/requestwaterfall 套用到每次模型请求(官方 apiproxyselectModel同款语义;AgentOptions 本身不收 effort)改动
引擎(orchestrator):
reasoningEffort配置。继承语义:与全局选择同渠道同模型时继承 dsh 默认档位,节点显式配置优先resolveCallConfig校验档位(模型不支持时降级 provider 默认,不阻塞运行),再installModelSelection注入/wf1/api/llm-config逐模型附带reasoning(档位 id/name/description + defaultEffort)与vision(true/false,未知省略);单模型解析失败只降级自身。响应新增defaultReasoningEffort前端(NodePanel「模型与轮次」区):
依赖:
bootstrap-deps.sh与 orchestrator peerDeps(optional)补@deepseek-ai/dsh-agent验证
npm test全量绿;build-web.sh双构建通过