多模型 AI 工作台,MIT 开源。类 ChatGPT/Claude 的 Web 界面,集成 5 种工作模式、12 个工具、16 个 API 端点。
git clone https://github.com/yourname/hook-workflow-agent.git
cd hook-workflow-agent
# 方式一:Docker
docker compose up -d
# 方式二:手动
cd backend && pip install -r requirements.txt && uvicorn main:app --port 8001 --reload &
cd frontend && npm install && npm run dev打开 http://localhost:5173 ,首次使用点击模型下拉旁的 + 添加 API Key。
| 模式 | 说明 |
|---|---|
| 💬 聊天 | 对话 + 12 工具(Read/Write/Edit/Grep/Glob/Bash/HashEdit/FetchURL/GenerateImage/Retain/Recall) |
| 📋 计划 | 需求复述 → 风险评估 → 分步计划 → 确认执行 |
| 🧠 缜密计划 | 5 阶段流水线:头脑风暴 → 方案设计 → 实施规划 → 执行实现 → 验证测试 |
| 📄 文档 | 结构化写作(选题→大纲→文献→正文→格式)+ 一键导出 Markdown |
| 🎨 生图 | fal.ai 图片生成 |
7 个内置提供商 + 自定义:DeepSeek / OpenAI / Anthropic / GLM / Groq / Ollama / 自定义
- DeepSeek V4 系列通过 Anthropic 兼容端点调用
- 模型预设一键选择,自动探测能力(视觉/思考/生图/上下文窗口)
- 思考模式:Auto / Low / Medium / High / XHigh / Max
- 插件市场浏览(anthropics/skills 17 个官方技能)
- 一键安装/卸载
- 已安装技能自动加载到 Agent 提示中
- 会话分支 DAG(创建分支/切换分支/面包屑导航)
- 双击重命名会话
- 侧边栏搜索(标题 + 消息内容全文检索)
- 相对时间显示("3小时前")
- 自动创建会话(无会话时直接输入)
- P0-P3 优先级系统(阻塞/警告/通过)
- 仿 GitHub PR Review 面板
- Agent 写文件后自动触发
- Shift+Tab 切换:编辑前确认 (Ask before edits) / 自动编辑 (Edit automatically)
- Hash-anchored 编辑(比字符串匹配更可靠)
- 文件上传(拖拽支持)+ 工作区文件选择器
- 深色/浅色/跟随系统主题
- 思考框(仿 DeepSeek/Claude)
- 代码块语法高亮 + 一键复制
- 会话导出 Markdown
- 输入区放大编辑模式
- 回到底部按钮
- 键盘快捷键(设置面板内可查看)
- 空状态快捷提问
- API Key Fernet 真加密存储(AES-128-CBC),旧 base64 自动升级
- 错误消息自动过滤 Key 片段(
_sanitize_error) - 文件操作沙箱化(路径遍历防护)
- 命令执行黑名单 + 白名单 + Windows 防护
- SSRF 防护(DNS 重绑定检测 + 内网 IP 拦截)
- XSS 过滤(
urlTransform) - 密码 scrypt 哈希(n=16384)
- 文件上传扩展名白名单 + 50MB 限制
- 内存文件锁防并发损坏
ENCRYPTION_KEY— API Key 加密密钥(不设则用开发 fallback)APP_PASSWORD_HASH— 登录密码哈希FAL_KEY— fal.ai 生图 API KeyGITHUB_TOKEN— 插件市场 GitHub API(可选)- 前端
VITE_API_BASE— 自定义后端地址(默认http://localhost:8001)
| 层 | 技术 |
|---|---|
| 前端 | React 18 + TypeScript + Vite + Zustand + ReactMarkdown |
| 后端 | Python FastAPI + SQLAlchemy + aiosqlite |
| 数据库 | SQLite(可迁移 PostgreSQL) |
| 部署 | Docker Compose(含 Nginx 生产构建) |
| 端点 | 方法 | 说明 |
|---|---|---|
/chat |
POST | 核心对话 |
/sessions/ |
GET/POST | 会话列表/创建 |
/sessions/{id} |
GET/DELETE | 会话详情/删除 |
/sessions/{id}/rename |
PUT | 重命名 |
/sessions/{id}/branches |
GET | 分支列表 |
/sessions/search |
GET | 全文搜索 |
/models/ |
GET/POST | 模型列表/添加 |
/models/{id}/default |
PUT | 设为默认 |
/review/ |
POST | 代码审查 |
/image/generate |
POST | AI 生图 |
/marketplace/ |
GET | 插件市场 |
/marketplace/install/{name} |
POST/DELETE | 安装/卸载 |
/marketplace/installed |
GET | 已安装列表 |
/upload |
POST | 文件上传 |
/workspace-files |
GET | 工作区文件列表 |
/workspace-files/read |
GET | 读取文件 |
/memory/retain |
POST | 保存记忆 |
/memory/recall |
GET | 检索记忆 |
/browser/fetch |
POST | 获取网页 |
/auth/login |
POST | 登录 |
/health |
GET | 健康检查 |
# 后端
cd backend && uv run uvicorn main:app --reload --port 8001
# 前端
cd frontend && npm run dev
# 测试
cd backend && python -m pytest tests/ -vhook-workflow-agent/
├── backend/
│ ├── main.py, config.py, requirements.txt
│ ├── db/database.py
│ ├── models/ (session, user_config)
│ ├── routes/ (chat, sessions, models, review, image, marketplace, browser, memory, auth)
│ ├── services/ (agent_engine, llm_client, capability_detector, tool_registry, code_reviewer, token_tracker, image_gen, browser, memory, marketplace, auth)
│ ├── tools/ (12 tools)
│ └── tests/ (61 tests)
├── frontend/
│ └── src/
│ ├── components/ (chat/layout/model/session/settings/editor/hud)
│ ├── hooks/ (useTheme, useFileSystem)
│ ├── store/ (chatStore, sessionStore, modelStore)
│ ├── api/ (client, chat, sessions, models)
│ └── config/ (modelPresets)
├── docker-compose.yml, nginx.conf, Dockerfile.prod
└── README.md
60+ commits · 38 backend · 34 frontend · 61 tests · 18 API endpoints · MIT
MIT