Skip to content

feat(orchestrator): 设置面板支持 agent 节点通用提示词(#129) - #130

Open
chumingjun wants to merge 2 commits into
mainfrom
feat/agent-common-prompt
Open

feat(orchestrator): 设置面板支持 agent 节点通用提示词(#129)#130
chumingjun wants to merge 2 commits into
mainfrom
feat/agent-common-prompt

Conversation

@chumingjun

Copy link
Copy Markdown
Owner

Closes #129

背景

agent 节点的系统提示词此前完全由节点自身「提示词」字段决定。跨节点反复出现的行为约束(统一中文输出、交付物直给结论、物业术语规范)只能在每个节点里复制粘贴,改了还要挨个同步。本 PR 在设置面板「Workflow One」加「通用提示词」:一次配置对所有 agent 节点生效。

方案

语义:部署级行为约束,注入 agent 系统提示词尾部(节点提示词 + 引擎固定指令 + 技能索引 + 结构化输出/飞书指令之后)——节点提示词定义「做什么」,通用约束修正「怎么做」,尾部位置保证覆盖前面的行为指令。空串 = 不注入,零行为变化。

  • agent-defaults.jssystemPrompt 进默认值存储(与渠道/模型/超时同文件同端点,dsh 用户级 ~/.dsh/plugin-data/.../state/agent-defaults.json);normalize 校验字符串类型与 8000 字符防呆上限,保留换行只去首尾空白;agentCommonPromptSection() 把非空文本包成 ## 通用约束
  • index.jsrunAgentNode 提示词链尾部拼接(agentDefaults 已在作用域内,无额外读盘)
  • canvasuiAgentDefaultsCard 超时字段后加多行 textarea(纵向可调高度),dirty/保存/draft 重置链路全部纳入新字段;bundle 已重建,--check 逐字比对通过
  • API/wf1/api/agent-defaults GET/PUT 现有形状直接带新字段,无新路由

兼容性

  • 旧版 agent-defaults.json(五字段)读取时 systemPrompt 回退空串,写回补齐
  • 旧客户端 PUT 不带 systemPrompt = 清空(PUT 整体替换语义,与渠道/模型一致)

验证

  • 单测 23+10 例:normalize 边界(多行保留/超长 400/非串 400)、注入段语义(空不注入/多行整体保留)、旧存量文件读写回退、API 集成(PUT 回读、空串清空、400 路径)
  • orchestrator 30 套、canvasui client 测试、全量 npm testbuild-web.sh 双构建、build-canvasui.sh --check 全部通过

关联

…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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(orchestrator): 设置面板支持 agent 节点通用提示词(全局行为约束)

1 participant