当前位置: 首页 > news >正文

灰子学Ai: Ai编程与操作系统

笔者觉得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 一样,记录所有敏感操作。

http://www.cnnetsun.cn/news/2629637.html

相关文章:

  • 给Java开发者的安全自查清单:你的项目还在用有漏洞的XStream版本吗?(附CVE-2021-21351检测与升级指南)
  • 3分钟掌握米哈游游戏扫码登录:MHY_Scanner智能解决方案
  • 如何用Untrunc免费开源工具拯救损坏的视频文件:完整操作指南
  • 做防水施工时什么时候铺设土工布?
  • 告别电脑束缚:手把手教你用U8W烧录器给STC89C52RC做脱机下载(含自动下载避坑指南)
  • 64位Linux系统编译32位protobuf 2.4.1实战指南
  • 别再死磕YOLOv1论文了!用Python从零复现一个简化版(附完整代码)
  • 别再手动调时间了!Windows 11 + Manjaro双系统时间差8小时的终极修复方案
  • PXE 环境搭建
  • 从‘Hello World’到第一个可交互按钮:Cocos Creator + TypeScript 保姆级实战入门
  • 别再让VR角色穿模了!Unity XR Interaction Toolkit 2.3.2 移动碰撞体动态调整保姆级教程
  • RK3562 nfs mount
  • 运动相机能自动标记比赛事件吗?一键解决赛事记录难题
  • 魔百盒M401A安装HA Supervised后,HACS加载慢、蓝牙不正常?这些优化配置一个都不能少
  • 从零配置Claude自动修Bug:6步打造全自动开发流程
  • 【USV路径规划】基于matlab改进后的A算法与流场自适应动态窗口方法复杂河流环境中无人地面车辆的自主路径规划【含Matlab源码 15574期】
  • ACE与CHI接口的DVM接受能力差异与设计要点
  • 告别Electron臃肿!用Tauri 2.0将你的网站URL秒变桌面软件(附完整配置流程)
  • Arduino引脚状态检测:从原理到实践的可靠诊断方案
  • GBFR Logs:将《碧蓝幻想:RELINK》战斗数据转化为你的制胜策略
  • 金指云 MES 赋能新材料企业数字化转型实战指南
  • AI Agent Harness Engineering 办公协作工具:多人协作场景下的Agent角色设计
  • PUBG罗技鼠标宏终极配置指南:从零开始实现自动识别压枪
  • 算力筑基,场景破界 | 倍联德全场景算力研讨会圆满落幕
  • Keil MDK软件包更新指南与最佳实践
  • LPC2000 JTAG调试问题与ULINK2复位电路解决方案
  • AI时代,物流行业为什么越来越需要“系统能力”?物流行业一直是高度依赖流程协同的行业。从:仓储配送客服数据调度到:订单管理售后处理供应链协同背后都需要复杂的系统支持
  • 别再同步改动了!OrCAD Capture 层次化电路‘解耦’保姆级教程
  • 从电路设计到生活应用:Instructables创客平台全攻略
  • 微图4从入门到实战(14):查询定位之按瓦片编号定位