使用Blossom与Codex建立局域网知识库

使用Blossom与Codex建立局域网知识库

本知识库的主要目的是使用Blossom笔记软件进行笔记编写,并且在需要在知识库进行信息检索和总结的时候可以通过Codex直接接入,实现“本地知识库+云端AI能力”的结合。

基础部署

Blossom部署

本例的部署环境为龙芯3A6000 openEuler-24.03-LTS。如果使用与本例相同的方法,理论上支持JAVA21的指令集架构都可以部署,包括常见的amd64、aarch64、rv64等。

数据库和文件准备

首先,在MariaDB中创建一个名为blossom的数据库和同名的用户:

CREATE DATABASE blossom CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

CREATE USER 'blossom'@'%' IDENTIFIED BY 'blossom';
GRANT ALL PRIVILEGES ON *.* TO 'blossom'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

然后下载.jar安装包:

wget https://github.com/blossom-editor/blossom/releases/download/v1.17.1/backend-blossom.jar

启动验证

启动这个.jar文件:

java -jar ./backend-blossom.jar \
 --server.port=9999 \
 --project.iaas.blos.default-path="/mnt/data_0/blossom/img" \
 --spring.datasource.url="jdbc:mysql://127.0.0.1:3306/blossom?useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true&allowMultiQueries=true&useSSL=false&&serverTimezone=GMT%2B8" \
 --spring.datasource.username=blossom \
 --spring.datasource.password=blossom

以上字段的含义分别为:

字段 含义
--server.port 端口号
--project.iaas.blos.default-path 图片储存的位置
--spring.datasource.url MariaDB数据库的URL,如果需要更改的话只改地址和端口就行了
--spring.datasource.username MariaDB数据库的用户名
--spring.datasource.password MariaDB数据库的密码

这样就可以完成启动验证了,相当于服务器已经启动了。如果需要访问的话,还需要设置防火墙放行9999端口:

sudo firewall-cmd --permanent --add-port=9999/tcp
sudo firewall-cmd --reload

然后再客户端中填入:

字段 内容
URL http://:9999
用户名 blos
密码 blos

部署系统服务

[!WARNING]
使用<Blossom DIR>代指.jar文件的存放目录和各种文件的存放目录

首先进入到<Blossom DIR>并且创建startup.sh:

cd <Blossom DIR>
vim startup.sh`

填入内容:

java -jar ./backend-blossom.jar \
 --server.port=9999 \
 --project.iaas.blos.default-path="/mnt/data_0/blossom/img" \
 --spring.datasource.url="jdbc:mysql://127.0.0.1:3306/blossom?useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true&allowMultiQueries=true&useSSL=false&&serverTimezone=GMT%2B8" \
 --spring.datasource.username=blossom \
 --spring.datasource.password=blossom

然后编辑系统服务文件/etc/systemd/system/blossom.service,并且填入:

[Unit]
Description=Blossom Server
After=network.target mariadb.service
Wants=mariadb.service

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/mnt/data_0/blossom
ExecStart=bash /mnt/data_0/blossom/startup.sh
ExecStop=/bin/kill -15 $MAINPID
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=blossom

[Install]
WantedBy=multi-user.target

然后就是标准systemd新服务启动流程:

systemctl daemon-reload
systemctl enable blossom --new

最后查看服务状态:

systemctl status blossom

Codex安装

详情参考
Codex安装教程
完成Codex安装和账号登录等内容

Blossom

Blossom进行正常登录即可。网页和客户端都可以。

Codex的Blossom技能

Codex的Blossom技能目录结构如下:

/home/ubuntu/.codex/skills/blossom/
├── package-metadata.json
├── README.md
├── references
│   ├── api-contract.md
│   ├── compatibility.md
│   └── data-model.md
├── scripts
│   ├── blossom_client.py
│   ├── blossom_cli.py
│   ├── __init__.py
│   ├── live_smoke.py
│   ├── live_snapshot_smoke.py
│   ├── normalizer.py
│   ├── __pycache__
│   │   ├── blossom_client.cpython-312.pyc
│   │   ├── normalizer.cpython-312.pyc
│   │   └── snapshot.cpython-312.pyc
│   └── snapshot.py
├── SKILL.md
├── tests
│   ├── fixtures
│   │   └── contract_samples.json
│   ├── test_auth.py
│   ├── test_compatibility.py
│   ├── test_contract.py
│   ├── test_normalization.py
│   ├── test_package.py
│   ├── test_resources.py
│   ├── test_security.py
│   └── test_snapshot.py
└── VERSION

6 directories, 26 files

该技能主要功能是给Codex提供Blossom的操作接口和登录规范,其中的Python代码文件是http接口,Codex可以通过这些Python代码实现对于Blossom服务器的操作,包括抓取目录、取文件内容等。该技能已经过充分测试。

Git仓库

Git仓库主要用于在该仓库目录下打开Codex,并且直接询问Codex时可以有限在Blossom文档里面寻找信息,相当于依靠本地知识库进行信息提取与总结。

Git仓库结构如下(代码块前的\要进行删除):

./
├── AGENTS.md
├── note
│   ├── 2026-09-17-170154-查询-VMware压缩硬盘.md
│   ├── 2026-09-17-170745-查询-龙芯平台编译安装QEMU.md
│   └── README.md
├── outline
│   ├── 2026-09-17-170112-查询-VMware压缩硬盘.md
│   ├── 2026-09-17-170535-查询-龙芯平台编译安装QEMU.md
│   └── README.md
└── README.md

3 directories, 8 files

AGENTS.md是仓库的规则文件,Codex在第一次对话的时候必定会阅读此文件,并且按照此规则文件进行下一步工作。

note目录是每一次提问的笔记记录,由note/README.md文件建立索引;outline目录是每一次启动Codex读取到的目录大纲,用来辅助记录文章目录和提问的问题(可以看到两个目录中都有测试遗留的记录文件)。

AGENTS.md文档内容如下:

# Blossom 知识库协作规则

本目录是 Blossom 知识库的本地协作入口。所有涉及 Blossom 服务的操作,都必须遵守以下规则。

## 连接配置

以下是本知识库的运行时连接信息:

- 服务器地址:xxx
- 用户名:xxx
- 密码:xxx
- 调用 Base URL:`http://xxx`

本文件含有敏感凭据。不要将其复制到 `README.md`、`note/`、命令输出、日志、提交信息或对话回复中;本文件应保持仅当前用户可读。

## 登录与令牌生命周期

1. 每开启一个新的上下文聊天,先读取本文件,并使用运行时注入的用户名和密码重新登录;不得复用其他上下文的令牌。
2. Blossom 请求使用随附 Blossom 技能提供的只读客户端,登录流程为 `POST /login`,随后校验 `/check`。
3. 令牌只能存在于当前运行中的客户端进程内存中。不得写入文件、环境快照、Shell 历史、日志、笔记、压缩摘要或对话回复,也不得打印令牌。
4. 上下文压缩前后只保留不含秘密的会话状态(例如“需要重新登录”或“活动客户端仍在运行”)。如果持有令牌的客户端进程仍然存活,则继续使用其内存中的令牌;如果进程不可用或令牌失效,必须在压缩恢复后的第一个 Blossom 请求前重新登录。
5. 出现 `AUTH-40101` 或 `AUTH-40102` 时,清除当前内存会话并停止静默重试,重新进行一次运行时登录;不要无限次重试密码。

建议通过 `BLOSSOM_USERNAME` 和 `BLOSSOM_PASSWORD` 注入运行时凭据,不要把密码作为命令行参数传递。登录、读取和清理会话应由 Blossom 技能的 `scripts/blossom_cli.py` 完成;该客户端会在进程结束时清理令牌。

## 知识库查询优先规则

- 在本知识库目录下提出的问题,首先搜索知识库。
- 如果知识库中没有相关内容,暂停继续处理,先向用户汇报未找到相关内容,并询问是否需要进行互联网搜索;未经用户确认,不进行互联网搜索。

## Codex 运行大纲与索引规则

- 每次运行 Codex 时,在处理本次运行的第一个提问前,登录blossom并且获取到全部文章的大纲,先在 `outline/` 目录下创建一份新的大纲记录文件记录获取到的大纲,然后更新 `outline/README.md` 的索引。
- 大纲记录文件名沿用 `note/` 目录的规则:`YYYY-MM-DD-HHmmss-类别-标题.md`;开始时记录本次运行的目的和计划,完成后补充结果和后续事项。
- `outline/README.md` 是 `outline/` 目录的独立索引;新增或更新大纲记录时同步更新索引。
- 每次更新`outline/README.md`时,如果发现实际文件信息与`outline/README.md`不符,则使用实际文件信息更新`outline/README.md`。

## 本地记录规则

- 使用记录统一存放在 `note/`。`note/README.md` 是 `note/` 目录的独立索引;新增使用、配置变更、查询结果或故障记录时同步更新索引。
- 文件名统一为:`YYYY-MM-DD-HHmmss-类别-标题.md`。
- 时间采用 `Asia/Shanghai`;类别使用简短中文词,例如 `配置`、`登录`、`查询`、`同步`、`故障`、`整理`。
- 标题使用简短、可读的文字;文件名中避免空格和路径分隔符。
- 记录内容不得包含密码、令牌、Authorization 请求头、完整 Cookie 或其他秘密。
- 每次新的使用、配置变更、查询结果或故障处理都新建记录,不覆盖既有记录。
- 每次更新`note/README.md`时,如果发现实际文件信息与`note/README.md`不符,则使用实际文件信息更新`note/README.md`。

推荐的记录结构:

\```markdown
# 标题

- 时间:YYYY-MM-DD HH:mm:ss
- 类别:类别
- 目的:
- 操作:
- 结果:
- 后续:
\```

## 上下文启动清单

- 阅读 `AGENTS.md` 和 `README.md`。
- 确认当前上下文尚未建立 Blossom 会话。
- 通过运行时凭据完成一次新登录和 `/check` 校验。
- 完成工作后,不在本地记录令牌;按客户端流程清理会话。

README.md文档内容如下(代码块前的\要进行删除):

# Blossom 知识库

这是 Blossom 私有知识库的本地协作目录,保存连接约定、上下文操作规则和使用记录。远端 Blossom 服务是内容来源,本目录主要用于可追溯地记录本地协作过程。

## 目录结构

\```text
.
├── AGENTS.md   # 连接配置、登录和协作规则(含敏感凭据)
├── README.md   # 本说明
├── outline/    # 每次 Codex 运行的大纲记录
│   ├── README.md
│   └── YYYY-MM-DD-HHmmss-类别-标题.md
└── note/       # 使用记录
    ├── README.md
    └── YYYY-MM-DD-HHmmss-类别-标题.md
\```

## 开始使用

每个新的上下文聊天都必须先阅读 `AGENTS.md`,再使用 Blossom 技能的只读客户端重新登录。凭据只在运行时注入 `BLOSSOM_USERNAME` 和 `BLOSSOM_PASSWORD`;令牌只保留在活动客户端的内存中,不写入任何文件、日志或上下文压缩摘要。

服务器地址、用户名和密码仅记录在 `AGENTS.md`。上下文压缩恢复后,若原活动客户端仍存活则继续使用其内存会话;否则先重新登录,再发起任何 Blossom 请求。

## 大纲记录

每次运行 Codex 时,在处理第一个提问前先更新 `outline/README.md`,并在 `outline/` 创建新的大纲记录。大纲记录的命名规则与 `note/` 相同,详细索引见 [`outline/README.md`](outline/README.md)。

## 使用记录

所有使用记录放入 `note/`,并由 [`note/README.md`](note/README.md) 统一索引。文件名格式为:

\```text
YYYY-MM-DD-HHmmss-类别-标题.md
\```

示例:

\```text
2026-09-17-163831-配置-知识库初始化.md
\```

时间使用 `Asia/Shanghai`。记录应包含时间、类别、目的、操作、结果和后续;禁止写入密码、令牌、Authorization 请求头和完整 Cookie。

## 安全边界

`AGENTS.md` 含有明文连接凭据,已按本地私密配置处理。不要把它复制到笔记、公开文档、日志或对话中。当前知识库初始化只建立本地协作体系并验证登录,不执行 Blossom 远端内容修改。

使用方法

直接在Git仓库的目录下打开终端,然后启动Codex即可。启动之后可以在Codex中直接进行提问,它会优先根据Blossom的文档内容进行回答。如果知识库中没有相应的信息,则会先询问用户是否从互联网搜集资料。如果用户允许,则从互联网搜集相关资料并且整合,然后进行回答。

posted @ 2026-09-18 09:57  LogicField  阅读(7)  评论(0)    收藏  举报