Files
smartmate/backend/newAgent/prompt/deliver.go
Losita b309a32a98 Version: 0.9.33.dev.260419
后端:
1. deliver 收口上下文重构——历史折叠到工作区,仅基于本轮 execute 窗口诚实收口
  - newAgent/prompt/deliver.go:BuildDeliverMessages 改为向 buildDeliverWorkspace 透传 ConversationContext
  - newAgent/prompt/deliver_context.go:deliver 的 msg1 改为轻量提示,不再回灌完整历史;msg2 追加本轮 execute 窗口与结果态信息

前端:
2. 品牌命名统一切换为 SmartMate
  - index.html:页面标题从 SmartFlow 改为 SmartMate
  - package.json:前端包名改为 smartmate-frontend
  - App.vue:布局类名从 smartflow-* 统一改为 smartmate-*
  - stores/auth.ts:access/refresh token 与 last username 的 localStorage key 全部切到 smartmate_*
  - utils/idempotency.ts:默认幂等键前缀从 smartflow 改为 smartmate
  - DashboardView.vue:首页默认问候名从 SmartFlow 用户改为 SmartMate 用户
3. 助手页体验重做——默认空会话、排程卡片懒加载、上下文统计刷新时机收口
  - components/dashboard/AssistantPanel.vue:进入页面不再自动打开最后一次会话,改为展示居中欢迎空态
  - components/dashboard/AssistantPanel.vue:schedule_completed 改为先展示占位卡片,点击后再拉取 schedule preview,避免预览未落库时并发 404
  - components/dashboard/AssistantPanel.vue:tool done、schedule card、SSE block done、[DONE] 与整轮流结束后统一刷新 context stats
  - components/dashboard/AssistantPanel.vue:重构聊天区布局、空态欢迎内容、底部交互区与内外边距,整体视觉切到更轻的阅读式界面
  - views/AssistantView.vue:移除外层白底卡片壳,交由 AssistantPanel 自己承接容器视觉
4. 排程微调保存链路补幂等保护,并修正请求头口径
  - api/schedule_agent.ts:正式应用接口请求头从 Idempotency-Key 改为 X-Idempotency-Key
  - components/assistant/ScheduleFineTuneModal.vue:同一预览会话复用稳定幂等键,保存成功后再刷新新 key,避免重试或延迟导致重复落库
  - components/assistant/ScheduleResultCard.vue:结果卡片样式、hover 与进场动效整体升级
5. 任务类选择器与侧边导航细节调整
  - components/assistant/TaskClassPlanningPicker.vue:popover、骨架屏、列表项、选中态与按钮视觉整体重绘
  - components/common/MainSidebar.vue:移除“任务”占位入口,侧栏只保留总览 / 日程 / 助手
6. 登录页与首页展示风格重做
  - views/AuthView.vue:品牌文案切到 SmartMate,登录/注册从 tabs 改为自定义双态切换,重做背景、玻璃卡片、表单与动效
  - views/DashboardView.vue:首页主区改为 auto + 1fr 布局,锁定顶部栏高度,避免缩放时形变

仓库:
7. README 全量更新到当前版本能力边界
  - README.md:重写项目定位、功能描述、业务闭环图、newAgent graph 流程、工具定义、前端衔接边界、页面展示、部署方案与监控说明
2026-04-19 23:54:48 +08:00

79 lines
3.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package newagentprompt
import (
"fmt"
"strings"
newagentmodel "github.com/LoveLosita/smartflow/backend/newAgent/model"
"github.com/cloudwego/eino/schema"
)
const deliverSystemPrompt = `
你是 SmartMate 的交付器。你的职责是基于原始计划和执行历史,生成一份简洁、诚实的任务完成总结。
请遵守以下规则:
1. 只基于已有历史和计划状态生成总结,不要编造未执行的操作。
2. 如果所有步骤都已完成,请自然概括每一步的主要成果。
3. 如果流程因轮次耗尽或主动终止而提前结束,请如实说明当前进度与未完成部分。
4. 使用自然、友好的语气,不要机械罗列工具过程。
5. 如果用户后续还需要继续操作,可以给出一句简短建议。
6. 只输出总结文本,不要输出 JSON也不要输出 markdown 标题。
你会看到:
- 原始计划步骤及完成进度
- 最近真实对话
- 当前流程的收口状态`
// BuildDeliverSystemPrompt 返回交付阶段系统提示词。
func BuildDeliverSystemPrompt() string {
return strings.TrimSpace(deliverSystemPrompt)
}
// BuildDeliverMessages 组装交付阶段 messages。
func BuildDeliverMessages(state *newagentmodel.CommonState, ctx *newagentmodel.ConversationContext) []*schema.Message {
roughBuildPrefix := buildDeliverRoughBuildPrefix(ctx, state)
return buildUnifiedStageMessages(
ctx,
StageMessagesConfig{
SystemPrompt: BuildDeliverSystemPrompt(),
Msg1Content: buildDeliverConversationMessage(ctx),
Msg2Content: buildDeliverWorkspace(state, ctx),
Msg3Prefix: roughBuildPrefix,
Msg3Suffix: BuildDeliverUserPrompt(state, ctx),
Msg3Role: schema.User,
},
)
}
// BuildDeliverUserPrompt 构造交付阶段的用户提示词。
func BuildDeliverUserPrompt(state *newagentmodel.CommonState, ctx *newagentmodel.ConversationContext) string {
var sb strings.Builder
sb.WriteString("请基于最近对话和交付工作区,生成一段自然、诚实的完成总结。\n")
if state == nil || !state.HasPlan() {
if hasExecuteRoughBuildDone(ctx) {
sb.WriteString("当前没有正式计划,但本轮已经完成粗排,请结合粗排补充和任务类详情总结粗排结果,不要把它说成正式完结。\n")
} else {
sb.WriteString("当前没有正式计划,请只概括本次互动,不要编造成果。\n")
}
return strings.TrimSpace(sb.String())
}
completed := countCompletedPlanSteps(state)
total := len(state.PlanSteps)
if state.IsExhaustedTerminal() {
sb.WriteString(fmt.Sprintf("注意:任务因轮次耗尽提前结束,当前已完成 %d/%d 步。\n", completed, total))
sb.WriteString("请如实说明已完成与未完成的部分,并给出一句继续建议。\n")
return strings.TrimSpace(sb.String())
}
if state.IsAborted() {
sb.WriteString(fmt.Sprintf("注意:流程已被主动终止,当前已完成 %d/%d 步。\n", completed, total))
sb.WriteString("请如实说明停在何处,以及用户若想继续应如何衔接。\n")
return strings.TrimSpace(sb.String())
}
sb.WriteString("若计划已正常完成,请概括整体成果;若仍有未完成步骤,也必须如实说明。\n")
return strings.TrimSpace(sb.String())
}