MCPcopy Index your code
hub / github.com/ModelEngine-Group/fit-framework

github.com/ModelEngine-Group/fit-framework @v3.6.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.6.4 ↗ · + Follow
25,242 symbols 96,846 edges 3,154 files 10,437 documented · 41%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

FIT Logo

FIT Framework v3.6.4

Java 企业级 AI 开发框架,提供多语言函数引擎(FIT)、流式编排引擎(WaterFlow)及 Java 生态的 LangChain 替代方案(FEL)。原生 / Spring 双模运行,支持插件热插拔与智能聚散部署,无缝统一大模型与业务系统。

License JDK JDK


FIT: 重新定义 AI 工程化的三维坐标系

核心架构

  1. FIT Core:语言无界,算力随需

多语言函数计算底座(Java/Python/C++)支持插件化热插拔,独创智能聚散部署——代码无需修改,单体应用与分布式服务一键切换,运行时自动路由本地调用或 RPC,让基础设施成为「隐形的伙伴」。

  1. WaterFlow Engine:流式智能,万物可编排

打破 BPM 与响应式编程的次元壁,图形化编排与声明式 API 双模驱动。业务逻辑可像乐高组合般动态拼接,从毫秒级微流程到跨系统长事务,皆以统一范式驾驭。

  1. FEL (FIT Expression for LLM):Java 生态的 LangChain 革命

当 Python 阵营的 LangChain 重塑 AI 应用开发时,FEL 为 Java 开发者带来了更符合工程化实践的答案——基于标准化原语封装大模型、知识库与工具链,让 AI 能力真正融入 Java 技术栈的血脉。

  • retrieve 样例
AiProcessFlow<Tip, Content> retrieveFlow = AiFlows.<Tip>create()
        .runnableParallel(history(), passThrough())
        .conditions()
        .match(tip -> !tip.freeze().get(DEFAULT_HISTORY_KEY).text().isEmpty(),
                node -> node.prompt(Prompts.human(REWRITE_PROMPT))
                        .generate(chatFlowModel)
                        .map(ChatMessage::text))
        .others(node -> node.map(tip -> tip.freeze().get("query").text()))
        .retrieve(new DefaultVectorRetriever(vectorStore, SearchOption.custom().topK(1).build()))
        .synthesize(docs -> Content.from(docs.stream().map(Document::text).collect(Collectors.joining("\n\n"))))
        .close();
  • agent 样例
AiProcessFlow<String, ChatMessage> agentFlow = AiFlows.<String>create()
        .map(query -> Tip.fromArray(query))
        .prompt(Prompts.human("{{0}}"))
        .delegate(agent)
        .close();

设计哲学

  • 约定优于配置的工程实践

FIT 通过智能约定大幅减少胶水代码:

- 部署无感化:聚散模式自动识别,开发者只需声明业务关系,无需手工标注远程/本地调用
- 协议透明化:HTTP/gRPC/共享内存等通信方式由框架按上下文智能选择 
- 资源自管理:插件依赖自动注入,服务发现与熔断机制内置实现

这种「智能契约」机制,使得80%的通用场景实现零配置,同时保留20%复杂场景的深度定制能力。

为什么工程师选择 FIT ?

  • 填补空白:首个面向 Java 生态的 AI 全栈框架,让 Java 开发者无需切换技术栈即可构建现代 AI 应用
  • 拒绝妥协:既保有 Python 生态的敏捷性,又继承 Java 体系的高性能与工程化优势
  • 面向未来:从单机原型到云原生集群,架构弹性随业务共同进化

环境配置

开发环境配置

  • 开发环境:IntelliJ IDEA
  • Java 17
  • 代码格式化文件:CodeFormatterFromIdea.xml
  • Maven 配置:推荐版本 Maven 3.8.8+

构建命令

# 仅构建 Java 框架
mvn clean install

# 全局构建(Java 框架 + Sandbox CLI),默认跳过测试
./build.sh

# 全局构建(含测试)
./build.sh --with-test

build.shmvn clean install 基础上,额外编译 Sandbox CLI 并将产物输出到 build/bin/

输出目录

build/
├── bin/
│   ├── fit          # FIT 启动命令
│   └── sandbox      # AI 编程沙箱命令(build.sh 构建时生成)
├── fit-discrete-launcher-*.jar
├── lib/
├── plugins/
└── ...

启动命令

./build/bin/fit start

以上编译构建出的 fitsandbox 命令可以通过系统操作(别名或添加系统路径)来简化输入。

配置系统环境变量及创建插件目录

  • 首先用 maven 编译打包 ./framework/fit/java,将 build 目录内容存储在本地 fitframework 目录下,此目录为 FIT 核心框架目录地址。
  • 配置 FIT 框架目录的系统环境变量,变量值为 FIT 核心框架目录地址,使 fit 命令可执行。例如 FIT 核心框架位置在 /demo/fitframework,则变量值配置为 /demo/fitframework
  • 新建任意目录作为插件目录,在该目录下存放插件,可在插件目录下使用命令 fit start 启动服务。

以上环境配置步骤请根据使用的操作系统使用相应的路径分隔符和环境变量配置操作。

fit 命令无法在包含 FIT 框架的目录中执行,只能够在一个新建的动态插件目录下执行。

快速开始

  • FIT 函数框架
  • 请参考 FIT 快速开始,该指南将简单介绍 FIT 的核心设计概念,并指导您构建基础的应用。
  • WaterFlow 流调度引擎
  • 请参考 WaterFlow 快速开始,该指南将简单介绍 WaterFlow 声明式语法,并构建流程输出 hello world!
  • FEL 标准原语
  • 请参考 FEL 快速开始,该指南将简要介绍如何使用 FEL 构建端到端的大模型应用程序。

开发工具

AI 编程沙箱(macOS)

基于 Colima + Docker + Git Worktree 的隔离开发环境,将 AI 编程工具(Claude Code、Codex 等)运行在容器内,支持多容器并发、每个容器工作在独立分支上互不干扰。

sandbox create feat-xxx       # 创建沙箱
sandbox exec feat-xxx         # 进入沙箱
sandbox ls                    # 查看所有沙箱
sandbox rm feat-xxx           # 清理沙箱

详见 AI 编程沙箱文档

文档

您可以从 docs 目录查看项目的完整文档,文档包含框架的快速入门指南和用户指导手册,并以一个基于本框架开发的大模型应用编排平台(Model Engine)为例,向您介绍本框架在商业化的成熟产品中是如何应用的。

贡献

欢迎贡献者加入本项目。 请阅读 CONTRIBUTING.md,这将指导您完成分支管理、标签管理、提交规则、代码审查等内容。遵循这些指导有助于项目的高效开发和良好协作。

联系我们

  1. 如果发现问题,可以在该项目的 Issue 模块内提出。
  2. 微信公众号:FitFramework
  3. 微信技术交流群:通过公众号菜单“技术交流”点击获取最新群二维码。
  4. QQ技术交流群:1029802553

wechat-gh qq-01

Extension points exported contracts — how you extend this code

LangChainRunnableService (Interface)
LangChain Runnable 算子服务。 @author 刘信宏 @since 2024-06-11 [20 implementers]
framework/fel/java/services/fel-langchain-service/src/main/java/modelengine/fel/service/langchain/LangChainRunnableService.java
Identity (Interface)
ID生成器接口 @author 高诗意 @since 1.0 [11 implementers]
framework/waterflow/java/waterflow-core/src/main/java/modelengine/fit/waterflow/domain/utils/Identity.java
TestListener (Interface)
测试框架的监听类,用于监听单测类整个生命周期。 @author 邬涨财 @author 易文渊 @since 2023-01-17 [7 implementers]
framework/fit/java/fit-test/fit-test-framework/src/main/java/modelengine/fitframework/test/domain/listener/TestListener.java
Interpretable (Interface)
可解释执行的 @since 1.0 [8 implementers]
framework/ohscript/src/main/java/modelengine/fit/ohscript/script/parser/nodes/Interpretable.java
Weather (Interface)
表示通用接口服务。 @author 季聿阶 @since 2025-01-31 [106 implementers]
examples/fit-example/02-static-plugin/service/src/main/java/modelengine/fit/example/Weather.java
WeatherService (Interface)
表示天气服务的接口定义。 @author 易文渊 @author 杭潇 @since 2024-09-02 [4 implementers]
examples/fel-example/06-agent/src/main/java/modelengine/example/ai/chat/agent/tool/WeatherService.java
WeatherService (Interface)
表示天气服务的接口定义。 @author 易文渊 @author 杭潇 @since 2024-09-02 [4 implementers]
examples/fel-spring-example/06-agent/src/main/java/modelengine/example/ai/chat/agent/tool/WeatherService.java
AiTool (Interface)
(no doc)
docker/sandbox/src/tools.ts

Core symbols most depended-on inside this repo

O
called by 1458
framework/fit/java/fit-builtin/plugins/fit-http-openapi3-swagger/src/main/resources/static/swagger-ui-standalone-preset.js
get
called by 1292
framework/fit/java/fit-builtin/plugins/fit-http-openapi3-swagger/src/main/java/modelengine/fit/http/openapi3/swagger/entity/Paths.java
notNull
called by 1068
framework/fit/java/fit-util/src/main/java/modelengine/fitframework/inspection/Validation.java
cast
called by 969
framework/fit/java/fit-util/src/main/java/modelengine/fitframework/util/ObjectUtils.java
get
called by 905
framework/fit/java/fit-api/src/main/java/modelengine/fitframework/cache/Cache.java
when
called by 904
framework/fel/java/fel-flow/src/main/java/modelengine/fel/engine/activities/AiConditions.java
mock
called by 773
framework/ohscript/src/main/java/modelengine/fit/ohscript/script/parser/nodes/IfNode.java
put
called by 719
framework/fit/java/fit-api/src/main/java/modelengine/fitframework/cache/Cache.java

Shape

Method 17,877
Class 4,026
Function 2,421
Interface 769
Enum 87
Route 62

Languages

Java83%
TypeScript10%
Python7%

Modules by API surface

framework/fit/java/fit-builtin/plugins/fit-http-openapi3-swagger/src/main/resources/static/swagger-ui-es-bundle-core.js1,115 symbols
framework/fit/java/fit-builtin/plugins/fit-http-openapi3-swagger/src/main/resources/static/swagger-ui.js929 symbols
framework/fit/java/fit-builtin/plugins/fit-http-openapi3-swagger/src/main/resources/static/swagger-ui-standalone-preset.js393 symbols
framework/fit/java/fit-util/src/test/java/modelengine/fitframework/util/StringUtilsTest.java268 symbols
framework/fit/java/fit-util/src/test/java/modelengine/fitframework/util/ReflectionUtilsTest.java159 symbols
framework/fit/java/fit-util/src/test/java/modelengine/fitframework/inspection/ValidationTest.java128 symbols
framework/fit/java/fit-util/src/test/java/modelengine/fitframework/util/CollectionUtilsTest.java106 symbols
framework/fit/java/fit-util/src/test/java/modelengine/fitframework/util/IoUtilsTest.java100 symbols
framework/fit/java/fit-util/src/test/java/modelengine/fitframework/util/XmlUtilsTest.java95 symbols
framework/fit/java/fit-util/src/test/java/modelengine/fitframework/util/ObjectUtilsTest.java88 symbols
framework/fit/java/fit-builtin/plugins/fit-validation-hibernate-javax/src/test/java/modelengine/fitframework/validation/ValidationHandlerTest.java82 symbols
framework/fit/java/fit-builtin/plugins/fit-validation-hibernate-jakarta/src/test/java/modelengine/fitframework/validation/ValidationHandlerTest.java82 symbols

For agents

$ claude mcp add fit-framework \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact