diff --git a/backend/domain/agent/singleagent/internal/agentflow/callback_reply_chunk.go b/backend/domain/agent/singleagent/internal/agentflow/callback_reply_chunk.go index ffd48bda..ca0ebb81 100644 --- a/backend/domain/agent/singleagent/internal/agentflow/callback_reply_chunk.go +++ b/backend/domain/agent/singleagent/internal/agentflow/callback_reply_chunk.go @@ -33,7 +33,6 @@ import ( "github.com/coze-dev/coze-studio/backend/api/model/crossdomain/singleagent" "github.com/coze-dev/coze-studio/backend/crossdomain/contract/crossworkflow" "github.com/coze-dev/coze-studio/backend/domain/agent/singleagent/entity" - "github.com/coze-dev/coze-studio/backend/pkg/errorx" "github.com/coze-dev/coze-studio/backend/pkg/lang/conv" "github.com/coze-dev/coze-studio/backend/pkg/logs" ) @@ -96,14 +95,9 @@ func (r *replyChunkCallback) OnError(ctx context.Context, info *callbacks.RunInf r.sw.Send(interruptEvent, nil) } else { - logs.CtxErrorf(ctx, "node execute failed, component=%v, name=%v, err=%v", + logs.CtxErrorf(ctx, "[AgentRunError] | node execute failed, component=%v, name=%v, err=%v", info.Component, info.Name, err) - var customErr errorx.StatusError - errMsg := "Internal server error" - if errors.As(err, &customErr) && customErr.Code() != 0 { - errMsg = customErr.Msg() - } - r.sw.Send(nil, errors.New(errMsg)) + r.sw.Send(nil, err) } } diff --git a/backend/domain/conversation/agentrun/service/agent_run_impl.go b/backend/domain/conversation/agentrun/service/agent_run_impl.go index fbf19b37..0a974ce7 100644 --- a/backend/domain/conversation/agentrun/service/agent_run_impl.go +++ b/backend/domain/conversation/agentrun/service/agent_run_impl.go @@ -23,8 +23,10 @@ import ( "errors" "fmt" "io" + "os" "runtime/debug" "strconv" + "strings" "sync" "time" @@ -47,6 +49,7 @@ import ( "github.com/coze-dev/coze-studio/backend/pkg/lang/ptr" "github.com/coze-dev/coze-studio/backend/pkg/logs" "github.com/coze-dev/coze-studio/backend/pkg/safego" + "github.com/coze-dev/coze-studio/backend/types/consts" "github.com/coze-dev/coze-studio/backend/types/errno" ) @@ -714,9 +717,19 @@ func (c *runImpl) handlerUsage(meta *schema.ResponseMeta) *msgEntity.UsageExt { } func (c *runImpl) handlerErr(_ context.Context, err error, sw *schema.StreamWriter[*entity.AgentRunResponse]) { + + errMsg := errorx.ErrorWithoutStack(err) + if strings.ToLower(os.Getenv(consts.RunMode)) != "debug" { + var statusErr errorx.StatusError + if errors.As(err, &statusErr) { + errMsg = statusErr.Msg() + } else { + errMsg = "Internal Server Error" + } + } c.runEvent.SendErrEvent(entity.RunEventError, sw, &entity.RunError{ - Code: errno.ErrConversationAgentRunError, - Msg: errorx.ErrorWithoutStack(err), + Code: errno.ErrAgentRun, + Msg: errMsg, }) } diff --git a/backend/types/consts/consts.go b/backend/types/consts/consts.go index fd073d4c..c034337e 100644 --- a/backend/types/consts/consts.go +++ b/backend/types/consts/consts.go @@ -19,6 +19,7 @@ package consts import "time" const ( + RunMode = "RUN_MODE" MySQLDsn = "MYSQL_DSN" RedisAddr = "REDIS_ADDR" VeImageXAK = "VE_IMAGEX_AK" diff --git a/backend/types/errno/conversation.go b/backend/types/errno/conversation.go index d94d618f..1d8bdbf3 100644 --- a/backend/types/errno/conversation.go +++ b/backend/types/errno/conversation.go @@ -33,9 +33,16 @@ const ( ErrInterruptDataEmpty = 103100005 ErrConversationMessageNotFound = 103200001 + + ErrAgentRun = 103200002 ) func init() { + code.Register( + ErrAgentRun, + "Interal Server Error", + code.WithAffectStability(true), + ) code.Register( ErrConversationJsonMarshal, "json marshal failed", diff --git a/docker/.env.debug.example b/docker/.env.debug.example index 8e89a125..db0f86b4 100644 --- a/docker/.env.debug.example +++ b/docker/.env.debug.example @@ -1,3 +1,6 @@ +# run mode +export RUN_MODE="debug" # Currently supports debug mode. When set to debug, it helps developers print raw error messages during development and debugging, such as agent debugging. + # Server export LISTEN_ADDR=":8888" export LOG_LEVEL="debug"