MCPcopy Create free account
hub / github.com/astercloud/aster / NewLogicMemoryMiddleware

Function NewLogicMemoryMiddleware

pkg/middleware/logic_memory.go:87–150  ·  view source on GitHub ↗

NewLogicMemoryMiddleware 创建 Logic Memory 中间件

(config *LogicMemoryMiddlewareConfig)

Source from the content-addressed store, hash-verified

85
86// NewLogicMemoryMiddleware 创建 Logic Memory 中间件
87func NewLogicMemoryMiddleware(config *LogicMemoryMiddlewareConfig) (*LogicMemoryMiddleware, error) {
88 if config == nil {
89 return nil, errors.New("logic memory config is required")
90 }
91
92 if config.Manager == nil {
93 return nil, errors.New("logic memory manager is required")
94 }
95
96 // 设置默认值
97 if config.MaxMemories <= 0 {
98 config.MaxMemories = 5
99 }
100 if config.MinConfidence <= 0 {
101 config.MinConfidence = 0.6
102 }
103 if config.EventBufferSize <= 0 {
104 config.EventBufferSize = 100
105 }
106 if config.CacheTTL <= 0 {
107 config.CacheTTL = 5 * time.Minute
108 }
109 if config.Priority <= 0 {
110 config.Priority = 7
111 }
112 if config.InjectionPoint == "" {
113 config.InjectionPoint = "system_prompt_end"
114 }
115 if config.SystemPromptTemplate == "" {
116 config.SystemPromptTemplate = defaultLogicMemoryPromptTemplate
117 }
118 if len(config.CaptureChannels) == 0 {
119 config.CaptureChannels = []types.AgentChannel{
120 types.ChannelControl,
121 types.ChannelMonitor,
122 }
123 }
124
125 // 默认的 namespace 提取器
126 namespaceExtractor := config.NamespaceExtractor
127 if namespaceExtractor == nil {
128 namespaceExtractor = defaultNamespaceExtractor
129 }
130
131 m := &LogicMemoryMiddleware{
132 BaseMiddleware: NewBaseMiddleware("logic_memory", config.Priority),
133 manager: config.Manager,
134 config: config,
135 namespaceExtractor: namespaceExtractor,
136 stopCh: make(chan struct{}),
137 }
138
139 // 创建事件缓冲区(如果启用异步捕获)
140 if config.AsyncCapture && config.EnableCapture {
141 m.eventBuffer = make(chan *logic.Event, config.EventBufferSize)
142 }
143
144 // 创建 Logic Memory 工具

Calls 3

NewBaseMiddlewareFunction · 0.85
InfoMethod · 0.65