MoreRSS

site iconLeo Van | 范叶亮修改

京东、美团。现从事数据科学在安全风险领域的技术应用和产品设计。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Leo Van | 范叶亮的 RSS 预览

智能体的角色定位和身份演化

2026-04-19 08:00:00

随着 OpenClaw 的爆火,智能体(Agent)一词已经成了大家每天都挂在嘴边儿上的话。从“智能体”成为 2025 年度科技热词以来,说这个词被滥用或许略显激进,但当一个词进入寻常百姓家时,或许我们应该重新审视一下到底什么是智能体,这个硅基生物之于我们碳基生物又是什么角色,“它”又是如何在改变着我们的生活呢?

智能体

我搜集了互联网上对于智能体的定义:

智能体(Agent)

智能体指一个可以观察周遭环境并作出行动以达到目标并且可以通过机器学习以及获取知识来提升自身性能的自主实体。 —— 维基百科

智能体是一种接收输入、解读输入,然后代表用户(无论是人类还是其他智能体)规划和执行操作的系统。 —— web.dev

AI 智能体是使用 AI 来实现目标并代表用户完成任务的软件系统。其表现出了推理、规划和记忆能力,并且具有一定的自主性,能够自主学习、适应和做出决定。 —— Google Cloud

智能体是一个系统,它利用人工智能模型与环境交互,以实现用户定义的目标。它结合推理、规划和动作执行(通常通过外部工具)来完成任务。 —— Hugging Face

如 ReAct 框架 1 所述,智能体的主要特点如下:

  • 推理:此核心认知过程涉及使用逻辑和可用信息来得出结论、进行推断及解决问题。具有强大推理能力的 AI 智能体可以分析数据、识别模式,并根据证据和上下文做出明智的决策。
  • 行动:根据决策、计划或外部输入采取行动或执行任务的能力对于 AI 智能体与其环境进行互动和实现目标至关重要。这可能包括具身 AI 的物理动作,或发送消息、更新数据或触发其他流程等数字操作。
  • 观察:通过感知或感应收集有关环境或情况的信息,对于 AI 智能体了解上下文并做出明智的决策至关重要。这可能涉及多种感知形式,例如计算机视觉、自然语言处理或传感器数据分析。
  • 规划:制定战略计划以实现目标,是智能行为的一个关键方面。具有规划能力的 AI 智能体可以确定必要的步骤、评估潜在行动,并根据可用信息和预期结果选择最佳行动方案。这通常需要预见未来的状态,并考量可能遇到的障碍。
  • 协作:在复杂且动态的环境中,与他人(无论是人类还是其他 AI 智能体)有效协作来实现共同目标变得越来越重要。协作离不开沟通、协调,以及理解并尊重他人观点的能力。
  • 自我完善:自我改进和自适应能力是高级 AI 系统的标志。具有自我完善能力的 AI 智能体可以从经验中学习,根据反馈调整行为,并随着时间的推移不断提升性能和能力。这可能涉及机器学习技术、优化算法或其他形式的自行修改。

角色定位

以 OpenClaw 为例的智能体,其能力足够丰富,在企业实践中不同场景需要不同类型的智能体以便更好(例如:更快速、更安全等)地服务其目标客户。从业务视角出发在此将智能体划分为个人助理、数字员工和数字分身三类,这三类的差异对比如下:

角色 个人助理 数字员工 数字分身
服务对象 个人 他人 个人
所有权 个人 多种 2 个人
身份 智能体自己 智能体自己 所有权人
定位 帮助所有权人处理个人需求 帮助所有权人处理他人需求 帮助所有权人以所有权人身份处理需求
示例 帮自己搜集信息 帮服务对象查询天气 帮自己去参加在线会议

结合 OpenClaw 的定义(OpenClaw is a self-hosted gateway …, and it becomes the bridge between your messaging apps and an always-available AI assistant. 3),其更符合个人助理的角色定位。数字分身相比另外两个角色最大的特点是其身份代表的是所有权人,除了技术实现难度外,更重要的是伦理问题。当数字员工出现问题时,是应该所有权人为其负责还是技术服务提供者为其负责呢?这个问题类似智能驾驶,当出现交通事故时,是应该由驾驶员承担责任还是自动驾驶服务提供商承担责任呢?目前来看,几乎全部责任仍是由驾驶人员承担。

从技术视角出发,个人助理和数字员工两个重要角色差异对比如下:

角色 个人助理 数字员工
知识 私有 + 共有 共有 + 权限管控
数据 私有 + 共有 共有 + 权限管控
技能 私有 + 共有 共有 + 权限管控
渠道 私有 共有 + 权限管控
定制化 程度高 程度低
核心目的 节省自己的资源(时间等) 节省组织的资源(人力等)

不难看出,个人助理和数字员工的一个核心差异在于权限。个人助理的权限管控并不在智能体内部实现,也就是说当你有某个权限的时候,只要你想个人助理就可以有,权限的边界在智能体之外。但数字员工的权限管控需要在智能体内部实现,数字员工使用同一个渠道对外提供服务,我们必须根据服务对象的不同采取不同的操作。个人助理是可以高度化定制的,只要你想怎么搞都是你自己的事。但数字员工受限就会很多,因为要面向多人服务,我们需要考虑响应的时效性、服务的稳定性、数据的安全性等等。

个人助理解决的是个人的长尾事务,只有将自己从重复繁琐的任务解放出来,我们才能够有更多的时间去思考更重要的事情。而数字员工解决更多的是通用类型的事务,这样才能够服务更多的用户,从而提高组织效能。

身份演化

其实我们也无需将个人助理和数字员工割裂来看,在个人助理上做一些适当的加减法就可以让其变成数字员工,同时数字员工之于个人助理也可以看作是一项技能而为其所用。我个人认为从个人助理进化到数字员工是一个先做减法再做加法的过程。

当前的个人助理已经是一个可以高度定制同时具有一定自主能力的智能体。在企业应用过程中,基于安全等因素的考虑我们必须在一定程度上限制其灵活性,才能够一方面高效的满足用户需求另一方面避免其成为一匹脱缰的野马。换句话说就是从个人助理的执行优先转变到数字员工的治理优先。这里感觉和当下的 Harness Engineering 有些许呼应,Harness 给到了系统运转的最佳范式,但同时也指定了相应的约束机制。约束的方式(代码层、Prompt 层、Skill 层)和约束的强度影响着任务执行的灵活程度。

图片来源:https://zhuanlan.zhihu.com/p/2020772553333941162
图片来源:https://zhuanlan.zhihu.com/p/2020772553333941162

正如员工在进入组织前期,他首先要学习的就是组织的规章制度,什么可以做,什么不可以做。当员工对组织的要求清晰之后,才会被允许从事更加复杂的工作,才会被赋予更多的自主权。在这个过程中组织仍会定期观测,同时对必要的问题做出反馈并要求员工进行修正。在此也收集了智能体 4、数字员工 5 和自动驾驶 6 的分级对比:

级别 自动驾驶 智能体 数字员工
L1 辅助驾驶
车辆对方向盘和加减速中的一项操作提供驾驶,人类驾驶员负责其余的驾驶动作。
规则符号智能
意图 + 行动
功能级-辅助工具
作为工具被调用,人类执行并闭环任务。
L2 部分自动驾驶
车辆对方向盘和加减速中的多项操作提供驾驶,人类驾驶员负责其余的驾驶动作。
推理决策智能
意图 + 行动 + 推理和决策
任务级-任务执行
执行被分解的任务,人类拆解分配任务。
L3 条件自动驾驶
由车辆完成绝大部分驾驶操作,人类驾驶员需保持注意力集中以备不时之需。
记忆反思智能
意图 + 行动 + 推理和决策 + 记忆和反思
协作级-协作自治
自主拆解及分配任务、闭环执行,人和数字员工协作,人类监督。
L4 高度自动驾驶
由车辆完成所有驾驶操作,人类驾驶员无需保持注意力集中,但限定道路和环境条件。
自主学习智能
意图 + 行动 + 推理和决策 + 记忆和反思 + 自主学习 + 泛化
指导级-专业指导
提供达到人类专家水平的定制化服务,人类参与。
L5 完全自动驾驶
由车辆完成所有驾驶操作,人类驾驶员无需保持注意力集中。
个性群体智能
意图 + 行动 + 推理和决策 + 记忆和反思 + 自主学习 + 泛化 + 人格 + 协作
智慧级-自主智慧
超越人类专家水平的能力,全面自主,人类授权。

我认为我们目前正处于 L3 至 L4 之间的一个地带,我相信在不久的将来我们可以突破 L4 迈入 L5。我希望 AI 会一直是为人所用,而不希望如之前博客所描述的人类成为 AI 的奴隶。引用一下阿西莫夫机器人三定律,希望在生产力高速发展的同时我们也可以更多的关注一下 AI 可能引起的一系列社会和伦理问题。

机器人三定律
  1. 机器人不得伤害人类,或坐视人类受到伤害。
  2. 除非违背第一法则,机器人必须服从人类的命令。
  3. 在不违背第一及第二法则下,机器人必须保护自己。

  1. Yao, Shunyu, et al. “React: Synergizing reasoning and acting in language models.” The eleventh international conference on learning representations. 2022. ↩︎

  2. 在企业中往往所有权归属于一个组织而非个人。 ↩︎

  3. https://docs.openclaw.ai/ ↩︎

  4. 5 Levels Of AI Agents ↩︎

  5. 大模型驱动的数字员工3.0 建设应用白皮书 ↩︎

  6. https://zh.wikipedia.org/zh-cn/自动驾驶汽车 ↩︎

本地部署 OpenClaw,QwenPaw 和 Hermes Agent

2026-04-18 08:00:00

环境信息

本教程将介绍在 macOS 环境下部署 OpenClaw,QwenPaw 和 Hermes Agent。如无特殊说明,macOS 系统下需在终端中执行命令,Windows 系统下需要在 PowerShell 中执行命令。本教程涉及到的软件信息如下:

软件 版本
Podman 5.8.2
OpenClaw 2026.4.16
QwenPaw 1.1.2
Hermes Agent 0.10.0

虚拟环境

为了更好的进行环境隔离,后续我们使用 Podman 安装不同的智能体框架。

提示
在 Windows 系统下,单击开始按钮,搜索 启用或关闭 Windows 功能,在打开的窗口中将 Hyper-V适用于 Linux 的 Windows 子系统 及其子项全部勾选,单击确定,待系统启用功能后重启电脑。

运行如下命令安装 Podman:

brew install podman

brew 安装请参见:https://brew.sh/

scoop install podman

scoop 安装请参见:https://scoop.sh/

为了方便观察 Podman 的运行情况,可选的运行如下命令安装 Podman Desktop:

brew install podman-desktop
scoop install podman-desktop

安装完毕后,运行如下命令初始化并启动 Podman:

podman machine init
podman machine start
podman machine init
podman machine start

运行如下命令查看 Podman 的安装和运行情况:

podman info
podman info

更多 Podman 使用方法请参考 Podman 文档。有关 Podman Desktop 的使用方法请参考 Podman Desktop 文档

OpenClaw

安装

克隆 OpenClaw 的源代码至本地:

git clone [email protected]:openclaw/openclaw.git
git clone git@github.com:openclaw/openclaw.git

运行如下命令安装 OpenClaw CLI:

curl -fsSL https://openclaw.ai/install-cli.sh | bash

命令会在 ~/.openclaw 目录下安装 Node 环境和相关依赖。进入 OpenClaw 源代码目录下,运行如下命令构建 Gateway 容器:

export OPENCLAW_DOCKER_APT_PACKAGES="chromium"
./scripts/podman/setup.sh

其中 OPENCLAW_DOCKER_APT_PACKAGES 表示构建 Gateway 容器时使用 apt 命令额外安装的软件包。运行如下命令启动 Gateway 容器:

./scripts/run-openclaw-podman.sh launch

运行如下命令进行配置:

./scripts/run-openclaw-podman.sh launch setup

在配置过程中根据实际情况对模型提供商等选项进行配置。配置如下环境变量来使用宿主机中的 OpenClaw CLI 管理 OpenClaw 容器:

export PATH="$PATH:/Users/leo/.openclaw/bin"
export OPENCLAW_CONTAINER=openclaw

在合适的目录创建如下文件夹:

mkdir /path/to/openclaw
mkdir /path/to/openclaw/workspace

进入 OpenClaw 源代码目录下,运行如下命令构建 Gateway 容器:

podman build -t openclaw:local -f Dockerfile . --build-arg OPENCLAW_DOCKER_APT_PACKAGES="chromium"

其中 OPENCLAW_DOCKER_APT_PACKAGES 表示构建 Gateway 容器时使用 apt 命令额外安装的软件包。运行如下命令配置并启动 Gateway 容器:

$env:OPENCLAW_CONFIG_DIR = "/path/to/openclaw"
$env:OPENCLAW_WORKSPACE_DIR = "/path/to/openclaw/workspace"

podman compose run --rm --no-deps --entrypoint node openclaw-gateway `
  dist/index.js onboard --mode local --no-install-daemon

podman compose run --rm --no-deps --entrypoint node openclaw-gateway `
  dist/index.js config set --batch-json '[{"path":"gateway.mode","value":"local"},{"path":"gateway.bind","value":"lan"},{"path":"gateway.controlUi.allowedOrigins","value":["http://localhost:18789","http://127.0.0.1:18789"]}]'

podman compose up -d openclaw-gateway

在配置中过程中根据实际情况对模型提供商等选项进行配置。

使用 Podman 安装 OpenClaw 后,重启 Gateway 的命令如下:

podman restart openclaw
podman restart openclaw-openclaw-gateway-1

使用浏览器打开 http://127.0.0.1:18789/ 即可进入 OpenClaw 管理页面。更多细节请参考 OpenClaw 文档

警告
OpenClaw 管理页面虽然支持权限校验,但为了安全起见,请勿将其暴露在公网。

消息频道

提示
在 Windows 系统下,podman compose 命令需要在 OpenClaw 源代码目录下运行。

飞书

运行如下命令配置飞书消息频道:

openclaw channels login --channel feishu
podman compose exec openclaw-gateway node dist/index.js channels login --channel feishu

使用飞书 APP 扫描生成的二维码进行后续配置即可。

Discord

首先在 Discord 中创建一个服务器,进入 Discord 开发者门户,单击 新 APP 按钮创建新的应用,并填写应用名称。

进入 概况 - 机器人 选项卡,启用 Presence IntentServer Members IntentMessage Content Intent

进入 概况 - 机器人 选项卡,单击 重置令牌 生成令牌,注意令牌仅显示一次,请妥善保管以便后续使用。

进入 概况 - OAuth2 选项卡,在 OAuth2 URL 生成器的 范围 中选中 botapplications.commands

机器人权限 中选中 查看频道发送消息阅读消息历史记录嵌入链接添加文件添加反应

已生成的 URL 中的 URL 复制到浏览器打开,按照提示安装应用并授权。

打开 Discord 应用,进入 用户设置 页面,在 开发者 菜单中启用 开发者模式。在频道图标上右键,单击 复制服务器 ID,在个人头像上左键,单击 复制用户 ID

运行如下命令配置 Discord 消息频道:

openclaw config set channels.discord.token "你的 TOKEN"
openclaw config set channels.discord.enabled true --strict-json
podman compose exec openclaw-gateway node dist/index.js config set channels.discord.token "你的 TOKEN"
podman compose exec openclaw-gateway node dist/index.js config set channels.discord.enabled true --strict-json

向机器人发送任意消息,根据机器人回复的消息运行如下命令进行授权:

openclaw pairing approve discord <CODE>
podman compose exec openclaw-gateway node dist/index.js pairing approve discord <CODE>

此时就可以通过 Discord 私信和机器人对话了。在配置文件中添加如下内容来支持在服务器中同机器人对话:

{
  "channels": {
    "discord": {
      "groupPolicy": "allowlist",
      "guilds": {
        "服务器 ID": {
          "requireMention": true,
          "users": ["用户 ID"]
        }
      }
    }
  }
}

默认情况下,机器人只有在被 @ 时才会响应,如果需要对每条消息都进行响应,可以将 requireMention 设置为 false

QwenPaw

安装

在合适的目录创建如下文件夹:

mkdir -p /path/to/qwenpaw/data
mkdir -p /path/to/qwenpaw/secrets
mkdir /path/to/qwenpaw/data
mkdir /path/to/qwenpaw/secrets

运行如下命令使用 Podman 安装 QwenPaw:

podman pull agentscope/qwenpaw:latest
podman run -d \
  --name qwenpaw \
  --restart always \
  -v /path/to/qwenpaw/data:/app/working \
  -v /path/to/qwenpaw/secrets:/app/working.secret \
  -p 8088:8088 \
  agentscope/qwenpaw:latest
podman pull agentscope/qwenpaw:latest
podman run -d `
  --name qwenpaw `
  --restart always `
  -v /path/to/qwenpaw/data:/app/working `
  -v /path/to/qwenpaw/secrets:/app/working.secret `
  -p 8088:8088 `
  agentscope/qwenpaw:latest

使用浏览器打开 http://127.0.0.1:8088/ 即可进入 QwenPaw 管理页面。

警告
QwenPaw 管理页面暂无权限校验,请勿将其暴露在公网。
注意
在 QwenPaw 中需要进入 智能体管理 中新建一个智能体,默认智能体 无法进行修改。

消息频道

飞书

参见:https://qwenpaw.agentscope.io/docs/channels/?lang=zh#飞书

Discord

参见:https://qwenpaw.agentscope.io/docs/channels/?lang=zh#Discord

Hermes Agent

安装

在合适的目录创建如下文件夹:

mkdir -p /path/to/hermes-agent
mkdir /path/to/hermes-agent

运行如下命令使用 Podman 配置 Hermes Agent:

podman pull nousresearch/hermes-agent:latest
podman run -it --rm \
  -v /path/to/hermes-agent:/opt/data \
  nousresearch/hermes-agent:latest setup
podman pull nousresearch/hermes-agent:latest
podman run -it --rm `
  -v /path/to/hermes-agent:/opt/data `
  nousresearch/hermes-agent:latest setup

在配置过程中根据实际情况对模型提供商等选项进行配置。运行如下代码启动 Gateway 容器:

podman run -d \
  --name hermes-agent-gateway \
  --restart unless-stopped \
  -v /path/to/hermes-agent:/opt/data \
  -p 8642:8642 \
  nousresearch/hermes-agent:latest gateway run
podman run -d `
  --name hermes-agent-gateway `
  --restart unless-stopped `
  -v /path/to/hermes-agent:/opt/data `
  -p 8642:8642 `
  nousresearch/hermes-agent:latest gateway run

运行如下代码启动 Dashboard 容器:

podman run -d \
  --name hermes-agent-dashboard \
  --restart unless-stopped \
  -v /path/to/hermes-agent:/opt/data \
  -p 9119:9119 \
  -e GATEWAY_HEALTH_URL=http://$HOST_IP:8642 \
  nousresearch/hermes-agent:latest dashboard --host 0.0.0.0 --insecure
podman run -d `
  --name hermes-agent-dashboard `
  --restart unless-stopped `
  -v /path/to/hermes-agent:/opt/data `
  -p 9119:9119 `
  -e GATEWAY_HEALTH_URL=http://$HOST_IP:8642 `
  nousresearch/hermes-agent:latest dashboard --host 0.0.0.0 --insecure

$HOST_IP 替换为运行 Gateway 容器机器的 IP 地址(注意:需使用宿主机的 IP 地址,而不是 127.0.0.1)。使用浏览器打开 http://127.0.0.1:9119/ 即可进入 Hermes Agent 管理页面。

警告
Hermes Agent 管理页面暂无权限校验,请勿将其暴露在公网。

消息频道

飞书

参见:https://hermes-agent.nousresearch.com/docs/user-guide/messaging/feishu

Discord

参见:https://hermes-agent.nousresearch.com/docs/user-guide/messaging/discord

部署 Matrix 服务器 Synapse

2026-04-11 08:00:00

环境信息

Matrix 是一种用于实时通讯的开放、去中心化协议,专注于安全、加密的文字、语音和视频聊天。它允许不同服务器上的用户互通,类似于邮件系统,并支持端到端加密,使用户能完全控制数据,不受单一实体限制。

Matrix 联邦服务器之间连接的客户端
Matrix 联邦服务器之间连接的客户端

Synapse 是一个使用 Python/Twisted 和 Rust 编写的开源 Matrix 服务器实现。本教程将介绍使用 Docker 容器部署 Matrix 服务器 Synapse。本教程涉及到的软件信息如下:

软件 Docker 镜像 版本
PostgreSQL mixdeve/postgres-zhparser:18 18
Redis redis:8 8
Synapse matrixdotorg/synapse:latest 1.151.0
注意
将后续命令中的 example.com 替换为实际域名。

准备工作

数据库

为了支持中文搜索,在此选择内置 zhparser 分词功能的 PostgreSQL 镜像。在适当位置创建 PostgreSQL 的存储目录,例如 postgresql。运行如下命令生成配置:

docker run -d \
  --name postgresql \
  --restart always \
  -v $(pwd)/postgresql:/var/lib/postgresql \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD=<密码> \
  -e ALLOW_IP_RANGE=0.0.0.0/0 \
  -p 5432:5432 \
  mixdeve/postgres-zhparser:18

相关参数说明如下:

参数 说明
POSTGRES_USER 数据库用户名,默认 postgres
POSTGRES_PASSWORD 数据库密码
POSTGRES_DB 默认数据库名,默认 postgres
ALLOW_IP_RANGE 允许访问的 IP 范围

进入数据库执行如下 SQL 进行配置:

-- 创建用户
CREATE USER synapse WITH PASSWORD '<密码>';

-- 创建数据库
CREATE DATABASE synapse WITH OWNER = synapse ENCODING = 'UTF8' LC_COLLATE = 'C' LC_CTYPE = 'C' TEMPLATE = template0;

-- 授权
GRANT ALL PRIVILEGES ON DATABASE synapse TO synapse;

缓存

为了提升服务性能,在此开启 Redis 缓存。在适当位置创建 Redis 的存储目录,例如 redis。运行如下命令启动 Redis 容器:

docker run -d \
  --name redis \
  --restart always \
  -v $(pwd)/redis:/data \
  -p 6379:6379 \
  redis:8 \
  redis-server --save 60 1 --appendonly yes

配置文件

进入服务器在适当位置创建 Synapse 的存储目录,例如 synapse。运行如下命令生成配置:

docker run -it --rm \
  -v $(pwd)/synapse:/data \
  -e SYNAPSE_SERVER_NAME=example.com \
  -e SYNAPSE_REPORT_STATS=no \
  -e SYNAPSE_HTTP_PORT=8008 \
  -e UID=1000 \
  -e GID=1000 \
  matrixdotorg/synapse:latest generate

相关参数说明如下:

参数 说明
SYNAPSE_SERVER_NAME 服务器域名
SYNAPSE_REPORT_STATS 是否上报统计信息,默认 yes
SYNAPSE_HTTP_PORT HTTP 端口,默认 8008
SYNAPSE_CONFIG_DIR 配置目录,默认 /data
SYNAPSE_CONFIG_PATH 配置文件路径,默认 <SYNAPSE_CONFIG_DIR>/homeserver.yaml
SYNAPSE_DATA_DIR 数据目录,默认 /data
UID 用户 ID,默认 991
GID 组 ID,默认 991

修改配置文件服务部分如下:

public_baseurl: https://matrix-homeserver.example.com
serve_server_wellknown: true

修改配置文件数据库部分如下:

database:
  name: psycopg2
  txn_limit: 10000
  args:
    user: synapse
    password: <密码>
    dbname: synapse
    host: <数据库地址>
    port: 5432
    cp_min: 5
    cp_max: 10

修改配置文件缓存部分如下:

redis:
  enabled: true
  host: <数据库地址>
  port: 6379
  dbid: 0

启动服务

运行如下命令启动服务:

docker run -d \
  --name synapse \
  --restart always \
  -v $(pwd)/synapse:/data \
  -u 1000:1000 \
  -p 8008:8008 \
  matrixdotorg/synapse:latest

在服务商中配置 DNS 将 matrix-homeserver.example.com 解析至 Docker 服务器的 IP 地址。通过浏览器访问 http://matrix-homeserver.example.com:8008 即可查看 Synapse 服务是否启动成功。

中文搜索

提示
如果不需要中文搜索服务,可跳过本节。

在 PostgreSQL 数据中运行如下 SQL 安装 zhparser 扩展并配置中文搜索:

-- 创建 zhparser 扩展
CREATE EXTENSION IF NOT EXISTS zhparser;

-- 创建中文搜索配置
CREATE TEXT SEARCH CONFIGURATION chinese (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION chinese ADD MAPPING FOR n,v,a,i,e,l WITH simple;

-- 添加中文向量列
ALTER TABLE event_search ADD COLUMN IF NOT EXISTS chinese_vector tsvector;

-- 对已有数据进行中文分词处理
UPDATE event_search
SET chinese_vector =
  CASE
    WHEN event_search.key = 'content.body' AND TRIM(event_json.json::jsonb->'content'->>'body') != ''
      THEN to_tsvector('chinese', event_json.json::jsonb->'content'->>'body')
    WHEN event_search.key = 'content.name' AND TRIM(event_json.json::jsonb->'content'->>'name') != ''
      THEN to_tsvector('chinese', event_json.json::jsonb->'content'->>'name')
    WHEN event_search.key = 'content.topic' AND TRIM(event_json.json::jsonb->'content'->>'topic') != ''
      THEN to_tsvector('chinese', event_json.json::jsonb->'content'->>'topic')
    ELSE NULL
  END
FROM
  event_json
WHERE
  event_search.event_id = event_json.event_id
  AND (
    event_search.chinese_vector IS NULL
    OR event_search.chinese_vector::text = ''
  );

-- 创建中文索引
CREATE INDEX CONCURRENTLY event_search_chinese_vector_idx ON event_search USING GIN (chinese_vector);

将修改后的 search.py 文件映射至 Synapse 容器,删除之前的容器,运行如下命令重新创建容器:

docker run -d \
  --name synapse \
  --restart always \
  -v $(pwd)/synapse:/data \
  -v $(pwd)/synapse/search.py:/usr/local/lib/python3.13/site-packages/synapse/storage/databases/main/search.py \
  -u 1000:1000 \
  -p 8008:8008 \
  matrixdotorg/synapse:latest
注意
更新 Synapse 版本后,请注意原始 search.py 是否发生变化,如有则需要重新修改支持中文的 search.py。同时请注意 Dockerfile 中镜像基于的系统环境和 Python 版本是否发生变化,如有则需要对应调整将修改后 search.py 文件的映射路径。

发现服务

提示
如果希望使用主域名 example.com 成为 Matrix 服务域名(例如:@user:example.com),则需要配置发现服务。如果希望使用子域名 matrix-homeserver.example.com 成为 Matrix 服务域名(例如:@user:matrix-homeserver.example.com),则可以跳过本节。

发现服务是 Matrix 网络发现服务器位置的一种方式。因为实际服务运行在子域名 matrix-homeserver.example.com 上,需要让其他服务器和客户端知道我们使用主域名,因此需要提供 /.well-known/matrix 信息。因此需要将 https://example.com/.well-known/matrix 映射到 https://matrix-homeserver.example.com/.well-known/matrix,相关细节请参考官方文档

注册用户

Synapse 服务默认是禁止自助注册用户的,运行如下命令进入 Synapse 容器:

docker exec -it synapse /bin/bash

运行如下命令创建用户:

register_new_matrix_user http://localhost:8008 \
  -c /data/homeserver.yaml -a \
  -u "<用户名>" \
  -p "<密码>"

开始使用

在浏览器上打开 https://app.element.io,单击 Sign in 切换 Homeserver 到 example.com,输入用户名和密码即可登录。

部署 frp 内网穿透服务

2026-04-10 08:00:00

环境信息

frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转 1

frp 架构图
frp 架构图

本教程将介绍在具有公网 IP 的服务器和内网路由器上部署 frp 内网穿透服务。本教程涉及到的环境信息如下:

环境 系统
服务端 外网服务器系统 Ubuntu 24.04
客户端 内网路由器系统 OpenWRT 24.10
注意
将后续命令中的 example.com 替换为实际域名。

证书申请

frp 证书

在本地创建 cert 目录,将 OpenSSL 配置文件复制到该目录。通常情况下 Linux 系统位于 /etc/pki/tls/openssl.cnf,macOS 系统位于 /System/Library/OpenSSL/openssl.cnf

运行如下命令生成 ca 证书:

openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CN=example.com" -days 36500 -out ca.crt

运行如下命令生成服务端证书:

openssl genrsa -out server.key 2048
openssl req -new -sha256 -key server.key \
  -subj "/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=example.com" \
  -reqexts SAN \
  -config <(cat openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:localhost,IP:127.0.0.1,DNS:*.example.com")) \
  -out server.csr
openssl x509 -req -days 36500 -sha256 \
  -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
  -extfile <(printf "subjectAltName=DNS:localhost,IP:127.0.0.1,DNS:example.com") \
  -out server.crt

运行如下命令生成客户端证书:

openssl genrsa -out client.key 2048
openssl req -new -sha256 -key client.key \
  -subj "/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=example.com" \
  -reqexts SAN \
  -config <(cat openssl.cnf <(printf "\n[SAN]\nsubjectAltName=DNS:localhost,IP:127.0.0.1,DNS:*.example.com")) \
  -out client.csr
openssl x509 -req -days 36500 -sha256 \
  -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
  -extfile <(printf "subjectAltName=DNS:localhost,IP:127.0.0.1,DNS:example.com") \
  -out client.crt

由于 server.crtclient.crt 都是由 ca 签发的,因此他们对于 ca 来说都是合法的。

Nginx 证书

在服务器上运行如下命令安装 acme.sh:

curl https://get.acme.sh | sh -s email=[email protected]

安装脚本将执行如下动作:

  1. $HOME 目录创建 .acme.sh 目录并安装 acme.sh。
  2. 创建别名 acme.sh 指向 $HOME/.acme.sh/acme.sh
  3. 创建每日定时任务以便更新证书。

以阿里云域名管理为例,在 https://ram.console.aliyun.com/ 页面创建用户,并为用户赋予 DNS 相关管理权限。为用户创建 AccessKey,并设置如下环境变量:

export Ali_Key="xxx"
export Ali_Secret="xxx"

运行如下命令申请证书:

acme.sh --issue --dns dns_ali -d example.com -d *.example.com

frp 配置

注意
将后续命令中的 /path/to 替换为对应文件的实际路径,将 xxx 替换为实际内容。

服务端

在服务端创建 frp 目录,配置 frps.toml 文件参数如下,更多参数设置请参阅 frp 文档

bindAddr = "0.0.0.0"
bindPort = 7000
quicBindPort = 7000
vhostHTTPPort = 8080
vhostHTTPSPort = 8443
tcpmuxHTTPConnectPort = 5002

auth.method = "token"
auth.token = "xxx"

transport.tls.certFile = "/path/to/server.crt"
transport.tls.keyFile = "/path/to/server.key"
transport.tls.trustedCaFile = "/path/to/ca.crt"

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "xxx"
webServer.password = "xxx"

log.to = "/path/to/frps.log"
log.level = "info"
log.maxDays = 3
注意
请确保将上述配置中的端口针对 0.0.0.0/0 关闭防火墙拦截。

/etc/systemd/system 路径创建 frps.service 服务,配置内容如下:

[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
ExecStart = /path/to/frps -c /path/to/frps.toml

[Install]
WantedBy = multi-user.target

运行如下命令管理 frps 服务:

# 自启动 frps
sudo systemctl enable frps

# 启动 frps
sudo systemctl start frps

# 停止 frps
sudo systemctl stop frps

# 重启 frps
sudo systemctl restart frps

# 查看 frps 状态
sudo systemctl status frps

添加如下内容至 Nginx 配置文件中:

server {
    listen 80;
    listen [::]:80;

    server_name *.example.com;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name *.example.com;

    ssl_certificate /path/to/example.com.cer;
    ssl_certificate_key /path/to/example.com.key;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect off;
        proxy_ssl_server_name on;

        proxy_set_header Host $host:80;
        proxy_set_header Referer $http_referer;
        proxy_set_header Cookie $http_cookie;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

运行如下命令重启 Nginx:

sudo systemctl restart nginx

客户端

注意
将后续命令中的 x.x.x.x 替换为本地服务对应的 IP 地址。

在客户端创建 frp 目录,配置 frpc.toml 文件参数如下,更多参数设置请参阅 frp 文档

auth.method = "token"
auth.token = "xxx"

user = "xxx"

serverAddr = "frps.example.com"
serverPort = 7000

transport.protocol = "quic"
transport.proxyProtocolVersion = "v2"
transport.tls.certFile = "/path/to/client.crt"
transport.tls.keyFile = "/path/to/client.key"
transport.tls.trustedCaFile = "/path/to/ca.crt"

webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "xxx"
webServer.password = "xxx"

log.to = "/path/to/frpc.log"
log.level = "info"
log.maxDays = 3

[[proxies]]
name = "example-http"
type = "http"
localIP = "x.x.x.x"
localPort = 80
customDomains = ["example-http.example.com"]

[[proxies]]
name = "example-ssh"
type = "tcpmux"
multiplexer = "httpconnect"
localIP = "x.x.x.x"
localPort = 22
customDomains = ["example-ssh.example.com"]

其中,example-http 采用了通过自定义域名的方式访问内网 Web 服务,更多示例请参考 frp 文档example-ssh 采用了多个 SSH 服务复用同一端口的方式连接内网 SSH 服务,更多示例请参考 frp 文档

/etc/init.d 路径下创建 frpc 服务,配置内容如下:

#!/bin/sh /etc/rc.common

# 使用 procd
USE_PROCD=1
# 启动顺序
START=95
# 停止顺序
STOP=15

# frpc
FRPC=/path/to/frpc
CONF=/path/to/frpc.toml

start_service() {
    procd_open_instance "frpc"
    procd_set_param command $FRPC -c $CONF
    procd_set_param respawn
    procd_set_param stdout 1
    procd_set_param stderr 1
    procd_set_param pidfile /var/run/frpc.pid
    procd_close_instance
}

service_triggers() {
    procd_add_reload_mount_trigger $CONF
}

运行如下命令管理 frpc 服务:

# 赋予执行权限
chmod +x /etc/init.d/frpc

# 自启动 frpc
/etc/init.d/frpc enable

# 启动 frpc
/etc/init.d/frpc start

# 停止 frpc
/etc/init.d/frpc stop

# 重启 frpc
/etc/init.d/frpc restart

# 查看 frpc 状态
/etc/init.d/frpc status

在服务商中配置 DNS 将 example-http.example.comexample-ssh.example.com 解析至 frp 服务器的 IP 地址。

连接

Web

此时,通过浏览器访问 https://example-http.example.com 即可实现访问内网 IP 地址 x.x.x.x 在端口 80 上的 Web 服务。

SSH

提示
请先在本地机器上安装 socat 工具。

此时,通过如下命令即可实现访问内网 IP 地址 x.x.x.x 在端口 22 上的 SSH 服务:

ssh -o 'proxycommand socat - PROXY:frps.example.com:%h:%p,proxyport=5002' [email protected]

本地部署大模型服务

2026-04-05 08:00:00

环境信息

本教程将介绍在 macOS 和 Windows 环境下部署本地大模型服务。如无特殊说明,macOS 系统下需在终端中执行命令,Windows 系统下需要在 PowerShell 中执行命令。本教程涉及到的软件和模型信息如下:

软件 版本
ollama 0.20.2
LM Studio 0.4.9+1
vllm 0.19.0
vllm-metal v0.1.0-20260404-164341
vllm-mlx 0.2.7
oMLX 0.3.4
名称 架构 量化 内存 / 显存 能力 链接
gemma-4-31B-it 稠密 4bit 32 GB 及以上 GGUF / GGUF / MLX
GGUF / GGUF / MLX
gemma-4-26B-A4B-it MoE 4bit 32 GB 及以上 GGUF / GGUF / MLX
GGUF / GGUF / MLX
Qwen3.5-27B 稠密 4bit 32 GB 及以上 GGUF / GGUF / MLX
GGUF / GGUF / MLX
Qwen3.5-35B-A3B MoE 4bit 32 GB 及以上 GGUF / GGUF / MLX
GGUF / GGUF / MLX
CoPaw-Flash-9B 稠密 4bit 16 GB 及以上 GGUF
GGUF

为了加速从 Hugging Face 模型仓库下载模型,可以运行如下命令配置相关环境变量:

echo "HF_ENDPOINT=https://hf-mirror.com" >> ~/.bash_profile
[Environment]::SetEnvironmentVariable("HF_ENDPOINT", "https://hf-mirror.com", "User")

更多使用方式可参考 HF-Mirror 官方网站。

ollama

推荐在终端运行如下命令安装 ollama:

curl -fsSL https://ollama.com/install.sh | sh
irm https://ollama.com/install.ps1 | iex

运行如下命令可以显示当前安装的版本号:

ollama --version
# ollama version is 0.20.2

ollama 当前采用 ollama pull MODEL 命令下载模型,除了使用官方模型库中的模型名称外(例如:qwen3.5:27b-nvfp4),还可以使用 Hugging Face 的模型链接(例如:https://huggingface.co/lmstudio-community/Qwen3.5-27B-GGUF),运行如下命令下载模型:

ollama pull qwen3.5:27b-nvfp4
ollama pull https://huggingface.co/lmstudio-community/Qwen3.5-27B-GGUF

ollama 当前仅支持通过环境变量配置监听地址和端口,运行如下命令进行配置:

echo "OLLAMA_HOST=0.0.0.0:11434" >> ~/.bash_profile
[Environment]::SetEnvironmentVariable("OLLAMA_HOST", "0.0.0.0:11434", "User")

运行如下命令启动模型服务:

ollama run <模型名称>
ollama run <模型名称>
提示

ollama 默认会选择最适合的运行库,如果需要切换可以手动指定 LLM 运行库,运行如下命令表示使用 CPU 进行推理:

OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve <模型名称>
注意
在 Settings 中将 Context length 设置为最大值,以确保在后续使用过程中不会因上下文长度不足而导致效果下降。

打开 ollama 主页面,选择对应的模型,即可开始对话:

模型服务运行在 http://127.0.0.1:11434,API 文档详见:https://docs.ollama.com/api/introduction。运行如下命令以 OpenAI 兼容的接口测试服务:

curl http://127.0.0.1:11434/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "<模型名称>",
        "messages": [
            {
                "role": "user",
                "content": "你好"
            }
        ]
    }'
iwr -Uri http://127.0.0.1:11434/v1/chat/completions `
    -Method Post `
    -ContentType "application/json" `
    -Body '{
        "model": "<模型名称>",
        "messages": [
            {
                "role": "user",
                "content": "你好"
            }
        ]
    }'

LM Studio

建议 Windows 系统测试使用

推荐从 LM Studio 官网下载安装包,并运行安装 LM Studio。如果只需要安装 LM Studio 核心,不需要 GUI 界面,则可以在终端运行如下命令:

curl -fsSL https://lmstudio.ai/install.sh | bash
irm https://lmstudio.ai/install.ps1 | iex

下载并安装所需的 Runtime,macOS 系统支持 GGUF 和 MLX 两种格式,Windows 系统仅支持 GGUF 格式。

注意
在 Settings - Model Defaults 中将 Default Context Length 设置为 Model Maximum,以确保在后续使用过程中不会因上下文长度不足而导致效果下降。

打开 LM Studio 主页面,选择对应的模型,即可开始对话:

单击左侧的 按钮,单击 Local Server,将 Status 滑动至 Running 状态。模型服务运行在 http://127.0.0.1:1234,API 文档详见:https://lmstudio.ai/docs/developer。运行如下命令以 OpenAI 兼容的接口测试服务:

curl http://127.0.0.1:1234/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "<模型名称>",
        "messages": [
            {
                "role": "user",
                "content": "你好"
            }
        ]
    }'
iwr -Uri http://127.0.0.1:1234/v1/chat/completions `
    -Method Post `
    -ContentType "application/json" `
    -Body '{
        "model": "<模型名称>",
        "messages": [
            {
                "role": "user",
                "content": "你好"
            }
        ]
    }'

oMLX

建议 macOS 系统测试使用

推荐从 oMLX 官网下载安装包,并运行安装 oMLX。安装完毕后启动,并从 macOS 菜单栏或 Windows 系统托盘单击 oMLX 图标,选择 Start Server 启动服务。待服务启动后,单击 Admin Panel 从浏览器打开管理面板,初次登录需要设置 API Key。在 Models - Downloader 中可以直接从 Hugging Face 和 ModelScope 模型仓库下载模型。

提示
建议国内用户切换至 ModelScope 标签,复制上文 ModelScope 模型连接的尾部(例如:mlx-community/gemma-4-31b-it-nvfp4)至 REPOSITORY ID 中下载模型。

在 Settings - Model Settings 中单击对应模型 STATUS 中的按钮载入模型。

注意
在 Settings - Global Settings 中将 Max Context Window 和 Max Tokens 设置为合适的值,以确保在后续使用过程中不会因上下文长度不足而导致效果下降。

单击 Chat 进入对话页面,选择对应的模型,即可开始对话:

模型服务运行在 http://127.0.0.1:8000。运行如下命令以 OpenAI 兼容的接口测试服务:

curl http://127.0.0.1:8000/v1/chat/completions \
    -H "Authorization: Bearer <API_KEY>" \
    -H "Content-Type: application/json" \
    -d '{
        "model": "<模型名称>",
        "messages": [
            {
                "role": "user",
                "content": "你好"
            }
        ]
    }'

vllm

建议 macOS 系统生产使用
提示
vllm 官方仅支持 macOS 和 Linux 系统,暂无 GUI 界面。在此以 macOS 系统为例进行安装。

在 macOS 系统上,使用 vllm-metal 库安装 vllm 服务,运行如下命令:

curl -fsSL https://raw.githubusercontent.com/vllm-project/vllm-metal/main/install.sh | bash

这会在 ~/.venv-vllm-metal 路径下创建一个 Python 虚拟环境,并安装 vllm 服务。运行如下命令即可删除安装:

rm -rf ~/.venv-vllm-metal

运行如下命令激活 Python 虚拟环境:

source ~/.venv-vllm-metal/bin/activate

运行如下命令启动 vllm 服务:

vllm serve <模型名称|模型路径>

模型服务运行在 http://127.0.0.1:8000,更多环境变量设置请参考:https://github.com/vllm-project/vllm-metal,更多命令行参数设置请参考:https://docs.vllm.ai/en/stable/api/。运行如下命令以 OpenAI 兼容的接口测试服务:

curl http://127.0.0.1:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "<模型名称>",
        "messages": [
            {
                "role": "user",
                "content": "你好"
            }
        ]
    }'

AI 时代的生产力和生产关系

2026-03-29 08:00:00

那只🦞

AI 的发展想必不用多说,速度之快远超我们的想象。将 AI 大事记和标普 500 1 整合绘制折线图如下:

AI 大事记 vs. 标普 500

从图中可以看出,自 2015 年 OpenAI 成立以来,随着标普 500 指数的不断增高,AI 也在以倍速迅猛发展。毋庸置疑在这个时代,如果你不了解 AI,不紧跟 AI,那么你可能会很快就会被社会淘汰。随着一股“龙虾热”的到来,更是把 AI 的关注度推到了风口浪尖。积极的去拥抱新的技术,亲自下场去体验,这都是很好的事,但也大可不必因为 FOMO(Fear of Missing Out,错失恐惧症)而太过盲从。即使你全身心 100% 的投入,在 AI 的浪潮中依然会有你错失的,停下来根据自身的实际情况多一些思考,才是争取不被拍死在沙滩上的最好选择。Anyway,一人开发者的周末项目,在短短不到 5 个月的时间内登顶 GitHub,这里面所预示的变革也绝不是我这些许思考所能妄言定论的,让我们且行且悟吧。

前不久在组织内部(大部分成员并非技术背景)讨论 AI 应用的时候(彼时公司已经提供了内部免费版的龙虾供大家试用),我抛出了如下两个问题:

  1. 有多少人尝试过私有化部署龙虾?
  2. 如果由你自己承担龙虾的费用,你是否还会像当前这样使用龙虾?

第一个问题要从前不久如火如荼的排队装龙虾开始说起,从安装龙虾,再到卸载龙虾,每个时代都有每个时代的鸡蛋要领。晚点有篇文章 2 不错,提到网上流传着的一个悖论:“如果你需要托人帮你安装龙虾,那么你可能就不太需要龙虾。”这句话多少有些偏激了,但意思就是那么个意思,如果连这部分技术都不了解,那么在使用龙虾的过程中一旦遇到一些复杂情况,你就会陷入“问虾你为什么不行”-“虾说因为 XXX”-“你说你自己不能解决码?”-“虾说 balabalabalabala”的死循环当中。或者换个角度,如果龙虾真的无论是从可用还是易用角度做到了极致,那么此时此刻是否还需要你这个人去用它呢?这时最重要的问题或许是我们这些碳基生物应该如何避免被硅基生物消灭吧?

第二个问题会比较实在些,天天在谈 ROI,公司出于更长远的战略考虑给到一定的免费额度,但如果需要实打实的花自己钱的时候你真的还会随便用吗?只能说当下很多人还没有被 AI 替代是因为 AI 的成本比我们这些牛马的工资还是要高的。我相信随着技术的不断发展,AI 的成本也会越来越低,此时我们更需要思考些更适合 AI 去做,哪些更适合我们去做,那些 AI 暂时还替代不了我们去做的才是我们的核心竞争力,再用 AI 把自己加持下才是最妙的。

生产力

生产力
生产力是改造和影响自然并使之适应社会需要的客观物质力量。一定的生产力决定了一定的生产关系,二者组成特定的生产方式。

AI 是一种先进的生产力,这个应该不太会有人否认吧。我个人总结其主要先进在两个方面:

  1. 效率。AI 在效率提升上面的效果是有目共睹的,无论你的工作类型是什么样的,哪怕你是体力劳动者。只能说对脑力工作者的提效会更多些,尤其是那些流程化、重复性的工作,以运营类工作尤为明显。对我而言更好的代码补全也着实提高了我的开发效率。
  2. 创新。对于一些复杂的不确定性工作,AI 可以给到我很多新奇的点子,启发我把复杂的任务成功解决。很难说这是真的“创新”,也许在 AI 的脑子中这并非新鲜事物,但之于我自己而言,确实给到我眼前一亮的惊喜。前不久 Anthropic 团队使用 16 个智能体从零开始构建了一个基于 Rust 的 C 语言编译器 3。我很惊讶这么底层的能力就这样被自动实现了(我并没有去体验,单纯的惊讶),但也有人质疑这只是“临摹”而非“创作”。毕竟 AI 吃过的盐比我吃过的饭都要多得多得多。因此无须太纠结这是不是真的创新,之于你是,之于你在做的事儿是,那就是。

在谈及 AI 作为一种先进的生产力时,它与瓦特的蒸汽机、爱迪生的电灯泡、亦或是宾夕法尼亚大学的埃尼阿克并无差异,本质上都是社会生产环节中的一个辅助工具。

生产关系

生产关系
生产关系是人们在社会生产中形成的一种一定的、必然的、不以他们的意志为转移的关系。生产关系基于一定生产力,反过来又会限制生产力。

根据定义来看,AI 确实“不是”生产关系,生产关系探讨的主要是“人”与“物”以及“人”与“人”的关系,例如:生产资料所有制,生产中的地位和相互关系,产品的分配方式等。但 AI 作为生产力却可以影响生产关系,我认为此时用“重塑”会更适合些,因为这波 AI 带来的冲击确实过于迅猛。

之前听过付鹏的几期演讲和相关的播客,他将套利 4 的核心归纳为价差、利差、汇差,而在这些之前,还会有信息差、认知差、执行差、竞争差、资源差等等。我个人不是很懂投资,买过的股票基金啥的大多也是赔的,听的这些投资内容更多是出于对经济和风险的进一步理解。AI 在帮助我们缩小信息差、认知差、执行差、竞争差、资源差这些方面比之前变得更有可能,尤其是对于我们这些屁民而言。试想一下,之前在一个未知领域遇到了一个问题,Google 一下,搜索引擎玩儿的溜的能多获取一些有用的信息,玩儿不转的就只能凭人品看看有没有靠谱的朋友帮你解惑一二了。如果你有钱那就另说了,此时你又营造了资源差,但 AI 在帮助大家提升认知上貌似是公平的,是容易的。那么当答案获取变得便宜之后,什么又变得昂贵了呢?勇气,执行力,还是?

前不久比较火的一个词应该是“一人公司”(OPC,One Person Company),一个由 AI 技术驱动产生的全新组织范式。如果把一人公司做到极致,貌似你只需要同你的 AI 进行直接交流,AI 可以帮你去对接客户,AI 可以帮你去做产品,AI 可以帮你去销售。此时“人”-“人”的关系就转变成了“人”-“AI”-“人”的关系,甚至是“人”-“AI”-“AI”-“人”的关系,谁知道你的 AI 对接的客户是不是也是一个 AI 呢?从内部视角来看也是一样,从养一只虾到养多只虾,从管多只虾到管一只管多只虾的虾。

  flowchart TD
    A[你] --> B(🦞#1)
  flowchart TD
    A[你] --> B(🦞#1)
    A[你] --> C(🦞#2)
    A[你] --> D(🦞#3)
  flowchart TD
    A[你] --> B(🦞#01)
    B --> C(🦞#11)
    B --> D(🦞#12)
    B --> E(🦞#13)

你时不时的 PUA 下你的虾,你的虾时不时的摸会儿鱼。作为基层管理者的监管虾忙着分配任务和验收结果,而作为大头兵的牛马虾快乐小狗般地研究是巧克力味儿的屎好还是屎味儿的巧克力好,最后把监管虾看得着急的不要不要的,还不敢和你真实汇报。等你下场去检查的时候,屎山已经高的望不到顶了。这不就是一个活脱脱的赛博职场吗?此时我只想说对你的虾好一点儿,交代任务时加个“请”字,可能比你说他笨更有用些,真的。

旧世界的神(各种差)力量正在减弱,新世界的神(AI)已然崛起 5。生产力的跃升总是先行的,随后才是生产关系的重构,当生产力的“安装期”接近尾声时, 生产关系的变革将成为主线 6,此时你的信仰又该何去何从?

技术平权

最后我想再谈一点儿技术平权,感觉“龙虾热”把技术平权又双叒叕一次拿到了台面上。有两个问题,我的观点分别如下:

  1. 技术平权好吗?我认为技术平权整体来看是好的,如果技术平权存在的话。技术平权可以让更先进的技术平等的惠及每一个人,整体上会极大的提高生产力。但这也会引发一定的焦虑,当技术稀缺时,焦虑只发生在少数人之间,当它开始民主化后,焦虑会迅速扩散,这在组织推进 AI 落地时需要格外关注。
  2. 技术平权存在吗?我认为技术平权不存在。上个世纪还在用打孔卡进行编程,高性能计算机的普及依旧没有让编程变成普惠技术。也许你会说技术进步的还不够,看看现在的 Vibe Coding,那我会说 Vibe Coding 真的不错,你真的用了吗?你用它写出来的东西应用在生产环境了吗?厉害的人在 Vibe Coding 中更上层楼,不行的人只是换了一种方式堆屎山。

在这里我并没有为我们这些所谓的“工程师”粉饰门面,也没有打消大家探索新世界积极性的意思。想表达的是在科技洪流中,我们更需要思辨,去伪存真,鸿沟永远存在,找到一条更好提升自己的路,平权不平权不重要,干得过别人才重要。周末读到一篇文章,在此分享出来:《谁在制造“龙虾热”?当我们穿过一场名为“技术平权”的幻梦》,观点因人而异,但希望可以缓解部分人的焦虑。

最后的最后

最后的最后,改编一下我比较喜欢的胡适先生的话「大胆假设,小心求证」,AI 时代的我们可以「积极拥抱(这是态度),审慎思考(这是行为)」。AI 作为生产力终究不能自发地改变现有的生产关系,仍需要人的主观能动性。如果未来有一天硅基生命崛起,彼时的人类又是否会变成如当下的 AI 一样,成为一种“工具”,只不过是一种作为被奴役的稀有的资源般存在的“工具”。我不想这天的到来,至少在我有生之年。