feat: improve agent progress feedback
This commit is contained in:
parent
1db3d108d4
commit
5239250465
@ -165,6 +165,7 @@ import {
|
||||
buildDirectAgentAnalyzeCompletedProgress,
|
||||
buildDirectAgentAnalyzeFailedProgress,
|
||||
buildDirectAgentAnalyzePlanningProgress,
|
||||
buildDirectAgentImageContextProgress,
|
||||
buildDirectAgentImageEditCompletedProgress,
|
||||
buildDirectAgentImageEditExecutingProgress,
|
||||
buildDirectAgentImageEditFailedProgress,
|
||||
@ -9335,6 +9336,14 @@ export async function POST(request: Request) {
|
||||
) {
|
||||
const directImageStream = createUIMessageStream({
|
||||
execute: async ({ writer }) => {
|
||||
writeAgentProgressChunk(
|
||||
writer,
|
||||
buildDirectAgentImageContextProgress({
|
||||
imageCount: directAgentToolTargetImageUrls.length,
|
||||
mode: "generate",
|
||||
}),
|
||||
"agent:generate_image:progress-image-context",
|
||||
);
|
||||
writeAgentProgressChunk(
|
||||
writer,
|
||||
buildDirectAgentImageGenerateSelectProgress(),
|
||||
@ -9510,6 +9519,14 @@ export async function POST(request: Request) {
|
||||
const directVideoStream = createUIMessageStream({
|
||||
execute: async ({ writer }) => {
|
||||
const assistantMessageId = generateUUID();
|
||||
writeAgentProgressChunk(
|
||||
writer,
|
||||
buildDirectAgentImageContextProgress({
|
||||
imageCount: directAgentToolTargetImageUrls.length,
|
||||
mode: "video",
|
||||
}),
|
||||
"agent:generate_video:progress-image-context",
|
||||
);
|
||||
writeAgentProgressChunk(
|
||||
writer,
|
||||
buildDirectAgentVideoGenerateSelectProgress(),
|
||||
@ -9687,6 +9704,14 @@ export async function POST(request: Request) {
|
||||
const directToolLabel = getDirectAgentToolLabel(directAgentToolCapability);
|
||||
const directToolStream = createUIMessageStream({
|
||||
execute: async ({ writer }) => {
|
||||
writeAgentProgressChunk(
|
||||
writer,
|
||||
buildDirectAgentImageContextProgress({
|
||||
imageCount: directAgentToolTargetImageUrls.length,
|
||||
mode: "edit",
|
||||
}),
|
||||
`agent:${directAgentToolCapability}:progress-image-context`,
|
||||
);
|
||||
writeAgentProgressChunk(
|
||||
writer,
|
||||
buildDirectAgentImageEditSelectProgress({
|
||||
|
||||
@ -428,25 +428,25 @@ const AGENT_PROGRESS_STEPS: Array<{
|
||||
key: NonNullable<AgentProgressStreamPayload["currentStep"]>;
|
||||
label: string;
|
||||
}> = [
|
||||
{ key: "lock_target", label: "锁定目标" },
|
||||
{ key: "lock_target", label: "整理素材" },
|
||||
{ key: "analyze", label: "理解需求" },
|
||||
{ key: "select_tool", label: "选择工具" },
|
||||
{ key: "execute", label: "执行处理" },
|
||||
{ key: "select_tool", label: "优化提示" },
|
||||
{ key: "execute", label: "提交生成" },
|
||||
{ key: "finalize", label: "整理结果" },
|
||||
];
|
||||
|
||||
function getAgentProgressFallbackTitle(payload?: AgentProgressStreamPayload | null) {
|
||||
switch (payload?.stage) {
|
||||
case "clarify":
|
||||
return "等待确认";
|
||||
return "需要补充信息";
|
||||
case "executing":
|
||||
return "正在处理";
|
||||
return "正在生成结果";
|
||||
case "completed":
|
||||
return "处理完成";
|
||||
return "创作完成";
|
||||
case "failed":
|
||||
return "处理失败";
|
||||
return "创作失败";
|
||||
default:
|
||||
return "正在准备";
|
||||
return "正在理解需求";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -30,12 +30,62 @@ function buildDirectAgentProgressPayload(params: DirectAgentProgressPayload) {
|
||||
return params;
|
||||
}
|
||||
|
||||
export function buildDirectAgentImageContextProgress(params: {
|
||||
imageCount?: number;
|
||||
mode?: "generate" | "edit" | "video";
|
||||
}) {
|
||||
const imageCount = Math.max(0, Math.floor(Number(params.imageCount || 0)));
|
||||
const hasMultipleImages = imageCount > 1;
|
||||
const hasImage = imageCount > 0;
|
||||
|
||||
if (params.mode === "edit") {
|
||||
return buildDirectAgentProgressPayload({
|
||||
stage: "planning",
|
||||
currentStep: "lock_target",
|
||||
title: hasMultipleImages ? "正在理解多张待编辑图片" : "正在理解待编辑图片",
|
||||
message: hasImage
|
||||
? "我会先识别主体、风格、构图和需要保留的内容,再确认这次要改变的部分。"
|
||||
: "我会先根据你的文字需求确认编辑目标,再整理成适合模型执行的方向。",
|
||||
toolName: "editImage",
|
||||
capability: "generic_edit",
|
||||
});
|
||||
}
|
||||
|
||||
if (params.mode === "video") {
|
||||
return buildDirectAgentProgressPayload({
|
||||
stage: "planning",
|
||||
currentStep: "lock_target",
|
||||
title: hasImage ? "正在理解视频参考图" : "正在规划视频画面",
|
||||
message: hasImage
|
||||
? "我会先提取参考图的主体、镜头、风格和运动约束,再整理成视频生成方向。"
|
||||
: "我会先根据你的描述整理镜头主体、运动节奏和画面风格。",
|
||||
toolName: "generateVideo",
|
||||
capability: "generate_video",
|
||||
});
|
||||
}
|
||||
|
||||
return buildDirectAgentProgressPayload({
|
||||
stage: "planning",
|
||||
currentStep: "lock_target",
|
||||
title: hasMultipleImages
|
||||
? "正在理解多张参考图片"
|
||||
: hasImage
|
||||
? "正在理解参考图片"
|
||||
: "正在规划画面方向",
|
||||
message: hasImage
|
||||
? "我会先识别图片主体、风格、构图和关键约束,再提炼可执行的创作方向。"
|
||||
: "我会先根据你的描述整理画面主体、风格和关键约束。",
|
||||
toolName: "generateImage",
|
||||
capability: "generate_image",
|
||||
});
|
||||
}
|
||||
|
||||
export function buildDirectAgentAnalyzePlanningProgress() {
|
||||
return buildDirectAgentProgressPayload({
|
||||
stage: "planning",
|
||||
currentStep: "analyze",
|
||||
title: "正在分析目标图片",
|
||||
message: "我会先提取稳定的视觉摘要,再整理成更直接的分析结论。",
|
||||
title: "正在描述目标图片",
|
||||
message: "我会先识别主体、风格、构图、光线和材质,再整理成可直接阅读的观察结论。",
|
||||
toolName: "analyzeImage",
|
||||
capability: "analyze",
|
||||
});
|
||||
@ -46,7 +96,7 @@ export function buildDirectAgentAnalyzeCompletedProgress() {
|
||||
stage: "completed",
|
||||
currentStep: "finalize",
|
||||
title: "图片分析完成",
|
||||
message: "我已经整理好可直接阅读的分析结论。",
|
||||
message: "我已经把图片要点整理成清晰结论,方便继续修图、生图或做风格延展。",
|
||||
toolName: "analyzeImage",
|
||||
capability: "analyze",
|
||||
});
|
||||
@ -67,8 +117,8 @@ export function buildDirectAgentImageGenerateSelectProgress() {
|
||||
return buildDirectAgentProgressPayload({
|
||||
stage: "planning",
|
||||
currentStep: "select_tool",
|
||||
title: "已选中图片生成工具",
|
||||
message: "我正在整理参考图和生图参数,准备开始生成。",
|
||||
title: "正在优化生图提示词",
|
||||
message: "我会把你的需求转成更适合当前模型的提示词,并保留主体、风格、构图和画面约束。",
|
||||
toolName: "generateImage",
|
||||
capability: "generate_image",
|
||||
});
|
||||
@ -78,8 +128,8 @@ export function buildDirectAgentImageGenerateExecutingProgress() {
|
||||
return buildDirectAgentProgressPayload({
|
||||
stage: "executing",
|
||||
currentStep: "execute",
|
||||
title: "正在生成图片",
|
||||
message: "我会结合当前提示词和参考图生成新的画面。",
|
||||
title: "正在提交生图模型",
|
||||
message: "已将优化后的提示词与参考图一起提交生成,完成后会回写到对话和画布。",
|
||||
toolName: "generateImage",
|
||||
capability: "generate_image",
|
||||
});
|
||||
@ -90,7 +140,7 @@ export function buildDirectAgentImageGenerateCompletedProgress() {
|
||||
stage: "completed",
|
||||
currentStep: "finalize",
|
||||
title: "图片生成完成",
|
||||
message: "结果已经回写到对话和画布。",
|
||||
message: "结果已整理并回写到当前对话和画布。",
|
||||
toolName: "generateImage",
|
||||
capability: "generate_image",
|
||||
});
|
||||
@ -111,8 +161,8 @@ export function buildDirectAgentVideoGenerateSelectProgress() {
|
||||
return buildDirectAgentProgressPayload({
|
||||
stage: "planning",
|
||||
currentStep: "select_tool",
|
||||
title: "已选中视频生成工具",
|
||||
message: "我正在整理模式、参考图和视频参数。",
|
||||
title: "正在优化视频提示词",
|
||||
message: "我会把你的描述整理成镜头、主体、运动和风格更明确的视频生成提示词。",
|
||||
toolName: "generateVideo",
|
||||
capability: "generate_video",
|
||||
});
|
||||
@ -122,8 +172,8 @@ export function buildDirectAgentVideoGenerateExecutingProgress() {
|
||||
return buildDirectAgentProgressPayload({
|
||||
stage: "executing",
|
||||
currentStep: "execute",
|
||||
title: "正在生成视频",
|
||||
message: "我正在按当前模式执行视频生成。",
|
||||
title: "正在提交视频生成",
|
||||
message: "已将优化后的镜头提示词与参考图提交生成,完成后会回写到对话和画布。",
|
||||
toolName: "generateVideo",
|
||||
capability: "generate_video",
|
||||
});
|
||||
@ -134,7 +184,7 @@ export function buildDirectAgentVideoGenerateCompletedProgress() {
|
||||
stage: "completed",
|
||||
currentStep: "finalize",
|
||||
title: "视频生成完成",
|
||||
message: "结果已经写回对话和画布。",
|
||||
message: "结果已整理并回写到当前对话和画布。",
|
||||
toolName: "generateVideo",
|
||||
capability: "generate_video",
|
||||
});
|
||||
@ -159,8 +209,8 @@ export function buildDirectAgentImageEditSelectProgress(params: {
|
||||
return buildDirectAgentProgressPayload({
|
||||
stage: "planning",
|
||||
currentStep: "select_tool",
|
||||
title: `已选中${params.label}`,
|
||||
message: "我正在整理目标图和当前参数,准备开始执行。",
|
||||
title: "正在优化修图提示词",
|
||||
message: `我会把你的编辑需求整理成更适合${params.label}执行的提示词,明确保留项和变化项。`,
|
||||
toolName: params.toolName,
|
||||
capability: params.capability,
|
||||
});
|
||||
@ -174,8 +224,8 @@ export function buildDirectAgentImageEditExecutingProgress(params: {
|
||||
return buildDirectAgentProgressPayload({
|
||||
stage: "executing",
|
||||
currentStep: "execute",
|
||||
title: `正在执行${params.label}`,
|
||||
message: "执行完成后我会把结果直接回写到当前对话和画布。",
|
||||
title: `正在提交${params.label}`,
|
||||
message: "已将优化后的编辑提示词和目标图提交生成,完成后会回写到当前对话和画布。",
|
||||
toolName: params.toolName,
|
||||
capability: params.capability,
|
||||
});
|
||||
@ -190,7 +240,7 @@ export function buildDirectAgentImageEditCompletedProgress(params: {
|
||||
stage: "completed",
|
||||
currentStep: "finalize",
|
||||
title: `${params.label}完成`,
|
||||
message: "结果已经回写到当前对话和画布。",
|
||||
message: "结果已整理并回写到当前对话和画布。",
|
||||
toolName: params.toolName,
|
||||
capability: params.capability,
|
||||
});
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user