coze-loop (Agent Skills)

GitHub

Next-generation AI Agent Optimization Platform: Cozeloop addresses challenges in AI agent development by providing full-lifecycle management capabilities from development, debugging, and evaluation to monitoring.

AGENTS.md

# AGENTS.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

> 开始任务前先通读本文件;涉及架构决策时读 `ARCHITECTURE.md`;进入具体模块时读模块代码。

## 项目概要

Coze Loop 是一个开源的 LLM 评测与可观测性平台,提供 Prompt 开发调试、评测(评测集 + 评估器 + 实验)、可观测性(Trace/Span)、模型集成(OpenAI / Volcengine Ark)等能力。采用 Go 后端(DDD 6 模块,Hertz + Kitex)+ TypeScript/React 前端(Rush.js 59 包)的多语言单体仓库架构,Thrift IDL 共享契约。

## 文档体系

| 层级 | 文件 | 职责 |
|------|------|------|
| L0 入口 | `AGENTS.md`(本文件) | 项目全貌、核心约束、导航 |
| L1 架构 | `ARCHITECTURE.md` | 系统架构、代码地图、依赖关系、不变量 |
| L1 专题 | `docs/AGENTS.md` | 中层索引,串联 reference/ 和 guidance/ |
| L3 参考 | `docs/reference/backend-modules-api.md` | 后端 6 模块职责、分层、API 路由 |
| L3 参考 | `docs/reference/frontend-packages.md` | 前端 59 包分层结构 |
| L3 指南 | `docs/guidance/deployment-guide.md` | Docker Compose / Helm 部署 |
| L3 指南 | `docs/guidance/idl-codegen-guide.md` | IDL 变更后代码生成流程 |

## 导航表

| 我想… | 去哪里 |
|-------|--------|
| 了解仓库整体架构和模块关系 | `ARCHITECTURE.md` |
| 查找 docs 下的专题文档 | `docs/AGENTS.md` |
| 了解后端 6 个 DDD 模块的职责和 API | `docs/reference/backend-modules-api.md` |
| 了解前端 59 包的分层结构 | `docs/reference/frontend-packages.md` |
| 部署 Coze Loop(Docker / Helm) | `docs/guidance/deployment-guide.md` |
| 修改 IDL 后生成代码 | `docs/guidance/idl-codegen-guide.md` |
| 修改数据库表结构 | 本文件「开发流程」→ Step 3-4 |
| 添加新的 API 接口 | 本文件「开发流程」→ Step 1-2 → Step 6 |
| 运行本地开发环境 | `make compose-up-dev` |
| 了解错误码定义规范 | 本文件「开发流程」→ Step 7 |
| 执行 lint 检查 | `cd backend && golangci-lint run --config ../.github/.golangci.yaml --fix` |

## 仓库结构

```
coze-loop/
├── idl/thrift/coze/loop/       # Thrift IDL(前后端共享契约,同步源)
│   ├── <module>/domain/        # 开源领域实体
│   ├── <module>/domain_openapi/# OpenAPI 领域实体
│   └── <module>/coze.loop.*.thrift  # 服务接口
├── backend/
│   ├── cmd/                    # 服务入口(main.go HTTP, consumer.go MQ)
│   ├── api/                    # Hertz 网关层(生成 + handler)
│   ├── modules/                # 6 个 DDD 业务模块
│   │   ├── evaluation/         # 评测(实验 / 评估器 / 评测集)
│   │   ├── observability/      # 可观测性(Trace / Span)
│   │   ├── prompt/             # Prompt 管理
│   │   ├── data/               # 数据管理(Dataset)
│   │   ├── llm/                # LLM 模型集成
│   │   └── foundation/         # 基础(用户 / 空间 / API Key)
│   ├── infra/                  # 共享基础设施(DB, Redis, ClickHouse, MQ, middleware)
│   ├── pkg/                    # 共享工具库
│   ├── kitex_gen/              # Kitex 生成代码 ⚠️ 禁止手动修改
│   ├── loop_gen/               # Loop 生成代码 ⚠️ 禁止手动修改
│   └── script/                 # 代码生成脚本
│       ├── cloudwego/code_gen.sh   # IDL → Go
│       ├── gorm_gen/generate.go    # SQL → GORM Model
│       └── errorx/code_gen.py      # 错误码生成
├── frontend/                   # Rush.js 前端 monorepo(59 包)
│   ├── apps/cozeloop/          # 主 SPA(React 18, Rsbuild, react-router, zustand)
│   ├── packages/               # loop-pages, loop-modules, loop-components, loop-base
│   ├── config/                 # eslint-config, ts-config, vitest-config 等
│   └── infra/                  # IDL 转 TypeScript 工具等
├── release/deployment/
│   ├── docker-compose/         # Docker 部署(conf/ + bootstrap/)
│   └── helm-chart/             # Kubernetes 部署
└── common/                     # git-hooks(Rush 管理)
```

## 核心约束

### 1. DDD 分层纪律

每个 `backend/modules/<domain>/` 遵循三层架构,依赖方向单向:

```
api/ → application/ → domain/ ← infra/
```

- **domain/** 定义接口,**infra/** 实现接口,domain **绝不**引用 infra
- Application 层负责 DTO↔DO 转换、用例编排
- Repository 的事务只在 infra 层启动

### 2. IDL 优先

`idl/thrift/` 是接口契约的同步源。商业化 IDL 仓库的 `open/` 目录从此处同步。修改 IDL 后必须运行代码生成。

### 3. 生成代码不可手动修改

- `backend/kitex_gen/` — Kitex 生成
- `backend/loop_gen/` — Loop 本地调用生成
- `backend/api/router_gen.go` — Hertz 路由生成
- `**/wire_gen.go` — Wire DI 生成
- `**/gorm_gen/**` — GORM 模型生成

### 4. 向前兼容

已有企业用户二开部署。IDL API / Domain 核心接口 / 配置文件 / 存储 Schema 均要求向前兼容。新增字段必须 optional,数据库只允许加列。

### 5. SQL 双路径同步

修改数据库表时,以下两个目录必须保持一致:
- `release/deployment/docker-compose/bootstrap/mysql-init/`(Docker)
- `release/deployment/helm-chart/charts/app/bootstrap/init/mysql/init-sql/`(Helm)

修改表还需要在 `patch-sql/` 写 ALTER 语句。CI 会通过 `mysql-schema-check` 工作流校验两侧一致性。

### 6. 前端依赖分层

前端 6 层依赖结构(Level-1 到 Level-6),高层级只能依赖低层级,禁止反向依赖。商业版与开源版差异通过 Adapter 模式解耦(`adapter-interfaces/` → `*-adapter/` → `components-with-adapter/`)。

## 后端开发流程

```
Step 1: IDL 定义 → Step 2: 代码生成 → Step 3: MySQL Schema → Step 4: GORM Gen
→ Step 5: 配置文件 → Step 6: 业务代码 → Step 7: 错误码 → Step 8: 国际化
→ Step 9: UT → Step 10: golint
```

详细步骤见 `docs/guidance/idl-codegen-guide.md`(Step 1-2)和 `docs/guidance/deployment-guide.md`(部署配置)。

**Wire 依赖注入**:修改 `wire.go` 后运行 `wire generate` 重新生成 `wire_gen.go`。禁止手动编辑 `wire_gen.go`。

**代码复用约束**:新增功能前必须先搜索 codebase 是否已有相同/类似实现,有则复用或扩展,不得新建重复文件。

## 常用命令

### 后端(Go)

| 操作 | 命令 |
|------|------|
| Go 编译 | `cd backend && go build ./...` |
| 全量测试 | `cd backend && go test -gcflags="all=-N -l" ./...` |
| 单测(指定包) | `cd backend && go test -gcflags="all=-N -l" ./modules/<domain>/...` |
| 单测(指定函数) | `cd backend && go test -gcflags="all=-N -l" -run TestFuncName ./modules/<domain>/...` |
| CI 级测试(含 race) | `cd backend && go test -gcflags="all=-N -l" -race -v -coverprofile=coverage.out -coverpkg=./... ./...` |
| golint 修复 | `cd backend && golangci-lint run --config ../.github/.golangci.yaml --fix` |
| IDL 代码生成 | `bash backend/script/cloudwego/code_gen.sh` |
| GORM 代码生成 | `cd backend && go run script/gorm_gen/generate.go` |
| 错误码生成 | `backend/script/errorx/code_gen.py <biz>` |

### 前端(Rush.js + pnpm)

| 操作 | 命令 |
|------|------|
| 安装依赖 | `node common/scripts/install-run-rush.js install` |
| 全量构建 | `node common/scripts/install-run-rush.js rebuild --verbose` |
| 开发服务器 | `cd frontend/apps/cozeloop && npm run dev` |
| Lint | `cd frontend/apps/cozeloop && npm run lint` |
| 测试 | `cd frontend/apps/cozeloop && npm run test` |
| TypeScript 检查 | `cd frontend/apps/cozeloop && npm run build:ts` |

### 部署

| 操作 | 命令 |
|------|------|
| 本地 dev 部署 | `make compose-up-dev` |
| 本地 debug 部署(含 Delve) | `make compose-up-debug` |
| 停止 dev | `make compose-down-dev` |
| 停止并清理 volumes | `make compose-down-v-dev` |
| Helm 部署 | `make helm-up` |
| 查看 Pod 状态 | `make helm-pod` |

### PR 标题格式

PR 标题必须符合 `[<type>][<scope>] <description>` 格式,CI 会校验。

- type: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `chore`, `build`, `ci`
- scope: `all`, `idl`, `frontend`, `backend`, `infra`, `workflow`, `prompt`, `evaluation`, `trace`, `model`, `tag`, `dataset`, `foundation`

示例:`[feat][evaluation] add offline metric support`