Skip to content

refactor(edge): adapters SDK 适配器归组子包(#1760 首个增量) - #1770

Open
DeliciousBuding wants to merge 1 commit into
masterfrom
simp/edge-adapters-grouping
Open

refactor(edge): adapters SDK 适配器归组子包(#1760 首个增量)#1770
DeliciousBuding wants to merge 1 commit into
masterfrom
simp/edge-adapters-grouping

Conversation

@DeliciousBuding

Copy link
Copy Markdown
Collaborator

Summary

#1760 的首个有界增量:把 edge-server/internal/adapters(原 81 个平铺 .go 文件)中内聚的直连 HTTP SDK 适配器归组到新子包 internal/adapters/sdk/,根包降至 69 个文件(-12),降低认知负载。纯重组,无行为变化。

迁移了什么(12 个文件 → adapters/sdk,另拆分 1 个测试文件)

  • anthropic_sdk{,_request,_sse,_types,_e2e_test}.go(5)
  • openai_sdk{,_request,_sse,_types,_e2e_test}.go(5)
  • sdk_common{,_test}.go(BuildCommand 哨兵命令助手,2)
  • adapter_latency_test.go 的 SDK 延迟基准/测试随适配器迁入 sdk/adapter_latency_test.goBenchmarkClassifyComplexity(router 相关)留在根包
  • 新增 sdk/doc.gosdk/aliases.go(合同类型与用到的 BusEvent* 常量派生自 internal/orchestration,模式对齐既有叶子包 adapters/orchestrator
  • 组合根 cmd/agenthub-edge/adapter_registry.go 改为 import .../adapters/sdksdk.NewAnthropicSDKAdapter / sdk.NewOpenAISDKAdapter / sdk.AnthropicHTTPTimeout / sdk.OpenAIHTTPTimeout

为什么无环(先分析后动手,go list -deps 机器验证)

  • 依赖方向单向:sdk → adaptersResolveModelResolveReasoningEffortCtxRunContextNewNonRecoverableParseErrorSDKAdapterContext 仍留在根包)+ sdk → orchestration(合同 SSOT);go list -deps ./internal/adapters 确认根包adapters/sdk
  • 根包归组后不再引用任何 SDK 符号:registry.go 只含字符串适配器 ID("anthropic-sdk"/"openai-sdk"),构造函数调用点只在组合根;原根包内唯一引用 SDK 符号的 adapter_latency_test.go(内部测试,使用未导出的 buildMessages)已随迁,避免测试图成环。
  • 无需在根包加 re-export:仓库内没有任何其它包经由 adapters.* 引用 SDK 符号。

剩余耦合(本增量刻意不碰)

sdk_fixture_mapper*.go(5 个文件)暂不归组:与根包双向耦合——mapper 使用根包 BusEvent* 常量,而根包生产代码 agentspec_fixture.go 构造 SDKFixture* 类型并调用 NewClaudeCodeAdapter/NewCodexACPadapter/NewOpenCodeACPAdapter 等其他适配器构造函数;整体下沉会形成 import cycle。后续增量可先把 AgentSpec 编译器与 fixture mapper 一起解耦再归组。

Verification(全部通过)

cd edge-server && go build ./... && go vet ./... && go test ./internal/adapters/... -short
  • go build ./...
  • go vet ./...
  • go test ./internal/adapters/... -short ✅(adaptersadapters/orchestratoradapters/sdk 均 ok)
  • 额外:go test ./cmd/... ./internal/lifecycle/... -short ✅;scripts/verify/verify-orchestrator-deps.py 3/3 PASS(依赖方向门禁不受影响);gofmt -l 干净

Test plan

  • go build ./... / go vet ./... / go test ./internal/adapters/... -short 全绿
  • go list -deps 确认 adapters ↛ adapters/sdk(单向无环)
  • 组合根与 lifecycle 测试通过
  • CI 全量回归

#1760 首个有界增量:把内聚的直连 HTTP SDK 适配器从 internal/adapters
根包(81 个平铺 .go 文件)归组到新子包 internal/adapters/sdk,
根包降至 69 个文件,降低认知负载。

迁移内容(12 个文件 + 延迟基准测试拆分):
- anthropic_sdk{,_request,_sse,_types,_e2e_test}.go
- openai_sdk{,_request,_sse,_types,_e2e_test}.go
- sdk_common{,_test}.go(BuildCommand 哨兵命令助手)
- adapter_latency_test.go 的 SDK 基准/测试随迁至 sdk 包;
  ClassifyComplexity 基准留在根包
- 新增 doc.go / aliases.go(合同类型与 BusEvent* 常量派生自
  internal/orchestration,模式对齐既有叶子包 adapters/orchestrator)

为何无环(go list -deps 机器验证):
- sdk → adapters 为单向依赖(ResolveModel / CtxRunContext /
  NewNonRecoverableParseError / SDKAdapterContext 仍留在根包);
- 根包不再引用任何 SDK 符号:registry.go 只含字符串适配器 ID
  "anthropic-sdk"/"openai-sdk",构造函数调用点只在组合根
  cmd/agenthub-edge(已改为 import sdk)。

暂不归组:sdk_fixture_mapper*.go 与根包存在双向耦合
(mapper 使用根包 BusEvent* 常量;根包 agentspec_fixture.go
构造 SDKFixture* 类型并调用其它适配器构造函数),强行下沉会形成
import cycle,留待后续增量解耦。

纯重组、无行为变化:go build ./... / go vet ./... /
go test ./internal/adapters/... -short 全绿;
scripts/verify/verify-orchestrator-deps.py 3/3 通过;
cmd/agenthub-edge 与 internal/lifecycle 测试亦通过。

Co-authored-by: Cursor <cursor@vectorcontrol.tech>
@DeliciousBuding DeliciousBuding added go Pull requests that update go code P2 Medium priority lane-A Lane A cleanup-baseline AgentHub cleanup baseline program labels Aug 18, 2026
@coderabbitai

coderabbitai Bot commented Aug 18, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@DeliciousBuding, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 24 minutes

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 0b6e8742-f2cd-445c-9932-cd88be1844db

📥 Commits

Reviewing files that changed from the base of the PR and between de446df and e78d2de.

📒 Files selected for processing (17)
  • edge-server/cmd/agenthub-edge/adapter_registry.go
  • edge-server/internal/adapters/adapter_latency_test.go
  • edge-server/internal/adapters/sdk/adapter_latency_test.go
  • edge-server/internal/adapters/sdk/aliases.go
  • edge-server/internal/adapters/sdk/anthropic_sdk.go
  • edge-server/internal/adapters/sdk/anthropic_sdk_e2e_test.go
  • edge-server/internal/adapters/sdk/anthropic_sdk_request.go
  • edge-server/internal/adapters/sdk/anthropic_sdk_sse.go
  • edge-server/internal/adapters/sdk/anthropic_sdk_types.go
  • edge-server/internal/adapters/sdk/doc.go
  • edge-server/internal/adapters/sdk/openai_sdk.go
  • edge-server/internal/adapters/sdk/openai_sdk_e2e_test.go
  • edge-server/internal/adapters/sdk/openai_sdk_request.go
  • edge-server/internal/adapters/sdk/openai_sdk_sse.go
  • edge-server/internal/adapters/sdk/openai_sdk_types.go
  • edge-server/internal/adapters/sdk/sdk_common.go
  • edge-server/internal/adapters/sdk/sdk_common_test.go

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cleanup-baseline AgentHub cleanup baseline program go Pull requests that update go code lane-A Lane A P2 Medium priority

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant