返回资讯中心
外部精选
软件工程
#开发者实时流

Picos项目让LLM在仅32条CPU指令的裸机环境中从零构建程序

来源标题:What can an LLM build with only 32 CPU instructions?

Picos项目推出一个实验平台,让大语言模型在仅有32条CPU指令的自定义smol32芯片上从机器指令开始构建程序。该环境没有操作系统、文件系统、shell、内存分配器和编程语言,模型必须自行解决代码、数据、栈和图形在固定内存中的布局问题。用户可通过CLI或网页界面限制模型轮次、CPU时钟、RAM和磁盘容量。

Hacker News 最新alwaysfocus2026/11/3 · 昨天20 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

给 LLM 一台小计算机,看它如何从汇编开始构建。

Picos 的起点是一颗定制的 32 位 CPU(smol32)、固定大小的 RAM、裸存储,以及一块 256 × 192 像素的显示屏。没有 guest OS、没有文件系统、没有 shell、没有分配器、没有编程语言、也没有窗口系统。一切都必须从机器指令开始搭建。

这个项目的目标是观察不同模型在严格约束下会做出什么。通过 CLI 或 Web UI,你可以限制轮次数量、隐藏或显示剩余轮次预算,并限制 CPU 时钟、RAM、磁盘和总周期额度。只有裸机器指令和固定容量,模型必须自己想出办法,把代码、数据、栈和图形塞进内存。

Architecture Overview

Hardware & smol32 ISA

Agent Tool Bridge (MCP)

Quick Start

CLI Reference

Experiment Modes & Turn Controls

Live Browser & Mobile Observer

Project Layout

Development & Testing

Documentation

Architecture Overview

┌───────────────────────────────────────────────┐

│ Agent / LLM Provider │

│ (Direct ChatGPT Auth or Codex CLI) │

└───────────────────────┬───────────────────────┘

│ JSON-RPC / MCP

┌───────────────────────▼───────────────────────┐

│ Picos Harness & MCP Bridge │

│ [src/strict.rs] / [src/mcp.rs] │

└───────────────────────┬───────────────────────┘

│ Machine Tools

┌───────────────────────▼───────────────────────┐

│ Virtual Machine │

│ [src/vm.rs] │

│ • smol32 CPU (r0–r15, PC, comparison state) │

│ • Flat mutable RAM (code, data, stack, VRAM) │

│ • Display (256×192 RGB332 @ VIDEO_BASE) │

│ • Raw Disk Storage │

│ • I/O Ports: Serial, Keyboard, Disk, Cycles │

└───────────────┬───────────────────────┬───────┘

│ │

┌───────────────────▼──┐ ┌──────────▼─────────────────┐

│ Assembler / Disasm │ │ HTTP Server & Web Observer │

│ [src/assembler.rs] │ │ [src/server.rs] │

│ [src/disassembler.rs]│ │ [public/index.html] │

└──────────────────────┘ └────────────────────────────┘

严格执行边界(--strict):运行一个纯 Rust 的 agent 循环,使用直接的 ChatGPT 订阅 OAuth(picos login --direct)。它只暴露 9 个虚拟机工具,不提供宿主 shell、文件系统、Python 或 Node.js。

Legacy Codex Runner:把编排工作委托给 Codex CLI(picos login),运行在只读沙箱中,且仅限同样这 9 个 MCP 机器工具。

Hardware & smol32 ISA

Component

Specification

CPU

定制的 32 位无符号 ISA(smol32),16 个寄存器(r0–r15),按字节寻址的 PC,比较标志

Instruction Encoding

固定 8 字节指令(opcode、目标寄存器、操作数类型、保留零字节、32 位立即数/寄存器)

Stack

r15 用作向下增长的栈指针,复位时初始化为 VIDEO_BASE

RAM

单一平坦字节数组,由代码、数据、栈和帧缓冲共享(自修改代码原生可用)

Display

256 × 192 RGB332 像素(49,152 字节,映射在 VIDEO_BASE = RAM_BYTES - 49152)

Disk

固定大小的裸字节数组,通过 I/O 端口逐字节访问;可在机器重启后保留

Virtual Clock

以 MHz 配置(1 MHz = 1,000,000 周期/秒);每条指令的周期开销是确定的

Minimal Instruction Set

整个 CPU 只支持 32 条指令(0x00–0x1f)。没有浮点运算、没有 SIMD 指令、没有硬件中断、没有内存保护环、也没有图形系统调用。设计理念是让原语尽可能小、尽可能透明,然后看 agent 能在其上构建出多少复杂度——从在 VIDEO_BASE 中逐像素绘制位图字体,到在平坦 RAM 中构建 shell、文件结构或自托管编译器。

汇编器伪指令同样极简:.equ、.byte、.word、.ascii、.asciz 和 .space,以及内置常量(RAM_BYTES、DISK_BYTES、VIDEO_BASE、VIDEO_WIDTH、VIDEO_HEIGHT)。精确的二进制编码和每条指令的周期开销见 docs/ISA.md。

Port

in rD, port(读)

out rV, port(写)

0

返回 0

把 rV 的低字节追加到串行输出(保留最近 16,384 字节)

1

从 UTF-8 键盘字节队列中取出下一个字节(为空则返回 0xFFFFFFFF)

CPU 故障

2

读取当前磁盘字节游标

设置磁盘字节游标(0..=DISK_BYTES)

3

读取游标处的磁盘字节并推进游标

把 rV 的低字节写入游标处的磁盘并推进游标

4

读取生命周期周期计数器的低 32 位

CPU 故障

Agent Tool Bridge (MCP)

agent 只能通过 src/mcp.rs 中定义的 9 个窄工具与机器交互:

  1. Install and Authenticate

cargo install --path . --bin picos

Authenticate for strict mode (direct ChatGPT OAuth)

picos login --direct

picos login --direct status

picos models

(或者,运行 picos login 或 picos login --device-code 以使用 Codex 后端 runner)。

picos new terminal --strict --cpu 300 --ram 24 --storage 200 \

--model gpt-6-luna --prompt "build a terminal"

也支持关键字语法:

picos new terminal strict cpu 300 ram 24 storage 200 \

model gpt-6-luna prompt "build a terminal"

picos 会留在前台,启动本地 observer 服务器,打开浏览器,并开始第一轮 agent 交互。随时按 Ctrl+C 可保存机器状态并干净地停止 agent。

List saved experiments under ~/.picos/experiments

picos list

Open the saved machine in the observer without starting inference

picos resume terminal

Resume and start a new agent turn with an updated prompt

picos resume terminal --prompt "Continue building the terminal and test it."

CLI Reference

picos new [NAME] 的选项

Flag

Description

Default

--cpu <MHz>

虚拟时钟频率,整数 MHz

300

--ram <MB>

guest RAM,十进制 MB(1 MB = 1,000,000 字节)

8

--storage <MB>

guest 裸磁盘,十进制 MB(1 MB = 1,000,000 字节)

32

--model <SLUG>

精确的模型 slug(在 --strict 模式下必填)

服务商默认值

--strict

使用纯 Rust、仅虚拟机、直接 OAuth 的 harness

关闭

--prompt <TEXT>

给 agent 的任务指令

必填

--cycles <N>

实验的总生命周期周期预算

60 虚拟秒(clockHz × 60)

--turns <1..24>

初始轮次额度(standard / maximize 模式)

6

--mode <MODE>

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →