Files

53 lines
1.4 KiB
Go
Raw Permalink Normal View History

package application
import (
"context"
"fmt"
"img_infinite_canvas/internal/domain/design"
)
type DeterministicAgent struct{}
func NewDeterministicAgent() *DeterministicAgent {
return &DeterministicAgent{}
}
func (a *DeterministicAgent) Plan(ctx context.Context, req design.AgentRequest) (design.AgentPlan, error) {
if err := ctx.Err(); err != nil {
return design.AgentPlan{}, err
}
offset := len(req.Project.Nodes)
nodes := composeBoard(req.Prompt, offset)
return design.AgentPlan{
Message: design.Message{
ID: newID(),
Role: "assistant",
Type: "assistant",
Title: "设计任务完成",
Content: synthesizeResponse(req.Prompt, req.Mode),
},
GeneratedNodes: nodes,
Connections: nil,
}, nil
}
func (a *DeterministicAgent) Replay(ctx context.Context, project design.Project) (design.AgentReplay, error) {
if err := ctx.Err(); err != nil {
return design.AgentReplay{}, err
}
return design.AgentReplay{
ProjectID: project.ID,
Messages: append([]design.Message(nil), project.Messages...),
}, nil
}
func synthesizeResponse(prompt string, mode string) string {
if mode == "" {
mode = "design"
}
return fmt.Sprintf("已按「%s」生成一组 %s 画布:官网首页、色彩卡片、移动端页面和详情页已放到无限画布中,可继续微调、扩展或上传参考图。视频生成暂未接入,当前聚焦图片、页面与品牌视觉。", prompt, mode)
}