自主AI编码代理

DB-Coder是一个全自动AI编码系统,通过智能决策→分析→执行→验证→代码审查→决策→反思的循环持续改进目标项目,适用于软件开发自动化优化场景。

  • by freshman-db
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 freshman-db/DB-Coder

使用说明

DB编码器

自主AI编码代理 --持续扫描代码库,计划改进,自动执行和审查代码更改。

中文文档


概述

DB Coder是一个完全自主的AI编码系统,通过 大脑决定→ [分析M/L/XL]→ 工人执行→ 硬验证→ 代码审查→ 大脑决策→ 反映 循环。它使用只读的“大脑”会话进行决策,使用基于RuntimeAdapter的worker进行执行,并使用自动选择的交叉审阅者进行质量门控。每个阶段都可以通过以下方式独立选择其运行时间和模型 routing 配置。

核心能力

  • 自主巡逻 --全脑决定→ [分析M/L/XL]→ 工人执行→ 硬验证→ 代码审查→ 大脑决策→ 反映循环,通过Web UI启动/停止
  • 多运行时架构 --RuntimeAdapter接口,具有可插拔实现(ClaudeSdkRuntime、CodexSdkRuntime、CodexCliRuntime);每个阶段都可以通过以下方式独立配置 routing
  • 大脑驱动的决策 --大脑输出自由形式 directive 直接发送给工人(无需模板重组) resource_request 对于预算/超时, verification_plan,以及 strategy_note
  • 硬验证 --TypeScript错误计数与基线比较可防止合并降级代码
  • 自然进化 --大脑通过写课来反思(经验);CLAUDE.md由单独的周期性维护 claudeMdMaintenance 阶段,无数字评分
  • Web用户界面 --实时任务监控、日志流、成本跟踪、巡逻控制
  • Git安全 --所有更改均已隔离 db-coder/* 分支,在合并到main之前进行验证

建筑

┌──────────────────────────────────────────────────────────────┐
│                    MainLoop Orchestrator                      │
│  brainDecide → [analyze M/L/XL] → workerExecute → hardVerify │
│    → codeReview → brainReviewDecision → [fix loop] → merge   │
├──────────────────────────────────────────────────────────────┤
│                    RuntimeAdapter Layer                       │
│  ┌─────────────────┐ ┌───────────────┐ ┌──────────────────┐ │
│  │ ClaudeSdkRuntime │ │ CodexSdkRuntime│ │ CodexCliRuntime  │ │
│  │ (Agent SDK)      │ │ (@openai/codex)│ │ (codex exec)    │ │
│  └─────────────────┘ └───────────────┘ └──────────────────┘ │
├──────────────────────────────────────────────────────────────┤
│  Phase Routing (routing config)                              │
│  brain / plan / execute / review / reflect / scan            │
│  Each phase → independent runtime + model selection          │
├──────────────────────────────────────────────────────────────┤
│  CLAUDE.md + claude-mem          TaskStore (PostgreSQL)       │
│  (rules / experience)           (tasks / logs / costs)       │
├──────────────────────────────────────────────────────────────┤
│                HTTP Server (:18801)                           │
│         REST API + Web SPA + SSE Streaming                   │
└──────────────────────────────────────────────────────────────┘

项目结构

src/
├── index.ts                         # CLI entry (commander)
├── core/
│   ├── MainLoop.ts                  # Orchestration loop
│   ├── phases/                      # BrainPhase, WorkerPhase, ReviewPhase, MaintenancePhase
│   ├── PersonaLoader.ts             # Persona loading + worker prompt building
│   ├── CycleEventBus.ts             # Typed event bus for cycle lifecycle
│   ├── ModeManager.ts               # PatrolManager (patrol start/stop)
│   ├── TaskQueue.ts                 # Task queue from DB
│   ├── guards/                      # BudgetGuard, ConcurrencyGuard, EmptyDiffGuard, etc.
│   ├── observers/                   # CycleMetricsCollector, NotificationObserver, etc.
│   └── strategies/                  # DynamicPriority, FailureLearning, TaskQuality
├── runtime/
│   ├── RuntimeAdapter.ts            # Interface + capabilities + RunOptions / RunResult
│   ├── ClaudeSdkRuntime.ts          # Claude Code Agent SDK wrapper
│   ├── CodexSdkRuntime.ts           # @openai/codex-sdk Thread API wrapper
│   ├── CodexCliRuntime.ts           # Codex CLI subprocess wrapper
│   └── runtimeFactory.ts           # Config → runtime instance registry
├── bridges/
│   ├── ClaudeCodeSession.ts         # Claude Code Agent SDK query() wrapper
│   ├── sdkMessageCollector.ts       # SDK stream event collection + error synthesis
│   ├── buildSdkOptions.ts           # SDK options builder
│   ├── hooks.ts                     # Programmatic PreToolUse/PostToolUse hooks
│   ├── pluginDiscovery.ts           # Auto-discover plugins from ~/.claude/plugins/cache
│   ├── ReviewTypes.ts               # ReviewResult / ReviewIssue interfaces
│   └── CodexBridge.ts               # Codex CLI subprocess (used by CodexCliRuntime)
├── memory/
│   ├── TaskStore.ts                 # PostgreSQL: tasks / logs / costs / plans / personas
│   ├── GlobalMemory.ts              # PostgreSQL: global memory (legacy, phasing out)
│   └── ProjectMemory.ts             # claude-mem HTTP client
├── server/
│   ├── Server.ts                    # HTTP server (API + static files + security headers)
│   ├── routes.ts                    # REST API routes
│   └── rateLimit.ts                 # Rate limiting
├── config/
│   ├── Config.ts                    # Config loading (global + project-level)
│   └── types.ts                     # Config types (PhaseRouting, RoutingConfig, etc.)
├── utils/                           # Git, cost tracking, process, logging, validation, etc.
└── web/                             # SPA frontend (HTML/CSS/JS + marked.js)

快速开始

先决条件

安装

# Clone repository
git clone https://github.com/freshman-db/DB-Coder.git
cd DB-Coder

# Install dependencies
npm install

# Start PostgreSQL (Docker)
docker run -d --name dev-postgres \
  -e POSTGRES_USER=db -e POSTGRES_PASSWORD=db -e POSTGRES_DB=db_coder \
  -p 5432:5432 postgres:16

# Enable pg_trgm extension
docker exec -i dev-postgres psql -U db -d db_coder -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"

# Build
npm run build

配置

全局配置: ~/.db-coder/config.json

{
  "routing": {
    "brain":   { "runtime": "claude-sdk", "model": "claude-opus-4-6" },
    "plan":    { "runtime": "claude-sdk", "model": "claude-opus-4-6" },
    "execute": { "runtime": "claude-sdk", "model": "claude-opus-4-6" },
    "review":  { "runtime": "codex-cli",  "model": "gpt-5.3-codex" },
    "reflect": { "runtime": "claude-sdk", "model": "claude-opus-4-6" },
    "scan":    { "runtime": "claude-sdk", "model": "claude-opus-4-6" }
  },
  "claude": { "maxTaskBudget": 10.0, "maxTurns": 200 },
  "codex": { "tokenPricing": { "inputPerMillion": 1.75, "cachedInputPerMillion": 0.175, "outputPerMillion": 14 } },
  "budget": { "maxPerTask": 20.0, "maxPerDay": 300.0 },
  "memory": {
    "pgConnectionString": "postgresql://db:db@localhost:5432/db_coder"
  },
  "server": { "port": 18801, "host": "127.0.0.1" }
}

运行时别名: "claude" 正常化为 "claude-sdk", "codex" 到 "codex-sdk" (使用CLI回退)。

项目级覆盖: <project>/.db-coder.json

开始

# Run as service (relative paths are resolved automatically)
node dist/index.js serve --project .

# Or with absolute path
db-coder serve --project /path/to/your/project

# Production: use the supervisor script for auto-restart
nohup bash supervisor.sh > logs/nohup.out 2>&1 &

打开 http://127.0.0.1:18801 在浏览器中。API令牌显示在启动日志中,或在中找到 ~/.db-coder/config.json.

命令行命令

db-coder serve -p <path>    # Start service
db-coder status              # Show status
db-coder add "description"   # Add a task
db-coder queue               # Show task queue
db-coder scan [--deep]       # Trigger scan
db-coder logs -f             # Follow logs
db-coder cost                # Show costs
db-coder pause / resume      # Pause / Resume

Web用户界面

  • 仪表盘 --系统状态、巡逻控制、快速行动
  • 巡逻 --通过顶栏按钮启动/停止;实时状态显示(扫描、执行、查看等)
  • 任务清单 --使用分页查看、筛选和管理任务
  • 日志 --带级别过滤的实时SSE日志流
  • 设置 --项目信息、系统状态、成本跟踪

API

服务器运行在 http://127.0.0.1:18801。所有API都需要承载令牌身份验证。

方法 端点 描述
得到 /api/status 服务状态
得到 /api/status/stream SSE实时状态
得到 /api/metrics 运营指标
获取/发布 /api/tasks 列出/创建任务
得到 /api/tasks/:id 任务详细信息
得到 /api/tasks/pending-review 待审核任务
职位 /api/tasks/:id/approve 批准任务
职位 /api/tasks/:id/skip 跳过任务
职位 /api/control/pause 暂停循环
职位 /api/control/resume 恢复循环
职位 /api/control/scan 触发扫描
职位 /api/patrol/start 开始巡逻
职位 /api/patrol/stop 停止巡逻
得到 /api/logs?follow=true SSE日志流
得到 /api/cost 成本明细
得到 /api/cycle/metrics 循环性能指标
得到 /api/cycle/entries 循环历史记录条目
得到 /api/personas 列出人物角色
PUT /api/personas/:name 更新角色内容
得到 /api/plans 列出计划草案
职位 /api/plans/:id/approve 批准计划
职位 /api/plans/:id/reject 拒绝计划

运作原理

脑驱动+运行时适配器模式

编排器(MainLoop)驱动大脑会话、基于RuntimeAdapter的工作器和跨运行时审阅器。每个阶段通过以下方式选择其运行时间和模型 routing 配置。

  1. 大脑决策 (只读)——Brain使用自己的工具自由探索代码库,输出结构化的 directive (工人的自由形式指令), resource_request (预算/超时), verification_plan,以及 strategy_note.没有模板重组——指令按原样传递给工人。

  2. 分析阶段 (仅限M/L/XL任务)--Worker执行只读代码分析→ 跨运行时审阅者检查提案→ 大脑综合并批准/拒绝该计划。S任务跳过此阶段。

  3. 工人执行 (通过RuntimeAdapter)--使用中配置的运行时在隔离的Git分支上执行任务 routing.execute工人直接接受大脑的指令,辅以项目规则和验证计划。

  4. 硬验证 --跑步 tsc 并将误差计数与基线进行比较。新错误会触发修复周期。

  5. 代码审查 (跨运行时)--Review使用以下运行时 routing.review,这应该不同于 routing.execute 以避免自我验证偏见。

  6. 大脑决策 --Brain分析审查结果并做出五方面的决定: 修复 (送工人修理), 忽略 (尽管有问题,但合并), 块 (停止), 重写 (新方法),或 分裂 (合并部分任务+创建后续任务)。

  7. 脑反射 --大脑输出多段 reflection, strategy_update, retrieval_lesson,可选 orchestrator_feedback.将经验教训保存给克劳德纪念馆以备将来参考(确实如此 不 编辑CLAUDE.md;由单独的周期性事件处理 claudeMdMaintenance 阶段)。

自然进化

该系统不是通过数字评分(在v1中被证明是无效的),而是通过以下方式进化:

  • CLAUDE.md维护:周期性 claudeMdMaintenance 阶段审核并根据实际代码更新CLAUDE.md,保持规则准确简洁
  • 克劳德·梅姆写道:大脑反思将课程保存为语义体验,在未来的决策中通过相关性检索
  • Git历史记录: git log CLAUDE.md 显示了完整的进化时间线

技术栈

组件 技术
语言 TypeScript/Node.js(ESM)
运行时层 运行时适配器接口(ClaudeSdkRuntime、CodexSdkRuntime、CodexCliRuntime)
Brain Claude代码代理SDK(只读,结构化输出)
工人 可通过以下方式按阶段配置 routing.execute
审阅者 可通过以下方式按阶段配置 routing.review (默认情况下为跨运行时)
数据库 PostgreSQL+ pg_trgm 通过 postgres (门票)
经验 CLAUDE.md+CLAUDE-mem HTTP API
Web UI 普通HTML/CSS/JS SPA+marked.JS
HTTP服务器 Node.js http 模块

许可证

麻省理工学院