mirror of
https://github.com/YspCoder/clawgo.git
synced 2026-04-20 17:17:30 +08:00
56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package agent
|
|
|
|
import "github.com/YspCoder/clawgo/pkg/providers"
|
|
|
|
// ContextBuildRequest defines inputs for building a provider message window.
|
|
type ContextBuildRequest struct {
|
|
History []providers.Message
|
|
Summary string
|
|
CurrentMessage string
|
|
Media []string
|
|
Channel string
|
|
ChatID string
|
|
ResponseLanguage string
|
|
MemoryNamespace string
|
|
}
|
|
|
|
// ContextEngine allows swapping context-assembly behavior without touching AgentLoop flow.
|
|
type ContextEngine interface {
|
|
BuildMessages(req ContextBuildRequest) []providers.Message
|
|
SkillsInfo() map[string]interface{}
|
|
}
|
|
|
|
type defaultContextEngine struct {
|
|
builder *ContextBuilder
|
|
}
|
|
|
|
func NewDefaultContextEngine(builder *ContextBuilder) ContextEngine {
|
|
if builder == nil {
|
|
return nil
|
|
}
|
|
return &defaultContextEngine{builder: builder}
|
|
}
|
|
|
|
func (e *defaultContextEngine) BuildMessages(req ContextBuildRequest) []providers.Message {
|
|
if e == nil || e.builder == nil {
|
|
return nil
|
|
}
|
|
return e.builder.BuildMessagesWithMemoryNamespace(
|
|
req.History,
|
|
req.Summary,
|
|
req.CurrentMessage,
|
|
req.Media,
|
|
req.Channel,
|
|
req.ChatID,
|
|
req.ResponseLanguage,
|
|
req.MemoryNamespace,
|
|
)
|
|
}
|
|
|
|
func (e *defaultContextEngine) SkillsInfo() map[string]interface{} {
|
|
if e == nil || e.builder == nil {
|
|
return map[string]interface{}{}
|
|
}
|
|
return e.builder.GetSkillsInfo()
|
|
}
|