跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
TypeScriptNode.jsAI

ClawPanel v4.4.0 来了:AI 助手浮窗 + 非 OpenAI 模型兼容性修复

ClawPanel v4.4.0 版本在右下角新增了一个可拖拽、可调整大小的 AI 对话浮窗,支持模型选择和深色模式。同时修复了使用火山引擎、DeepSeek 等非 OpenAI 模型时因 developer 角色引发的“Message ordering conflict”错误,通过补丁源码、注入 compat 标志和强制 reasoning=false 实现三重保护。此外优化了技能中心在小屏幕上的布局,防止开关按钮被遮挡。更新方式简单,Docker 或原生安装后 git pull 即可,非 OpenAI 用户需额外保存一次配置。

虚拟内存发布于 2026/6/13更新于 2026/10/864 浏览
ClawPanel v4.4.0 来了:AI 助手浮窗 + 非 OpenAI 模型兼容性修复

ClawPanel v4.4.0 来了:AI 助手浮窗 + 非 OpenAI 模型兼容性修复

ClawPanel 是个开源的 OpenClaw 管理面板,比官方控制台更直观。支持 20+ 通道、多模型、插件、定时任务,GitHub 地址:https://github.com/zhaoxinyi02/ClawPanel。

v4.4.0 不算大版本,但加了一个很实用的 AI 助手浮窗,还解决了一个困扰非 OpenAI 模型用户的兼容问题。顺便优化了技能中心的布局。

AI 助手浮窗

现在 ClawPanel 右下角多了个浮窗对话框,可以随时和配置好的模型聊天。拖拽标题栏就能移动,右下角有调整大小的手柄,还能一键最大化 / 还原。模型选择下拉框能切换不同的提供者和模型。深色模式也自适应。

技术上,前端是 AIAssistant.tsx,纯 React 写的,拖拽基于 mousedown/move/up 事件链,最大化时会把之前的位置和大小记下来,还原回去。代码不复杂,大概长这样:

// 拖拽
const onDragStart = useCallback((e: React.MouseEvent) => { 
    dragging.current = true; 
    dragOffset.current = { x: e.clientX - pos.x, y: e.clientY - pos.y }; 
}, [pos]); 

const [isMaximized, setIsMaximized] = useState(false); 
const savedPosSize = useRef({ x: 0, y: 0, w: DEFAULT_W, h: DEFAULT_H }); 

后端 /api/ai/chat 接口负责转发对话历史给 OpenClaw 模型 API,返回结果:

router.post('/ai/chat', auth, async(req, res)=>{
    const{ messages, providerId, modelId }= req.body;
     response = (messages, providerId, modelId);
    res.({ :, : response });
});
const
await
callModel
json
ok
true
reply

非 OpenAI 模型兼容性修复

这个问题比较隐蔽。如果你用火山引擎的 Doubao 或者 DeepSeek 这些兼容 OpenAI 协议的模型,很可能会碰到这个报错:

Message ordering conflict - please try again. If this persists, use /new to start a fresh session. 

底层实际是 invalid value: developer (expected one of: system, user, assistant)。原因是 OpenClaw 依赖的 @mariozechner/pi-ai 库在启用推理功能时,会把系统提示词的角色设成 developer——这是 OpenAI 自己 o 系列模型用的角色,其他厂商不认识。

解决起来用了三层保护:

  1. 直接改 pi-ai 源码:把 openai-completions.js 里生成角色的逻辑改成永远用 system。最直接,但下次库升级可能会被覆盖。
  2. 注入 compat 标志:保存配置时,自动检查如果不是 api.openai.com 的提供商,就给每个模型的 compat 里加 supportsDeveloperRole: false。这样告诉 pi-ai 别用 developer 角色。
  3. 设置 reasoning=false:根本不让模型启用推理功能,也就不会触发那套逻辑。

三层下来,即使某个环节失效,还有兜底。实际上更改 pi-ai 源码的补丁就能解决问题,后面两层是为了防止配置被覆盖或还原。

具体代码:

// 源码补丁:强制 system 角色
const role ="system"; // patched: always use system role for compatibility
function patchModelsJsonCompat(){
    const modelsPath = path.join(ocDir,'agents','main','agent','models.json');
    const data =JSON.parse(fs.readFileSync(modelsPath,'utf-8'));
    for(const[, prov]of Object.entries(data?.providers ||{})){
        const isNativeOpenAI =(prov.baseUrl ||'').includes('api.openai.com');
        if(!isNativeOpenAI){
            for(const m of prov.models){
                if(!m.compat) m.compat ={}; 
                m.compat.supportsDeveloperRole =false;
            }
        }
    } 
    fs.writeFileSync(modelsPath,JSON.stringify(data,null,2));
}

技能中心布局小修

之前技能和插件卡片的开关按钮在小屏幕上会被挤出去,需要横滚才能看到。现在加了个 shrink-0,确保按钮永远不会被压缩,同时调整了 flex 布局。

<div className="flex items-center gap-2 shrink-0 ml-2"> 
    <button onClick={() => toggleSkill(skill.id)} className="shrink-0"> 
        {skill.enabled ? <ToggleRight size={36} /> : <ToggleLeft size={36} />} 
    </button> 
</div>

如何更新

Docker 用户:

cd ClawPanel 
git pull 
docker compose up -d --build

原生安装:

cd ClawPanel 
git pull 
npm run build --prefix web 
npm run build --prefix server 
# 然后重启 ClawPanel 服务

火山引擎 / DeepSeek 用户注意:更新后,进系统配置 → 模型配置保存一次,触发自动兼容修复,再重启网关。


相关链接:

  • GitHub:https://github.com/zhaoxinyi02/ClawPanel
  • 完整更新日志:CHANGELOG

ClawPanel — 比官方控制台更强大的 OpenClaw 可视化管理工具。本项目仅供学习研究使用,严禁商用。

目录

  1. ClawPanel v4.4.0 来了:AI 助手浮窗 + 非 OpenAI 模型兼容性修复
  2. AI 助手浮窗
  3. 非 OpenAI 模型兼容性修复
  4. 技能中心布局小修
  5. 如何更新
  6. 然后重启 ClawPanel 服务

更多推荐文章

查看全部
  • AI Agent 生产级框架实战:架构设计与核心实现
  • Python 进阶与高级语法详解
  • C++ 搜索引擎项目实战:日志系统与 Server 入口详解
  • OpenAI Whisper 离线部署与本地化语音识别应用
  • 2024 中国“大模型 + 智能客服”最佳实践案例 TOP10
  • Android Framework 核心架构与源码深度解析
  • 双指针算法:从移动零到复写零
  • GitHub 学生认证指南:VS Code 与 Copilot 教育权益获取
  • OpenClaw 安装与飞书机器人接入教程
  • C++11 核心新特性详解:初始化、声明与移动语义
  • 微信小程序 Python 后端大学生心理健康服务系统设计
  • AgentScope Java 智能体开发指南
  • Ansible 批量部署 Nginx 实战指南
  • AIGC 试用 47:AI 辅助软件开发流程实践
  • AIOps 实践:利用 Dify 与 LangBot 构建飞书智能体机器人
  • jQuery WebUI Popover 插件快速入门与实战
  • 大模型会取代程序员吗?哪些岗位风险最高
  • 中国人工智能大模型技术白皮书核心内容解析
  • 6 年自研纯 C# UI 引擎 XchyUI 轻量跨平台架构解析
  • AI 对话平台前端开发实战:从零构建聊天界面

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online