内容
<div align="center">
# 锻造
**用于可视化构建、测试和部署 AI 代理及工作流的开源、自托管平台。**
在画布上连接代理、工具、知识和逻辑 - 将它们植根于您的数据、连接到您的系统,并部署到电子邮件、API、MCP 服务器或可嵌入的 Web 小部件。不需要框架代码。
[](LICENSE)
[](apps/api/pyproject.toml)
[](apps/web/package.json)
[](apps/api)
[](apps/web)
[](https://github.com/langchain-ai/langchain)
[](#contributing)
</div>
---
锻造直接建立在 **MIT 许可的 LangChain v1 + LangGraph v1** 框架上 - 并且 **永远** 不依赖于 `langgraph-api`(Elastic 2.0)或 LangSmith(商业)。您编排的所有内容都在您自己的基础设施上运行;没有任何内容被发送到第三方编排服务。
- **完全开源(MIT)。** 没有专有核心,没有使用限制,没有供应商锁定。
- **零基础设施本地开发。** 在 SQLite + 嵌入式 Chroma + 进程内调度器上启动 - 不需要 Docker、Postgres 或 Redis 即可启动。
- **生产就绪。** 仅需配置即可切换到 Postgres + pgvector、Redis 和真正的秘密存储 - 硬化防护拒绝使用不安全的默认设置启动。
- **默认可观察。** 每个运行都是一个 span 瀑布,包含令牌、延迟和成本,精确到一美分。
## 目录
- [功能](#功能)
- [架构](#架构)
- [快速入门(本地,零基础设施)](#快速入门(本地,零基础设施))
- [使用 Docker 运行(生产环境)](#使用Docker运行(生产环境))
- [文档](#文档)
- [技术栈](#技术栈)
- [贡献](#贡献)
- [许可证](#许可证)
## 功能
<div align="center">
<video src="https://github.com/user-attachments/assets/798a6872-0a47-455f-81be-4566184e3e9c" controls muted width="85%"></video>
</div>
> **[观看演示](docs/media/Forge_demo.mp4)** - 产品中的 **Forge 助手** 构建并运行一个工作流端到端。 *(如果播放器无法内联加载,请点击链接播放。)*
### 可视化工作流构建器
在 **拖放式画布** (React Flow)上连接整个应用程序:从调色板中拖放节点 - **代理** 和深度代理、模型调用、分类器、工具、转换、检索、人工输入/交接、路由器、循环、并行扇出/加入、子工作流和触发器 - 并用 **类型化、验证** 的边连接它们。每个节点的检查器和实时的 **状态模式** 保持运行类型安全,而缩略图、撤销/重做和复制/粘贴保持大型图表可管理。 **保存** 、 **测试** 或打开 **游乐场** 以观察节点在运行流式传输时发光 - 然后 **发布** 。
<p align="center"><img src="docs/media/Workflow.png" alt="Forge 可视化工作流构建器:一个 React Flow 画布,连接检索、路由器、代理和结束节点,带有节点调色板、状态模式检查器和缩略图" width="90%"></p>
### 可视化代理构建器
从模型、系统、工具、知识、问答和可重新排序的 **中间件栈** 组成一个 **代理** 或 **深度代理** (用于长多步骤任务的规划 + 子代理)- 所有这些都来自友好的表单,没有 JSON。实时的 **模型可见内容** 面板显示确切的编译提示和中间件执行顺序,然后再发布。
<p align="center"><img src="docs/media/Agents.png" alt="Forge 可视化代理构建器,带有模型、指令、工具和 '模型可见内容' 面板" width="90%"></p>
### 工具构建器与响应投影
注册 **REST、GraphQL、Code、SQL、MCP 或内置** 工具,并在实时测试它们对抗真实输入。 **JMESPath 响应投影** 在模型到达之前修剪庞大的有效载荷 - 实时观察原始 → 投影 **令牌表** 缩小以控制成本。每个出站调用都由 **SSRF 防护** 屏蔽,可选重试、速率限制和缓存。 将工具组织成 **工具集** - 可重用的、多对多的组,作为屏幕上的文件夹,以一个点击授予给代理,并发布为 MCP 工具集。
<p align="center"><img src="docs/media/Tools.png" alt="Forge 工具构建器,带有请求配置、实时响应和原始到投影的令牌成本表" width="90%"></p>
工具屏幕按集合分组(可在网格和列表之间切换),具有一键 **导出/导入** 以在项目之间移动工具:
<p align="center"><img src="docs/media/Tools_dashboard.png" alt="Forge 工具屏幕:工具网格分组为可重用的工具集,网格/列表视图和一键导出和导入" width="90%"></p>
### 知识与 RAG
将代理植根于 **您自己的数据** 。添加粘贴的文本、URL、爬取的站点或上传的文件(`.txt/.md/.csv/.json/.html/.pdf`);锻造区块、嵌入(默认为离线支持)并将它们存储为按文件夹组织的向量。策划的 **问答对** 可以避免常见问题,**搜索调试器** 允许您检查检索返回的内容。
<p align="center"><img src="docs/media/Knowledge.png" alt="Forge 知识屏幕,显示文档源、文件夹、区块状态和问答" width="90%"></p>
内置的 **搜索调试器** 绘制每个区块的语义相似性并覆盖查询 - 这样您就可以看到搜索检索哪些区块以及原因:
<p align="center"><img src="docs/media/Knowledge_storage_debugger.png" alt="Forge 知识搜索调试器:一个 PCA 区块地图,按来源着色,带有查询叠加标记检索的区块" width="90%"></p>
### 生成式 UI 组件
让代理渲染 **丰富、交互式的 UI** - 表格、卡片、表单 - 而不是纯文本。一次性使用 HTML/CSS 组件编写,并带有实时预览;模型发出一个小有效载荷,而标记在 **沙盒 iframe** 中渲染,并且永远不会使令牌流膨胀。按钮可以直接向代理发送结构化操作。
<p align="center"><img src="docs/media/Components.png" alt="Forge 组件构建器,带有 HTML/CSS 编辑器和天气卡的实时沙盒预览" width="90%"></p>
### 可嵌入的 Web 小部件
通过一行脚本将您的助手放到 **任何网站** 上 - 一个浮动聊天气泡,锁定到您允许的源。最终用户只能看到对话;操作详细信息(步骤、令牌、成本、节点名称)在仪表板中保持私有。
<p align="center"><img src="docs/media/Embeddings.png" alt="Forge 嵌入屏幕,带有小部件切换、允许的源和复制粘贴启动器代码片段" width="90%"></p>
### 部署到任何地方 - 一个运行 API、MCP 和通道
通过多个界面发送相同的工作流,而无需重写它:通过 **单个运行 API** (`POST /run` 处理新回合、流式传输和人工干预暂停)调用它,作为 **MCP 服务器** 暴露它,部署到 **电子邮件** ,或插入 **Web 小部件** 。每个请求的调用者上下文(`X-Forge-Context`)允许工具代表您的最终用户操作 - 机密信息永远不会出现在请求正文中。
<p align="center"><img src="docs/media/Integrations.png" alt="Forge Connect 屏幕,显示运行 API:Forge API 基本 URL、POST /run 端点和复制粘贴 curl 示例" width="90%"></p>
### 可观察性和跟踪
每个运行都被捕获为 **跨度瀑布** - 模型调用、工具、链、延迟、令牌和 **成本** - 这样您就可以准确看到发生了什么以及花费了多少。将其与 **评估** 配对,以在发布前捕获回归,并将跟踪导出到任何 **OpenTelemetry** 收集器(例如 Langfuse)。
<p align="center"><img src="docs/media/Traces.png" alt="Forge 跟踪屏幕,显示运行的跨度瀑布,每个步骤的延迟、令牌和成本" width="90%"></p>
### 防护栏、预算和治理
像生产环境一样运行。项目级 **防护栏和出口** 策略(PII 删减、阻止术语和网络允许/拒绝列表)默认应用于每个代理; **预算和配额** 限制支出和令牌; **版本控制** 快照每次更改;所有这些都位于每个项目 **角色/ RBAC** 和审计日志后面 - 从一个设置界面。
<p align="center"><img src="docs/media/Settings.png" alt="Forge 项目设置,带有侧边栏:常规、成员和角色、API 密钥、模型定价、预算和配额、防护栏和出口、版本控制等" width="90%"></p>
### 还有更多
- **通道** - 将工作流部署到 **电子邮件** 。
- **触发器** - Webhooks、调度(间隔/ cron)、入站电子邮件和轮询“应用程序事件”。
- **人工干预** - 批准/拒绝暂停和实时 **交接** 到代理收件箱,并通过同一通道将回复发送回。
- **身份提供者** - Bearer、API 密钥、Basic、OAuth2(客户端凭据 **和** 3 脚用户登录,自动刷新)和 CSRF/会话 - 由加密、仅引用机密(`secret://…`)支持。
- **MCP,双向** - 将您的工具作为 **MCP 服务器** 通过原生 Streamable-HTTP/SSE 暴露(Claude Desktop、Cursor 和 VS Code 直接连接 - 无需桥接),通过项目密钥、每用户 **个人访问令牌** 或可选 **OAuth 2.1** 认证,发布工具集、知识、问答或整个工作流;并从外部 MCP 服务器使用工具。
- **防护栏和出口策略** - 一个项目级 I/O 策略(PII 删减、阻止术语和网络允许/拒绝列表)在默认情况下对每个代理强制执行;项目只能 *收紧* 它,永远不会放松它。
- **导入和导出** - 将工具、工作流、代理和组件作为可移植的 JSON 包在项目之间移动(机密 *值* 永远不会离开)。
- **评估** - 数据集通过 `contains` / `exact` / `regex` / LLM-`judge` 评估,获取每个工作流的通过率。
- **长期记忆** 、响应缓存、带有回退的重试和每租户 **预算** 。
- **多租户项目和角色** (所有者/管理员/编辑/查看器/连接器)带有 **每项目 RBAC** 、作用域可撤销 API 密钥、实体 **版本历史** 和 **审计日志** 。
- **提供者无关的模型** - OpenAI、Anthropic、Google 或任何 LangChain 提供者,加上一个离线 `fake:` 模型,以便您可以构建管道而无需花费一分钱。
> 查看完整的 **[用户手册](docs/MANUAL.md)** 以获取端到端游览和工作示例。
## 架构
一个使用共享模式契约的 pnpm + Python 多模块仓库,以保持后端和前端同步:
```
forge/
├── apps/
│ ├── api/ FastAPI 后端 - 引擎(编译器、注册表、中间件)、工具、
│ │ 认证、知识、跟踪、MCP 服务器、构建助手。Dockerfile +
│ │ Alembic 迁移位于此处。 [Python]
│ └── web/ Next.js 控制台 - 画布、配置面板、游乐场、跟踪。Dockerfile
│ 位于此处。 [TS/React]
├── packages/
│ └── schemas/ 共享 JSON 模式 - 后端验证器/编译器和前端 <SchemaForm> 的单一真相来源。
├── docs/ 用户手册、路线图和媒体。
├── infra/ 生产数据库交换(Postgres 行级安全策略)。
└── docker-compose.yml 生产环境栈(Postgres · Redis · api · worker · web)。
```
**共享模式** 是三个消费者背后的契约:后端 **验证器** (在保存时拒绝不良配置)、**编译器** (`compile_workflow`、`build_middleware`) 和前端 **`<SchemaForm>`** (从相同的文件生成表单)。
## 快速入门(本地,零基础设施)
### 要求
- **Python** 3.11–3.13 - 后端引擎
- **Node** 22 LTS 和 **pnpm** 9+ - Web 控制台
- 除此之外不需要任何东西 - 本地栈在 SQLite + 嵌入式 Chroma + 进程内调度器上运行,因此 **不需要 Docker、Postgres 或 Redis** 即可启动。
### 1. 配置环境
```bash
cp .env.example .env # macOS/Linux
copy .env.example .env # Windows
```
打开 `.env` 并填写您需要的内容(例如 LLM 提供者密钥)。启动时,所有内容都是可选的;调用模型的代理需要提供者密钥。 **永远不要提交您的 `.env`** - 它已经被 git 忽略。
### 2. 后端(FastAPI 引擎)
```bash
cd apps/api
python -m venv .venv && source .venv/bin/activate # .venv\Scripts\activate on Windows
pip install -e ".[dev,all]" # 引擎 + 测试 + 向量/提供者/知识/MCP
pytest # 可选:验证引擎(离线)
uvicorn forge.main:app --reload --port 8000 # http://localhost:8000/docs
```
### 3. 前端(Next.js 控制台)
在第二个终端中,从存储库根目录:
```bash
pnpm install
pnpm --filter web dev # http://localhost:3000
```
打开 **http://localhost:3000** 以访问控制台,并打开 **http://localhost:8000/docs** 以访问 API。在首次运行 时,使用 `you@forge.local` / `forge-admin` 登录,或创建一个新工作区。
## 使用 Docker 运行(生产环境)
附带的 [`docker-compose.yml`](docker-compose.yml) 启动了一个生产环境栈 - **Postgres** (应用数据库 + 持久检查点)、**Redis** (共享速率限制/幂等性 + 工作队列)、**API** 、一个 **worker** 和 **Web** 控制台:
```bash
# 首先设置真实的机密(FORGE_JWT_SECRET、FORGE_BOOTSTRAP_ADMIN_PASSWORD、提供者密钥)
docker compose up --build
```
使用 `FORGE_ENVIRONMENT=production` ,Forge 启用了一个硬化防护,并 **拒绝** 使用默认机密、SQLite 或非持久检查点启动。参见 [`apps/api/README.md`](apps/api/README.md) 和 **[手册 §13 - 进入生产环境](docs/MANUAL.md)** 以获取完整的、注释过的配置。
## 文档
| 文档 | 内容 |
|---|---|
| **[用户手册](docs/MANUAL.md)** | 完整的特性游览、节点目录和端到端用例(不需要开发人员知识)。 |
| **[后端 README](apps/api/README.md)** | API 布局、本地与生产交换和依赖项说明。 |
| **[技术栈和架构](TECH_STACK.md)** | 每个依赖项及其原因,加上请求/运行序列图。 |
| **[路线图和状态](docs/ROADMAP.md)** | 已发布的内容、正在进行的内容和计划中的内容(连接器、更多通道等)。 |
| **[变更日志](CHANGELOG.md)** | 值得注意的变更,遵循 Keep a Changelog + SemVer。 |
| **[贡献](CONTRIBUTING.md)** | 本地设置、CI 运行的检查和提交/拉取请求约定。 |
## 技术栈
| 层 | 技术 |
|---|---|
| **引擎** | LangChain v1 · LangGraph v1 · 深度代理 - 仅限 MIT 框架 |
| **后端** | Python · FastAPI · SQLAlchemy 2(异步)· Pydantic v2 |
| **前端** | Next.js 14(应用路由器)· React 18 · TypeScript · React Flow |
| **数据(本地)** | SQLite · 嵌入式 Chroma · 进程内缓存/调度器 |
| **数据(生产)** | Postgres 16 + pgvector · Redis 7 · Fernet/Vault 机密 |
| **可观察性** | 内置跟踪器 + 成本核算 · OpenTelemetry / Langfuse 导出 |
## 贡献
欢迎贡献。Forge 是 MIT 许可的,旨在扩展。
1. 复刻仓库并创建功能分支。
2. 后端更改:从 `apps/api` 运行 `pytest` 和 `ruff check forge migrations` 。
3. 保持 **共享模式** (`packages/schemas`)权威 - 验证器、编译器和前端表单都从它们读取。
4. 打开一个拉取请求,描述更改和原因。
发现了错误或有想法?请 [打开一个问题](https://github.com/nihalashetty/Forge/issues)。
## 许可证
Forge 在 **[MIT 许可证](LICENSE)** 下发布 - 免费使用、修改和分发,包括商业用途。它仅基于 MIT 许可的 LangChain/LangGraph 生态系统,没有 Elastic-2.0 或商业许可依赖。
<div align="center">
<sub>在开源 LangChain 和 LangGraph 生态系统上构建。</sub>
</div>
连接信息
猜你喜欢
暂无推荐服务器