|
| 1 | +# AGENTS.md |
| 2 | + |
| 3 | +## 项目概述 |
| 4 | + |
| 5 | +opencode-supertask — AI Agent 任务调度系统,作为 OpenCode 插件运行。提供 CLI、Gateway 常驻进程、Web Dashboard。 |
| 6 | + |
| 7 | +## 技术栈 |
| 8 | + |
| 9 | +- Bun runtime + TypeScript (strict) |
| 10 | +- Drizzle ORM + SQLite (bun:sqlite) |
| 11 | +- Hono (Web Dashboard SSR) |
| 12 | +- Commander (CLI) |
| 13 | +- pm2 (Gateway 守护进程) |
| 14 | +- bun:test (测试框架) |
| 15 | + |
| 16 | +## 常用命令 |
| 17 | + |
| 18 | +```bash |
| 19 | +bun test # 运行所有测试 |
| 20 | +bun run build # 构建 (tsup) |
| 21 | +bun run typecheck # TypeScript 类型检查 |
| 22 | +bun run dev # CLI 开发模式 |
| 23 | +bun run gateway # 启动 Gateway |
| 24 | +bun run ui # Web Dashboard |
| 25 | +``` |
| 26 | + |
| 27 | +## 代码规范 |
| 28 | + |
| 29 | +- 禁止 `any` 类型、`@ts-ignore`、`eslint-disable` |
| 30 | +- 禁止注释掉代码,直接删除未使用代码 |
| 31 | +- 路径别名: `@core/*`, `@gateway/*`, `@worker/*`, `@web/*`, `@plugin/*` |
| 32 | +- 所有 DB 查询涉及时间排序必须加 `id` 作为第二排序键(createdAt/startedAt 精度只到秒) |
| 33 | +- SQL 中 `NOT IN` 对 NULL 值不生效,需加 `OR column IS NULL` |
| 34 | + |
| 35 | +## 测试规范 |
| 36 | + |
| 37 | +- 测试文件在 `tests/` 目录 |
| 38 | +- Mock DB 辅助: `tests/helpers/mock-db.ts` (使用内存 SQLite + bun:test mock.module) |
| 39 | +- 每个测试文件独立初始化 DB (`beforeEach → setupTestDb()`) |
| 40 | +- Service 层测试直接调用静态方法,不经过 CLI |
| 41 | +- CLI 集成测试通过 `execSync` 子进程执行 |
| 42 | + |
| 43 | +## 发布流程 |
| 44 | + |
| 45 | +- 修改代码 → 测试通过 → `bun run build` → git commit/push |
| 46 | +- 创建 GitHub Release 自动触发 CI 发布到 npm(需要 NPM_TOKEN secret) |
| 47 | +- **不要手动 npm publish**,通过 `gh release create v<x.y.z>` 触发 |
| 48 | +- 升级版本号在 `package.json` 的 `version` 字段 |
| 49 | + |
| 50 | +## 项目结构 |
| 51 | + |
| 52 | +``` |
| 53 | +src/core/ # 核心业务(Service、DB、纯函数) |
| 54 | + db/schema.ts # Drizzle 表定义 (tasks, task_runs, task_templates) |
| 55 | + db/index.ts # DB 连接(全局 Proxy 单例) |
| 56 | + services/ # TaskService, TaskRunService, TaskTemplateService |
| 57 | + backoff.ts # 指数退避 |
| 58 | + cron-parser.ts # cron 表达式解析 |
| 59 | + duration.ts # 时间解析 (30s/5min/1h/2d/PT30M) |
| 60 | +src/gateway/ # Gateway 主进程 |
| 61 | + scheduler/ # 定时调度器 + 模板克隆 |
| 62 | + watchdog/ # 心跳检测 + 过期清理 |
| 63 | + config.ts # 配置加载 + deepMerge |
| 64 | +src/worker/ # Worker 执行引擎 (spawn opencode run) |
| 65 | +src/cli/ # Commander CLI |
| 66 | +src/web/ # Hono Web Dashboard |
| 67 | +src/daemon/ # pm2 进程管理 |
| 68 | +plugin/ # OpenCode 插件入口 (supertask_*/supertask_schedule 工具) |
| 69 | +``` |
0 commit comments