后端: 1.阶段 6 memory 服务化 CP1-CP3 落地 - 新增 cmd/memory 独立进程入口,落地 services/memory dao/rpc/sv 与 memory zrpc pb - 将 memory.extract.requested outbox 消费与 memory worker 迁入 cmd/memory,单体 worker 不再消费 memory outbox - 新增 gateway/client/memory、shared/contracts/memory 和 shared/ports memory port - 将 /api/v1/memory/items* HTTP 管理面切到 memory zrpc,gateway 只保留鉴权、限流、幂等、参数绑定和响应透传 - 新增 memory Retrieve RPC,并将 agent 主链路 memory reader 切到 memory zrpc 读取 - 补充 agent memory RPC reader 适配器,保留注入侧 observer / metrics 观测能力 - 保留旧 backend/memory 核心实现作为迁移期复用与回退面,cmd/memory 内部继续复用既有 Module / ReadService 逻辑 - 补充 memory.rpc 示例配置,更新单体 outbox 发布边界与 memory handler 注释口径
61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
package rpc
|
||
|
||
import (
|
||
"errors"
|
||
"strings"
|
||
"time"
|
||
|
||
"github.com/LoveLosita/smartflow/backend/services/memory/rpc/pb"
|
||
memorysv "github.com/LoveLosita/smartflow/backend/services/memory/sv"
|
||
"github.com/zeromicro/go-zero/core/service"
|
||
"github.com/zeromicro/go-zero/zrpc"
|
||
"google.golang.org/grpc"
|
||
)
|
||
|
||
const (
|
||
defaultListenOn = "0.0.0.0:9088"
|
||
defaultTimeout = 6 * time.Second
|
||
)
|
||
|
||
type ServerOptions struct {
|
||
ListenOn string
|
||
Timeout time.Duration
|
||
Service *memorysv.Service
|
||
}
|
||
|
||
// NewServer 创建 memory zrpc 服务端。
|
||
//
|
||
// 职责边界:
|
||
// 1. 只负责 zrpc server 配置与 gRPC handler 注册;
|
||
// 2. 不创建数据库、LLM、RAG、outbox 或 worker,它们由 cmd/memory 管理;
|
||
// 3. 返回 listenOn 供进程入口打印启动日志。
|
||
func NewServer(opts ServerOptions) (*zrpc.RpcServer, string, error) {
|
||
if opts.Service == nil {
|
||
return nil, "", errors.New("memory service dependency not initialized")
|
||
}
|
||
|
||
listenOn := strings.TrimSpace(opts.ListenOn)
|
||
if listenOn == "" {
|
||
listenOn = defaultListenOn
|
||
}
|
||
timeout := opts.Timeout
|
||
if timeout <= 0 {
|
||
timeout = defaultTimeout
|
||
}
|
||
|
||
server, err := zrpc.NewServer(zrpc.RpcServerConf{
|
||
ServiceConf: service.ServiceConf{
|
||
Name: "memory.rpc",
|
||
Mode: service.DevMode,
|
||
},
|
||
ListenOn: listenOn,
|
||
Timeout: int64(timeout / time.Millisecond),
|
||
}, func(grpcServer *grpc.Server) {
|
||
pb.RegisterMemoryServer(grpcServer, NewHandler(opts.Service))
|
||
})
|
||
if err != nil {
|
||
return nil, "", err
|
||
}
|
||
return server, listenOn, nil
|
||
}
|