Skip to main content
Glama

dum-e

以托尼笨拙的机器人手臂命名。一个个人使用的、单用户的 AI 任务管理器,AI 代理(Claude、Codex、opencode,任何 LLM)通过一个定义好的生命周期来驱动它,而你则是审批关卡。

三个界面,一个共享核心:一个强大的 CLI、一个带实时更新的 REST API,以及一个任何代理都能接入的 MCP 服务器。

核心理念

每当你把工作委派给 AI 代理时,它都会先在这里创建一个任务。代理从队列中取出优先级最高的任务,分析它、处理它、运行 AI 级别的测试,然后交给人工测试。它会在那里等待你批准或拒绝。被拒绝的任务会带着高优先级评论弹回给代理,代理必须处理这些评论;被批准的任务则进入部署流程(PR 和合并),然后完成。这个循环会一直重复,直到你批准为止。与工具和 LLM 无关。

              agent auto-advances                    human gate
   ┌──────┐   ┌─────────────┐   ┌────────────┐   ┌────────────────┐   ┌────────────┐   ┌───────────┐
   │ todo │ → │ in_progress │ → │ ai_testing │ → │ manual_testing │ → │ deployment │ → │ completed │
   └──────┘   └─────────────┘   └────────────┘   └────────────────┘   └────────────┘   └───────────┘
                    ↑                                    │                   │
                    └────────────── reject ──────────────┴───────────────────┘
                      (priority bumped, flagged for the agent to fix first)

每次状态转换都必须附带一条评论,记录在只追加的历史记录中。

Related MCP server: delega-mcp

安装

需要 Node.js 22+ 和 pnpm 9+。

git clone <repo> dum-e && cd dum-e
pnpm install
pnpm build

然后把 dum-e 放到你的 PATH 中。推荐的方式是使用一个小启动器,它固定住构建时所用的原生依赖(better-sqlite3)对应的 Node 版本,这样无论你的 PATH 中第一个 node 是什么版本,CLI 都能正常工作(如果直接符号链接到 dist/index.js,当你的默认 node 与构建时所用的版本不一致时就会出问题):

mkdir -p ~/.local/bin
cat > ~/.local/bin/dum-e <<EOF
#!/bin/sh
exec "$(command -v node)" "$PWD/packages/cli/dist/index.js" "\$@"
EOF
chmod +x ~/.local/bin/dum-e

确保 ~/.local/bin 在你的 PATH 中。或者,如果你运行过 pnpm setup(这样 pnpm 会有一个全局 bin 目录):pnpm --filter @dum-e/cli link --global。

如果你之后针对不同的 Node 版本重新构建(例如在新的 node 环境下运行 pnpm install),请重新生成启动器,让它指向匹配的解释器。

验证:

dum-e --version
dum-e --help

快速开始

dum-e init                                   # create ~/.config/dum-e/{config.yaml,db}
dum-e project add "Web App" -k WEB           # a project
dum-e task add "Fix login" --type bug --priority high
dum-e task next -m "starting"                # claim the highest-priority queued task
dum-e task move <id> ai_testing -m "unit tests green"
dum-e task move <id> manual_testing -m "verified locally"   # now waits for you
dum-e task ls --status manual_testing        # what awaits your review
dum-e serve --open                           # REST API + web UI, opens the browser

界面

  • CLI(dum-e ...):在终端中完成完整的任务和项目生命周期。为任何命令添加 --json 即可获得脚本化输出。参见 docs/CLI.md。

  • REST + Web(dum-e serve):基于 Hono 的 API,支持 Server-Sent Events 实时更新,并提供 React Web 界面(看板视图、表格视图、指标、详情面板)。参见 docs/REST-API.md。

  • MCP(dum-e mcp):基于 stdio 的 Model Context Protocol 服务器,向任何代理暴露任务工具。参见 docs/AGENTS.md。要让代理学会使用 dum-e,把 skills/dum-e/SKILL.md 交给它即可。

这三个界面都直接打开同一个本地 SQLite 数据库(WAL 模式:并发读、串行写),因此它们之间不需要互相依赖运行。

架构

模块化单体,pnpm workspaces。每个界面都是对 @dum-e/core 的一层薄适配。

包

职责

@dum-e/core

领域类型、存储(SQLite + FTS5)、配置、状态机、服务、事件总线

@dum-e/server

Hono REST API + SSE;提供 Web 构建产物

@dum-e/mcp

MCP 服务器(stdio):为任何代理提供任务工具

@dum-e/cli

commander CLI

@dum-e/web

Vite + React:看板视图、表格视图、指标、详情面板

运行时状态存放在 ~/.config/dum-e/(config.yaml、db、attachments/),首次运行时自动创建。可以通过 $DUM_E_HOME 覆盖位置。详见 docs/ARCHITECTURE.md。

配置

~/.config/dum-e/config.yaml 保存代理名册、模型名册、默认值以及服务器主机和端口。查看或定位它:

dum-e config show      # effective config (YAML, or JSON with --json)
dum-e config path      # path to the file

开发

编辑 CLI 后,重新构建:pnpm --filter @dum-e/cli build。全局的 dum-e 符号链接指向构建产物,因此修改会自动生效。

pnpm build        # build every package (tsup for libs, Vite for web)
pnpm test         # Vitest (state machine + services)
pnpm typecheck    # tsc --noEmit across the workspace
pnpm lint         # oxlint

许可证

MIT

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers