笔者觉得Ai编程更像是一个针对操作系统的使用,于是将操作系统中的进程与内核概念,与当代AI Agent系统中的智能体(Agent)与大模型(LLM)进行系统性类比。

一、核心类比概览

二、大模型:无状态的计算内核

2.1 操作系统内核的本质

操作系统内核是计算机系统的核心部分,提供进程调度、内存管理、文件系统、设备驱动等基础服务。内核本身是无状态的——它不记忆哪个进程之前做了什么,每次系统调用都基于当前传入的参数和内核中的数据结构(如文件描述符表、页表)来执行。

内核的关键特征:

· 无状态性:不保留进程间的历史信息

· 特权级分离:运行在 ring 0(内核态),应用运行在 ring 3(用户态)

· 提供系统调用接口:read()、write()、open() 等标准入口

· 资源抽象:将硬件资源抽象为文件、进程、内存页等概念

2.2 大模型作为“推理内核”

大模型(LLM)本质上是一个无状态的计算引擎。它接收输入序列(Token),通过神经网络计算输出下一个 Token 的概率分布。

大模型内核的核心组件:

关键区别:

· 内核管理外部资源(CPU、内存、磁盘);

大模型内核管理内部参数(权重、KV Cache)。

· 内核执行确定性指令;

大模型执行概率性生成。

2.3 无状态性的工程含义

正如内核不记忆进程历史,大模型也不记忆对话历史。每次请求都是独立的:

# 内核行为(无状态)
syscall read(fd, buf, count)  # 结果仅取决于 fd 的当前偏移量

# 大模型行为(无状态)
response = llm.generate(prompt)  # 结果仅取决于 prompt 和模型权重

三、Agent:运行在内核之上的“进程”

3.1 进程的本质

进程是操作系统中的执行单元,包含:

· 进程控制块(PCB):存储 pid、状态、优先级、程序计数器

· 地址空间:代码段、数据段、堆、栈

· 打开的文件描述符表

· 执行上下文:寄存器值、信号掩码

3.2 Agent 作为“智能进程”

AI Agent 是在大模型(内核)之上运行的自主执行单元:

3.3 Agent 的执行循环(类比进程的指令周期)

这与 CPU 的 取指-译码-执行-写回 周期高度相似:

四、Context:Agent 的地址空间

4.1 进程地址空间

进程的地址空间包含:

· 代码段 (.text):只读,存放指令

· 数据段 (.data/.bss):全局变量和静态变量

· 堆 (Heap):动态分配的内存,可增长

· 栈 (Stack):函数调用和局部变量

4.2 Agent 的 Context 结构

class AgentContext:
   # 类似代码段:只读,定义行为边界
   system_prompt: str           # "你是一个客服助手..."
   
   # 类似数据段:持久化的用户信息
   user_profile: dict           # 用户偏好、历史行为
   
   # 类似堆:动态增长的对话历史
   conversation_history: list   # 每轮 user/assistant 消息
   
   # 类似栈:当前任务的临时状态
   current_task: dict           # 正在执行的任务参数
   tool_call_stack: list        # 嵌套工具调用栈

4.3 Context 管理的核心挑战

正如进程地址空间受限于物理内存大小,Agent 的 Context 受限于模型的 上下文窗口(如 128K tokens)。解决方案也惊人地相似:

五、Tool 与系统调用:请求内核服务的标准接口

5.1 系统调用

操作系统提供系统调用作为用户程序请求内核服务的标准接口:read()、write()、open()、fork() 等。每个系统调用都有:

· 明确的名称和参数

· 返回值(成功/失败码)

· 错误处理机制

5.2 Tool 作为“AI 系统调用”

Tool 是 Agent 调用外部能力的标准接口。无论是搜索、计算、数据库查询还是文件操作,都通过 Tool 完成。

对比示例:

Tool 调用的完整生命周期(与系统调用高度相似):

@startuml
:Agent 发起 Tool 调用;

if (Harness 检查权限) then (拒绝)
       :抛出异常/终止;
       stop
else (允许)
       :序列化参数/执行;
       :解析返回值;
       :更新 Context;
endif
@enduml

六、外部记忆系统:从物理内存到向量存储

6.1 向量数据库 = 虚拟内存 + 交换分区

操作系统实现: 虚拟内存系统允许进程访问比物理内存更大的地址空间,不常用的页被换出到磁盘交换区,需要时再换入。

AI 对应: 向量数据库允许 Agent 访问远超上下文窗口的信息量。语义相关的向量片段被“换入”Context,使用完毕后不再保留。

6.2 知识库 = /proc 文件系统

/proc 是 Linux 内核暴露的动态文件系统,提供只读的结构化系统信息(如 /proc/cpuinfo、/proc/meminfo)。

传统知识库 提供结构化、预先整理好的事实信息,Agent 通过精确查询获取,结果确定。

6.3 图数据库 = 文件系统目录树 + 链接

文件系统 通过目录树和硬/软链接存储文件的层级关系和引用关系。从根 / 出发可以遍历整个命名空间。

图数据库 存储实体之间的复杂关系(如社交网络、知识图谱),支持多对多、变长路径的遍历查询。

七、龙虾(OpenClaw):特权进程的典型案例

7.1 什么是“龙虾”

OpenClaw 是一个能直接操作用户电脑的 AI 应用——可以收发微信/邮件、打开软件、处理文件。从操作系统视角看,它相当于一个 拥有 root 权限并能 ptrace 其他进程的特权进程。

7.2 为什么需要 Harness

在操作系统中,我们不会让普通程序拥有 root 权限,更不能让其无限制地 ptrace 其他进程。同样,龙虾这类特权 Agent 必须被“套上缰绳”——这就是 Harness。

一句话:Harness 让龙虾成为“戴着镣铐跳舞”的特权进程——能力强大,但每一步都在监控和控制之下。

八、Subagent 与 Agent Teams

8.1 Subagent = 子进程 / 线程

主 Agent 可以通过 create_subagent() 创建子 Agent 处理特定子任务:

# 类似 fork()
sub = agent.spawn_subagent(
   instruction="整理这三个文档的要点",
   tools=[summarize_tool]
)
result = sub.join()  # 类似 waitpid()

8.2 Agent Teams = 进程组

多个 Agent 组成团队协同完成任务:

@startuml
rectangle "Agent Team" {
       [PM Agent] as PM
       [Dev Agent] as Dev
       [Test Agent] as Test
       [Ops Agent] as Ops
   
       PM <--> Dev : 消息
       PM --> Test : 消息
       PM --> Ops : 消息
       Dev --> Test : 消息
       Dev --> Ops : 消息
       Test --> Ops : 消息
}
@enduml

进程组中可以通过信号(如 SIGTERM)控制整个组;Agent Team 中可以通过协调器向所有成员广播指令。

九、总结:从类比中获得的工程启示

9.1 核心对应关系总表

9.2 关键区别总结

9.3 借鉴操作系统的最佳实践

1. 隔离性:像进程地址空间隔离一样,为 Agent 设计独立的 Context 沙箱。

2. 标准化接口:像 POSIX 系统调用一样,定义统一的 Tool 调用规范。

3. 可观测性:像 strace、perf 一样,为 Agent 提供完整的执行跟踪能力。

4. 资源控制:像 cgroups 一样,限制 Agent 的 Token 消耗、Tool 调用次数。

5. 安全审计:像 auditd 一样,记录所有敏感操作。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐