Skip to content

Latest commit

 

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenUniflo

一个面向真实用户需求的开箱即用智能应用平台——通过多平台公开数据、Skill、Agent 和二级 Skill / Run 执行链路,自动为用户生成可用的结果或方案,并具备可扩展、可追溯、可治理、可保护的能力。

重构说明

当前仓库已完成从旧 backend/app 结构到新分层结构的重构。

正式实现以 appsmodulessharedconfigtests 为主;integrationslegacy 仅保留外围集成和冻结兼容内容。

团队迁移和协作请优先阅读: 模块分工仓库约定迁移映射

如何启动该项目并验证功能: 用例与验证说明


项目定位

OpenUniflo 不是单纯的聊天产品,也不是固定功能的工具集合。它让用户直接输入需求,由系统自动完成多平台公开数据的获取、处理、组合与输出,最终直接给出可用的结果或方案。

它要解决的核心问题是:用户在真实场景下往往需要跨多个平台反复搜索、比较、整理和判断,过程繁琐、效率低,而现有通用聊天产品很难直接产出结构化、可执行的结果。OpenUniflo 把这一过程产品化,让用户得到一个可以直接使用的应用形态。


核心能力

能力 说明
开箱即用 用户无需自行配置工具、接口或数据源,直接使用应用
跨平台自动任务 将多平台公开数据接入后,自动整理、比较、筛选、组合,输出用户真正需要的结果
可扩展 沉淀可复用的 Skill、Agent 和二级 Skill,并支持自动创建新的采集 Skill
可追溯 记录完整调用链路与执行轨迹,每个结果都可以看到它是如何生成的
可治理 身份管理、调用权限控制、高风险操作识别、敏感数据保护、异常链路回溯

典型应用场景

  • 购物推荐与多平台商品比价
  • 旅行规划与酒店/景点信息整合
  • 团购、本地生活和消费决策辅助
  • 多平台信息筛选与方案自动生成

模块架构

系统由五个模块组成,整体数据流如下:

用户输入
  │
  ▼
系统 / Agent 编排模块  ──── 组织执行流程
  │
  ├──► 数据接入模块        ──── 从外部平台拿数据
  │
  ├──► 业务逻辑模块        ──── 把数据变成结果
  │
  ├──► 调用轨迹与审计模块  ──── 记录系统做了什么
  │
  └──► 前端 / 客户端模块   ──── 展示结果与过程给用户

1. 数据接入模块

目标:把外部平台的公开数据稳定接入系统。

  • 第一阶段接入平台:淘宝 / 京东、携程、小红书(后续扩展至美团、抖音等)
  • 接入数据类型:商品信息、商家/店铺信息、价格、评分销量、酒店景点列表、公开内容
  • 实现方式:SaaS 抓取服务 + 独立 connector / 采集 Skill,含抓取、缓存、重试、限流与错误处理
  • 后续支持自动创建新的采集 Skill(1 级 Skill),降低新数据源接入成本

2. 业务逻辑模块

目标:把接入的数据处理成用户可直接使用的结果。

  • 统一数据模型定义
  • 数据清洗、去重、标准化
  • 筛选、排序、聚合规则
  • 结果生成与推荐理由输出
  • 实现形式:结果生成智能体 + 反思优化智能体

3. 系统 / Agent 编排模块

目标:把不同的 Skill 和 Agent 组织成完整的执行流程。

  • 管理 Skill、Agent 和 MCP
  • 编排 2 级 Skill(旧接口中仍可能看到 workflow 兼容命名)
  • 控制调用顺序和中间状态流转
  • 保证整条任务链路跑通
  • 实现形式:编排优化智能体 + 自动编排智能体

4. 调用轨迹与审计模块

目标:记录整个系统执行过程,保证可追溯。

  • 为 Skill、Agent、Workflow 分配唯一标识
  • 记录完整调用关系与输入输出摘要
  • 保存任务执行链路,支持查询、展示和回放

5. 前端 / 客户端模块

目标:把系统做成用户可以直接使用和演示的产品。

  • 本地一键安装客户端,零配置体验
  • 核心页面:首页、输入页、结果页、方案页、轨迹页
  • 对接后端接口,负责整体 Demo 展示效果

阶段性路线

第一阶段(当前)——本地 Demo

快速验证完整链路,重点在于功能闭环与展示效果,不追求完整商业产品。

  • 多平台公开数据接入
  • 结果自动生成
  • 二级 Skill / Run 执行
  • 调用轨迹展示
  • 基础身份标识与安全控制
  • 本地一键安装,用户无需自行配置

第二阶段——云上版本

  • 云端运行能力与长期后台任务
  • 更多场景和 Skill 覆盖
  • 更稳定的数据接入方式
  • 更完整的安全、轨迹与审计能力

快速开始

环境依赖

  • Python 3.12+
  • Node.js 18+
  • 推荐安装 uv
  • 建议使用仓库根目录的 .venv/

1. 克隆仓库

git clone <your-remote-url>
cd Uniflo

2. 初始化配置文件

cp config/config.example.toml config/config.toml
cp .env.example .env
mkdir -p workspace logs

3. 配置必要环境变量

至少需要配置一套可用的 LLM;如果你要验证远程 SkillsMP 搜索与安装,还需要配置 SkillsMP key。

.env 中建议至少包含:

# 必填:主聊天 / agent / API 使用的 LLM
DEEPSEEK_API_KEY=your-deepseek-api-key

# 可选:当你要从 SkillsMP 远程搜索并安装 skill 时配置
SKILLSMP_API_KEY=your-skillsmp-api-key
# SKILLSMP_API_BASE=https://skillsmp.com
# SKILLSMP_AUTH_SCHEME=Bearer

如果你不用 DeepSeek,也可以直接改 config/config.toml[llm] 配置,切换到:

  • Azure OpenAI
  • Ollama
  • Jiekou.AI
  • Amazon Bedrock

当前默认示例配置读取:

  • DEEPSEEK_API_KEY

4. 安装 Python 依赖

推荐:

uv venv && source .venv/bin/activate
uv pip install -r requirements.txt

或使用标准 venv + pip

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

5. 启动后端 API

source .venv/bin/activate
.venv/bin/python apps/api/main.py --host 127.0.0.1 --port 8001

启动后可先做健康检查:

curl -s http://127.0.0.1:8001/health
curl -s http://127.0.0.1:8001/api/health
curl -s http://127.0.0.1:8001/api/status

说明:

  • 当前主线运行模型已经开始收敛到 Run
  • /workflow/* 接口仍保留兼容语义
  • 聊天请求会返回 run_id,后续可通过 run 状态接口继续查询

6. 启动前端

真实前端源码位于 modules/frontend_client/web,根目录 frontend/ 只是兼容壳;日常开发和验证优先使用正式前端入口。

你可以直接启动正式前端:

cd modules/frontend_client/web
npm install
VITE_API_URL=http://127.0.0.1:8001 npm run dev -- --host 127.0.0.1 --port 5173

如果你仍想使用兼容入口,也可以:

cd frontend
npm install
npm run dev

7. 可选:启动独立 SkillsMP MCP 服务

只有在你明确需要独立集成服务时再启动;常规 API / workflow 验证不依赖这一步。

cd integrations/skillsmp-mcp
npm install
node server.js

8. 最小验证

后端启动后,建议至少执行:

curl -s -X POST http://127.0.0.1:8001/api/chat \
  -H 'Content-Type: application/json' \
  -d '{"prompt":"你现在处于自检模式。禁止调用任何工具。请只返回两个大写字母:OK","stream":false}'

你会在响应中看到 session_idrun_id。拿到 run_id 后,继续验证 run 状态接口:

curl -s http://127.0.0.1:8001/run/<run_id>/status

如果你要验证兼容提交入口,也可以执行:

curl -s -X POST http://127.0.0.1:8001/workflow/submit \
  -H 'Content-Type: application/json' \
  -d '{"request":"列出一个最小的系统自检步骤"}'

该接口会同时返回旧 task_id 和新的 run_id

9. 可选:运行最小回归

如果你刚改过 Run 内核、聊天入口或前端状态流,建议至少跑一组最小测试:

source .venv/bin/activate
pytest tests/test_run_kernel_phase_1.py \
  tests/test_run_kernel_phase_2.py \
  tests/test_run_kernel_phase_3.py \
  tests/test_run_kernel_phase_4.py -q

如果你要验证 workflow 与 skill 搜索链路,请继续阅读:

配置说明

  • LLM 主配置:config/config.toml
  • 环境变量示例:.env.example
  • MCP 示例配置:config/mcp.example.json
  • 当前仓库默认不会再内置本地 mock skill;本地优先使用稳定 skill,本地没有时再尝试远程搜索和安装。

开发约定

  • Python 统一使用仓库根目录的 .venv/
  • 运行入口统一使用 apps/
  • 业务实现统一放在 modules/
  • 公共类型、配置和工具统一放在 shared/
  • 测试统一放在 tests/

以下目录有明确边界:

  • frontend/ 仅是前端兼容壳;真实源码在 modules/frontend_client/web
  • integrations/ 仅放外部协议和独立集成服务;不要在这里写 5 个核心模块业务逻辑
  • legacy/ 冻结兼容代码;不再新增功能
  • workspace/logs/ 运行产物目录,不存放源码

后续开发默认不再进入旧 backend 结构,也不在兼容壳目录中新增真实实现。


目录结构

OpenUniflo/
├── apps/             # Python 运行入口(API / CLI / MCP)
├── config/           # 全局配置文件
├── docs/             # 项目文档、静态资源、示例
├── frontend/         # Web 前端兼容壳
├── integrations/     # 外部协议与独立集成服务
├── legacy/           # 冻结保留的一轮兼容代码
├── logs/             # 运行日志
├── modules/          # 5 个业务模块
├── shared/           # 公共 schema / config / utils
├── tests/            # 统一测试目录
├── workspace/        # 运行产物
└── README.md

贡献与协作

模块独立开发,联调分四轮进行:

  1. 数据接入 ↔ 业务逻辑:验证接入数据可被正确处理
  2. 业务逻辑 ↔ Agent 编排:验证结果生成可纳入 Workflow
  3. Agent 编排 ↔ 轨迹审计:验证执行过程可被完整记录
  4. Agent 编排 ↔ 前端:验证前端可发起任务、获取结果并展示过程

License

本项目采用 LICENSE 中指定的开源协议。

可选增强能力 (Optional Enhancements)

  • MediaCrawler (小红书数据接入): 提供跨平台的数据采集增强能力。未配置 `uv` 或 `third_party/MediaCrawler` 环境时,主服务仍正常运行,仅在调用此工具时返回失败提示。
  • Lark-CLI (飞书协作接入): 提供飞书文档、日历等能力的打通。未配置或未授权 `lark-cli` 时,不阻断主服务。

About

Resources

Code of conduct

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages