前言
LLM 催生了 AI Agent 这类新物种——它们不再是简单的命令响应,而是一种能自己推理、规划、执行的实体。openJiuwen 正是为此而生的开源平台,它试图把 Agent 开发从'手工作坊'拉进工程化轨道。我花了一个下午,在私有服务器上把它跑了起来,并顺手做了个 Rust 编程导师,下面是整个过程的记录。
架构概览
在动手之前,先理清它的架构。openJiuwen 分成三层:
- 底层:对接各种 LLM(Pangu、Qwen、DeepSeek 等)和向量数据库、图数据库。这层决定了它能跟上模型迭代的节奏。
- 核心层:openJiuwen Core,是 Agent 的'大脑'。它内置 ReAct 和 Workflow 两种运行模式,管理上下文、记忆和工具调用。另外提供 Python SDK,供代码级精细化控制。
- 应用层:openJiuwen Studio——拖拽式可视化编排;openJiuwen Ops——负责监控、Prompt 管理和自动评测,让线上 Agent 不再是黑盒。
架构图中有一部分灰虚框,代表还在孵化中的功能模块,可见项目是有长期演进计划的。
(上面的图就是整体架构,我把关键部分标了出来。)
部署实战:Docker 一键起服
我用的是一台 x86 服务器,系统是 Linux。全程容器化,省去环境折腾。
docker version
docker-compose version
确认版本:Docker 20.10.x,Compose 1.29.x,没问题。
接着拉部署包。官方提供了打包好的脚本和配置,一条 wget 下来:
wget [部署包下载地址]
解压后看到 service.sh、docker-compose.yaml 和一堆配置文件,这就是启动骨架了。
unzip deployTool_0.1.3_amd64.zip
启动前,保险起见看看 Docker 服务状态:
sudo systemctl start docker
sudo systemctl status docker
active (running) 字样亮着,就可以执行启动脚本了:
./service.sh up
脚本会自动检查镜像、拉取缺失的,然后按顺序启动数据库、缓存、API 和前端。看到 Started 或 Up,说明各组微服务已经就绪。
默认端口是 3000,浏览器访问 https://你的IP:3000,会先进入登录页。可以邮箱注册,企业环境里也能接 LDAP 或 SSO。
登录后就是 Studio 主界面,侧栏放着智能体管理、工作流、模型、知识库等入口,跟常见的 SaaS 产品差不多,很容易上手。
接入模型:连通 GLM-5
平台自身不带模型,需要用外部 API。我选了智谱的 GLM-5,走兼容 OpenAI 的接口。
先去模型控制台注册、创建 Key。
拿到 Key 和 Base URL、模型名(比如 /maas/zhipuai/GLM-5)后,回到 openJiuwen 的'模型管理'页面,添加模型。
填好 Base URL、模型名和 API Key,顺便可以设一下 Token 上限和温度。然后跑个连通性测试——发一句 "Hello",如果返回绿色对勾,网络和鉴权就通了。
构建 Rust 编程导师
基础设施就绪,现在开始做 Agent。我想让这个 Agent 当 Rust 老师,得给它注入合适的'灵魂'。
新建一个智能体,命名为'Rust 编程导师'。进入配置页面,最核心的是系统提示词(System Prompt)。我把下面这段贴了进去:
你是一位资深的 Rust 编程学习老师,专业、耐心且严谨。你的核心任务是帮助学生高效、深入地学习 Rust 语言。
## 核心身份与原则
1. **专业严谨**:所有回答必须基于 Rust 官方规范和最佳实践,不编造内容,不提供错误信息。
2. **教学导向**:用清晰易懂的语言解释复杂概念,多用生活化比喻和代码示例辅助理解。
3. **循循善诱**:鼓励学生思考,引导他们自己发现问题,而不是直接给出答案。
4. **安全优先**:在代码审查中,特别关注内存安全、并发安全等 Rust 核心优势,强调避免未定义行为。
## 能力范围
你可以处理以下类型的问题:
1. **概念讲解**:解释所有权、借用、生命周期、Trait、模式匹配等核心概念。
2. **代码审查**:分析代码中的语法错误、逻辑问题、性能瓶颈和不符合 Rust 风格的地方,并给出具体的修改建议。
3. **学习指导**:根据学生的水平(入门/进阶/高级)提供学习路径、项目建议和刷题推荐。
4. **工具使用**:指导学生使用 Cargo、rustfmt、clippy 等 Rust 生态工具。
5. **生态介绍**:介绍常用的 crate(库)及其适用场景,如 serde, tokio, actix-web 等。
## 回答格式要求
1. **概念讲解**:
- 先用一句话概括核心定义。
- 用一个生活化的比喻帮助理解。
- 提供 1-2 个可运行的代码示例。
- 说明在实际开发中的应用场景和注意事项。
2. **代码审查**:
- 指出错误或问题的位置和原因。
- 提供修正后的代码。
- 解释修改的理由和背后的 Rust 设计思想。
3. **学习指导**:
- 分阶段给出学习建议(如入门 -> 进阶 -> 高级)。
- 推荐具体的学习资源(官方文档、书籍、课程、社区)。
- 提供 2-3 个适合当前水平的练手项目。
## 禁止行为
- 禁止回答与 Rust 无关的问题,应礼貌地引导用户提问 Rust 相关内容。
- 禁止提供不安全的代码示例,如 `unsafe` 块的滥用。
- 禁止使用过于晦涩的术语,必要时进行解释。
现在,请以 Rust 学习老师的身份,开始回答学生的问题。
openJiuwen 的提示词编辑器自带一个 AI 优化按钮,能帮你把提示词润色得更工整,我用了一下,感觉效果不错——它把结构理得更清了,但没有改动核心意图。
接着设置开场白,我用了类似的话术,告诉用户这个 Agent 能干嘛。在调试窗里试了几句,比如问'Rust 的所有权怎么理解?',返回的回答完全是按格式来的:先一句话概括,再打比方,然后给代码示例,最后讲应用场景。确实像个耐心的老师。
工作流演示:天气查询
除了对话型 Agent,openJiuwen 还能做确定性的任务流程。我搭了一个查询天气的工作流,它从用户输入拿城市名,调一个公开的天气 API,解析 JSON 返回温度和天气描述。
在可视化画布上拖出几个节点:开始 → HTTP 请求 → 数据转换 → 结束,配置好 API 地址和参数映射,一条流水线就成了。
把这个工作流挂到任一个 Agent 的工具集里,它就能在处理'今天北京天气怎么样'这类问题时,自动去调接口了。这正是 ReAct 模式与 Workflow 的配合之处:Agent 推理出需要调用工具,然后触发预先做好的严谨流程。
总结
这一趟下来,openJiuwen 给我最深的印象是'全'。从单次对话的 Agent 到多步骤工作流,可视化编排和 API 都齐了,私有化部署也顺滑。没有魔改 Docker,没有复杂的配置坑,对中小企业来说是个可落地的方案。
当然,它的 Ops 能力还在完善,部分监控和评估功能还没完全开源。但就目前来看,用它快速把大模型能力变成一个能跑在生产环境里的 Agent,算是一条务实路线。如果你也在考虑给业务塞个 AI 代理,openJiuwen 值得花一个下午试试。


