Skip to content

[P2] hub-server:internal/service 平铺文件按域归组子包 #1761

Description

@DeliciousBuding

背景

hub-server/internal/service/ 顶层平铺 30 个非测试 .go 文件(5.5K LOC),agent / audit / auth / delivery_outbox / execution_target / relay / skill / mcp_server 各成一域却同挤一处。agent_edge_callback.go 659 行、execution_target.go 578 行偏大。已有 agentevent/agentteam/deliveryoutbox/dispatchsvc/ 子包模式可循。

方案

沿用既有子包模式,按域归组(保持 service 层对 handler 的公开方法签名不变):

  • service/agent/(agent*.go、agent_edge_callback.go、agent_run_event.go)
  • service/audit/service/auth/service/execution/(execution_target*.go)
  • 共享 helper(cache_fallback.go、eventbus.go)留根或入 internal
  • 先做耦合度低的域(audit、auth),再做 agent(耦合最高,最后)

依赖 / 阻塞

  • 无外部阻塞,但 agent 域与 relay/dispatch/seqalloc 交叉引用多,必须最后做且单独 PR。
  • 每个域的搬迁独立成 PR,避免一个巨型 diff。

风险

  • 中高:service 内跨文件私有 helper 多,分包需显式导出或下沉,易引入 import cycle。
  • 缓解:逐域小步,每步 go build ./... && go test ./internal/service/... -short;用 go vet 抓 cycle。

验收

  • service 根目录非测试文件降至 ~10 个
  • 各域子包通过 go build/go vet/go test -short
  • handler 层调用点签名不变,无 import cycle

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium prioritycleanup-baselineAgentHub cleanup baseline programgoPull requests that update go codelane-ALane A

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions