@@ -195,43 +195,53 @@ func togobaev(ev *zero.Event) *goba.Event {
195195 }
196196}
197197
198- func truncate (params map [string ]any ) {
199- stack := []map [string ]any {params }
200- for len (stack ) > 0 {
201- // 弹出栈顶元素
202- current := stack [len (stack )- 1 ]
203- stack = stack [:len (stack )- 1 ]
204-
205- // 遍历当前 map 的所有值
206- for k , v := range current {
207- switch val := v .(type ) {
208- case string :
209- if len (val ) > 512 {
210- current [k ] = val [:200 ] + " ... " + val [len (val )- 200 :]
211- }
212- case int64 , int :
213- case map [string ]any :
214- // 非叶子节点,压入栈中待处理
215- stack = append (stack , val )
216- case message.Message :
217- for _ , m := range val {
218- for k , v := range m .Data {
219- if len (v ) > 512 {
220- m .Data [k ] = v [:200 ] + " ... " + v [len (v )- 200 :]
221- }
222- }
198+ func truncatecopy (params map [string ]any ) map [string ]any {
199+ cpp := make (map [string ]any , len (params ))
200+ for k , v := range params {
201+ switch val := v .(type ) {
202+ case string :
203+ if len (val ) > 512 {
204+ cpp [k ] = val [:200 ] + " ... " + val [len (val )- 200 :]
205+ } else {
206+ cpp [k ] = val
207+ }
208+ case int64 , int :
209+ cpp [k ] = val
210+ case message.Message :
211+ valCopy := make (message.Message , len (val ))
212+ copy (valCopy , val )
213+ for i , m := range val {
214+ valCopy [i ] = message.Segment {
215+ Type : m .Type ,
216+ Data : make (map [string ]string , len (m .Data )),
223217 }
224- case message.Segment :
225- for k , v := range val .Data {
218+ for k , v := range m .Data {
226219 if len (v ) > 512 {
227- val .Data [k ] = v [:200 ] + " ... " + v [len (v )- 200 :]
220+ valCopy [i ].Data [k ] = v [:200 ] + " ... " + v [len (v )- 200 :]
221+ } else {
222+ valCopy [i ].Data [k ] = v
228223 }
229224 }
230- default :
231- logrus .Warnln ("[chat] agent unknown params typ:" , reflect .TypeOf (v ))
232225 }
226+ cpp [k ] = valCopy
227+ case message.Segment :
228+ valCopy := message.Segment {
229+ Type : val .Type ,
230+ Data : make (map [string ]string , len (val .Data )),
231+ }
232+ for k , v := range val .Data {
233+ if len (v ) > 512 {
234+ valCopy .Data [k ] = v [:200 ] + " ... " + v [len (v )- 200 :]
235+ } else {
236+ valCopy .Data [k ] = v
237+ }
238+ }
239+ cpp [k ] = valCopy
240+ default :
241+ logrus .Warnln ("[chat] agent unknown params typ:" , reflect .TypeOf (v ))
233242 }
234243 }
244+ return cpp
235245}
236246
237247func logev (ctx * zero.Ctx ) {
@@ -254,7 +264,7 @@ func logev(ctx *zero.Ctx) {
254264 logrus .Debugln ("[chat] agent" , gid , "skip non-msg other triggered action:" , req .Action )
255265 return
256266 }
257- truncate (req .Params )
267+ req . Params = truncatecopy (req .Params )
258268 ag := AgentOf (ctx .Event .SelfID , "aichat" )
259269 logrus .Debugln ("[chat] agent others" , gid , "add requ:" , & req )
260270 ag .AddRequest (gid , & req )
0 commit comments