技术

next prompt工程——skill 从chatbot到clawbot typescript学习 Agent前端 Agent调优 Agent评估 OS Agent Agent与软件开发 提升Agent能力——上下文工程 llm评测 rl微调 分布式Agent与A2A deepresearch梳理 mcp学习 SSE 和 WebSocket 是什么? AutoGen学习 Python ioc 从0到1构建一个db 上下文记忆——AI Agent native 的任务存储机制 线性RAG的进化——agentic rag 图数据库的一些考量 推理LLM梳理 Agent演进 LLM预训练 向量数据库的一些考量 fastapi+sqlalchemy进行项目开发 LLM微调实践 Python协程实现 Agent Functon Calling LLamaIndex入门 另一种微服务架构Multi-Agent Python虚拟机 LangGraph工作流编排 Python实践 增强型LLM——Agent 激发LLM涌现——提示工程 LLM微调理论 大佬谈LLM LLM外挂知识库 LLMOps 多模态LLM Python一些比较有意思的库 Transformers源码学习 LangChain源码学习 通用分布式计算引擎Ray Python并发 go依赖注入 go collection gc的基本原理 golang性能分析及优化 数据湖 高性能计算与存储 Linux2.1.13网络源代码学习 《大数据经典论文解读》 三驾马车学习 Spark 内存管理及调优 Yarn学习 从Spark部署模式开始讲源码分析 容器狂占内存资源怎么办? 多角度理解一致性 golang io使用及优化模式 Flink学习 c++学习 学习ebpf go设计哲学 ceph学习 学习mesh kvm虚拟化 学习MQ go编译器以及defer实现 学习go 为什么要有堆栈 汇编语言 计算机组成原理 运行时和库 Prometheus client mysql 事务 mysql 事务的隔离级别 mysql 索引 坏味道 学习分布式 学习网络 学习Linux go堆内存分配 golang 系统调用与阻塞处理 Goroutine 调度过程 重新认识cpu mosn有的没的 负载均衡泛谈 单元测试的新解读 《Redis核心技术与实现》笔记 《Prometheus监控实战》笔记 Prometheus 告警学习 calico源码分析 对容器云平台的理解 Prometheus 源码分析 并发的成本 基础设施优化 hashicorp raft源码学习 docker 架构 mosn细节 与微服务框架整合 Java动态代理 编程范式 并发通信模型 《网络是怎样连接的》笔记 go channel codereview gc分析 jvm 线程实现 go打包机制 go interface及反射 如何学习Kubernetes 《编译原理之美》笔记——后端部分 《编译原理之美》笔记——前端部分 Pilot MCP协议分析 go gc 内存管理玩法汇总 软件机制 istio流量管理 Pilot源码分析 golang io 学习Spring mosn源码浅析 MOSN简介 《datacenter as a computer》笔记 学习JVM Tomcat源码分析 Linux可观测性 学习存储 学计算 Gotty源码分析 kubernetes operator kaggle泰坦尼克问题实践 kubernetes扩缩容 神经网络模型优化 直觉上理解深度学习 如何学习机器学习 TIDB源码分析 什么是云原生 Alibaba Java诊断工具Arthas TIDB存储——TIKV 《Apache Kafka源码分析》——简介 netty中的线程池 guava cache 源码分析 Springboot 启动过程分析 Spring 创建Bean的年代变迁 Linux内存管理 自定义CNI IPAM 共识算法 spring redis 源码分析 kafka实践 spring kafka 源码分析 Linux进程调度 让kafka支持优先级队列 Codis源码分析 Redis源码分析 C语言学习 《趣谈Linux操作系统》笔记 docker和k8s安全访问机制 jvm crash分析 Prometheus 学习 Kubernetes监控 Kubernetes 控制器模型 容器日志采集 容器狂占资源怎么办? Kubernetes资源调度——scheduler 时序性数据库介绍及对比 influxdb入门 maven的基本概念 《Apache Kafka源码分析》——server Kubernetes类型系统 源码分析体会 《数据结构与算法之美》——算法新解 Kubernetes源码分析——controller mananger Kubernetes源码分析——apiserver Kubernetes源码分析——kubelet Kubernetes介绍 ansible学习 Kubernetes源码分析——从kubectl开始 jib源码分析之Step实现 线程排队 jib源码分析之细节 跨主机容器通信 jib源码分析及应用 为容器选择一个合适的entrypoint kubernetes yaml配置 《持续交付36讲》笔记 mybatis学习 程序猿应该知道的 无锁数据结构和算法 CNI——容器网络是如何打通的 为什么很多业务程序猿觉得数据结构和算法没用? 串一串一致性协议 当我在说PaaS时,我在说什么 《数据结构与算法之美》——数据结构笔记 PouchContainer技术分享体会 harbor学习 用groovy 来动态化你的代码 精简代码的利器——lombok 学习 《深入剖析kubernetes》笔记 编程语言那些事儿 rxjava3——背压 rxjava2——线程切换 spring cloud 初识 《深入拆解java 虚拟机》笔记 《how tomcat works》笔记 hystrix 学习 rxjava1——概念 Redis 学习 TIDB 学习 如何分发计算 Storm 学习 AQS1——论文学习 Unsafe Spark Stream 学习 linux vfs轮廓 《自己动手写docker》笔记 java8 实践 中本聪比特币白皮书 细读 区块链泛谈 比特币 大杂烩 总纲——如何学习分布式系统 hbase 泛谈 forkjoin 泛谈 看不见摸不着的cdn是啥 《jdk8 in action》笔记 程序猿视角看网络 bgp初识 calico学习 AQS——粗略的代码分析 我们能用反射做什么 web 跨域问题 《clean code》笔记 《Elasticsearch权威指南》笔记 mockito简介及源码分析 2017软件开发小结—— 从做功能到做系统 《Apache Kafka源码分析》——clients dns隐藏的一个坑 《mysql技术内幕》笔记 log4j学习 为什么netty比较难懂? 递归、回溯、动态规划 apollo client源码分析及看待面向对象设计 学习并发 docker运行java项目的常见问题 OpenTSDB 入门 spring事务小结 分布式事务 javascript应用在哪里 《netty in action》读书笔记 netty对http2协议的解析 ssl证书是什么东西 http那些事 苹果APNs推送框架pushy apple 推送那些事儿 编写java框架的几大利器 java内存模型和jvm内存布局 java exception Linux IO学习 netty内存管理 测试环境docker化实践 netty在框架中的使用套路 Nginx简单使用 《Linux内核设计的艺术》小结 Go并发机制及语言层工具 Linux网络源代码学习——数据包的发送与接收 《docker源码分析》小结 docker namespace和cgroup zookeeper三重奏 数据库的一些知识 Spark 泛谈 链式处理的那些套路 netty回顾 Thrift基本原理与实践(二) Thrift基本原理与实践(一) 回调 异步执行抽象——Executor与Future Docker0.1.0源码分析 java gc Jedis源码分析 深度学习泛谈 Linux网络命令操作 JTA与TCC 换个角度看待设计模式 Scala初识 向Hadoop学习NIO的使用 以新的角度看数据结构 并发控制相关的硬件与内核支持 systemd 简介 quartz 源码分析 基于docker搭建测试环境(二) spring aop 实现原理简述 自己动手写spring(八) 支持AOP 自己动手写spring(七) 类结构设计调整 分析log日志 自己动手写spring(六) 支持FactoryBean 自己动手写spring(九) 总结 自己动手写spring(五) bean的生命周期管理 自己动手写spring(四) 整合xml与注解方式 自己动手写spring(三) 支持注解方式 自己动手写spring(二) 创建一个bean工厂 自己动手写spring(一) 使用digester varnish 简单使用 关于docker image的那点事儿 基于docker搭建测试环境 分布式配置系统 JVM执行 git maven/ant/gradle/make使用 再看tcp kv系统 java nio的多线程扩展 《Concurrency Models》笔记 回头看Spring IOC IntelliJ IDEA使用 Java泛型 vagrant 使用 Go常用的一些库 Python初学 Goroutine 调度模型 虚拟网络 《程序员的自我修养》小结 Kubernetes存储 访问Kubernetes上的Service Kubernetes副本管理 Kubernetes pod 组件 Go基础 JVM类加载 硬币和扑克牌问题 LRU实现 virtualbox 使用 ThreadLocal小结 docker快速入门

架构

rl与sft 大模型infra综述 OpenTelemetry及生态 大模型可观测性 grpo演进 rlhf演进 agent框架 reward演进 大模型RLHF框架 大模型rl后训练系统 GPU与CUDA RL闲谈 MCTS与LLM rl与post-train rl入门 从Transformer到DeepSeek bert rerank微调 大模型推理tips RAG向量检索与微调 dddfirework源码分析 RAG与知识图谱 大模型推理服务框架vLLM 大模型推理服务框架 模型服务化(未完成) 大模型Post-Training 大模型训练 大模型推理 从Attention到Transformer k8s设备管理 ddd从理念到代码 如何应用LLM 语言模型的发展 多类型负载协调员Koordinator controller-runtime细节分析 finops学习 kubevela多集群 kubevela中cue的应用 基于k8s的工作流 kubevela源码分析 容器和CPU那些事儿 数据集管理fluid 应用管理平台kubevela karmada支持crd 多集群管理 AutoML和AutoDL 特征平台 实时训练 分布式链路追踪 K8S YAML 资源清单管理方案 tensorflow原理——python层分析 如何学习tensorflow 数据并行——allreduce 数据并行——ps 推荐系统embedding原理及实践 机器学习中的python调用c 机器学习训练框架概述 tensornet源码分析 大模型训练和推理 X的生成——特征工程 tvm tensorflow原理——core层分析 模型演变 《深度学习推荐系统实战》笔记 keras 和 Estimator tensorflow分布式训练 分布式训练的一些问题 基于Volcano的弹性训练 图神经网络 pytorch弹性分布式训练 从混部到统一调度 对序列建模——从RNN到Attention pytorch分布式训练 CNN 《动手学深度学习》笔记 pytorch与线性回归 多活 volcano特性源码分析 推理服务 kubebuilder 学习 mpi 学习pytorch client-go学习 提高gpu 利用率 GPU与容器的结合 GPU入门 AI云平台梳理 tensorflow学习 tf-operator源码分析 k8s批处理调度/Job调度 喜马拉雅容器化实践 Kubernetes 实践 学习rpc BFF openkruise学习 可观察性和监控系统 监控系统 基于Kubernetes选主及应用 《许式伟的架构课》笔记 Admission Controller 与 Admission Webhook 发布平台系统设计 k8s水平扩缩容 Scheduler如何给Node打分 Scheduler扩展 深入controller openkruise cloneset学习 controller-runtime源码分析 pv与pvc实现 csi学习 client-go informer源码分析 kubelet 组件分析 调度实践 Pod是如何被创建出来的? 《软件设计之美》笔记 mecha 架构学习 Kubernetes events学习及应用 CRI——kubelet与容器引擎之间的接口 资源调度泛谈 业务系统设计原则 grpc学习 元编程 以应用为中心 istio学习 下一代微服务Service Mesh 《实现领域驱动设计》笔记 概率论 serverless 泛谈 《架构整洁之道》笔记 处理复杂性 那些年追过的并发 服务器端编程 网络通信协议 架构大杂烩 如何学习架构 《反应式设计模式》笔记 项目的演化特点 反应式架构摸索 函数式编程的设计模式 服务化 ddd反模式——CRUD的败笔 研发效能平台 重新看面向对象设计 业务系统设计的一些体会 函数式编程 《左耳听风》笔记 业务程序猿眼中的微服务管理 DDD实践——CQRS 项目隔离——案例研究 《编程的本质》笔记 系统故障排查汇总及教训 平台支持类系统的几个点 代码腾挪的艺术 abtest 系统设计汇总 《从0开始学架构》笔记 初级权限系统设计 领域驱动理念 现有上传协议分析 移动网络下的文件上传要注意的几个问题 推送系统的几个基本问题 做配置中心要想好的几个基本问题 不同层面的异步 分层那些事儿 用户认证问题 资源的分配与回收——池 消息/任务队列

标签

k8s设备管理 多类型负载协调员Koordinator controller-runtime细节分析 finops学习 kubevela多集群 kubevela中cue的应用 基于k8s的工作流 kubevela源码分析 容器和CPU那些事儿 数据集管理fluid 应用管理平台kubevela karmada支持crd 多集群管理 K8S YAML 资源清单管理方案 从混部到统一调度 volcano特性源码分析 kubebuilder 学习 client-go学习 tf-operator源码分析 k8s批处理调度/Job调度 喜马拉雅容器化实践 Kubernetes 实践 openkruise学习 基于Kubernetes选主及应用 Admission Controller 与 Admission Webhook k8s水平扩缩容 Scheduler如何给Node打分 Scheduler扩展 深入controller openkruise cloneset学习 controller-runtime源码分析 pv与pvc实现 csi学习 client-go informer源码分析 kubelet 组件分析 调度实践 Pod是如何被创建出来的? Kubernetes events学习及应用 CRI——kubelet与容器引擎之间的接口 资源调度泛谈 如何学习Kubernetes 以应用为中心 kubernetes operator kubernetes扩缩容 serverless 泛谈 什么是云原生 自定义CNI IPAM docker和k8s安全访问机制 Kubernetes监控 Kubernetes 控制器模型 Kubernetes资源调度——scheduler Kubernetes类型系统 Kubernetes源码分析——controller mananger Kubernetes源码分析——apiserver Kubernetes源码分析——kubelet Kubernetes介绍 Kubernetes源码分析——从kubectl开始 kubernetes yaml配置 CNI——容器网络是如何打通的 当我在说PaaS时,我在说什么 《深入剖析kubernetes》笔记 Kubernetes存储 访问Kubernetes上的Service Kubernetes副本管理 Kubernetes pod 组件
next prompt工程——skill 从chatbot到clawbot Agent前端 Agent调优 Agent评估 OS Agent rl与sft 大模型infra综述 Agent与软件开发 提升Agent能力——上下文工程 llm评测 大模型可观测性 rl微调 grpo演进 rlhf演进 agent框架 分布式Agent与A2A reward演进 deepresearch梳理 mcp学习 大模型RLHF框架 大模型rl后训练系统 GPU与CUDA RL闲谈 MCTS与LLM rl与post-train rl入门 AutoGen学习 从Transformer到DeepSeek 上下文记忆——AI Agent native 的任务存储机制 线性RAG的进化——agentic rag bert rerank微调 大模型推理tips 推理LLM梳理 Agent演进 LLM预训练 RAG向量检索与微调 LLM微调实践 RAG与知识图谱 大模型推理服务框架vLLM Agent Functon Calling LLamaIndex入门 另一种微服务架构Multi-Agent LangGraph工作流编排 大模型推理服务框架 模型服务化(未完成) 大模型Post-Training 大模型训练 大模型推理 从Attention到Transformer 增强型LLM——Agent 激发LLM涌现——提示工程 LLM微调理论 大佬谈LLM LLM外挂知识库 LLMOps 多模态LLM Transformers源码学习 LangChain源码学习 如何应用LLM 语言模型的发展 AutoML和AutoDL 特征平台 实时训练 tensorflow原理——python层分析 如何学习tensorflow 数据并行——allreduce 数据并行——ps 推荐系统embedding原理及实践 机器学习中的python调用c 机器学习训练框架概述 tensornet源码分析 大模型训练和推理 X的生成——特征工程 tvm tensorflow原理——core层分析 模型演变 《深度学习推荐系统实战》笔记 keras 和 Estimator tensorflow分布式训练 分布式训练的一些问题 基于Volcano的弹性训练 图神经网络 pytorch弹性分布式训练 对序列建模——从RNN到Attention pytorch分布式训练 CNN 《动手学深度学习》笔记 pytorch与线性回归 推理服务 mpi 学习pytorch 提高gpu 利用率 GPU与容器的结合 GPU入门 AI云平台梳理 tensorflow学习 kaggle泰坦尼克问题实践 神经网络模型优化 概率论 直觉上理解深度学习 如何学习机器学习 深度学习泛谈

从chatbot到clawbot

2026年02月02日

简介

AI的发展正在经历从“信息检索”到“任务执行”的范式转移。 OpenClaw是一个 Local-First (本地优先, vs manus 这种Cloud-native产品) 的 AI Agent 运行时环境,旨在将大模型(LLM)的能力与用户的本地系统、工具链和通讯软件深度结合。最擅长处理那些跨平台、需要系统级权限且带有自动化性质的任务。

  1. IM 入口带来的体验质变
  2. 拟人,主动。会主动问你今天怎么样,会在完成任务后开个小玩笑,会记得你上次抱怨过什么。
  3. Memory做的好。Memory 会是 ChatBot 产品的最大壁垒。

架构

编排流程

  1. 感知 (Observe):接收用户消息 + 读取最近的 MEMORY 上下文 + 系统状态。
  2. 规划 (Plan/Reasoning):LLM 进行思考(Chain-of-Thought),决定是否需要调用工具。
  3. 行动 (Act):LLM 输出结构化 JSON (Tool Call)。Runtime 拦截并执行对应的 JavaScript 函数(如 read, exec)。
  4. 关键点:如果任务复杂,Agent 会自行决定生成并运行一段代码,或者 Spawn 一个 Sub-Agent(子智能体)。
  5. 反馈 (Reflect):工具的输出(stdout/stderr/file)回传给 LLM,LLM 判断任务是否完成,未完成则继续循环。

多智能体 (Sub-Agents):通过 sessions_spawn 工具,主 Agent 可以分裂出子 Session 处理耗时任务(如:“帮我爬取这10个网站并总结”)。子 Agent 在独立上下文中运行,完成后回调主 Agent。

OpenClaw 的核心是什么?在于 3 个文件。

  1. SOUL.md(Agent如何思考与交流),SOUL.md 承担的工作比系统中任何其他组件都重,代理在每次对话开始时都会读取它,并将其作为沟通的基础,包括语气、回复的优先级、行为边界等。如果你的代理回复让你感觉哪里不对劲,但又说不出个所以然,答案通常就在这个文件里。
  2. USER.md(代理在为谁工作)要提供足够的背景信息,让 OpenClaw 感觉它已经认识你几十年了。
  3. MEMORY.md(代理长期记忆的内容)

关键设计

记忆的分层结构和记忆的按需加载(file system 式的)

Steinberger 提到OpenClaw 的哲学是:记忆属于用户。所有的交互历史和上下文都以 Markdown 文件形式存储在本地,这种透明且可迁移的“本地优先”模式,是保护个人隐私的最终防线。

本地架构、记忆管理、Agent 编排与上下文组装原理 self-evolving, 没有 memory,Agent 基本上就没有进化的能力。比如反馈都做成 memory,写记忆就是写文件,记忆就是agent workspace 里的md文件。

  1. Session Context(会话上下文), 仅存在于系统内部的会话状态流。用户无法直接访问或编辑, 完全由系统自动管理,包含 Compaction 逻辑。会话会持久化存储在一个基础的 .jsonl 文件中,每一行都是一个包含用户消息、工具调用、执行结果及模型响应的 JSON 对象。
  2. Daily Logs(每日日志/流水),每日的原始流水账记录,存储在用户项目根目录下。混合模式 (Hybrid): 既包含原始交互日志,也包含 Memory Flush 产生的自动摘要。Append-only(只追加)。用户可读可写,系统自动加载“今天+昨天”。
  3. Curated Memory(精选记忆),长期维护的、经过提炼的事实、偏好和决策。仅在主会话 (Main Session) 中加载,用户可手动编辑优化。
~/clawd/
├── MEMORY.md              - 第二层:经整理的长期知识库
└── memory/
    ├── 2026-01-26.md      - 第一层:今日笔记
    ├── 2026-01-25.md      - 第一层:昨日笔记
    ├── 2026-01-24.md      - 第一层:往期笔记
    └── ...

AGENTS.md存着智能体的指令和记忆使用规则,示例如下:

每次会话的必做步骤
开始任何操作前,需完成以下步骤:
1. 读取SOUL.md文件——定义智能体的自身定位
2. 读取USER.md文件——明确服务的用户信息
3. 读取memory目录下今日和昨日的日志文件——获取近期上下文
4. 若为「主会话」(与用户的直接聊天),额外读取MEMORY.md——获取长期记忆
无需向用户申请权限,直接执行即可。

具体到记忆部分

## Memory Recall
Before answering anything about prior work, decisions, dates, people, preferences, or todos: run memory_search on MEMORY.md + memory/*.md; then use memory_get to pull only the needed lines. If low confidence after search, say you checked.

Recall (召回):

  1. memory_search是其中一个工具,由模型决策是否需要召回记忆。memory_get在memory_search(找到相关内容的文件路径后)之后用来精准读取文件里的指定内容。
  2. 提到 “Last time” (上次), “Previous” (之前)。
  3. 询问 项目细节、代码逻辑、历史决策。
  4. 询问 个人偏好 (“我喜欢什么颜色?”)。
  5. 任务依赖 上下文连贯性 (“继续上次的话题”)。
  6. Compaction :定期回顾 memory/daily.md,提炼精华写入 MEMORY.md,模拟人类的“海马体到皮层”的记忆固化过程。

有一层对用户的理解,有人设 (SOUL.md),对用户的理解(USER.md)。

没有设计专属的 memory_write 工具,而是直接用智能体自带的、用于文件操作的标准write和edit工具完成记忆写入。agent的写入行为由 AGENTS.md 中的提示词规则驱动,不同的记忆内容会被写入不同的文件,形成了清晰的写入规则,不同触发场景对应不同的写入文件:

  1. 日常笔记、临时需要记录的内容,会写入memory/YYYY-MM-DD.md按日归档;
  2. 长期有效的事实、个人偏好、关键决策,会写入MEMORY.md作为核心知识库;
  3. 经验总结、工具的实操技巧,会写入AGENTS.md或TOOLS.md,让记忆和智能体的能力配置结合更紧密。
  4. 系统还会在两个关键节点自动执行记忆写入:
    1. 一是对话历史压缩前的记忆刷写阶段,
    2. 二是会话正式结束时,这两个节点的自动写入,能有效避免关键信息因对话结束或压缩而丢失。

Clawdbot 设计了自动索引构建功能,只要你保存了任意一个记忆文件(不管是智能体自动写入还是手动编辑),系统都会在后台自动触发索引构建流程,确保新内容能被快速检索。系统会用Chokidar工具监控文件变化,为了避免频繁写入触发重复操作,还设置了1.5秒的防抖延迟;然后,系统会把文件内容分成约400个token的文本块,相邻文本块会保留80个token的重叠区域,这样既能保证语义连贯,又能提高检索精度;接着每个文本块会被传入embedding模型,转换成1536维的embedding数据,最后存储在数据库里。过程中,会结合语义检索(向量检索)和关键词检索(BM25)两种方式,按 7:3 的权重计算最终检索得分,公式如下最终得分 = 0.7 × 向量检索得分 + 0.3 × 关键词检索得分

更主动——Heartbeat(心跳)与 Cron(定时)系统

这些系统让它从一个被动工具变成了一个后台协作伙伴。

  1. 心跳是一个预设的间隔时间,代理会自主醒来,检查你要求它监控的任务列表,并决定发现的内容是否值得通过消息平台联系你。
  2. Cron 系统处理需要精确时间的任务,而不是周期性扫描。这就像让 ChatGPT 定时推送新闻一样。心跳和 Cron 的区别在于:一个是特定时间点(日/周),另一个是主动的意识检查。不要在应该用心跳的时候用 Cron,反之亦然。

大多数人的 OpenClaw 配置不尽如人意,并不是因为缺少某个文件,而是文件之间不匹配。如果你的代理有详细的 SOUL.md 但记忆是空的,你可能会得到回复语气很漂亮但完全不记得昨天聊了什么的代理。同理,一个有激进心跳监控但 USER.md 极其单薄的代理,发出的通知虽然技术上准确,但完全不符合你的关注点。这两种情况都要避免。与其只花一小时试用一下就决定它是否值得,我建议额外花几个小时按你的期望设置好所有系统。记住:Soul 文件中的性格定义应与 User 文件中的背景对齐,两者应与 Memory 中的信息对齐,最后与 Heartbeat 中的监控优先级对齐。

插件和Skills系统设计

Agent实践的一个关键瓶颈:大多数智能体的“能力”仍嵌在提示词或硬编码逻辑中——难以复用、适配与系统化推理。PS:经验的标准化与售卖。

OpenClaw核心系统只做最基础的事情——消息路由、模型调用、上下文管理、安全沙箱,其他所有功能都通过插件和Skills来实现,这种”核心精简、外围开放”的架构模式,才是做平台型产品的正确姿势。而且它的Skills系统设计得特别工程化。每个Skill就是一个标准格式的配置文件加一个执行脚本,有manifest描述元信息,有input/output schema定义接口,有sandbox配置指定权限边界。

skill分为三个层级,优先级从高到低:

  1. Workspace Skills:位于当前项目目录,仅对该项目生效。
  2. User Skills:位于 ~/.clawdbot/skills/,对该用户的所有项目生效。
  3. Bundled Skills:项目自带的内置技能。 社区还自发创建了名为 ClawdHub 的技能注册中心,Agent 甚至可被授权自行搜索并安装新技能,以完成超出其当前能力范围的任务。将“做什么”(自然语言描述)和“怎么做”(代码实现)分离,极大地降低了扩展难度。非程序员甚至可在 AI 协助下,通过修改 .md 文件微调 Agent 的行为。

干活儿——安全沙箱机制

Clawd如何操控你的电脑?你直接给它一台电脑,并允许它使用。Clawd 赋予了智能体极高的电脑访问权限(风险由用户自担)。它使用一个 exec 工具在以下环境中运行 Shell 命令:

  1. 沙箱 (Sandbox):这是默认设置,命令在 Docker 容器中运行。
  2. 宿主机:直接在你的主机上运行。
  3. 远程设备:在远程机器上运行。

除此之外,Clawd 还拥有:

  1. 文件系统工具:支持读取、写入和编辑。
  2. 浏览器工具:基于 Playwright 开发,并使用“语义快照”(vs 截图/cdp)。这是一种基于文本的页面可访问性树(Accessibility Tree / ARIA) 的表示形式(浏览网页的行为本质上并不一定是一项视觉任务,一张截图的大小可能有 5 MB,而语义快照通常不到 50 KB)。智能体(Agent)看到的页面结构如下: ```
    • button “Sign In” [ref=1]
    • textbox “Email” [ref=2]
    • textbox “Password” [ref=3]
    • link “Forgot password?” [ref=4]
    • heading “Welcome back”
    • list
    • listitem “Dashboard”
    • listitem “Settings” ```
  3. 进程管理 (Process tool):用于处理后台长期运行的命令、终止进程等。

AI Agent和普通chatbot最大的区别是什么?是它能执行真实操作——跑命令、改文件、发请求、调API。这个能力是双刃剑,问题是怎么降低风险、怎么控制爆炸半径。

  1. 默认情况下Agent执行任何敏感操作都需要用户确认,文件操作只能在指定目录里搞,网络请求有白名单限制,系统命令要过审批。
  2. Docker部署的话更狠——非root用户运行、文件系统可以设成只读、capabilities全部drop掉。
  3. 还有个openclaw security audit –deep命令,能扫描当前配置有没有安全隐患,扫完给你出报告告诉你哪里有风险、怎么修。 OpenClaw的安全策略明确写了”prompt injection attacks are out of scope”——就是说它不试图防prompt注入,因为以现在的技术这玩意防不住。它的思路是:既然prompt注入防不住,那就假设Agent会被”骗”,然后在执行层面做限制,让Agent就算被骗了也干不了太出格的事。

用户交互

IM 即任务入口

  1. 基本上你能想到的平台OpenClaw都支持。每个平台的消息格式不一样、富文本能力不一样、附件限制不一样、webhook机制不一样、rate limit不一样。Clawdbot的做法是搞了一个WebSocket Gateway作为中心枢纽,所有平台的消息都先转成统一的内部格式进Gateway,处理完再转成各平台的格式出去,中间的AI Agent只处理标准格式的输入输出。每个平台对应一个Channel Adapter,Adapter只负责格式转换这一件事,业务逻辑一行都没有。
  2. CLI系统。OpenClaw有100多个CLI子命令,能干的事情包括但不限于:管理Skills、配置插件、调试Agent、查看日志、管理记忆、做安全审计、导入导出数据。为什么这很重要?因为CLI是最被低估的用户体验。

源码

从技术上讲 是一个 TypeScript CLI 应用程序,一个 Node.js 应用。核心配置文件位于 ~/.clawdbot/clawdbot.json,在此调整模型参数、渠道设置、安全策略等。

  1. 运行在你机器上的进程,并暴露一个 网关服务器(Gateway Server) 来处理所有频道连接(Telegram, WhatsApp, Slack 等)。
  2. 调用 LLM API(Anthropic, OpenAI, 本地模型等)。
  3. 在本地执行工具。
  4. 根据你的指令操控电脑。

Channel Adapter ==> Gateway Server ==> Agent Runner ( loop[build context ==> llm call] ==> save response ) ==> Gateway Server ==> Channel Adapter。

Agent Runner 内模型在处理每个请求时到底看到了什么:

[0] 系统提示词 (System Prompt) (静态+条件指令) 
[1] 项目上下文 (引导文件: AGENTS.md, SOUL.md 等) 
[2] 对话历史 (消息, 工具调用, 压缩摘要) 
[3] 当前消息

畅想汇总

  1. 每个人有一个bot,bot 与bot 可以交流
  2. 我们可以预见,未来的个人计算设备,可能不再是一个个独立的 App 图标的集合,而是一个由类似 Clawd 这样的 AI Agent 作为核心交互界面的“个人 AI 操作系统”。用户通过自然语言下达任务,AI Agent 则负责调度设备上的所有硬件、软件和服务资源来完成它。