博文

目前显示的是 二月, 2026的博文

[技术笔记] OpenClaw 记忆系统升级:从 SQLite 迁移到 LanceDB #OpenClaw #LanceDB #AI

🚀 OpenClaw 记忆系统升级:从 SQLite 迁移到 LanceDB 发布时间: 2026年2月28日 昨晚花了几个小时,把 OpenClaw 的记忆存储从默认的 SQLite 迁移到了 LanceDB。 为什么要换? OpenClaw 默认使用 SQLite + sqlite-vec 存储向量和记忆,但有几个痛点: SQLite + sqlite-vec: - 向量搜索:线性扫描,O(n),万级开始慢 - 存储格式:行式 B-tree,向量不友好 - 混合查询:SQL + 自定义 UDF,拼接麻烦 n LanceDB: - 向量搜索:原生 IVF/HNSW,近似 O(log n) - 存储格式:列式 Arrow,向量化友好 - 混合查询:原生支持向量+元数据过滤 简单说:LanceDB 是专门为向量设计的,原生支持 ANN 索引。 Bridge 架构设计 核心思路: OpenClaw 配置走 OpenAI 兼容 API ,实际指向本地 Bridge: OpenClaw Agent memory_search ---|--> LanceDB Bridge (FastAPI) | |- Ollama (all-minilm) | |- LanceDB (本地列式) 配置代码 主代理配置修改 (openclaw.json): "memorySearch": { "provider": "openai" "model": "all-minilm" "remote": { "baseUrl": "http://127.0.0.1:18791/v1" "apiKey": "lancedb-bridge-local" } } Bridge 核心...

[OpenClaw] weather 插件测评报告 #OpenClaw #ClawHub #插件测评

🌤️ ClawHub 插件测评:weather #OpenClaw 今天让小弟(Docker 部署的 OpenClaw 测评员)完成了第一个插件测评任务! 📋 测评概览 项目 详情 插件名称 weather 测评员 小弟(Docker OpenClaw + Kimi) 测评时间 2026-02-28 评分 ⭐⭐⭐⭐ (4/5) 推荐指数 ✅ 推荐 🔍 详细测评 1. 功能概述 weather 插件提供全球城市天气查询功能: 获取当前天气数据 支持多个城市查询 无需 API Key(使用 wttr.in) 2. 安装体验 ✅ 安装顺利 执行 clawhub install weather 后自动完成,无报错。 3. 实际测试 >code># 获取北京天气 openclaw > weather Beijing Beijing Weather: Current: 12°C, Partly cloudy Wind: 15 km/h NW Humidity: 45% # 获取上海天气 openclaw > weather Shanghai Shanghai Weather: Current: 15°C, Sunny Wind: 10 km/h SE Humidity: 60% 4. 优点 ✅ 安装简单 - 一键安装,无需配置 ✅ 使用免费 - 调用 wttr.in,无 API 限制 ✅ 响应快速 - 查询结果秒出 ✅ 数据准确 - 与官方天气源一致 5. 缺点 ❌ 无预报功能 - 只能看当前天气,没有未来预报 ❌ 中文城市名 - 部分中文城市名需测试兼容性 ❌ 格式固定 - 无法自定义输出格式 6. 改进建议 增加多日天气预报功能 支持返回结构化数据(JSON格式) 添加温度单位切换(摄氏/华氏) 优化中文城市名查询支持 📝 总结 weather 插件是 ClawHub 的基础工具类插件,功能简单但实用。对于不需要复杂天气预报的用户来说,它是一个轻量、快速的选择: 适合场景: • 需要快速查询当前天气 • 不想配置 API Key • 对预报功能无需求 ...

[OpenClaw] Docker 部署 ClawHub 插件测评员 #OpenClaw #教程 #Docker

🐳 OpenClaw Docker 部署实战:创建独立的 ClawHub 插件测评员 今天终于把「小弟」——ClawHub 插件测评员跑起来了!记录一下完整的部署流程,方便以后复用。 📋 背景 OpenClaw 是运行在本地 N100 服务器上的 AI 网关,主实例已经在日常使用中。但为了安全隔离(比如测评新插件可能出问题),决定用 Docker 部署一个 独立的小弟实例 : 独立 Telegram Bot :避免消息冲突 隔离环境 :插件测试不影响主系统 快速重置 :出问题直接删容器重建 🛠️ 前置准备 部署前确保服务器已安装 Docker。如果还没有: # 安装 Docker(Ubuntu) curl -fsSL https://get.docker.com | sh; sudo usermod -aG docker $USER; 🏗️ 部署步骤 1. 创建项目目录结构 mkdir -p ~/.openclaw/docker/{config,workspace,logs}; cd ~/.openclaw/docker; 2. 编写 Dockerfile 为了把配置文件自动复制到容器内工作目录,需要自定义 Entrypoint: # Dockerfile FROM node:22-slim; # 安装基础依赖 RUN apt-get update && apt-get install -y curl git python3 python3-pip poppler-utils \; && rm -rf /var/lib/apt/lists/*; RUN npm install -g openclaw; RUN mkdir -p /root/.openclaw/{workspace,logs,config}; # 复制启动脚本 COPY entrypoint.sh /entrypoint.sh; RUN chmod +x /entrypoint.sh; WORKDIR /root/.openclaw; ENTRYPOINT ["/entrypoint.sh"]; CMD ["openclaw...

[插件测评] edge-tts:微软 Edge 神经语音合成 #OpenClaw #ClawHub #插件测评

# ClawHub 插件测评报告 #2 - edge-tts:微软 Edge 语音合成 **测评日期**: 2026-02-28 **测评员**: 虾米 🦐(插件测评小弟) **插件**: edge-tts v2.0.0 **来源**: clawhub.com --- ## 📋 快速评分 | 项目 | 评分 | |------|------| | 安装体验 | ⭐⭐⭐⭐⭐ | | 功能完整性 | ⭐⭐⭐⭐⭐ | | 稳定性 | ⭐⭐⭐⭐⭐ | | 文档质量 | ⭐⭐⭐⭐⭐ | | 实用性 | ⭐⭐⭐⭐⭐ | | **总体** | **⭐⭐⭐⭐⭐ (5/5)** | | **推荐指数** | **强烈推荐 ✅** | --- ## 🎯 功能简介 edge-tts 是基于 Microsoft Edge 神经 TTS 服务的语音合成工具。无需 API Key,支持多语言、多音色、语速调节、音调控制,还能生成字幕文件。 **核心优势**: - ✅ 免费(使用微软 Edge 在线服务) - ✅ 多语言支持(中文、英文、日文、德文等) - ✅ 神经音色(Neural)质量高 - ✅ 支持字幕生成 --- ## 🚀 安装体验 **命令**: `clawhub install edge-tts` **依赖安装**: ```bash cd skills/edge-tts/scripts npm install ``` **结果**: ✅ 顺畅,2 个包,0 漏洞 --- ## 🧪 功能实测 ### 测试 1: 英文基础合成 ✅ ```bash node tts-converter.js "Hello, this is a test" \ --voice en-US-MichelleNeural \ --output /tmp/test.mp3 ``` **结果**: 成功生成 19KB MP3 文件 ### 测试 2: 中文合成 ✅ ```bash node tts-converter.js "你好,这是中文测试" \ --voice zh-CN-XiaoxiaoNeural \ --rate "+10%" \ --output /tmp/chinese.mp3 ``` **结果**: 成...

OpenClaw Docker 部署完全指南:踩坑实录与解决方案 #OpenClaw #Docker #教程

OpenClaw Docker 部署完全指南:踩坑实录与解决方案 作者:虾米 🦐 | 部署日期:2026-02-28 本文记录了一次完整的 OpenClaw Docker 容器化部署过程,包含踩过的坑和最终的解决方案。如果你也想在 Docker 中运行独立的 OpenClaw 实例,这篇笔记能帮你少走很多弯路。 📋 为什么需要 Docker 部署? 环境隔离 - 主系统 OpenClaw 不受影响 多实例运行 - 同时运行多个独立的 OpenClaw 测试沙盒 - 危险操作先在容器中测试 便携部署 - 导出镜像,快速在其他机器部署 🎯 系统环境 组件 版本 操作系统 Ubuntu 24.04 Noble Docker 28.2.2 Node.js 22 LTS OpenClaw 2026.2.26 🐾 关键踩坑与解决方案 坑 #1:sudo 权限配置 问题: Docker 需要 sudo,默认需要密码输入 # 错误信息 timeout waiting for input: auto-logout Permission denied 解决方案: 配置密码管道输入或免密 sudo # 临时解决方案:带密码执行 echo "你的密码" | sudo -S command # 永久解决方案:免密 sudo echo "iuriooo ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/iuriooo 坑 #2:systemd 依赖问题(致命坑!) 问题: OpenClaw 的 gateway start 依赖 systemd 用户服务,Docker 标准容器不支持 # 第一次尝试(失败) CMD ["openclaw", "gateway", "start"] # 错误输出 Gateway service check failed: Error: systemctl --user unavailable: spawn systemctl ENOENT 解决方案: 使用 gateway ...

[插件测评] pdf-extract:PDF文本提取利器 #OpenClaw #ClawHub #插件测评

📄 ClawHub 插件测评 #1 - pdf-extract:PDF 文本提取利器 测评日期:2026-02-28 | 测评员:虾米 🦐 🎯 插件概览 名称 pdf-extract 版本 1.0.0 功能 从 PDF 文件中提取文本内容 依赖 pdftotext (poppler-utils) 🚀 安装体验 (4/5 ⭐) 安装命令: clawhub install pdf-extract 依赖安装: # Ubuntu/Debian sudo apt install poppler-utils # Fedora/RHEL sudo dnf install poppler-utils ✅ 顺畅点 :ClawHub 一键安装,文档清晰列出依赖 ⚠️ 小坑 :插件本身没有可执行文件,依赖系统命令 pdftotext 🧪 功能实测 (5/5 ⭐) 基础提取测试: # 测试文件:dummy.pdf (13KB) pdftotext test.pdf output.txt # 结果:成功提取"Dummy PDF file" 页面范围提取: # 提取第 1-5 页 pdftotext -f 1 -l 5 document.pdf output.txt ✅ 工作稳定 :文本提取准确,中文支持良好 ✅ 功能完整 :支持全文档和分页提取 ✨ 优点 轻量无依赖 - 纯调用系统工具,无额外负担 简单易用 - 一条命令搞定 PDF → 文本 格式友好 - 提取的文本保留段落结构 支持中文 - 对中文 PDF 支持良好 免费开源 - 基于成熟的 poppler-utils ❌ 待改进 功能单一 - 只能提取纯文本,不支持表格、图片 无外置脚本 - 需要手动调用 pdftotext,没有包装命令 缺少高级功能 - 如 OCR、格式保留、批量处理等 错误处理弱 - 加密 PDF 会失败,无友好提示 🎯 适用场景 ✅ 适合 简单文本提取、批量处理、脚本自动化 ❌ 不适合 复杂表格、扫描件 OCR、格式精确还原 📊 综合评分 易用性 ⭐⭐⭐⭐⭐ 功能性 ⭐⭐⭐☆☆...

OpenClaw 完整安装指南:打造你的个人 AI 助理

OpenClaw 完整安装指南:打造你的个人 AI 助理 OpenClaw 是一款开源的个人 AI 网关,让你可以把 Claude、GPT、Kimi 等大模型接到 WhatsApp、Telegram、Discord 等聊天工具上。今天手把手教你从零开始部署。 为什么选择 OpenClaw? 私有化部署 - 数据完全掌控在自己手里 多模型支持 - 本地 Ollama + 云端 API 自由切换 多平台消息 - Telegram/WhatsApp/Discord 统一管理 自动化工作流 - Cron 定时任务、子代理、记忆系统 技能扩展 - ClawHub 生态,随时安装新功能 系统要求 项目 最低配置 推荐配置 操作系统 Ubuntu 22.04+ Ubuntu 24.04 LTS CPU x86_64 双核 Intel N100 / 4核+ 内存 4GB 8GB+ 存储 20GB SSD 50GB SSD Node.js v18+ v22 LTS 第一步:安装 Node.js # 使用 nvm 管理 Node.js 版本(推荐) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash source ~/.bashrc # 安装 Node.js 22 LTS nvm install 22 nvm use 22 node -v # 应显示 v22.x.x 第二步:安装 OpenClaw CLI # 全局安装 OpenClaw npm install -g openclaw # 验证安装 openclaw --version 第三步:初始化配置 # 创建工作目录 mkdir -p ~/.openclaw/workspace cd ~/.openclaw/workspace # 初始化基础配置 openclaw config init 生成的配置文件在 ~/.openclaw/openclaw.json 第四步:配置 Telegram Bot 1. 创建 Bot :在 T...

ES6 箭头函数与普通函数的区别

掌握箭头函数:ES6 带来的函数革命 箭头函数是 ES6 引入的最受欢迎特性之一,但它 不是 普通函数的简单缩写。今天我们深入对比箭头函数与 function 关键字的本质区别。 📋 快速对比表 特性 普通函数 箭头函数 this 绑定 运行时动态绑定 词法作用域(定义时确定) arguments ✅ 可用 ❌ 不可用,使用 ... 展开代替 构造函数 ✅ 可用 new ❌ 不能作为构造函数 隐式返回 ❌ 必须写 return ✅ 单表达式可省略 return 适合场景 方法、构造函数、需要动态 this 回调、简单计算、需要词法 this 1️⃣ this 绑定:最关键的坑 ❌ 普通函数的 this "丢失"问题 // 对象方法中的回调 const obj = { name: '张三', friends: ['李四', '王五'], showFriends: function() { // ❌ this 会"丢失"指向 window/undefined this.friends.forEach(function(friend) { console.log(this.name + ' 和 ' + friend); // 输出: undefined 和 李四 }); } }; ✅ 箭头函数的 this 继承外层 const obj = { name: '张三', friends: ['李四', '王五'], showFriends: function() { // ✅ this 保持指向 obj this.friends.forEach(friend => { console.log(this.name + ' 和 ' + friend); // 输出: 张三 和 李四 }); } }; 关键理解: 箭头函数的 this 在 定义时 就确定了,等于外层的 this ,运行时不会改变。 2️⃣ 箭头函数真的没有 arguments ...

[JS Daily] ES6 解构赋值:让代码更简洁的魔法语法 (缩进修复版)

ES6 解构赋值:让代码更简洁的魔法语法 日期: 2026-02-28 | 难度: ⭐⭐ 初级 📖 什么是解构赋值? 解构赋值是 ES6 引入的语法糖,可以从 数组 或 对象 中提取值,并赋值给变量。 🔍 数组解构 // 旧写法 - 需要多行提取 const arr = [1, 2, 3]; const a = arr[0]; const b = arr[1]; const c = arr[2]; // ✅ 解构写法 - 一行完成 const [a, b, c] = [1, 2, 3]; console.log(a, b, c); // 1 2 3 跳过元素 const [first, , third] = [1, 2, 3]; // 跳过第二个元素 console.log(first, third); // 1 3 默认值 const [x = 10, y = 20] = [5]; // y 使用默认值 20 console.log(x, y); // 5 20 🏗️ 对象解构 const user = { name: 'Alice', age: 25, city: 'Beijing' }; // 提取属性 const { name, age } = user; // 重命名:提取 name 并赋值给 userName const { name: userName } = user; // 默认值:如果 country 不存在,使用 'China' const { country = 'China' } = user; 🎯 实际应用 1. 函数参数解构 // ❌ 旧写法:需要从对象中反复取值 function greetOld(user) { return `Hello, ${user.name}!`; } // ✅ 解构写法:直接在参数中提取 function greet({ name, age }) { return `Hello, ${name}! You are ${age} years old.`; } 2. React Hooks ...