本指南介绍在 MacOS 系统采用本地方式安装 openJiuwen。本地高级安装提供两种方法:
- 方法一:使用一键安装部署脚本:自动完成大部分安装和配置工作,简化安装流程,适合快速部署。
- 方法二:手动安装全部依赖:需要手动安装和配置所有依赖服务,适合需要灵活调整配置的开发者。
一、环境准备
请确保机器满足以下要求:
-
硬件:
- CPU:最低 2 核,推荐 4 核及以上
- RAM:最低 4GB,推荐 8GB 及以上
-
操作系统:MacOS14.0(Sonoma)及以上
二、安装方法
方法一:使用一键安装部署脚本
一键安装脚本可以自动完成基础工具检查、代码拉取、环境配置和服务启动等步骤,大幅简化安装流程。
1. 获取安装脚本
- 下载 安装包脚本,安装包脚本包含以下文件:
setup.sh:主安装脚本,串联整个安装流程check_curl.sh:检查并安装 curlcheck_git.sh:检查并安装 Gitcheck_nodejs.sh:检查并安装 Node.js(通过 NVM)check_python.sh:检查并安装 Python 3.11fetch_codes.sh:克隆 agent-studio 代码仓库
2. 运行安装脚本
-
进入脚本目录,赋予执行权限:
chmod +x *.sh -
运行主安装脚本:
# 默认使用 MySQL 数据库 ./setup.sh # 或指定使用 SQLite 数据库 ./setup.sh --db_type=sqlite -
脚本会自动执行以下步骤:
- 检查并安装基础工具(curl、git、nodejs、python)
- 拉取 agent-studio 代码仓库
- 生成 AES 密钥
- 配置 .env 文件(根据 --db_type 参数设置数据库类型)
- 部署后端服务(创建虚拟环境、安装依赖、启动服务)
- 部署前端服务(安装依赖、启动服务)
-
脚本执行完成后,会输出后端和前端服务的PID、日志文件路径、前端页面访问地址,在浏览器中访问输出的前端页面访问地址即可进入openJiuwen界面。

3. 脚本常用参数说明
# 查看前后端服务状态和访问地址
./setup.sh --status
# 停止后端和前端服务
./setup.sh --stop
# 重启后端和前端服务
./setup.sh --restart
# 查看脚本支持的所有参数
./setup.sh --help
方法二:手动安装全部依赖
进行正式安装前需先完成依赖的安装,再执行源码获取和安装等后续步骤。
1. 安装依赖
1.1. 安装 Git
-
在 “终端” 中运行以下命令进行安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # 若未安装Homebrew brew install git -
安装完成后,在“终端”中输入:
git --version,若安装成功会输出 git 版本号。
1.2. 安装 Node.js 和 npm
- 前往 Node.js官网 下载Node.js 20.0及以上的MacOS安装包,双击安装包按照提示完成安装。
- 安装完成后,打开 “终端”,分别输入:
node -v与npm -v,若安装成功会输出 node 与 npm 版本号。
1.3. 安装 Python 和 uv
-
运行以下命令下载并安装pyhon3.11
brew install python@3.11 -
安装完成后,打开 “终端”,输入:
python3 --version,若安装成功会输出 python 版本号。 -
打开 “终端”,安装
uv:brew install uv -
输入:
uv --version,若安装成功会输出 uv 版本号。
1.4. 安装 MySQL(可选组件)
- SQLite vs MySQL:
- SQLite 无需额外安装和配置,适合开发和测试环境,但功能受限(如不支持高并发写入、无用户权限管理等)。
- MySQL 功能更完善,能够满足复杂场景的需求,因此在实际工程和生产环境中更推荐使用。
1.4.1 SQLite
- 说明:默认使用 SQLite,只需
.env.example保持DB_TYPE为sqlite即可直接启动后端服务,无需额外安装或配置。
1.4.2 MySQL
-
说明:若需使用 MySQL,请将
.env.example中的DB_TYPE改为mysql,并按照下列步骤完成 MySQL 的安装与配置。 -
打开 “终端”,运行以下命令安装MySQL:
brew install pkg-config # 若未安装pkg-config(用于发现mysql) brew install mysql -
安装完成后,打开 “终端”,运行以下命令启动并登录 MySQL:
brew services start mysql mysql -u root -
在 MySQL 中执行以下命令创建数据库:
说明:
your_user_name、your_password可自行设置。CREATE DATABASE openjiuwen_agent; CREATE DATABASE openjiuwen_ops; CREATE USER 'your_user_name'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON openjiuwen_agent.* TO 'your_user_name'@'localhost'; GRANT ALL PRIVILEGES ON openjiuwen_ops.* TO 'your_user_name'@'localhost'; FLUSH PRIVILEGES;
1.5. Milvus(可选组件)
-
说明:
.env.example默认使用 Chroma,只需保持INDEX_MANAGER_TYPE为chroma即可直接启动后端服务,无需额外安装或配置;若需使用 Milvus,请将.env.example中的INDEX_MANAGER_TYPE改为milvus,并参考 如何启用记忆及知识库功能 完成 Milvus 的安装配置。 -
Chroma vs Milvus:
- Chroma 无需额外安装,配置简单,只需要获取向量模型,适合快速体验,适合开发和测试环境。 向量模型的获取可参考 如何获取向量模型。
- Milvus 功能更完善,能够满足复杂场景的需求,因此在实际工程和生产环境中更推荐使用。
2. openJiuwen 安装
2.1. 获取源码
-
请确认已获取 openJiuwen 代码仓 的访问权限,若无权限请及时申请。
-
在 gitcode 代码仓按照图示步骤 2 获取 Git 的全局配置,输入以下命令配置 Git:
git config --global user.name your_username git config --global user.email your_useremail
-
按照图示步骤 3 获取个人访问令牌,克隆代码时需要输入 gitcode 账号以及个人访问令牌。
-
打开 “终端”,在安装目录下执行以下命令克隆源码并进入源码根目录:
# 安装过程需要多次 git 操作,建议配置凭证存储,避免认证错误。 git config --global credential.helper store git clone https://gitcode.com/openJiuwen/agent-studio.git cd agent-studio
2.2. 生成 AES 密钥(可选)
-
如果不需要对关键字段加密存储,可跳过当前步骤
-
运行以下命令生成密钥:
cd scripts bash build_AES_master_key.sh -
脚本执行完,会将密钥打屏输出,可按需使用,推荐作为环境变量使用并另行保存。
export SERVER_AES_MASTER_KEY_ENV=your_aes_key -
注意,AES密钥需要保持稳定,中途更换密钥会导致已加密数据无法解密。
2.3. 启动 openJiuwen
-
在源码根目录打开 “终端”;
-
复制
.env文件并打开:cp .env.example .env open .env -
请在 .env 文件中根据实际情况修改以下变量的值(勿覆盖其他变量):
说明:DB_HOST、DB_PORT 等变量的值可替换为实际数据库信息,DB_USER、DB_PASSWORD 为上文新建的 MySQL 用户与密码。如果密码中包含特殊字符,可参考 特殊字符转义表 将特殊字符替换为 URL 编码。
OBS 配置:单机/本地部署且不使用对象存储时,OBS 相关项(OBS_BUCKET、OBS_SERVER 等)在
.env.example中已留空,复制为.env后无需填写;仅在使用对象存储(如分布式部署)时再填写真实值,详见 分布式部署安装。# 配置数据库(样例) DB_HOST=localhost DB_PORT=3306 DB_USER=your_user_name DB_PASSWORD=your_password # 向量索引类型配置(样例,可选值:chroma、milvus,默认值:chroma) INDEX_MANAGER_TYPE=chroma # 记忆数据存储路径(样例,默认值:memory-data,可根据实际情况修改) MEMORY_DATA_PATH=memory-data # 配置Milvus(样例) MILVUS_HOST=127.0.0.1 MILVUS_PORT=19530 MILVUS_COLLECTION_NAME=memory_vector # 配置代码沙箱服务(样例,启动代码执行沙箱服务详情请见[问题二:如何启用沙箱功能]) CODE_SANDBOX_URL=http://localhost:8188/run # 配置插件服务(样例,启动插件服务详情请见[问题三:如何启用插件服务]) VITE_PLUGIN_SERVICE_URL=http://localhost:8185 VITE_PLUGIN_CONFIG_PATH=/config.json变量说明可参考如下表格,如需选择 Milvus 启用记忆功能,请参考 如何启用记忆及知识库功能,如果选择 Chroma 启用记忆功能,只需要获取向量模型,可参考 如何获取向量模型。
变量名 变量说明 配置样例 DB_HOST 数据库的主机地址 localhostDB_PORT 数据库的端口号 3306DB_USER 数据库的用户名 your_user_nameDB_PASSWORD 数据库的密码 your_passwordINDEX_MANAGER_TYPE 向量数据库类型,可选值:chroma、milvus,默认值:chroma chromaMEMORY_DATA_PATH 记忆数据存储路径,默认值:memory-data memory-dataMILVUS_HOST Milvus服务的主机地址 127.0.0.1MILVUS_PORT Milvus服务的端口 19530MILVUS_COLLECTION_NAME Milvus服务的数据库名 memory_vectorCODE_SANDBOX_URL 代码沙箱服务地址 http://localhost:8188/runVITE_PLUGIN_SERVICE_URL 插件服务地址 http://localhost:8185VITE_PLUGIN_CONFIG_PATH 前端使用的插件服务配置文件 /config.json -
打开一个 “终端”,在源码根目录下,运行以下命令启动后端服务,并耐心等待:
cd backend uv venv uv sync -
执行数据库版本标识命令,确认当前数据库版本:
# Agent数据库 alembic -n alembic_mysql_agent stamp head alembic -n alembic_mysql_ops stamp head # SQLite数据库 alembic -n alembic_sqlite_agent stamp head alembic -n alembic_sqlite_ops stamp head详细说明:以上命令用于标识当前数据库已是最新版本,方便后续进行数据库操作。需要分别对agent和ops数据库执行。如使用MySQL需执行alembic -n alembic_mysql_agent stamp head和alembic -n alembic_mysql_ops stamp head,关于alembic的使用方法参考DATABASE_MIGRATION_DEVELOPMENT_GUIDE.md
注意:如果持续卡死超过 20 分钟,请按下 “Ctrl + C”,尝试修改本目录下 “pyproject.toml” 文件中 [[tool.uv.index]] 的 url 值,切换成其他可用源后,再重新执行 “uv sync”。
注意:若执行
uv sync失败,可尝试:uv sync --native-tls强制使用系统原生TLS库(解决HTTPS下载兼容问题) -
创建日志目录并启动后端服务
mkdir logs mkdir logs/run source .venv/bin/activate python main.py注意:部分用户在执行python main.py可能会遇到No Module named 'greenlet'的问题,请移步 FAQ 查看解决方法
启动成功后,会输出 "Application startup complete"。
说明:若需代码执行沙箱服务,可参考 如何启用沙箱功能 完成沙箱服务启动和配置。若需插件服务,可参考 如何启用插件服务 完成插件服务启动和配置。
-
再打开一个 “终端”,在源码根目录下,运行以下命令安装依赖:
cd frontend npm install注意:图示漏洞为 npm 官方已知漏洞,不影响后续运行。

-
运行以下命令启动前端服务:
npm run dev -
启动成功后会输出:
Local:本地访问地址
Network:网络访问地址
2.4. 访问系统
-
若在本地查看,control+单击 本地访问地址 ,接着单击打开链接,可在本地浏览器查看到 openJiuwen 的界面;或者复制上述 本地访问地址 到浏览器地址栏,按下“回车键”将看到 openJiuwen 的界面。
-
若在外部机器查看,复制上述 网络访问地址 到浏览器地址栏,按下“回车键”将看到 openJiuwen 的界面。
三、常见问题(FAQ)
问题一:如何启用记忆及知识库功能
记忆功能的体验与大模型的参数规模相关。
记忆及知识库功能支持 Chroma 和 Milvus 两种向量数据库,如果选择 Milvus,MacOS 系统推荐使用 Docker 安装,具体安装步骤可参考下文。
1. 安装 Docker Desktop
-
下载:访问 Docker Desktop 官网,点击 “Download for Mac” 获取 .dmg 安装包。;
-
双击下载的文件,将 Docker 图标 拖拽到 Applications 文件夹;
-
打开 Launchpad,找到并启动 Docker 应用;
-
首次运行时,系统会提示输入 macOS 密码以授权安装虚拟机组件,点击 OK 继续;
-
首次启动需等待 Docker 完成初始化(下载基础镜像,约需几分钟)。
-
至此 Docker Desktop 安装完成。
说明:若安装过程中出现报错,请参考 Docker Desktop 官方安装指导。
2. 启动 Milvus
-
在 “终端” 中执行以下命令,将在当前目录下保存 “standalone_embed.sh” 脚本
curl -fsSL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh -
在 “终端” 执行以下命令拉取镜像:
# x86 架构 docker pull swr.cn-north-4.myhuaweicloud.com/openjiuwen/milvusdb/milvus-amd64:v2.6.2# arm 架构 docker pull swr.cn-north-4.myhuaweicloud.com/openjiuwen/milvusdb/milvus-arm64:v2.6.2 -
将 “standalone_embed.sh” 文件内的 milvus 官方镜像名(比如:
milvusdb/milvus:v2.6.7) 内容修改为 对应的镜像名(arm机器镜像名:swr.cn-north-4.myhuaweicloud.com/openjiuwen/milvusdb/milvus-arm64:v2.6.2)。 -
修改完成后,在 “终端” 执行以下命令运行,将 Milvus 作为 Docker 容器启动:
bash standalone_embed.sh start -
启动后,输入
docker ps -a命令可查看到名为 Milvus-standalone 的 docker 容器在19530端口启动。说明:若在部署过程中出现问题可参考 Milvus官方指导文档
-
若要停止 Milvus,请执行以下命令
bash standalone_embed.sh stop -
若启动之后使用记忆或知识库时出现如下报错信息
""Milvus 连接失败: <MilvusException: (code=2, message=Fail connecting to server on milvus-standalone:19530, illegal connection params or server unavailable)>"需修改.env中的MILVUS_HOST配置,与启动Milvus服务的IP保持一致
3. 获取向量模型
记忆及知识库功能的运行依赖向量模型,以下流程以华为云为例,介绍向量模型的获取步骤。
-
点击 链接 进入模型广场。
-
体验记忆及知识库功能请点击 “向量模型”,可根据需要自行选择向量模型,以下内容以 BGE-M3 为例。

-
找到合适的向量模型后点击推理调用,进入模型信息获取界面。

-
记录API地址、model参数。
-
点击 "API Key 管理",按照官方界面引导获取 API Key。
问题二:如何启用沙箱功能
若要使用代码插件或在工作流中运行代码节点,需要先启用沙箱服务,按以下步骤操作:
-
配置沙箱依赖环境
沙箱服务通过统一配置指定执行代码时使用的 Python、JavaScript 解释器及依赖包。若不配置,将使用系统默认的 Python 与 JavaScript 环境。
依赖配置文件路径:
- Python:
sandbox_server/sandbox/openjiuwen_sandbox_server/conf/dependency/pyproject.toml - JavaScript:
sandbox_server/sandbox/openjiuwen_sandbox_server/conf/dependency/package.json
在以上文件中配置好解释器版本与依赖列表后,在
sandbox_server/sandbox目录执行以下命令构建并安装依赖环境:python -m openjiuwen_sandbox_server.app.build_dependency默认安装目录为
/sandbox/dependencies。若需指定其它目录,请在执行上述命令前设置环境变量DEPENDENCY_DIR。 - Python:
-
启动沙箱服务
目前在 MacOS 平台上仅支持 local 执行模式,即代码在宿主机上直接执行。参考
sandbox_server/sandbox/.env.example,在sandbox_server/sandbox目录下创建.env文件,示例:HOST=0.0.0.0 PORT=5001 ENABLE_LINUX_SANDBOX=false配置完成后,执行
sandbox_server/sandbox/openjiuwen_sandbox_server/server.py启动沙箱服务。 -
启动沙箱网关服务
参考
sandbox_server/gateway/.env.example,在sandbox_server/gateway目录下创建.env文件,示例:HOST=0.0.0.0 PORT=8188 SANDBOX_SERVER_URL=http://localhost:5001/runHOST与PORT为网关服务监听地址与端口;SANDBOX_SERVER_URL为第 2 步中已启动的沙箱服务运行地址。然后执行
sandbox_server/gateway/openjiuwen_sandbox_gateway/server.py启动沙箱网关服务。 -
配置应用侧网关地址
在项目的
.env中配置沙箱网关调用地址,例如:CODE_SANDBOX_URL=http://localhost:8188/run。
问题三:如何启用插件服务
若要配置插件,需开启插件服务,需要进行如下操作:
-
参考
plugin_server/openjiuwen_plugin_server文件,创建所需的插件,然后启动插件服务,即运行plugin_server/openjiuwen_plugin_server/run_restful.py脚本,其中uvicorn.run(app, host="0.0.0.0", port=8185)定义了插件服务的 IP 和端口。 -
启动插件服务后请在
.env文件中配置插件服务的路径,例如:VITE_PLUGIN_SERVICE_URL=http://localhost:8185
问题四:在后端启动时出现No Module named 'greenlet'应该怎么解决?
部分Apple Silicon芯片的Mac上的python会存在存在兼容问题,标准库中没有greenlet包。可以按如下方法解决:
# 首先需要离开虚拟环境(如不在虚拟环境中可跳过此步)
deactivate
# 向虚拟环境中添加greenlet
uv add greenlet
# 接着再次进入虚拟环境完成接下来的操作
source .venv/bin/activate
问题五:特殊字符转义表
| 字符 | URL编码 | 字符 | URL编码 | 字符 | URL编码 | 字符 | URL编码 | 字符 | URL编码 |
|---|---|---|---|---|---|---|---|---|---|
| 空格 | %20 | " | %22 | # | %23 | % | %25 | & | %26 |
| ( | %28 | ) | %29 | + | %2B | , | %2C | / | %2F |
| : | %3A | ; | %3B | < | %3C | = | %3D | > | %3E |
| ? | %3F | @ | %40 | \ | %5C | | | %7C | - | - |
问题六:本地安装为何默认使用http协议而非https协议
在本地安装方式下,系统默认通过HTTP协议进行通信。这一设计主要考虑到本地环境通常用于开发与测试,避免强制要求证书配置,从而降低初始使用门槛。 相比之下,Docker安装方式已预置了HTTPS支持,用户无需额外配置即可直接使用安全通信。 如需在本地环境启用HTTPS,开发者需根据实际部署需求自行完成证书生成与配置。