一个基于 AI Agent 的任务和知识管理系统,支持 Workflow 编排、自动化执行和智能搜索。
Dominode = Domino + Node,像多米诺骨牌一样,节点串联触发,让工作流自动运转。
- 前端: Next.js 15 + React 19 + Ant Design 5 + TypeScript
- 后端: NestJS + TypeScript
- 数据库: PostgreSQL 16 + pgvector (向量搜索)
- 队列: Redis + BullMQ (后台任务处理)
- AI: LangChain + OpenAI API
- 📝 任务管理: 创建、跟踪和管理任务,支持优先级、截止日期和状态流转
- 📚 知识库: 存储笔记、文件、图片和链接,支持 PDF 解析和全文搜索
- 🔍 智能搜索: 基于向量相似度的语义搜索,快速找到相关内容
- 🤖 Workflow 编排: 可视化创建 AI Agent 工作流,支持多节点串联执行
- ⚡ 生产运行: Workflow 支持审批节点,暂停等待人工确认后继续执行
- 📊 看板视图: Kanban 风格的任务管理界面,拖拽式状态更新
# 1. 克隆仓库
git clone <your-repo-url>
cd dominode
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env,填写你的 OPENAI_API_KEY
# 3. 启动所有服务
docker compose up --build
# 4. 访问应用
# Web: http://localhost:3000
# API: http://localhost:3014/v1/healthz前置要求:
- Node.js 18+
- pnpm 9+
- PostgreSQL 16 (需要 pgvector 扩展)
- Redis 7+
# 1. 安装依赖
pnpm install
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env,配置数据库和 Redis 连接
# 3. 初始化数据库
# 确保 PostgreSQL 已启动,然后 API 会自动创建表和扩展
# 4. 启动开发服务器
pnpm dev
# 或者分别启动
pnpm dev:web # 前端: http://localhost:3000
pnpm dev:api # 后端: http://localhost:3014| 变量 | 说明 | 默认值 |
|---|---|---|
OPENAI_API_KEY |
OpenAI API 密钥(可选,不配置会使用本地 fallback) | - |
OPENAI_CHAT_MODEL |
对话模型 | gpt-4o |
OPENAI_EMBEDDING_MODEL |
向量模型 | text-embedding-3-small |
DATABASE_URL |
PostgreSQL 连接字符串 | postgres://postgres:postgres@localhost:5432/dominode |
REDIS_URL |
Redis 连接字符串 | redis://localhost:6379 |
API_PORT |
API 服务端口 | 3014 |
WEB_PORT |
Web 服务端口 | 3000 |
UPLOAD_DIR |
文件上传目录 | ./uploads |
MAX_FILE_MB |
最大文件大小(MB) | 25 |
注意: 如果不配置 OPENAI_API_KEY,系统会使用本地 deterministic embedding 和简单摘要,功能受限但可以跑通基本流程。
.
├── apps/
│ ├── api/ # NestJS 后端服务
│ │ ├── src/
│ │ │ ├── ai/ # AI 服务封装 (LangChain + OpenAI)
│ │ │ ├── db/ # 数据库连接和查询
│ │ │ ├── item/ # 任务和知识库核心业务
│ │ │ ├── search/ # 向量搜索服务
│ │ │ ├── skill/ # Workflow 技能管理
│ │ │ ├── workflow/ # Workflow 编排和执行引擎
│ │ │ ├── ingestion/# 后台队列处理 (PDF 解析、embedding)
│ │ │ └── storage/ # 文件存储服务
│ │ └── Dockerfile
│ └── web/ # Next.js 前端应用
│ ├── app/ # App Router 页面
│ ├── components/ # React 组件
│ ├── lib/ # API 客户端和工具函数
│ └── Dockerfile
├── docker-compose.yml # Docker 编排配置
├── .env.example # 环境变量模板
└── README.md
- ItemModule: 任务和知识库的增删改查,文件上传处理
- WorkflowModule: Workflow 的创建、编辑、测试运行和生产运行
- SkillModule: Workflow 节点技能的管理(Prompt 模板)
- SearchModule: 基于 pgvector 的语义搜索
- IngestionModule: 后台队列处理文件解析和向量化
- AiModule: OpenAI API 调用封装
/- 首页(任务和知识库列表)/kanban- 看板视图(任务管理)/workflows- Workflow 列表/workflows/[id]- Workflow 编辑器/agents/workflows/[id]- Workflow 运行详情
chat_items- 任务和知识库条目attachments- 文件附件chunks- 文本块和向量 embeddingagent_workflows- Workflow 定义agent_workflow_nodes- Workflow 节点agent_skills- 技能模板agent_workflow_test_runs- Workflow 运行记录agent_workflow_test_run_nodes- 运行节点状态agent_workflow_test_run_artifacts- 运行产物
- 修改默认密码: 生产环境必须修改 PostgreSQL 和 Redis 的默认密码
- 配置 CORS: 设置
CORS_ORIGIN为前端域名,不要使用* - HTTPS: 使用反向代理(Nginx/Caddy)配置 HTTPS
- 环境变量: 使用密钥管理服务(AWS Secrets Manager / HashiCorp Vault)存储敏感信息
- 文件上传: 配置
MAX_FILE_MB限制上传大小,定期清理uploads/目录
# 1. 修改 docker-compose.yml 中的密码
# 2. 配置生产环境变量
# 3. 启动服务
docker compose -f docker-compose.yml up -d
# 4. 查看日志
docker compose logs -f apiQ: 启动时报 "NOAUTH Authentication required"
A: Redis 需要密码,在 .env 中配置 REDIS_URL=redis://:password@localhost:6379
Q: Workflow 运行失败,提示 "OPENAI_API_KEY is empty"
A: 配置 .env 中的 OPENAI_API_KEY,或者使用本地 fallback 模式(功能受限)
Q: 端口冲突
A: 修改 .env 中的 POSTGRES_PORT、REDIS_PORT、API_PORT、WEB_PORT
Q: 文件上传失败
A: 检查 UPLOAD_DIR 目录是否有写权限,Docker 环境需要挂载 volume
MIT
欢迎提交 Issue 和 Pull Request!