1773239962
This commit is contained in:
+104
-100
@@ -1,13 +1,117 @@
|
||||
{
|
||||
"recentFiles": [
|
||||
{
|
||||
"basename": "CLAUDE.md",
|
||||
"path": "work/移动杭研/AI 项目/CLAUDE.md.md"
|
||||
},
|
||||
{
|
||||
"basename": "常用命令",
|
||||
"path": "resource/常用命令.md"
|
||||
},
|
||||
{
|
||||
"basename": "settings.local.json",
|
||||
"path": "work/移动杭研/AI 项目/settings.local.json.md"
|
||||
},
|
||||
{
|
||||
"basename": "服务器-香港",
|
||||
"path": "personal/服务器-香港.md"
|
||||
},
|
||||
{
|
||||
"basename": "20260311142461",
|
||||
"path": "000-Inbox/20260311142461.md"
|
||||
},
|
||||
{
|
||||
"basename": "K-V 功能",
|
||||
"path": "work/移动杭研/项目备忘/K-V 功能.md"
|
||||
},
|
||||
{
|
||||
"basename": "IBS NG 日志模板",
|
||||
"path": "work/移动杭研/项目备忘/IBS NG 日志模板.md"
|
||||
},
|
||||
{
|
||||
"basename": "项目杂记",
|
||||
"path": "work/移动杭研/项目备忘/项目杂记.md"
|
||||
},
|
||||
{
|
||||
"basename": "数据库信息",
|
||||
"path": "work/移动杭研/项目备忘/数据库信息.md"
|
||||
},
|
||||
{
|
||||
"basename": "获取企业 token 脚本",
|
||||
"path": "work/移动杭研/项目备忘/获取企业 token 脚本.md"
|
||||
},
|
||||
{
|
||||
"basename": "环境账号",
|
||||
"path": "work/移动杭研/项目备忘/环境账号.md"
|
||||
},
|
||||
{
|
||||
"basename": "工作账号",
|
||||
"path": "work/移动杭研/项目备忘/工作账号.md"
|
||||
},
|
||||
{
|
||||
"basename": "开发备注",
|
||||
"path": "work/移动杭研/AI 项目/开发备注.md"
|
||||
},
|
||||
{
|
||||
"basename": "IBS 智能体具体落实技术方案",
|
||||
"path": "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md"
|
||||
},
|
||||
{
|
||||
"basename": "RAG Flow",
|
||||
"path": "work/移动杭研/AI 项目/RAG Flow.md"
|
||||
},
|
||||
{
|
||||
"basename": "ibs-ai 项目梳理",
|
||||
"path": "work/移动杭研/AI 项目/ibs-ai 项目梳理.md"
|
||||
},
|
||||
{
|
||||
"basename": "20260311083458",
|
||||
"path": "000-Inbox/20260311083458.md"
|
||||
},
|
||||
{
|
||||
"basename": "20260311084236",
|
||||
"path": "000-Inbox/20260311084236.md"
|
||||
},
|
||||
{
|
||||
"basename": "20260311090483",
|
||||
"path": "000-Inbox/20260311090483.md"
|
||||
},
|
||||
{
|
||||
"basename": "20260311100356",
|
||||
"path": "000-Inbox/20260311100356.md"
|
||||
},
|
||||
{
|
||||
"basename": "如何成为一个 React 工程师呢?",
|
||||
"path": "resource/前端/如何成为一个 React 工程师呢?.md"
|
||||
},
|
||||
{
|
||||
"basename": "RAG Flow 部署",
|
||||
"path": "work/移动杭研/AI 项目/RAG Flow 部署.md"
|
||||
},
|
||||
{
|
||||
"basename": "20260310144341",
|
||||
"path": "000-Inbox/20260310144341.md"
|
||||
},
|
||||
{
|
||||
"basename": "20260310150987",
|
||||
"path": "000-Inbox/20260310150987.md"
|
||||
},
|
||||
{
|
||||
"basename": "20260310142396",
|
||||
"path": "000-Inbox/20260310142396.md"
|
||||
},
|
||||
{
|
||||
"basename": "20260310104243",
|
||||
"path": "000-Inbox/20260310104243.md"
|
||||
},
|
||||
{
|
||||
"basename": "获取各省试商用详情(已无法使用)",
|
||||
"path": "work/移动杭研/业务梳理/业务工单/获取各省试商用详情(已无法使用).md"
|
||||
},
|
||||
{
|
||||
"basename": "0223-试商用峰值带宽为什么查不到红象公司22",
|
||||
"path": "work/移动杭研/问题处理/2024-02/0223-试商用峰值带宽为什么查不到红象公司22.md"
|
||||
},
|
||||
{
|
||||
"basename": "图纸-IBS 智能体-v3-项目架构",
|
||||
"path": "work/移动杭研/AI 项目/图纸-IBS 智能体-v3-项目架构.md"
|
||||
@@ -36,14 +140,6 @@
|
||||
"basename": "20260309150326",
|
||||
"path": "000-Inbox/20260309150326.md"
|
||||
},
|
||||
{
|
||||
"basename": "如何成为一个 React 工程师呢?",
|
||||
"path": "resource/前端/如何成为一个 React 工程师呢?.md"
|
||||
},
|
||||
{
|
||||
"basename": "服务器-香港",
|
||||
"path": "personal/服务器-香港.md"
|
||||
},
|
||||
{
|
||||
"basename": "直播源",
|
||||
"path": "personal/电影/直播源.md"
|
||||
@@ -72,14 +168,6 @@
|
||||
"basename": "Ubuntu 24.04 LTS ELK 8 安装指南",
|
||||
"path": "resource/组件/Ubuntu 24.04 LTS ELK 8 安装指南.md"
|
||||
},
|
||||
{
|
||||
"basename": "常用命令",
|
||||
"path": "resource/常用命令.md"
|
||||
},
|
||||
{
|
||||
"basename": "环境账号",
|
||||
"path": "work/移动杭研/项目备忘/环境账号.md"
|
||||
},
|
||||
{
|
||||
"basename": "开发笔记",
|
||||
"path": "work/移动杭研/开发记录/7.19.0/开发笔记.md"
|
||||
@@ -111,90 +199,6 @@
|
||||
{
|
||||
"basename": "vim 快捷键与操作手册",
|
||||
"path": "resource/系统/vim 快捷键与操作手册.md"
|
||||
},
|
||||
{
|
||||
"basename": "VSCode 配置文件",
|
||||
"path": "resource/配置/VSCode 配置文件.md"
|
||||
},
|
||||
{
|
||||
"basename": "Rime 配置文件",
|
||||
"path": "resource/配置/Rime 配置文件.md"
|
||||
},
|
||||
{
|
||||
"basename": "PowerShell 配置文件",
|
||||
"path": "resource/配置/PowerShell 配置文件.md"
|
||||
},
|
||||
{
|
||||
"basename": "Codex 配置文件",
|
||||
"path": "resource/配置/Codex 配置文件.md"
|
||||
},
|
||||
{
|
||||
"basename": "Claude Code 提示词",
|
||||
"path": "resource/配置/Claude Code 提示词.md"
|
||||
},
|
||||
{
|
||||
"basename": "Claude Code 配置文件",
|
||||
"path": "resource/配置/Claude Code 配置文件.md"
|
||||
},
|
||||
{
|
||||
"basename": "19 家顶级 Web3 投资机构简介丨 Web3 创业者必看",
|
||||
"path": "resource/剪藏/理财相关/19 家顶级 Web3 投资机构简介丨 Web3 创业者必看.md"
|
||||
},
|
||||
{
|
||||
"basename": "jar 包启动脚本",
|
||||
"path": "resource/脚本/jar 包启动脚本.md"
|
||||
},
|
||||
{
|
||||
"basename": "数据清洗-日志筛选",
|
||||
"path": "resource/脚本/数据清洗-日志筛选.md"
|
||||
},
|
||||
{
|
||||
"basename": "轮询备案号(GO)",
|
||||
"path": "resource/脚本/轮询备案号(GO).md"
|
||||
},
|
||||
{
|
||||
"basename": "Rime YAML Custom Patch 语法笔记",
|
||||
"path": "resource/工具/rime/Rime YAML Custom Patch 语法笔记.md"
|
||||
},
|
||||
{
|
||||
"basename": "Rime 小狼毫",
|
||||
"path": "resource/工具/rime/Rime 小狼毫.md"
|
||||
},
|
||||
{
|
||||
"basename": "x-callback-url",
|
||||
"path": "resource/工具/obsidian/x-callback-url.md"
|
||||
},
|
||||
{
|
||||
"basename": "Templater",
|
||||
"path": "resource/工具/obsidian/Templater.md"
|
||||
},
|
||||
{
|
||||
"basename": "阅读记录",
|
||||
"path": "personal/阅读/阅读记录.md"
|
||||
},
|
||||
{
|
||||
"basename": "装机系统",
|
||||
"path": "personal/个人/装机系统.md"
|
||||
},
|
||||
{
|
||||
"basename": "装机历程",
|
||||
"path": "personal/个人/装机历程.md"
|
||||
},
|
||||
{
|
||||
"basename": "债务记录",
|
||||
"path": "personal/个人/债务记录.md"
|
||||
},
|
||||
{
|
||||
"basename": "日常记录",
|
||||
"path": "personal/个人/日常记录.md"
|
||||
},
|
||||
{
|
||||
"basename": "情绪价值",
|
||||
"path": "personal/个人/情绪价值.md"
|
||||
},
|
||||
{
|
||||
"basename": "结婚相关",
|
||||
"path": "personal/个人/结婚相关.md"
|
||||
}
|
||||
],
|
||||
"omittedPaths": [
|
||||
|
||||
Vendored
+30
-36
@@ -4,22 +4,17 @@
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "4b5820367a78b7bd",
|
||||
"id": "ba67f7f262d91fde",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "4695be4ed62c6a04",
|
||||
"id": "08db0b367836cf1d",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md",
|
||||
"mode": "source",
|
||||
"source": false,
|
||||
"backlinks": false
|
||||
},
|
||||
"type": "empty",
|
||||
"state": {},
|
||||
"icon": "lucide-file",
|
||||
"title": "IBS 智能体具体落实技术方案"
|
||||
"title": "新标签页"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -97,7 +92,7 @@
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 507.5
|
||||
"width": 253.5
|
||||
},
|
||||
"right": {
|
||||
"id": "ca733f6d5936ae40",
|
||||
@@ -114,13 +109,12 @@
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md",
|
||||
"followCursor": true,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-list",
|
||||
"title": "IBS 智能体具体落实技术方案 的大纲"
|
||||
"title": "大纲"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -232,34 +226,34 @@
|
||||
"obsidian-excalidraw-plugin:New drawing": false
|
||||
}
|
||||
},
|
||||
"active": "4695be4ed62c6a04",
|
||||
"active": "08db0b367836cf1d",
|
||||
"lastOpenFiles": [
|
||||
"work/移动杭研/AI 项目/ibs-ai 项目梳理.md",
|
||||
"work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md",
|
||||
"work/移动杭研/AI 项目/MCP Prompt.md",
|
||||
"work/移动杭研/AI 项目/图纸-IBS 智能体-v3-项目架构.md",
|
||||
"work/移动杭研/AI 项目/图纸-IBS 智能体-v2-项目架构 原生 MCP.md",
|
||||
"work/移动杭研/AI 项目/图纸-IBS 智能体-v1-流量查询 demo 对象存储.md",
|
||||
"work/移动杭研/AI 项目/图纸-IBS 智能体-v1-流量查询 demo.md",
|
||||
"work/移动杭研/AI 项目/IBS 智能体-v4.md",
|
||||
"work/移动杭研/AI 项目/IBS 智能体-v3-遗弃.md",
|
||||
"resource/ai/prompts/Prompt 公司智能体.md",
|
||||
"work/移动杭研/AI 项目/CLAUDE.md.md",
|
||||
"calendar/diary/2026-03-12.md",
|
||||
"calendar/diary/2026-03-11.md",
|
||||
"calendar/diary/2026-03-10.md",
|
||||
"000-inbox/20260309173243.md",
|
||||
"000-inbox/20260309150326.md",
|
||||
"calendar/diary/2026-03-09.md",
|
||||
"calendar/diary/2026-03-08.md",
|
||||
"calendar/weeks/2026-W10.md",
|
||||
"calendar/diary/2026-03-07.md",
|
||||
"calendar/diary/2026-03-06.md",
|
||||
"calendar/diary/2026-03-05.md",
|
||||
"calendar/diary/2026-03-04.md",
|
||||
"calendar/diary/2026-03-03.md",
|
||||
"calendar/diary/2026-03-02.md",
|
||||
"000-Inbox/20260309173243.md",
|
||||
"000-Inbox/20260309150326.md",
|
||||
"resource/前端/如何成为一个 React 工程师呢?.md",
|
||||
"resource/常用命令.md",
|
||||
"work/移动杭研/AI 项目/settings.local.json.md",
|
||||
"personal/服务器-香港.md",
|
||||
"000-inbox/20260311142461.md",
|
||||
"000-Inbox/20260311141403.md",
|
||||
"000-Inbox/20260311145376.md",
|
||||
"000-inbox/20260311145376.md",
|
||||
"000-Inbox/20260311142461.md",
|
||||
"work/移动杭研/项目备忘/K-V 功能.md",
|
||||
"work/移动杭研/项目备忘/IBS NG 日志模板.md",
|
||||
"work/移动杭研/项目备忘/项目杂记.md",
|
||||
"work/移动杭研/项目备忘/数据库信息.md",
|
||||
"work/移动杭研/项目备忘/获取企业 token 脚本.md",
|
||||
"work/移动杭研/项目备忘/环境账号.md",
|
||||
"work/移动杭研/项目备忘/工作账号.md",
|
||||
"000-inbox/20260311141403.md",
|
||||
"work/移动杭研/AI 项目/开发备注.md",
|
||||
"work/移动杭研/AI 项目/IBS 智能体具体落实技术方案.md",
|
||||
"work/移动杭研/AI 项目/RAG Flow.md",
|
||||
"work/移动杭研/AI 项目/ibs-ai 项目梳理.md",
|
||||
"resource/工具/rime",
|
||||
"attachment/images-paste/image-20260304153545122.png",
|
||||
"work/移动杭研/开发记录/7.19.0",
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 32 KiB |
@@ -1,9 +1,30 @@
|
||||
# 任务
|
||||
|
||||
- [x] 开发:参加 IBS 项目晨会,同步昨日问题跟进事项。(李春良 0.5)
|
||||
- [ ] 开发:梳理 IBS V7.19.0 需求。(新业务平面引入与系统集成实施 李春良 4)
|
||||
- [ ] 项目:IBS 智能体具体落实技术方案调研。(李春良 3)
|
||||
- [x] 开发:开发 IBS V7.19.0 需求。(新业务平面引入与系统集成实施 20% 李春良 2)
|
||||
- [x] 项目:IBS 智能体具体落实技术方案调研,文档编写。(李春良 5)
|
||||
- [x] 项目:试商用客户峰值带宽(企业)导出匹配 ID。(李春良 0.5)
|
||||
|
||||
# 日志
|
||||
|
||||
帮我把数据梳理为一个markdown表格,不可以动数据。就是做到 markdown表格。每个属性都要。直接输出表格。
|
||||
|
||||
你好,想请教一个使用场景。
|
||||
|
||||
因为我们的 MCP 服务会做一些实际的业务 HTTP 请求,所以我们期望把最外层的用户 token,或者是 MCP 的自定义 token 透传给这个 MCP server。请问这个有什么比较好的实现方式吗?
|
||||
|
||||
另外,我发现目前系统自带的 MCP Config 是一个静态配置,有什么比较好的方案可以实现动态检索工具呢?
|
||||
|
||||
万分感谢!
|
||||
|
||||
# 总结
|
||||
|
||||
AI 开发,今天测试了 MCP 的调用。
|
||||
|
||||
今天和龙哥聊天,发现自己是一种和善的人格,比如龙哥说,京东、美团导致大部分普通人没有工作。
|
||||
|
||||
我发先我的思维一致是相反的,我认为大厂在某一定程度上是给社会带来了好处的,加快了社会的发展。、
|
||||
|
||||
但是想想确实,自己无论如何的成长学习,感觉和他们的差距越来越大,层级和周边人的影响是再试太大了。
|
||||
|
||||
自从换了输入法,自己的打字的速度实在是太慢了。总感觉右手不是很舒服。
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
# 任务
|
||||
|
||||
- [x] 开发:参加 IBS 项目晨会,同步昨日问题跟进事项。(李春良 0.5)
|
||||
- [x] 开发:梳理 IBS V7.19.0 需求。(新业务平面引入与系统集成实施 30% 李春良 2)
|
||||
- [x] 项目:IBS 智能体具体落实技术方案调研,打通流程。(李春良 5)
|
||||
|
||||
# 日志
|
||||
|
||||
当前项目是我们的 MCP 注册中心,相当于我们提供了一个统一的 MCP 服务。我们为用户和管理员提供了一个 API 注册接口,当管理员把接口规范传给我们后,我们就可以直接为 AI 提供标准化的 MCP 接口。
|
||||
|
||||
现在遇到的一个问题是,我们想把这个注册中心给不同的平台用户使用(比如 IBS 用户、CDN 项目组等)。由于有多个项目组,且每个项目组都有自己的工具,如何有效区分这些工具成了关键。
|
||||
|
||||
请帮我调研一下:
|
||||
|
||||
1. MCP 协议层面是否支持根据不同的用户 Key 返回不同的工具?
|
||||
2. 针对这种需求,目前市面上是否有比较成熟的实现方案(最好是符合我们项目的技术栈)?
|
||||
|
||||
总的来说,我想把它接入到一个智能体中,让不同的用户平台根据自己的 Key 获取对应的工具,这样也能减轻上下文的压力。请帮我调研一下,然后我们再讨论出一个成熟的技术方案。
|
||||
|
||||
现在进一步解决我的问题,MCP 的鉴权已经通了,如上边说的当前项目是我们的 MCP 注册中心,相当于我们提供了一个统一的 MCP 服务。我们为用户和管理员提供了一个 API 注册接口,当管理员把接口规范传给我们后,我们就可以直接为 AI 提供标准化的 MCP 接口。
|
||||
|
||||
此时有个问题了。如果各个平台有自己的鉴权的话,如何能把 token 透传下去呢?因为这个 token 可能是各个项目自己用来横向鉴权的,比如控制谁能查哪些域名等等场景。是不是可以给 mcp 增加额外的 header 然后增加到 mcp 发起调用的 header 中。帮我调研一个可行的,标准的方案。
|
||||
|
||||
# 总结
|
||||
|
||||
今天突破了 ibs-ai-mcp 项目的进展,目前实现了 token 的透传。算是实现了整个流程必要的一环。
|
||||
|
||||
下午在公司内展示了 cosmic 拆分工具的使用,再次回头看这个工具的整体设计,感觉自己有进步了,在最近学习了智能体的开发。
|
||||
|
||||
我个人认为智能体开发,前端技能目前来说是必要的。
|
||||
|
||||
晚上听了卡兹克的直播,感觉自己还是没有在小的前沿,自己过于关注比如账号注册的用户名等等这些无用的东西。感觉这些人真的比想想中年轻,对 AI 的拥抱程度。在看看周边的人,感觉对 AI 的拥抱程度真的好低呀。简直不是在一个层级。目前还在 AI 对话的形态。
|
||||
|
||||
在当下这个热潮中,周末还是有必要玩儿一下龙虾。
|
||||
|
||||
田宝和 AI 聊了好久。感觉可以把 AI 融入到我的生活中。
|
||||
|
||||
我们不应该评判是否是 AI 产出的,要看最终的内容是否是我们想要的。
|
||||
@@ -0,0 +1,8 @@
|
||||
# 任务
|
||||
|
||||
- [ ] 开发:参加 IBS 项目晨会,同步昨日问题跟进事项。(李春良 0.5)
|
||||
- [ ] 开发:梳理 IBS V7.19.0 需求。(新业务平面引入与系统集成实施 30% 李春良 2)
|
||||
|
||||
# 日志
|
||||
|
||||
# 总结
|
||||
@@ -144,7 +144,7 @@ export default FunctionalCounter
|
||||
|
||||
# 第二章 组件化开发核心
|
||||
|
||||
Props 通信
|
||||
Props 通信(只读的,子组件不可以进行修改,单向数据流。)
|
||||
|
||||
```tsx
|
||||
type Props = {
|
||||
@@ -163,12 +163,59 @@ export default PrintNmae
|
||||
|
||||
```
|
||||
|
||||
传参
|
||||
普通传参
|
||||
|
||||
```tsx
|
||||
<PrintNmae name="John" />
|
||||
```
|
||||
|
||||
children 传参,这里 type
|
||||
|
||||
```tsx
|
||||
import React from 'react'
|
||||
|
||||
type CardProps = React.PropsWithChildren<{}>
|
||||
|
||||
const Card = ({ children }: CardProps) => {
|
||||
return (
|
||||
<div
|
||||
style={{ border: '1px solid #ccc', padding: '16px', borderRadius: '8px' }}
|
||||
>
|
||||
{children}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default Card
|
||||
```
|
||||
|
||||
关于 `{ children }: CardProps` 是组件接收一个 props 然后从里边结构出来 children
|
||||
|
||||
类型声明:
|
||||
|
||||
```tsx
|
||||
type UserProps = {
|
||||
name: string
|
||||
age: number
|
||||
isVerified: boolean
|
||||
hobbies?: string[]
|
||||
}
|
||||
|
||||
export const User = (user: UserProps) => {
|
||||
const { name, age, isVerified, hobbies } = user
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h2>{name}</h2>
|
||||
<p>Age: {age}</p>
|
||||
<p>校验: {isVerified ? '已验证' : '未验证'}</p>
|
||||
{hobbies && hobbies.length > 0 && <p>爱好: {hobbies.join(', ')}</p>}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
# CSS
|
||||
|
||||
顶级作用域
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
本文件用于指导 Claude Code(claude.ai/code)在此仓库中开展工作。
|
||||
|
||||
## 技术栈
|
||||
|
||||
- Java:`21`(`<java.version>`)
|
||||
- 后端框架:Spring Boot `4.0.3`
|
||||
- 后端框架:Spring Ai `1.1.2`
|
||||
|
||||
## 开发规范
|
||||
|
||||
如果涉及改动对外提供的 RESTful API 需对 MCP 动态工具管理 API 文档进行及时更新。
|
||||
|
||||
开发 MCP 相关功能需要遵守 MCP 协议说明。
|
||||
|
||||
## 日志和注释
|
||||
|
||||
- 日志和注释使用中文
|
||||
- 关键位置须有日志,日志级别仅需要 `info` 和 `error` 两个级别
|
||||
- public 方法必须提供注释说明,关键位置也可以适量增加注释说明
|
||||
|
||||
## 测试规范(强约束)
|
||||
|
||||
- 新增功能、修复问题、修改业务行为:必须新增/更新对应的测试用例(优先单元测试),覆盖核心规则与边界条件
|
||||
- 修复 Bug:必须提供回归测试(修复前失败、修复后通过)
|
||||
- 纯代码格式/注释调整:可以不新增测试,但必须确保现有测试全部通过
|
||||
- 必要时才写集成测试(如持久化/序列化/校验):控制数量,避免把所有测试都写成 `@SpringBootTest`
|
||||
- 提交前必须在仓库根目录运行 `mvn test` 并确保全部通过;测试未通过禁止提交
|
||||
@@ -89,8 +89,6 @@ dify API 的研究。
|
||||
|
||||
DeepSeek-R1-Distill-Qwen-32B 工具调用。
|
||||
|
||||

|
||||
|
||||
发指令 --》ibs-ai --> RAGflow --> 智能决策 a 工具 b 知识库
|
||||
|
||||
需要 MCP server Token 和 用户 Token。
|
||||
|
||||
@@ -0,0 +1,324 @@
|
||||
# 一、RAGFlow 部署前提
|
||||
|
||||
最低硬件要求:
|
||||
|
||||
- CPU ≥ 4 核
|
||||
- 内存 ≥ 16 GB
|
||||
- 磁盘 ≥ 50 GB
|
||||
- Docker ≥ 24
|
||||
- Docker Compose ≥ 2.26 ([ragflow.com.cn][1])
|
||||
|
||||
RAGFlow 默认依赖这些组件:
|
||||
|
||||
- MySQL
|
||||
- Redis
|
||||
- MinIO(对象存储)
|
||||
- Elasticsearch / Infinity(检索)
|
||||
- API Server
|
||||
|
||||
这些都已经写在 `docker-compose` 里。 ([ragflow.com.cn][2])
|
||||
|
||||
---
|
||||
|
||||
# 二、系统参数调整(必须)
|
||||
|
||||
RAGFlow 用 Elasticsearch,需要调内核参数:
|
||||
|
||||
```bash
|
||||
sysctl vm.max_map_count
|
||||
```
|
||||
|
||||
如果小于 **262144**:
|
||||
|
||||
```bash
|
||||
sudo sysctl -w vm.max_map_count=262144
|
||||
```
|
||||
|
||||
永久生效:
|
||||
|
||||
```bash
|
||||
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
|
||||
sysctl -p
|
||||
```
|
||||
|
||||
否则 ES 会启动失败。 ([ragflow.com.cn][1])
|
||||
|
||||
---
|
||||
|
||||
# 三、下载 RAGFlow
|
||||
|
||||
```bash
|
||||
git clone https://github.com/infiniflow/ragflow.git
|
||||
cd ragflow
|
||||
```
|
||||
|
||||
进入 docker 目录:
|
||||
|
||||
```bash
|
||||
cd docker
|
||||
```
|
||||
|
||||
目录结构大概:
|
||||
|
||||
```
|
||||
ragflow/
|
||||
├ docker/
|
||||
│ ├ docker-compose.yml
|
||||
│ ├ docker-compose-base.yml
|
||||
│ ├ .env
|
||||
│ └ service_conf.yaml.template
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 四、配置环境变量
|
||||
|
||||
编辑 `.env`
|
||||
|
||||
```bash
|
||||
nano .env
|
||||
```
|
||||
|
||||
主要配置:
|
||||
|
||||
```env
|
||||
# elasticsearch
|
||||
STACK_VERSION=8.11.3
|
||||
ELASTIC_PASSWORD=ragflow
|
||||
|
||||
# kibana
|
||||
KIBANA_USER=rag_flow
|
||||
KIBANA_PASSWORD=infini_rag_flow
|
||||
|
||||
# ports
|
||||
ES_PORT=1200
|
||||
KIBANA_PORT=6601
|
||||
```
|
||||
|
||||
如果需要修改 Web 端口:
|
||||
|
||||
编辑 `docker-compose.yml`
|
||||
|
||||
```yaml
|
||||
ports:
|
||||
- "8080:80"
|
||||
```
|
||||
|
||||
访问地址就变成:
|
||||
|
||||
```
|
||||
http://服务器IP:8080
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 五、启动 RAGFlow
|
||||
|
||||
```bash
|
||||
docker compose -f docker-compose.yml up -d
|
||||
```
|
||||
|
||||
查看容器:
|
||||
|
||||
```bash
|
||||
docker ps
|
||||
```
|
||||
|
||||
正常会有这些容器:
|
||||
|
||||
```
|
||||
ragflow-server
|
||||
ragflow-worker
|
||||
mysql
|
||||
redis
|
||||
minio
|
||||
elasticsearch
|
||||
kibana
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 六、访问 RAGFlow
|
||||
|
||||
浏览器访问:
|
||||
|
||||
```
|
||||
http://服务器IP
|
||||
```
|
||||
|
||||
首次使用需要注册账号。
|
||||
|
||||
然后就可以:
|
||||
|
||||
1️⃣ 创建 Dataset(知识库)
|
||||
|
||||
2️⃣ 上传 PDF / Markdown / 文档
|
||||
|
||||
3️⃣ 自动解析
|
||||
|
||||
4️⃣ 创建 AI Chat
|
||||
|
||||
RAG 就跑起来了。
|
||||
|
||||
---
|
||||
|
||||
# 七、连接大模型
|
||||
|
||||
RAGFlow **本身不带 LLM**,需要接模型。
|
||||
|
||||
常见配置:
|
||||
|
||||
| 类型 | 推荐 |
|
||||
| ----- | -------------- |
|
||||
| 本地模型 | Ollama |
|
||||
| GPU推理 | vLLM |
|
||||
| API | OpenAI / Azure |
|
||||
| 国产 | DeepSeek |
|
||||
|
||||
例如接 **Ollama**
|
||||
|
||||
先装 Ollama:
|
||||
|
||||
```bash
|
||||
curl -fsSL https://ollama.com/install.sh | sh
|
||||
```
|
||||
|
||||
拉模型:
|
||||
|
||||
```bash
|
||||
ollama pull llama3
|
||||
```
|
||||
|
||||
然后在 RAGFlow UI:
|
||||
|
||||
```
|
||||
Settings → Model Providers
|
||||
```
|
||||
|
||||
添加:
|
||||
|
||||
```
|
||||
Provider: Ollama
|
||||
URL: http://host.docker.internal:11434
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 八、常用运维命令
|
||||
|
||||
查看日志
|
||||
|
||||
```bash
|
||||
docker logs ragflow-server -f
|
||||
```
|
||||
|
||||
停止
|
||||
|
||||
```bash
|
||||
docker compose down
|
||||
```
|
||||
|
||||
升级
|
||||
|
||||
```bash
|
||||
git pull
|
||||
docker compose pull
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 九、生产环境建议
|
||||
|
||||
推荐配置:
|
||||
|
||||
```
|
||||
8 CPU
|
||||
32GB RAM
|
||||
100GB SSD
|
||||
```
|
||||
|
||||
并且:
|
||||
|
||||
- Elasticsearch 单独部署
|
||||
- MinIO 使用对象存储
|
||||
- GPU + vLLM
|
||||
|
||||
RAGFlow 在企业环境一般是:
|
||||
|
||||
```
|
||||
Nginx
|
||||
│
|
||||
RAGFlow API
|
||||
│
|
||||
Elasticsearch
|
||||
Redis
|
||||
MySQL
|
||||
MinIO
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 十、很多人部署失败的 3 个原因
|
||||
|
||||
90% 卡在这里:
|
||||
|
||||
### 1 Docker 版本太低
|
||||
|
||||
必须:
|
||||
|
||||
```
|
||||
Docker ≥ 24
|
||||
Compose ≥ 2.26
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2 内存不足
|
||||
|
||||
RAGFlow 启动 ES + Python worker
|
||||
|
||||
最低:
|
||||
|
||||
```
|
||||
16GB
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3 vm.max_map_count 没改
|
||||
|
||||
ES 直接 crash。
|
||||
|
||||
---
|
||||
|
||||
# 十一、如果你是做 AI 产品(强烈建议)
|
||||
|
||||
我建议你这样部署 RAGFlow:
|
||||
|
||||
```
|
||||
RAGFlow
|
||||
│
|
||||
vLLM (推理)
|
||||
│
|
||||
Embedding Service
|
||||
│
|
||||
对象存储
|
||||
```
|
||||
|
||||
效果比默认好很多。
|
||||
|
||||
---
|
||||
|
||||
💡 如果你愿意,我可以再给你一份 **“RAGFlow 企业级部署架构”**(包括):
|
||||
|
||||
- GPU 推理架构
|
||||
- embedding 服务
|
||||
- chunk pipeline
|
||||
- RAGFlow + MCP
|
||||
- 和你现在的 **智能体架构怎么融合**
|
||||
|
||||
我可以直接画一张 **完整 RAG 系统架构图**。
|
||||
|
||||
[1]: https://ragflow.com.cn/docs?utm_source=chatgpt.com "快速入门 | RAGFlow 引擎"
|
||||
[2]: https://ragflow.com.cn/docs/dev/configurations?utm_source=chatgpt.com "配置 | RAGFlow 引擎"
|
||||
@@ -0,0 +1,29 @@
|
||||
RAGFlow的核心映像在早期版本(如v0.21.1)约为9GB,这主要是因为包含了内置的embedding模型。
|
||||
|
||||
## 镜像大小变化
|
||||
|
||||
从v0.22.0开始,RAGFlow 改为只发布 slim 版本,不再包含内置的 embedding 模型,镜像大小减少到约 2 GB。
|
||||
|
||||
当前版本(v0.24.0)的镜像信息:
|
||||
|
||||
- 下载大小:约2GB
|
||||
- 运行时展开大小:约7GB
|
||||
|
||||
## 9GB大小的原因
|
||||
|
||||
早期9GB的镜像包含:
|
||||
|
||||
- 内置的BCE embedding模型
|
||||
- 内置的BGE embedding模型
|
||||
- 完整的RAGFlow应用程序及其所有依赖
|
||||
|
||||
现在 slim 版本需要用户自行配置外部的大模型和 embedding 服务,因此镜像体积大幅减小。
|
||||
|
||||
---
|
||||
|
||||
| 服务 | 用途 | Docker镜像 |
|
||||
| ----------------- | --------- | -------------------------- |
|
||||
| **Elasticsearch** | 向量数据库(默认) | `elasticsearch:8.11.3` |
|
||||
| **Redis** | 缓存和消息队列 | `valkey:6.0.2` |
|
||||
| **MySQL** | 元数据存储 | `mysql:8.0.39` |
|
||||
| **MinIO** | 对象存储 | `minio:RELEASE.2025-06-13` |
|
||||
@@ -0,0 +1,30 @@
|
||||
```
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(./mvnw test:*)",
|
||||
"Bash(./mvnw dependency:get:*)",
|
||||
"Bash(curl:*)",
|
||||
"mcp__deepwiki__ask_question",
|
||||
"Bash(mvn test:*)",
|
||||
"mcp__deepwiki__read_wiki_structure",
|
||||
"mcp__deepwiki__read_wiki_contents",
|
||||
"Bash(python:*)",
|
||||
"Bash(mvn compile:*)",
|
||||
"Bash(mvn dependency:tree:*)",
|
||||
"Read(//c/Users/docke/.m2/repository/io/modelcontextprotocol/**)",
|
||||
"Read(//c/Users/docke/.m2/**)",
|
||||
"Bash(jar tf:*)",
|
||||
"Bash(javap:*)",
|
||||
"Bash(mvn clean:*)",
|
||||
"Bash(mvn spring-boot:run:*)",
|
||||
"Bash(jar:*)",
|
||||
"WebFetch(domain:spec.modelcontextprotocol.io)",
|
||||
"WebFetch(domain:spring.io)",
|
||||
"WebFetch(domain:developers.redhat.com)",
|
||||
"Bash(find \"D:\\\\MyCode\\\\Work\\\\yd-hy\\\\ibs-mcp\" -type f \\\\\\( -name \"*.sql\" -o -name \"schema*\" -o -name \"*schema*\" \\\\\\) 2>/dev/null | head -20)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
@@ -0,0 +1,14 @@
|
||||
```
|
||||
{
|
||||
"success": true,
|
||||
"message": "API Key 创建成功",
|
||||
"data": {
|
||||
"id": 1,
|
||||
"apiKey": "c2f2956653614bc4ab05711c03f0ff36",
|
||||
"tenantCode": "tenant001",
|
||||
"description": "测试 API Key",
|
||||
"enabled": true,
|
||||
"createdAt": "2026-03-11T10:03:41.9902653"
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user