mirror of
https://github.com/Colin-XKL/Colinx-Blog.git
synced 2026-03-07 04:31:39 +08:00
chore: lint text and auto correct
This commit is contained in:
committed by
GitHub
parent
1c6158f07b
commit
38559d4955
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: OpenClaw虽好, 搭配沙箱才安心 - 使用Lume构建mac虚拟环境
|
||||
title: OpenClaw 虽好,搭配沙箱才安心 - 使用 Lume 构建 mac 虚拟环境
|
||||
date: 2026-02-04
|
||||
description: OpenClaw 这种应用最吸引人、最方便的地方在于 ta 可以成为「代理」, 去执行任何「你可以做」的事. 你能做, ta 就能做. 不过前提便是宽松的权限管理, 超级多的权限.下面介绍一个 基于 lume 的 Mac OS 虚拟机方案, 将其作为沙箱环境节点供 openclaw 调用.
|
||||
description: OpenClaw 这种应用最吸引人、最方便的地方在于 ta 可以成为「代理」, 去执行任何「你可以做」的事。你能做,ta 就能做。不过前提便是宽松的权限管理,超级多的权限。下面介绍一个 基于 lume 的 Mac OS 虚拟机方案,将其作为沙箱环境节点供 openclaw 调用。
|
||||
categories:
|
||||
- 技术
|
||||
- 指南
|
||||
@@ -14,20 +14,20 @@ tags:
|
||||
|
||||

|
||||
|
||||
近日 OpenClaw(原 Clawdbot, 曾用名 Moltbot)爆火, 独立自主操控电脑完成各种任务, 一个挺 fancy 的 agent 应用. 结合 moltbook 网站的新闻, 在各种媒体的鼓吹下故事画风变得愈发科幻, 巴不得明天就统治全人类.
|
||||
近日 OpenClaw(原 Clawdbot, 曾用名 Moltbot) 爆火,独立自主操控电脑完成各种任务,一个挺 fancy 的 agent 应用。结合 moltbook 网站的新闻,在各种媒体的鼓吹下故事画风变得愈发科幻,巴不得明天就统治全人类。
|
||||
|
||||
|
||||
爆火没两天, 就爆出不少安全新闻, 要么是 agent 自作主张直接电脑删空, 要么是大量小白用户把实例暴露在公网, 别有用心的人可以直接通过 openclaw 的黑洞控制整个电脑. OpenClaw 这种应用最吸引人、最方便的地方在于 ta 可以成为「代理」, 去执行任何「你可以做」的事. 你能做, ta 就能做. 不过前提便是宽松的权限管理, 超级多的权限.
|
||||
爆火没两天,就爆出不少安全新闻,要么是 agent 自作主张直接电脑删空,要么是大量小白用户把实例暴露在公网,别有用心的人可以直接通过 openclaw 的黑洞控制整个电脑。OpenClaw 这种应用最吸引人、最方便的地方在于 ta 可以成为「代理」, 去执行任何「你可以做」的事。你能做,ta 就能做。不过前提便是宽松的权限管理,超级多的权限。
|
||||
|
||||
下面介绍一个 基于 lume 的 Mac OS 虚拟机方案, 将其作为沙箱环境节点供 openclaw 调用.
|
||||
下面介绍一个 基于 lume 的 Mac OS 虚拟机方案,将其作为沙箱环境节点供 openclaw 调用。
|
||||
|
||||
## OpenClaw Gateway 安装
|
||||
|
||||
由于 gateway 节点负责与各个 channel 即 bot 通信, 最好有公网 ip, 这里我在 linux 云服务器上进行部署.
|
||||
由于 gateway 节点负责与各个 channel 即 bot 通信,最好有公网 ip, 这里我在 linux 云服务器上进行部署。
|
||||
|
||||
官方默认给的安装命令很简单, `npm install -g openclaw` 就可以了. 但是为了安全起见我还是偏好使用 docker 容器. 官方对 docker 容器的支持并不是很好, 文档也有点混乱, 实际测下来从代码库自行构建镜像比较好
|
||||
官方默认给的安装命令很简单,`npm install -g openclaw` 就可以了。但是为了安全起见我还是偏好使用 docker 容器。官方对 docker 容器的支持并不是很好,文档也有点混乱,实际测下来从代码库自行构建镜像比较好
|
||||
|
||||
首先是克隆仓库. 注意默认的 main 分支可能不是很稳定, 最好切换到某个 tag 或者 github actions 全部通过的 commit 再构建.
|
||||
首先是克隆仓库。注意默认的 main 分支可能不是很稳定,最好切换到某个 tag 或者 github actions 全部通过的 commit 再构建。
|
||||
|
||||
```bash
|
||||
# 示例: 切换到指定tag
|
||||
@@ -36,9 +36,9 @@ git fetch --tags
|
||||
git checkout v2026.1.29
|
||||
```
|
||||
|
||||
之后准备构建. 很多教程包括官方文档是让用户直接在克隆后的 git 仓库里, 修改 compose 和 env 文件. 但是这样的话后续不方便更新, 因为工作区有修改, 每次都要 stash 再 pull 还要解决冲突的问题, 太麻烦了. 建议的方式是在代码库上级目录创建 compose 和 env, 这样下次要更新的话, 直接到 repo 里面 git pull 再重新构建镜像就可以了.
|
||||
之后准备构建。很多教程包括官方文档是让用户直接在克隆后的 git 仓库里,修改 compose 和 env 文件。但是这样的话后续不方便更新,因为工作区有修改,每次都要 stash 再 pull 还要解决冲突的问题,太麻烦了。建议的方式是在代码库上级目录创建 compose 和 env, 这样下次要更新的话,直接到 repo 里面 git pull 再重新构建镜像就可以了。
|
||||
|
||||
目录结构如下:
|
||||
目录结构如下:
|
||||
|
||||
```
|
||||
.
|
||||
@@ -47,7 +47,7 @@ git checkout v2026.1.29
|
||||
└── **openclaw-repo**
|
||||
```
|
||||
|
||||
compose 文件设置好构建的目录即可. 示例如下
|
||||
compose 文件设置好构建的目录即可。示例如下
|
||||
|
||||
```yaml
|
||||
services:
|
||||
@@ -59,7 +59,7 @@ services:
|
||||
xxx:xxx
|
||||
```
|
||||
|
||||
准备好目录和 docker compose 之后, 即可开始构建
|
||||
准备好目录和 docker compose 之后,即可开始构建
|
||||
|
||||
完整 docker compose
|
||||
|
||||
@@ -145,13 +145,13 @@ docker compose run --rm openclaw-cli onboard
|
||||
docker compose up -d openclaw-gateway
|
||||
```
|
||||
|
||||
如果使用 tg channel ,创建完 bot 后需要配对才可以使用.
|
||||
如果使用 tg channel ,创建完 bot 后需要配对才可以使用。
|
||||
|
||||
```
|
||||
docker compose run --rm openclaw-cli pairing approve telegram <code>
|
||||
```
|
||||
|
||||
日常配置可以直接使用这个 cli 镜像后面加上需要的参数. 或者直接到 Gateway 镜像中执行 `node dist/index.mjs xxx` 代替 官方文档里 `openclaw xxx` . (官方 Dockerfile 里面对 cli 工具名字的处理有问题,先曲线救国)
|
||||
日常配置可以直接使用这个 cli 镜像后面加上需要的参数。或者直接到 Gateway 镜像中执行 `node dist/index.mjs xxx` 代替 官方文档里 `openclaw xxx` . (官方 Dockerfile 里面对 cli 工具名字的处理有问题,先曲线救国)
|
||||
|
||||
```
|
||||
docker compose run --rm openclaw-cli xxx
|
||||
@@ -159,7 +159,7 @@ docker compose run --rm openclaw-cli xxx
|
||||
|
||||
## MacOS VM via Lume
|
||||
|
||||
接下来配置 mac os 的虚拟机. 使用 lume 工具
|
||||
接下来配置 mac os 的虚拟机。使用 lume 工具
|
||||
|
||||
```bash
|
||||
brew install lume
|
||||
@@ -167,7 +167,7 @@ brew install lume
|
||||
brew services start lume
|
||||
```
|
||||
|
||||
之后可以快捷安装 macos vm. 一般情况下, 默认安装当前系统大版本下最新的小版本. 你可以通过以下方式查询
|
||||
之后可以快捷安装 macos vm. 一般情况下,默认安装当前系统大版本下最新的小版本。你可以通过以下方式查询
|
||||
|
||||
```bash
|
||||
# 查询`latest`参数对应默认的系统镜像和版本, 可以看到显示的url指向的系统版本为15.6.1
|
||||
@@ -186,7 +186,7 @@ ProductVersion: 15.2
|
||||
BuildVersion: 24C101
|
||||
```
|
||||
|
||||
也可以从这里获取指定版本的系统镜像下载地址, 手动下载. https://ipsw.me/. 一般 mac os 的镜像大小在 15-20GB
|
||||
也可以从这里获取指定版本的系统镜像下载地址,手动下载。https://ipsw.me/. 一般 mac os 的镜像大小在 15-20GB
|
||||
|
||||
创建 vm
|
||||
|
||||
@@ -203,10 +203,10 @@ lume run openclaw
|
||||
|
||||
```
|
||||
|
||||
之后会输出一个 vnc 地址,可以用 mac 自带的 「屏幕共享」app 进行查看. 菜单「连接」- 「新建」
|
||||
之后会输出一个 vnc 地址,可以用 mac 自带的「屏幕共享」app 进行查看。菜单「连接」- 「新建」
|
||||

|
||||
|
||||
完成系统安装的几个必要步骤, 然后到设置里把远程控制打开,后面 SSH 要用到. 系统更新建议关掉.
|
||||
完成系统安装的几个必要步骤,然后到设置里把远程控制打开,后面 SSH 要用到。系统更新建议关掉。
|
||||
|
||||
![[image-23.png]]
|
||||
|
||||
@@ -244,7 +244,7 @@ pnpm install -g openclaw@latest
|
||||
openclaw onboard --install-daemon
|
||||
```
|
||||
|
||||
client 端配置好 gateway 地址和 token .第一次连接显示需要配对. 在服务端执行
|
||||
client 端配置好 gateway 地址和 token .第一次连接显示需要配对。在服务端执行
|
||||
|
||||
```bash
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
title: Search-as-a-RSS! 把任何搜索查询转换为RSS! FeedCraft 新功能速递
|
||||
title: Search-as-a-RSS! 把任何搜索查询转换为 RSS! FeedCraft 新功能速递
|
||||
date: 2025-12-22
|
||||
description: 作为 RSS 5 年忠实用户, 我非常享受 RSS 主动管理信息源给我带来的掌控感. 但是传统 RSS 订阅方式只能基于站点或者频道, 更多时候我其实是想关注某一个特定领域信息, 使用方式局限性很大. 其实最理想的方式是直接把搜索引擎的结果拿来作为信息源. 在 FeedCraft 新版本中, 我新增了一个 Search-as-a-RSS 的功能, 用户只需要使用自然语言指定好要搜索什么, 接下来就可以自动根据搜索结果生成一个 RSS 了.
|
||||
description: 作为 RSS 5 年忠实用户,我非常享受 RSS 主动管理信息源给我带来的掌控感。但是传统 RSS 订阅方式只能基于站点或者频道,更多时候我其实是想关注某一个特定领域信息,使用方式局限性很大。其实最理想的方式是直接把搜索引擎的结果拿来作为信息源。在 FeedCraft 新版本中,我新增了一个 Search-as-a-RSS 的功能,用户只需要使用自然语言指定好要搜索什么,接下来就可以自动根据搜索结果生成一个 RSS 了。
|
||||
categories:
|
||||
- 技术
|
||||
- 指南
|
||||
@@ -13,53 +13,53 @@ tags:
|
||||
|
||||
## 前言
|
||||
|
||||
作为 RSS 5 年忠实用户, 我非常享受 RSS 主动管理信息源给我带来的掌控感. 但是传统 RSS 订阅方式只能基于站点或者频道, 更多时候我其实是想关注某一个特定领域信息, 比如 AI 领域世界模型有什么新的新闻, 或者是想订阅一个特定的信息, 比如我关注的 xxx 歌手有没有新的巡演规划.
|
||||
作为 RSS 5 年忠实用户,我非常享受 RSS 主动管理信息源给我带来的掌控感。但是传统 RSS 订阅方式只能基于站点或者频道,更多时候我其实是想关注某一个特定领域信息,比如 AI 领域世界模型有什么新的新闻,或者是想订阅一个特定的信息,比如我关注的 xxx 歌手有没有新的巡演规划。
|
||||
|
||||
这些需求通过传统 RSS 方式难以实现, 你只能定向的订阅某个新闻站点, 然后过滤一下关键词. 使用方式局限性很大. 其实最理想的方式是直接把搜索引擎的结果拿来作为信息源. 问题主要是噪声太多:
|
||||
这些需求通过传统 RSS 方式难以实现,你只能定向的订阅某个新闻站点,然后过滤一下关键词。使用方式局限性很大。其实最理想的方式是直接把搜索引擎的结果拿来作为信息源。问题主要是噪声太多:
|
||||
|
||||
- 搜索查询一般是按照关键词来的, 不够灵活
|
||||
- 搜索查询一般是按照关键词来的,不够灵活
|
||||
- 垃圾内容农场泛滥
|
||||
- 高质量的信息很多时候是多种语言的网页, 直接阅读会很困难
|
||||
- 高质量的信息很多时候是多种语言的网页,直接阅读会很困难
|
||||
|
||||
好在我们有了 AI, 很多问题有了新的解决方法. 在 FeedCraft 新版本中, 我新增了一个 Search-as-a-RSS 的功能, 用户只需要使用自然语言指定好要搜索什么, 接下来就可以自动根据搜索结果生成一个 RSS 了.
|
||||
好在我们有了 AI, 很多问题有了新的解决方法。在 FeedCraft 新版本中,我新增了一个 Search-as-a-RSS 的功能,用户只需要使用自然语言指定好要搜索什么,接下来就可以自动根据搜索结果生成一个 RSS 了。
|
||||
|
||||
接下来简要介绍一下流程:
|
||||
接下来简要介绍一下流程:
|
||||
|
||||
## FeedCraft 如何通过搜索结果创建 RSS
|
||||
|
||||
FeedCraft 本身是一个一站式处理 RSS 的工具, 这里的搜索需要依赖第三方服务. 首发支持的搜索服务是 LiteLLM Proxy(一个 AI 服务的代理转发平台, 开源可自部署, 可以方便对接各种第三方搜索服务比如 Exa, Tavily, Plexirity, Perplexity, Brave 等等)
|
||||
FeedCraft 本身是一个一站式处理 RSS 的工具,这里的搜索需要依赖第三方服务。首发支持的搜索服务是 LiteLLM Proxy(一个 AI 服务的代理转发平台,开源可自部署,可以方便对接各种第三方搜索服务比如 Exa, Tavily, Plexirity, Perplexity, Brave 等等)
|
||||
|
||||
以 Tavily 为例, 这个平台提供了每月 1000credits 的额度, 可以执行上百次搜索, 轻度使用绰绰有余了. 前往官网注册个账号, 生成一个 api key 即可.
|
||||
以 Tavily 为例,这个平台提供了每月 1000credits 的额度,可以执行上百次搜索,轻度使用绰绰有余了。前往官网注册个账号,生成一个 api key 即可。
|
||||
|
||||
> [Tavily](https://www.tavily.com/) 是一个专为人工智能代理(AI Agents)设计的搜索引擎,旨在优化 AI 在执行任务时的信息检索过程。它不同于传统的面向人类用户的搜索引擎(如 Google 或 Bing),而是专门为 AI 系统“理解”和“查找”所需信息而构建,强调高效、准确和上下文相关的搜索结果。
|
||||
|
||||

|
||||
|
||||
接下来到 LiteLLM 的后台, Tool - Search Tool 里面增加一个 search tool. 这里 search tool name 可以自定义, 先记下来待会在 feed craft 的设置页面需要填入.
|
||||
接下来到 LiteLLM 的后台,Tool - Search Tool 里面增加一个 search tool. 这里 search tool name 可以自定义,先记下来待会在 feed craft 的设置页面需要填入。
|
||||
|
||||

|
||||
在 LiteLLM 后台生成一个 API KEY, Key Name 可以随便写主要是备注. 这个生成的 api key 可以用于请求 LLM, 也可以调用刚才配置的搜索工具. 确认生成后, 复制 api key.
|
||||
在 LiteLLM 后台生成一个 API KEY, Key Name 可以随便写主要是备注。这个生成的 api key 可以用于请求 LLM, 也可以调用刚才配置的搜索工具。确认生成后,复制 api key.
|
||||
|
||||

|
||||
|
||||
在 FeedCraft 后台, 设置里面配置搜索服务, 这里 API URL 是你的 LiteLLM 服务加上`/search` 后缀.
|
||||
在 FeedCraft 后台,设置里面配置搜索服务,这里 API URL 是你的 LiteLLM 服务加上`/search` 后缀。
|
||||
例如你的 LiteLLM 服务部署在 `https://my-litellm.example.com`, 那么这里就填写 `https://my-litellm.example.com/search` . 工具填写刚才在 LiteLLM 后台接入 Tavily 的时候填写的 search tool name
|
||||
|
||||

|
||||
|
||||
之后在「搜索转 RSS」页面, 输入你想查询的东西即可. 你可以直接用自然语言描述, 比如「SpaceX 的最新新闻」. 之后点击下一步即可预览搜索结果.
|
||||
之后在「搜索转 RSS」页面,输入你想查询的东西即可。你可以直接用自然语言描述,比如「SpaceX 的最新新闻」. 之后点击下一步即可预览搜索结果。
|
||||
|
||||

|
||||
|
||||
你可以按需调整搜索语句. 确认没问题一直下一步, 可以保存为自定义的配方(Custom Recipe) , 就可以生成一个唯一的 RSS 链接, 在你喜欢的任意 RSS 阅读器里面查看啦
|
||||
你可以按需调整搜索语句。确认没问题一直下一步,可以保存为自定义的配方 (Custom Recipe) , 就可以生成一个唯一的 RSS 链接,在你喜欢的任意 RSS 阅读器里面查看啦
|
||||
|
||||

|
||||
|
||||
更进一步, 你可以使用 FeedCraft 的各种 Craft 来做进一步的处理. 比如获取全文, 添加总结、翻译文章、以及调用 AI 使用自然语言对文章进行筛选等等
|
||||
更进一步,你可以使用 FeedCraft 的各种 Craft 来做进一步的处理。比如获取全文,添加总结、翻译文章、以及调用 AI 使用自然语言对文章进行筛选等等
|
||||
|
||||

|
||||
|
||||
总体功能就是这样啦, 欢迎试用 FeedCraft 和 Star 🌟! Have fun!
|
||||
总体功能就是这样啦,欢迎试用 FeedCraft 和 Star 🌟! Have fun!
|
||||
|
||||
https://github.com/Colin-XKL/FeedCraft
|
||||
|
||||
|
||||
@@ -321,9 +321,9 @@ Status for the jail: sshd
|
||||
```
|
||||
|
||||
### 2.7 Git 代理
|
||||
一般在 `.bashrc`/`.zshrc` 中定义 `HTTP_PROXY` / `HTTPS_PROXY` 可以应对大部分场景.但是对于使用ssh 协议的git仓库 (通过ssh方式, 相较于https 的不用每次输用户名和密码. 一般对只有克隆公共仓库的时候才会用https, 其他时候对于自己的仓库我都是用ssh), 并不会走http 代理.
|
||||
一般在 `.bashrc`/`.zshrc` 中定义 `HTTP_PROXY` / `HTTPS_PROXY` 可以应对大部分场景。但是对于使用 ssh 协议的 git 仓库 (通过 ssh 方式,相较于 https 的不用每次输用户名和密码。一般对只有克隆公共仓库的时候才会用 https, 其他时候对于自己的仓库我都是用 ssh), 并不会走 http 代理。
|
||||
|
||||
这里需要在ssh config 中配置转发走代理才行. 使用`nc`(macOS等默认会预装)搭配socks代理最方便
|
||||
这里需要在 ssh config 中配置转发走代理才行。使用`nc`(macOS 等默认会预装) 搭配 socks 代理最方便
|
||||
|
||||
```ini
|
||||
Host github.com
|
||||
|
||||
Reference in New Issue
Block a user