feat(orchestrator): 设置面板支持 agent 节点通用提示词(#129) - #130
Open
chumingjun wants to merge 2 commits into
Open
Conversation
…rable」 dsh-session 0.1.2-alpha.5(随今晨全局 dsh 0.1.2-alpha.4 升级引入)删除了 Session.events getter,只留 snapshotEvents() 方法。引擎 agent 节点收尾路径 (summarize/countTurns/sumUsage/buildTrace)与轮询看门狗仍裸访问 agent.session.events → undefined → for...of 抛「events is not iterable」, 节点结果整体被吞(无输出、无用量、纯错误串)。轮询 scanEvents 有 catch 静默,收尾路径无保护,故报错只在节点完成时出现。 - lib/index.js:新增 sessionEventsOf(session) 兼容读取——新 SDK 走 snapshotEvents()(try/catch 降级空数组),旧 SDK 回退 .events 数组, 异常形态(session 已释放)给空数组按「无事件」降级;替换全部 8 处 裸 .events 访问(scanEvents/看门狗/summarize×2/sumUsage/countTurns/ buildTrace/replayTrace 的 insp.events 加 Array.isArray 防御) - test/live-trace.test.mjs:新增 2 例——新旧 session 形态取值优先级、 异常形态降级不抛错 验证:orchestrator 30 套全绿(含 live-trace 8 例)、全量 npm test 通过。
设置面板「Workflow One」新增「通用提示词」:一段对所有 agent 节点生效的 部署级行为约束(如统一中文输出、交付物直给结论、术语规范),替代在每个 节点里复制粘贴同步约束的做法。 - agent-defaults.js:systemPrompt 字段进默认值存储(dsh 用户级,与渠道/ 模型/超时同文件同端点);normalize 校验字符串与 8000 字符防呆上限, 保留换行只去首尾空白;旧存量文件缺字段自然回退空串。 agentCommonPromptSection() 把非空文本包成「## 通用约束」段 - index.js:runAgentNode 组装完节点提示词 + 引擎固定指令 + 技能索引 + 结构化输出/飞书指令后尾部注入通用约束段——节点提示词定义「做什么」, 通用约束修正「怎么做」,尾部位置覆盖前面的行为指令;空串零行为变化 - canvasui:AgentDefaultsCard 超时字段后加通用提示词多行 textarea (纵向可调),dirty/保存链路纳入该字段;bundle 已重建(--check 过) - 测试:normalize 边界(多行保留/超长拒绝/非串拒绝)+ 注入段语义 + 旧存量文件兼容 + API 集成(PUT 回读/清空/400 路径),23+10 例 验证:orchestrator 30 套、canvasui client、全量 npm test、build-web.sh 双构建、build-canvasui.sh --check 全部通过。 Closes #129
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.
Closes #129
背景
agent 节点的系统提示词此前完全由节点自身「提示词」字段决定。跨节点反复出现的行为约束(统一中文输出、交付物直给结论、物业术语规范)只能在每个节点里复制粘贴,改了还要挨个同步。本 PR 在设置面板「Workflow One」加「通用提示词」:一次配置对所有 agent 节点生效。
方案
语义:部署级行为约束,注入 agent 系统提示词尾部(节点提示词 + 引擎固定指令 + 技能索引 + 结构化输出/飞书指令之后)——节点提示词定义「做什么」,通用约束修正「怎么做」,尾部位置保证覆盖前面的行为指令。空串 = 不注入,零行为变化。
systemPrompt进默认值存储(与渠道/模型/超时同文件同端点,dsh 用户级~/.dsh/plugin-data/.../state/agent-defaults.json);normalize 校验字符串类型与 8000 字符防呆上限,保留换行只去首尾空白;agentCommonPromptSection()把非空文本包成## 通用约束段runAgentNode提示词链尾部拼接(agentDefaults已在作用域内,无额外读盘)AgentDefaultsCard超时字段后加多行 textarea(纵向可调高度),dirty/保存/draft 重置链路全部纳入新字段;bundle 已重建,--check逐字比对通过/wf1/api/agent-defaultsGET/PUT 现有形状直接带新字段,无新路由兼容性
agent-defaults.json(五字段)读取时systemPrompt回退空串,写回补齐systemPrompt= 清空(PUT 整体替换语义,与渠道/模型一致)验证
npm test、build-web.sh双构建、build-canvasui.sh --check全部通过关联
fix/agent-session-events-compat(PR fix(orchestrator): agent 节点收尾兼容 dsh-session 新 API,修「events is not iterable」 #128)切出,包含其提交——请先合 fix(orchestrator): agent 节点收尾兼容 dsh-session 新 API,修「events is not iterable」 #128,本 PR 的 diff 会自动收敛