v1.7 Session 会话机制 + 多工作区隔离 + Reporter 抽象
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package engine
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type TerminalReporter struct{}
|
||||
|
||||
func NewTerminalReporter() *TerminalReporter {
|
||||
return &TerminalReporter{}
|
||||
}
|
||||
|
||||
func (r *TerminalReporter) OnThinking(ctx context.Context) {
|
||||
fmt.Printf("\n[🤔 思考中] 模型正在推理...\n")
|
||||
}
|
||||
|
||||
func (r *TerminalReporter) OnToolCall(ctx context.Context, toolName string, args string) {
|
||||
fmt.Printf("[🛠️ 调用工具] %s\n", toolName)
|
||||
// 清理参数中的换行符和特殊字符
|
||||
displayArgs := strings.ReplaceAll(args, "\n", "\\n")
|
||||
displayArgs = strings.ReplaceAll(displayArgs, "\r", "\\r")
|
||||
if len(displayArgs) > 150 {
|
||||
displayArgs = displayArgs[:150] + "... (已截断)"
|
||||
}
|
||||
fmt.Printf(" 参数: %s\n", displayArgs)
|
||||
}
|
||||
|
||||
func (r *TerminalReporter) OnToolResult(ctx context.Context, toolName string, result string, isError bool) {
|
||||
if isError {
|
||||
fmt.Printf("[❌ 执行失败] %s\n", toolName)
|
||||
// 显示错误信息
|
||||
if result != "" {
|
||||
fmt.Printf(" 错误: %s\n", result)
|
||||
}
|
||||
} else {
|
||||
fmt.Printf("[✅ 执行成功] %s\n", toolName)
|
||||
}
|
||||
}
|
||||
|
||||
func (r *TerminalReporter) OnMessage(ctx context.Context, content string) {
|
||||
if content == "" {
|
||||
return
|
||||
}
|
||||
fmt.Printf("\n🤖 Agent 回复:\n%s\n\n", content)
|
||||
}
|
||||
Reference in New Issue
Block a user