# KeelBase-java-starter
**Repository Path**: rain6fish/KeelBase-java-starter
## Basic Information
- **Project Name**: KeelBase-java-starter
- **Description**: KeelBase Java Starter — 让 Java/Spring 存量系统接入 KeelBase 成为受治理的 AI 工具:委托身份 / 代理工具导出 / 副作用撤销补偿
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-08-28
- **Last Updated**: 2026-10-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java, SpringBoot, AI治理, 企业AI, 私有化部署
## README
# KeelBase Java Starter
> **让存量 Java/Spring 系统获得受治理的 AI 能力**——基于 [KeelBase](https://github.com/rain6fish/KeelBase) 的 Spring Boot Starter:委托身份验签、代理工具导出、撤销补偿端点。Apache-2.0。
> KeelBase 是开源「企业 AI 信任运行时」。用本 Starter,你的存量 Java/Spring REST 端点即可成为 AI 工具——AI 在你的真实数据上干活,全程过 KeelBase 治理层(行级权限 / 写操作人工确认 / 防篡改审计哈希链 / 副作用可撤销)。
## 🧬 KeelBase 家族
> KeelBase 是**一套协议、多个实现与多种宿主**——不是几个互相竞争的产品。契约是唯一真源,
> 各 runtime 与各宿主消费它,**谁也不拥有它**。这里每个仓都是 **Apache-2.0**。
```text
宿主适配 KeelBase-YuDao
└ 在成熟企业平台上补治理层(芋道)
runtime KeelBase(TypeScript) · KeelBase4J(Java / Spring)
└ 同一协议的两个载体——互为平行,不是翻译关系
桥接 KeelBase-java-starter
└ 把存量 Java/Spring 系统接成受治理的 AI 工具
契约 keelbase-contract
└ 线缆 schema + 一致性向量 + 两者共用的版本线
```
| 仓 | 角色 | 技术栈 | 状态 |
|---|---|---|---|
| [`KeelBase`](https://github.com/rain6fish/KeelBase) | 参考实现 · 产品文档 · 演示 | TypeScript · NestJS · Vue · Flutter · Taro | 活跃 |
| [`KeelBase4J`](https://github.com/rain6fish/KeelBase4J) | 同一协议的 Java 载体 | Java 17 · Spring Boot | 活跃 |
| [`KeelBase-java-starter`](https://github.com/rain6fish/KeelBase-java-starter) | 把存量 Java/Spring 系统接成受治理的 AI 工具 | Maven · Gradle | 0.1.x |
| [`KeelBase-YuDao`](https://github.com/rain6fish/KeelBase-YuDao) | 宿主适配——芋道平台上的治理层 | Java · Vue 3 | 活跃 |
| [`keelbase-contract`](https://github.com/rain6fish/keelbase-contract) | 协议本体——schema、向量、版本线 | JSON Schema | v1.x |
**从哪里开始** —— 想看它跑起来:[`KeelBase`](https://github.com/rain6fish/KeelBase)(60 秒
Docker)· 想让存量 Java 系统具备 AI 能力:
[`KeelBase-java-starter`](https://github.com/rain6fish/KeelBase-java-starter) · 你已经在用芋道:
[`KeelBase-YuDao`](https://github.com/rain6fish/KeelBase-YuDao) · 想实现这个协议:
[`keelbase-contract`](https://github.com/rain6fish/keelbase-contract)。
每个 runtime 对着哪一版契约应答,**只在主仓维护一处**——见
[兼容矩阵](https://github.com/rain6fish/KeelBase/blob/main/README.zh-CN.md#-兼容矩阵)。此处不重复。
## 试用征集(0.1.7)
> **0.1.7 已具备生产接入能力**:接入健康度自检、零样板工具导出、3 个参考项目(CRM / PM / Approval)、本地调试、Boot 2 / Java 8 适配路径。欢迎集成商试用反馈——反馈将决定 1.0 API 冻结。
> **0.1.7 is production-wiring ready** — trial it and open a GitHub Issue with what blocked you or what's missing.
- **5 分钟试用**:clone → `mvn install` → 起 `keelbase-java-example` → `node scripts/verify-java-local.mjs`(接入自检)
- **参考项目**:[CRM](docs/reference-project-crm.zh-CN.md) · [PM](docs/reference-project-pm.md) · [Approval](docs/reference-project-approval.md)
- **完整开发路径**:[开发使用手册](docs/development-guide.md)
- **反馈**:GitHub Issues(https://github.com/rain6fish/KeelBase-java-starter/issues)
## 它能做什么
1. **委托身份**(`DelegationAuthFilter`):校验 KeelBase 转发请求携带的委托 JWT(HS256 + audience + issuer + 过期),映射到本地用户,注入 `@DelegationUser DelegationPrincipal`。无 Spring Security 也能用;classpath 含 Security 时自动写入 SecurityContext。`secret` 与 `audience` 均为必填——缺任一项启动即失败(fail-fast)。
2. **工具声明 + 导出**(`@KeelbaseTool`):给 `@RestController` 方法加注解,`GET /keelbase/proxy-tools/export` 导出 `ai_proxy_tools` 配置——写入 KeelBase Settings 即注册为 AI 工具。类型/风险级/参数口径与 KeelBase 生成器对齐;参数提取对齐 Jackson(继承 / @JsonIgnore / record);audience 单一来源(tools 回退 delegation)。
3. **补偿脚手架**(`KeelBaseCompensationSupport`):AI 写副作用的撤销补偿端点——委托身份 + 幂等 + 审计,开箱即用。
4. **诊断端点**(`GET /keelbase/status`):委托配置、解析后的导出 audience、工具计数与配置告警——绝不泄露密钥。
## 文档
| 主题 | 说明 |
|---|---|
| [架构与数据流](docs/architecture.zh-CN.md) | 总览——控制面/数据面、三条数据流(调用/写+撤销/反向)、委托身份桥 |
| [开发使用手册](docs/development-guide.md) | 从零接入的完整开发路径(依赖/配置/工具/委托身份/补偿/自检/测试/发布)|
| [快速开始](docs/quickstart.zh-CN.md) | 10 分钟端到端接入指南 |
| [配置参考](docs/configuration.zh-CN.md) | 全量属性参考 + audience 解析规则 |
| [委托身份与授权](docs/delegated-identity.zh-CN.md) | JWT、验签、用户映射、Spring Security、行级归属 |
| [工具声明与导出](docs/tool-declaration.zh-CN.md) | 注解、参数提取、类型映射、风险级 |
| [补偿与撤销](docs/compensation.zh-CN.md) | 撤销调用契约、幂等、审计、多实例 |
| [客户端与审计上报](docs/client.zh-CN.md) | 委托 token 生命周期(`KeelbaseClient`)+ 审计上报 |
| [参考项目 CRM](docs/reference-project-crm.zh-CN.md) | Integrator Kit 参考项目:传统 Java CRM → AI CRM(Java 侧真实实现) |
| [工具模式](docs/tool-patterns.zh-CN.md) | 配方:分页、筛选、枚举参数、springdoc 描述、类级工具、写+撤销 |
| [Maven 插件](docs/maven-plugin.zh-CN.md) | `keelbase:export/register` 一键导出/注册,配合热更新免重启 |
| [Gradle 使用](docs/gradle-usage.zh-CN.md) | 消费侧 Gradle 指南:依赖、配置、版本 |
| [CI 接入合规模板](docs/ci-integration.zh-CN.md) | GitHub Actions 样板:契约测试 + 自检 + 导出门禁,合规持续守护 |
| [排障与 FAQ](docs/troubleshooting.zh-CN.md) | 错误码、常见坑、核对清单 |
| [生产上线核对清单](docs/production-checklist.zh-CN.md) | 上线硬化、密钥轮换、运维监控 |
英文版在同目录(`.md`)。
## 快速开始(示例)
```bash
# 1. 启动示例(默认 8081)
cd keelbase-java-example
mvn spring-boot:run
# 2. 诊断接线(委托配置 / 解析后 audience / 工具计数 / 告警)
curl http://localhost:8081/keelbase/status
# 3. 导出 ai_proxy_tools 配置
curl http://localhost:8081/keelbase/proxy-tools/export
# 4. 写入 KeelBase(PUT /settings/ai_proxy_tools,value 为导出 JSON 的字符串)——热更新生效,免重启
```
已发布到 Maven Central——直接加依赖 `cn.com.keelbase:keelbase-spring-boot-starter:0.1.7`(0.1.0–0.1.7 均已上线)。开发快照版(`0.1.7-SNAPSHOT`)需 `mvn install` 本地安装一次。发布自动化(`-Prelease` profile + Central Portal token 流程)已配置——见 [docs/release-central.md](docs/release-central.md)。完整步骤见 [docs/quickstart.zh-CN.md](docs/quickstart.zh-CN.md)。
## 配置(application.yml)
```yaml
keelbase:
delegation:
secret: ${KEELBASE_DELEGATION_SECRET:} # 必填,与 KeelBase DELEGATION_SECRET 一致(≥32 字节)
audience: legacy-crm # 必填,须等于 ai_proxy_tools 顶层 audience
issuer: keelbase # 可选
paths: # 受保护路径(无 Authorization 头即拒绝)
- /api/compensation
tools:
base-url: http://localhost:8081 # 服务器根(导出;baseUrl + 完整 path 约定)
# audience: legacy-crm # 可选——缺省回退 delegation.audience
# export-enabled: true # 注册完成后可关闭导出端点
# status-enabled: true # 高安全环境可关闭 /keelbase/status
compensation:
ledger-size: 1024 # 幂等账本 LRU 上限
```
## 注解示例
```java
@RestController
@RequestMapping("/api")
public class FollowupController extends KeelBaseCompensationSupport