Skip to content

[EPIC] Gateway 层独立实现(HTTP + WebSocket + Mock Runtime,零侵入主链路) #196

Description

@pionxe

背景

当前仓库缺少独立的 Gateway 模块,尚未形成统一的客户端协议入口(HTTP/WS)。
为了后续让 CLI/TUI/Web 与 Runtime 解耦联接,需要先落地一个可独立运行的 Gateway 层,并保证不影响现有主链路。

目标

实现 internal/gateway 独立模块,提供:

  • 统一协议帧(request/event/error/ack)
  • HTTP + WebSocket 双入口
  • 动作分发(run/compact/cancel/list/load/set_session_workdir)
  • 内置 Mock Runtime(不接真实 runtime)
  • 稳定错误码和可观测标识(request_id/run_id/session_id/action)

范围(In Scope)

  • 新增 internal/gateway 及其测试
  • 新增 Gateway 契约与本地 DTO(不直接依赖 internal/runtime 类型)
  • 新增可运行网关服务(HTTP + WS)
  • 新增 Mock RuntimePort 实现(用于联调占位)
  • 文档补充(模块 README + 协议示例 + 根文档最小更新)

非目标(Out of Scope)

  • 不改 internal/app 当前装配链路
  • 不接入真实 runtime 实例
  • 不改现有 TUI/Runtime/Tools 业务逻辑
  • 不引入跨层直连

技术决策(本 Epic 锁定)

  • Gateway 契约风格:Gateway 本地 DTO
  • 下游策略:内置 Mock Runtime
  • 传输协议:HTTP + WebSocket
  • WS 库:gorilla/websocket

子任务拆解

  • [GW-01] Gateway 契约层实现:协议帧、端口接口与校验器 #198 契约层实现:Gateway / RuntimePort / MessageFrame / 校验器 / 错误码常量
  • GW-02 服务实现:HTTP 路由、WS 连接管理、ack/error/event 回推、优雅关闭
  • GW-03 Mock Runtime:run/compact/cancel/session 动作语义与模拟事件流
  • GW-04 测试与文档:协议、并发、关闭、错误映射、联调说明

验收标准

  • internal/gateway 可独立启动并可通过 HTTP/WS 收发 MessageFrame
  • 未接真实 runtime 时可通过内置 Mock 完成完整交互闭环
  • 所有非法请求返回稳定错误码(含 invalid_frame/invalid_action/invalid_multimodal_payload 等)
  • 并发多连接下行为稳定,Close(ctx) 幂等且无 goroutine 泄漏
  • go test ./... 通过
  • go run ./cmd/neocode 现有行为不变(零侵入回归)

风险与回滚

  • 风险:网关命名与现有 internal/security/gateway.go 语义混淆
  • 缓解:文档与包注释明确“协议网关”与“权限网关”职责边界
  • 回滚:本 Epic 仅新增模块,若异常可通过不装配 Gateway 保持现有功能不受影响

关联文档(#172

  • docs/architecture/gateway/README.md
  • docs/architecture/gateway/interface.go
  • docs/architecture/README.md

Metadata

Metadata

Assignees

Labels

No labels
No labels

Fields

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions