Ech0Ech0
中文
开发指南

开发指南

开发环境搭建和前后端联调指南

项目架构

  • 后端事件总线已切换为 Busen:采用 typed-first in-process 架构,并通过显式背压、hooks 与 drain shutdown 提升稳定性。

开发指南

后端环境要求

Go 1.26.0+

C 编译器

使用 go-sqlite3 等需要 CGO 的库时,需安装:

  • Windows:MinGW-w64,解压后将 bin 目录添加到 PATH
  • macOS:brew install gcc
  • Linux:sudo apt install build-essential

Google Wire

安装 wire 用于依赖注入文件生成:

go install github.com/google/wire/cmd/wire@latest

Golangci-Lint

安装 Golangci-Lint 用于 lint 和 fmt:

  • 在项目根目录下执行 golangci-lint run 进行 lint
  • 在项目根目录下执行 golangci-lint fmt 进行格式化

Air(后端热重载,可选)

  • 推荐通过 Makefile 安装:make air-install
  • 或手动安装:go install github.com/air-verse/air@latest

Swagger

安装 Swagger 用于生成和使用符合 OpenAPI 规范的接口文档:

  • 在项目根目录下执行 swag init -g internal/server/server.go -o internal/swagger 后生成或更新 swagger 文档
  • 打开浏览器访问 http://localhost:6277/swagger/index.html 查看和使用 swagger 文档

Event 运行参数(Busen)

  • ECH0_EVENT_DEFAULT_BUFFER / ECH0_EVENT_DEFAULT_OVERFLOW
  • ECH0_EVENT_DEADLETTER_BUFFER / ECH0_EVENT_SYSTEM_BUFFER
  • ECH0_EVENT_AGENT_BUFFER / ECH0_EVENT_AGENT_PARALLELISM
  • ECH0_EVENT_INBOX_BUFFER
  • ECH0_EVENT_WEBHOOK_POOL_WORKERS / ECH0_EVENT_WEBHOOK_POOL_QUEUE

前端环境要求

NodeJS v25.5.0+, PNPM v10.30.0+

如需要多个 NodeJS 版本共存可使用 fnm 进行管理。


启动前后端联调

后端(在 Ech0 根目录下)

make run # 普通启动后端(等价于 go run main.go serve)
make dev # 使用 Air 启动后端热重载

如果依赖注入关系发生了变化,需要先在 ech0/internal/di/ 下执行 wire 命令生成新的 wire_gen.go 文件。

前端(新终端)

cd web # 进入前端目录

pnpm install # 如果没有安装依赖则执行

pnpm dev # 启动前端预览
# 或在项目根目录执行:make web-dev

对使用层次化架构的包进行导入时,请使用规范的 alias 命名:model 层 xxxModel、util 层 xxxUtil、handler 层 xxxHandler、service 层 xxxService、repository 层 xxxRepository