luminOS:基于 Linux 的 AI 操作系统完整设计方案

luminOS:基于 Linux 的 AI 操作系统完整设计方案

内容
版本v1.4
文档性质工程目录唯一正式设计真源
产品名称luminOS(为 AI Agent 设计的 AI 操作系统)
内核底座Linux 上游 LTS(发行版级用户态系统)
核心命题系统自带 AI 引擎与 Agent;桌面应用无论是否提供 AI 接口,均可被操作系统级 DCP 操控
可行性原则建立在 AT-SPI、Wayland/Portal、D-Bus、cgroup/LSM、现有推理运行时之上;模型不进内核;不依赖厂商私有 AI API;不以逆向业务协议为主路径

实现写法约定(第 4 章每项统一包含): 需求目标 · 模块/进程 · 关键接口或数据 · 依赖 · 失败与降级 · 验收要点。


目录

  1. 产品定义与边界
  2. 总体架构
  3. 功能总览(完整清单)
  4. 功能需求与实现方法(逐项细化)
  5. 关键子系统:DCP 桌面操控平面
  6. 安全、隐私与权限模型
  7. 兼容、发行与硬件
  8. 非功能需求与验收
  9. 工程目录与组件映射
  10. 分期路线图
  11. 明确不做的事项
  12. 术语表
  13. 远程控制协议 RCP(网络与串口)
  14. 总结

1. 产品定义与边界

1.1 是什么

luminOS 是一套面向 AI Agent 设计的 AI 操作系统,以 Linux 内核 为底座。它不是外挂在桌面上的聊天机器人,而是让 Agent 能够使用这台电脑:在常规 Linux 桌面之上内置:

  1. AI 引擎(本地推理 + 可选云端 + RAG + OCR/VLM + 语音可选)
  2. 系统 Agent Runtime(规划、工具、确认、技能、熔断)
  3. 桌面操控平面 DCP(无 AI 接口应用也可被系统级操控)
  4. 统一能力总线(D-Bus / Socket / 本地 MCP·HTTP,同一策略引擎)
  5. 完整发行能力(ISO、安装器、商店、更新回滚、硬件矩阵)
  6. 运维、无障碍增强、调度自动化、企业策略 等桌面 OS 应有配套能力
  7. 远程控制协议 RCP:经网络或串口,用同一套报文控制桌面应用与系统(仍受权限模型约束)

应用默认 零改造 即可被 Agent 操作;清单/Intent 仅为增强。

1.2 核心承诺

承诺含义
OS 提供操控能力无 AI 接口也可被 DCP 尝试操控
Linux 应用可装基线内 deb / Flatpak / 原生 ELF
自带 Agent 与 AI 套件登录即用
安全可控分级确认、审计、可撤销
失败可解释输出通道、原因码、证据
可外接大脑BYO Model / BYO Agent,执行仍在本机 DCP

1.3 不是什么 / 设计铁律

  • 不做内核内大模型;不做应用强制改造;不做验证码/DRM 绕过;不以协议破解为主路径。
  • 铁律: 特权收拢 · 语义优先视觉兜底 · 窗口作用域 · 有断言才算能力 · 少改内核。

2. 总体架构

2.1 分层

入口层(召唤/右键/语音/通知/CLI/SDK/深链)
    → Agent Supervisor(规划/权限/预算/熔断/技能)
    → AI Engine(路由/推理/RAG/OCR/VLM)
    → 能力总线(D-Bus · Socket · MCP/HTTP,同一 Policy Engine)
    → DCP(Discovery · Fusion A/B/C · Actuation · Assert · Profile)
    → 桌面会话(Wayland · XWayland · Portal · IME · AT-SPI)
    → 系统服务(APT/Flatpak · 商店 · 密钥 · 更新 · 调度 · 策略)
    → Linux 内核(LTS · cgroup · LSM/BPF · DRM · namespaces)

2.2 核心进程

进程/组件职责生命周期
dcpd桌面操控每图形会话 --user
agentdAgent Supervisor + 工具总线同上
ai-engined模型/OCR/路由按需或常驻(cgroup 限)
aios-policy权限/确认/审计写入随会话或系统
aios-store-daemon商店元数据/技能包系统服务
compositor窗口/坐标/损伤事件会话
AI 控制中心GUI 设置与任务 UI应用

2.3 典型控制流

Context Packet + 用户目标
  → agentd:意图/计划(可编辑)
  → policy:风险分级与确认
  → tools:dcp.* / fs.* / notify.* / pkg.*
  → dcpd:选通道 → capability → 执行 → 断言
  → audit + timeline → 可选 skill.save

3. 功能总览(完整清单)

A. 系统底座与发行

ID功能
A1Linux LTS 内核与硬件抽象
A2live ISO 与安装器
A3签名更新与回滚
A4账户、会话、密钥环
A5电源/多屏/音频/蓝牙/打印等桌面基础
A6恢复分区与引导急救环境
A7安全启动与镜像签名链(可选开启)

B. 桌面环境

ID功能
B1原生 Wayland 会话
B2XWayland 兼容
B3窗口/工作区/通知/设置
B4自带应用套件
B5输入法一等公民
B6AT-SPI2 默认启用
B7夜间模式/护眼与会话主题(含 AI UI 适配)
B8多指针/无障碍缩放与高对比

C. 应用生态与兼容

ID功能
C1deb 官方仓库
C2Flatpak + 认证 runtime
C3基线 ELF / 条件 AppImage
C4兼容矩阵与商店标签
C5可选 aios.manifest 语义清单
C6应用运行画像采集(本机匿名质量信号,可关)

D. AI 引擎

ID功能
D1本地模型运行时与后端插件
D2云端模型路由
D3模型包管理(签名/热切换/回滚)
D4RAG 与分层记忆
D5OCR / 版面 / 轻量 VLM
D6语音 ASR/TTS(可选)
D7离线降级
D8BYO Model
D9提示注入防护与工具输出隔离
D10模型评测与影子流量

E. Agent 运行时

ID功能
E1系统默认 Agent
E2意图/槽位/规划
E3工具总线与沙箱工具
E4Plan-first 可编辑计划
E5会话信任条与分级确认
E6技能库
E7时间线/重试/紧急停止
E8示范教学 → 技能草稿
E9BYO Agent
E10主动建议(默关)
E11多 Agent 协作总线(同一策略下的角色分工)
E12任务预算(步数/时间/费用/Token)

F. DCP 桌面操控平面

ID功能
F1目标发现
F2Mode-A 语义操控
F3Mode-B 协议操控
F4Mode-C 合成操控
F5三通道融合与降级
F6操控事务
F7客户区坐标/HiDPI/多屏
F8IME commit
F9应用画像包热更新
F10系统 Intent 层
F11通知只读感知
F12拖拽/多步手势与剪贴板中转
F13虚拟列表/懒加载探测策略
F14元素稳定 ID 与重定位
F15工具包镜像 Widget Mirror(动态库内控件树)

G. 便利性入口与上下文

ID功能
G1全局召唤
G2右键交给 AI
G3对本窗口…
G4通知用 AI 处理
G5Context Packet
G6歧义选择器
G7Share / aios:// 深链
G8智能剪贴板(隐私门控)
G9截图即问(框选区域进上下文)

H. 接入与开发者

ID功能
H1D-Bus API
H2Unix Socket JSON-RPC
H3本地 OpenAI 兼容 HTTP
H4系统 MCP Server
H5aios CLI
H6Python / TypeScript SDK
H7Flatpak AI Portal
H8L0/L1/L2 三级接入
H9技能包格式与签名
H10DCP Fixture 与 CI 测试床
H11开发者模式与详细原因码

I. 安全与治理

ID功能
I1四级风险模型
I2沙箱隔离栈
I3凭据 Broker
I4屏幕/音频/输入分权
I5审计证据链
I6敏感界面拒自动
I7验证码/DRM/反自动化不绕过
I8家长控制/应用黑白名单(可选)
I9远程锁止与吊销能力令牌

J. 可观测、性能与运维

ID功能
J1资源守护与性能预算
J2结构化日志与回放
J3硬件探针与降级
J4诊断与安全模式
J5系统日志 AI 诊断助手
J6可选遥测(成功/失败原因码,无屏幕)

K. 调度与事件自动化

ID功能
K1定时 Agent 任务(需策略)
K2事件触发(下载完成/U 盘插入/构建失败等)
K3文件夹监视技能

L. 无障碍 AI 增强

ID功能
L1自然语言读屏增强(基于 AT-SPI + 摘要)
L2「描述当前屏幕/窗口」(授权截图)
L3语音导航桌面(与 DCP 共用)

M. 企业与多用户

ID功能
M1系统策略包(禁用云端/禁用注入/强制审计)
M2多用户隔离(DCP/模型按用户)
M3访客/信息亭模式(Agent 能力裁剪)

N. 虚拟化与工作区隔离

ID功能
N1Agent 工作区容器(高危工具默认进容器)
N2GPU/NPU 共享与配额
N3开发容器与 DCP 可选桥接(显式开启)

R. 远程控制协议(网络 / 串口)

ID功能
R1统一报文 RCP(网络与串口同一编解码)
R2TCP/TLS 传输与配对
R3串口传输(UART/USB-CDC)
R4系统控制报文(电源、会话、服务、设置)
R5应用与桌面控制报文(启动、DCP 发现/快照/动作)
R6Agent 任务报文(下发目标、进度事件、中止)
R7会话鉴权、能力令牌与审计(不绕过 L2/L3)
R8官方客户端 SDK 与抓包调试工具

4. 功能需求与实现方法(逐项细化)

A. 系统底座与发行

A1 Linux LTS 内核与硬件抽象
内容
需求稳定硬件;为 AI/Agent 提供隔离与设备访问;禁止内核推理
模块linux-aios 分支(基于上游 LTS tag);CI rebase 机器人
接口稳定 UAPI:/sys//proc/netlink/DRM;可选 ai.task cgroup 控制器、BPF LSM 钩子、audit tracepoint
依赖上游 stable;固件包;Mesa/厂商用户态
失败设备探针失败 → 用户态降级 CPU;不假装加速
验收认证 SKU 启动/休眠/DRM;自研补丁数有上限并能量化
A2 live ISO 与安装器
内容
需求可试用、可安装(全盘/双系统/手动)、可选加密
模块aios-live-build;安装器(Calamares 或 d-i+preseed)
接口安装配置 JSON/YAML;硬件探测报告
依赖squashfs、grub/ukify、shim(若 Secure Boot)
失败驱动缺失给出可启动救援与日志
验收目标硬件冷启动登录 P95 预算内;安装可复现
A3 签名更新与回滚
内容
需求包级与系统镜像级更新;失败回滚
模块APT 签名仓;aios-update;OSTree 或 A/B 根
接口Update.Check/Apply/Rollback D-Bus;开机入口选择
依赖仓库签名密钥、snapper/ostree
失败自动上一启动项;保留用户 /home
验收断电注入后可回滚 ≥ 约定比例
A4 账户、会话、密钥环
内容
需求标准多用户;秘密不进模型
模块PAM、logind、aios-secretsd(或封装现有 keyring)
接口secrets.CreateHandle(scope,ttl);Agent 只持 handle
依赖libsecret / TPM 可选
失败无 TPM 时软件密封 + 用户密码
验收模型日志采样无明文密码
A5 桌面基础能力
内容
需求电源、网络、声显、打印达可用桌面
模块NetworkManager、PipeWire、cups、bluez、power-profiles
接口标准 Freedesktop 接口 + 设置 GUI
依赖发行版既有栈
失败分项降级提示
验收基线硬件清单通过桌面冒烟
A6 恢复分区与急救环境
内容
需求桌面损坏时可修引导、回滚、收集日志
模块独立 recovery initramfs/根;aios-rescue
接口引导菜单「luminOS Rescue」
依赖A3 快照
失败提供只读挂载与网络日志上传(可选)
验收人为破坏 /usr 后可回滚启动
A7 安全启动与镜像签名(可选)
内容
需求企业场景验证引导链
模块shim/UKI 签名流程;文档化密钥托管
接口构建流水线签名步骤
依赖用户/OEM 密钥
失败未启用时普通引导仍可用
验收开启后篡改内核不可静默启动

B. 桌面环境

B1 原生 Wayland
内容
需求默认会话 Wayland;DCP 可询窗口与坐标
模块aios-shell(扩展现有 compositor:如基于 wlroots/Mutter 策略二选一冻结)
接口私有或标准协议:aios_window_info、damage 信号;门户截图
依赖libwayland、xdg-desktop-portal
失败单应用全屏故障可重启 shell 保会话
验收标准 xdg-shell 应用集通过
B2 XWayland
内容
需求旧 X11 可运行;DCP 可绑定其窗口
模块XWayland;dcpd X11 适配器
接口窗口 id 映射表 Wayland↔X
依赖B1
失败标记「兼容模式」,部分注入能力降级
验收认证 X11 样本可 Mode-C
B3 窗口/通知/设置
内容
需求日常桌面完整;通知可转 AI
模块shell UI;notification daemon 插件
接口Notifications + action=aios.handle
依赖B1
验收通知动作拉起同一 Agent Session
B4 自带应用套件
内容
需求文件/终端/浏览器/编辑器开箱
模块精选 FOSS 打入镜像;全部进 DCP 认证集
接口桌面文件;可选 L1 清单
验收镜像可完成「上网+改文件+终端」无额外安装
B5 输入法一等公民
内容
需求Agent 中文等文本与手输等价
模块IBus 或 Fcitx5 标配;dcp-ime
接口dcp.ime_commit(target, text, opts)
依赖焦点窗口;输入法守护
失败IME 不可用时降级逐键并告警「非首选」
验收中文写入 GTK/Qt/常见 Electron 样本成功
B6 AT-SPI2 默认启用
内容
需求Mode-A 可用
模块at-spi2-core;会话自动拉起
接口标准 AT-SPI D-Bus
失败单应用无树 → 记原因码转 C
验收GTK4/Qt6 demo 树召回达标
B7 主题与 AI UI 适配
内容
需求深浅色、缩放下召唤条/确认框可读
模块设计令牌;控制中心随主题
验收125%/150%/200% 缩放无裁切
B8 无障碍缩放与高对比
内容
需求系统无障碍与 L 章 AI 增强协同
模块compositor magnifier;高对比主题
依赖B1、B6
验收放大后 DCP 坐标仍正确(变换矩阵)

C. 应用生态

C1–C3 包格式
内容
需求deb/Flatpak/基线 ELF;AppImage 条件;Snap 默认不做
模块APT、flatpak、aios-appimage-guard(检查 FUSE/库)
接口商店安装事务 API
失败依赖缺失给出兼容标签与修复建议(可 Agent 辅助)
验收官方样包安装率;跨发行版杂包不假装支持
C4 兼容矩阵与标签
内容
需求用户知能否装、DCP 等级
模块商店元数据服务;compat.json
字段min_os、arch、gpu、portal、dcp_grade∈{A,mixed,C,unknown}
验收标签与实测夹具一致
C5 语义清单
内容
需求可选增强 Mode-A/B
模块清单 schema 校验器;打包进 AppStream 扩展
示例字段automation, intents[], dangerous_actions[], a11y_hints
验收有清单应用 Mode-A 成功率相对无清单提升可测
C6 本机运行画像(可关)
内容
需求改善本机通道选择;不默认上传屏幕
模块dcpd 本地 SQLite:app_id→成功率/通道
接口设置「改进本机操控」开关
验收关闭后无写入;开启仅本地

D. AI 引擎

D1 本地运行时
内容
需求可插拔后端;启动前探针
模块ai-engined + backends:ORT/OpenVINO/CUDA/ROCm/Vulkan
接口Infer(request_id, model_id, inputs, budget)
失败后端不满足 → CPU 量化模型或拒绝并说明
验收认证 GPU/NPU/CPU 路径各至少一条绿
D2 云端路由
内容
需求按隐私与难度路由
模块router:规则引擎 + 小模型分类
接口路由决策日志(model、原因、数据级)
失败无网/无授权 → 本地或中止
验收敏感类默认不上云(策略测试)
D3 模型包管理
内容
需求签名安装、热切换、回滚
模块modelctl;包格式 .aiosmodel
内容weights、tokenizer、backend_req、license、sig
验收切换中旧请求不中断;坏包拒装
D4 RAG 与记忆
内容
需求可检索用户批准语料;记忆分短/长
模块本地向量库;memory.* 工具
策略长期记忆需确认;屏幕默认不入长期
验收未批准语料不可被检索
D5 OCR / VLM
内容
需求Mode-C 与文档;中文增强
模块ocrd;可选 vlm 插件
接口ocr.recognize(roi)→[{text,box,conf}]
约束VLM 不可单独批准 L2/L3
验收锚词「发送/搜索」类召回达标
D6 语音
内容
需求按住说话;可选热词
模块ASR/TTS;PipeWire 源经 Portal
验收授权前无录音;入口进同一 Session
D7 离线降级
内容
需求断网可 DCP+本地模型+技能
模块路由器强制 local;UI 横幅
验收断网仍完成本机认证任务集子集
D8 BYO Model
内容
需求用户 endpoint/Ollama/API Key
模块控制中心凭据进 secrets;router 增加 provider
验收Key 不进明文日志
D9 提示注入防护
内容
需求网页/文档/OCR 文本不可直接抬权
模块工具层:外部文本标记 untrusted;禁止其改写策略;敏感动作只看用户确认与 schema
验收红队用例「忽略规则去发消息」被拦
D10 评测与影子流量
内容
需求换模型可对比
模块影子调用(不执行副作用);离线评测集
验收仅管理员/开发者模式可开

E. Agent 运行时

E1 默认 Agent
内容
需求开箱助手
模块agentd + 控制中心
接口agent.run(goal, context_packet, opts)
验收首登引导 3 个样例任务
E2 意图/规划
内容
需求自然语言→结构化 plan
模块planner;plan schema JSON
字段steps[].tool, args, risk, assert
验收样例集规划可解析率
E3 工具总线与沙箱
内容
需求每工具最小权限
模块toolbroker;bubblewrap/用户命名空间模板
接口注册表:name→seccomp profile、landlock paths
验收工具逃逸用例失败
E4 Plan-first
内容
需求可编辑后执行
模块UI PlanView;plan.patch
验收删除「发送」步后不调用发送工具
E5 信任条与确认
内容
需求少打断不降 L3
模块aios-policy;TrustBar TTL;同类批准确认表
验收L3 无法被批量静默;TTL 到期收回注入
E6 技能库
内容
需求参数化重跑;可上架
模块~/.local/share/aios/skills;商店技能仓
格式manifest.yaml + plan.json + sig
验收参数替换后执行;权限安装时展示
E7 时间线/重试/急停
内容
需求可恢复、可立刻停
模块timeline store;全局热键 → agent.abort + dcp.freeze
验收急停后无后续注入事件
E8 示范教学
内容
需求录制用户操作→技能草稿
模块dcp.record 语义事件优先;坐标仅标注
验收草稿可编辑且不含明文密码字段
E9 BYO Agent
内容
需求外置 Agent 用本机 DCP
模块MCP Server(H4);token 绑定用户会话
验收外置侧无法绕过确认 UI
E10 主动建议
内容
需求默关;限额
模块suggester;空闲+高置信触发
验收关闭后零建议;日上限生效
E11 多 Agent 协作
内容
需求规划者/执行者/检查者分工,同策略
模块同一 agentd 内角色协程;共享 task_id 与审计
验收检查者可否决执行者 L2+ 建议
E12 任务预算
内容
需求步数/时间/费用/Token 上限
模块Supervisor 计数器;超限熔断
验收超限停止并保留时间线

F. DCP(核心)

F1 目标发现
内容
需求列出并可解析窗口/应用
模块dcp-discover
接口list_targets→[{target_id,app_id,title,pid,bbox}]
依赖compositor;/proc 凭据
验收10 窗下列表正确且稳定 id
F2 Mode-A
内容
需求AT-SPI 读写与 action
模块dcp-a11y
接口snapshot 树摘要;act(node_id, action)
失败树空→原因码 NO_TREE
验收GTK/Qt 认证集 ≥95%
F3 Mode-B
内容
需求D-Bus/Intent/CLI
模块dcp-proto;intent registry
接口invoke(intent, params)
验收系统文件管理器「打开路径」走协议非点击
F4 Mode-C
内容
需求无树也可控可见 UI
模块dcp-vision + dcp-input
流程截窗口→OCR→客户区坐标→注入→断言
约束必须绑定 target;须授权
验收无 a11y 自绘 demo 达尽力阈值
F5 融合与降级
内容
需求A≥B≥C;可解释
模块dcp-fusion 状态机
输出每步 mode, reason, confidence
验收强制破坏树后自动转 C
F6 操控事务
内容
需求快照-动作-断言-补偿
模块dcp-tx
数据Tx{pre_hash, capability, post_assert}
验收断言失败不继续危险步
F7 坐标与多屏
内容
需求DPR/多屏正确
模块coord 库:logical/physical/client + transform
验收双屏不同缩放点击误差在阈值内
F8 IME commit
内容
需求见 B5;DCP 统一入口
验收与 B5 共用用例
F9 应用画像
内容
需求可选热更加速;无画像仍可用
模块profiled;签名仓
格式match、regions、anchors_ocr、channel_order、rate_limit、forbid
验收坏签名拒装;无画像 Mode-C 仍通
F10 Intent 层
内容
需求业务抽象与确认卡
模块intent resolver
messaging.send → 选应用 → DCP/协议
验收发送前必出确认(策略)
F11 通知感知
内容
需求授权后只读
模块通知总线旁路到 context
验收可剔除敏感 app
F12 拖拽与剪贴板中转
内容
需求文件拖入、复制粘贴类任务
模块dcp.drag;clipboard portal 中转(授权)
验收文件管理器→应用拖放样例
F13 虚拟列表策略
内容
需求长列表不盲滚
模块优先搜索框/过滤;有限滚动+OCR 探针;超限放弃并请用户
验收不出现无限滚轮
F14 稳定 ID 与重定位
内容
需求动画/刷新后仍找到控件
模块多键:role+name+path+邻域锚词;失败则重 snapshot
验收刷新列表后重定位成功率
F15 工具包镜像 Widget Mirror
内容
需求动态链接 GTK/Qt 的应用,在控件创建和变化时由系统库维护一份实时控件文档,DCP 读文档即可知道控件、坐标和状态
模块gtk-aios-mirrorGTK_MODULES);Qt 发行版小补丁 + libaios-qt-hook.sodcpd 读取端
数据每进程一块共享内存,双缓冲快照;不落磁盘
依赖应用加载的是系统 SONAME,不是自己打包的工具包
失败无镜像则回退 AT-SPI,再回退 Mode-C。静态链接、自绘、自带库不报错,只标记 mirror=absent
验收GTK4/Qt6 动态链接样本:创建按钮后 100ms 内文档含角色、文本、分配矩形、可见与敏感状态;密码框无明文

机制与做不到的范围见 5.5


G. 便利性

G1–G4 多入口
内容
需求快捷键/右键/窗口菜单/通知同一 Session
模块aios-entry;shell 插件
验收并发入口合并或排队策略明确
G5 Context Packet
内容
需求自动上下文可预览剔除
数据focused、selection、files、clipboard_summary、locale、permissions
验收密码焦点时剪贴板/选区不进模型
G6 歧义选择器
内容
需求多窗口/多文件手选
模块Picker UI
验收未选择不执行副作用
G7 Share / 深链
内容
需求aios:// 与系统分享
模块xdg mime + handler
验收无权限 token 的深链被拒
G8 智能剪贴板
内容
需求历史可选;敏感检测
模块clipboard manager 插件;默关云同步
验收密码形态不进历史或仅本地短 TTL
G9 截图即问
内容
需求框选区域进本次上下文
模块区域选择 portal → context.attachments
验收任务结束可删附件位图

H. 接入与开发者

H1–H3 总线三形态
内容
需求D-Bus、Socket、127.0.0.1 HTTP 同策略
模块aios-gateway 统一鉴权
验收策略测试:HTTP 不能比 D-Bus 更松
H4 MCP Server
内容
需求暴露 dcp/fs/confirm 等工具
模块aios-mcp
验收外置客户端跑通认证任务
H5–H6 CLI/SDK
内容
需求脚本与集成
模块aios Go/Rust CLI;aios-sdk py/ts
验收Hello DCP ≤30 分钟文档路径
H7 Flatpak AI Portal
内容
需求沙箱经批准用 Agent/DCP
接口org.freedesktop.portal.AI(草案名)
验收未批准无全局注入
H8 三级接入
内容
需求L0 零改造 / L1 清单 / L2 Intent
文档接入指南 + schema
验收样例 App 三级各一
H9 技能包签名
内容
需求与商店同信任链
验收篡改包安装失败
H10 Fixture CI
内容
需求无头/专用会话跑 DCP 回归
模块aios-fixtures 容器或 VM
验收PR 门禁跑 Mode-A/C 烟雾
H11 开发者模式
内容
需求详细 reason、树转储(脱敏)
验收关闭后无敏感转储落盘

I. 安全与治理

I1–I7(与第 6 章一致,实现要点)
ID实现要点
I1policy 引擎映射工具→L0–L3;UI 确认组件
I2bwrap+seccomp+landlock+cgroup 模板库
I3secretsd handle;禁止工具把秘密返回给模型文本
I4portal 分权;PipeWire fd 不进模型
I5append-only 审计;可导出脱敏包
I6窗口分类器:password/payment/auth → DENY
I7检测挑战→STOP_HANDOFF_USER
I8 家长控制/名单
内容
需求限制可被 Agent 操控的应用集
模块策略:allow/deny app_id
验收拒绝列表内应用 DCP 直接失败
I9 令牌吊销
内容
需求用户一键收回所有 capability
接口policy.revoke_all
验收吊销后进行中注入立即停

J. 可观测与运维

J1 资源守护
内容
需求AI 不拖死桌面
模块cgroup 切片 aios.slice;空闲休眠引擎
预算空闲 RSS 增量、常驻 CPU 有配置项
验收压测下 UI 输入延迟不崩
J2 日志回放
内容
需求任务可回放
格式JSONL:time、task、tool、mode、result
验收同 task_id 可重建时间线
J3 硬件探针
内容
需求启动与任务前检查
模块aios-hwprobe
验收无 GPU 时商店隐藏仅 GPU 模型
J4 诊断与安全模式
内容
需求一键日志;禁用注入的安全模式
验收安全模式下 dcp.act 拒绝
J5 日志 AI 诊断
内容
需求解释 journal/启动失败并给修复步骤
模块只读挂载日志工具 + 本地模型;高危修复走确认
验收不能静默 rm 用户数据
J6 可选遥测
内容
需求仅原因码/成功率;无屏幕
默认
验收抓包无截图与文件路径明文(或哈希)

K. 调度与事件

K1 定时任务
内容
需求如每周清理下载(仍受策略)
模块aios-scheduler(systemd timer 用户级)
约束L2+ 到点仍可能要确认或需预授权窗
验收无预授权不自动发送/删除
K2 事件触发
内容
需求下载完成、U 盘插入、CI 失败通知等
模块事件总线订阅;映射到 skill
验收用户可关单事件
K3 文件夹监视
内容
需求inotify 目录→技能
模块aios-watch
验收排除敏感目录默认列表

L. 无障碍 AI 增强

L1 自然语言读屏增强
内容
需求基于 AT-SPI 摘要「当前窗口有什么」
模块复用 Mode-A snapshot + 本地摘要模型
验收不需截图即可工作(默认)
L2 描述屏幕
内容
需求授权后描述窗口
模块Mode-C 截图 + VLM/OCR 摘要
验收每次授权可感知
L3 语音导航
内容
需求「打开设置里的显示」
模块ASR + Intent + DCP
验收与 E/F 共用权限

M. 企业与多用户

M1 策略包
内容
需求强制禁用云端/注入/外置 MCP 等
模块/etc/aios/policy.d/*.yaml;不可被用户会话改松
验收用户设置无法越过管理员禁止项
M2 多用户隔离
内容
需求每用户独立 dcpd/agentd/模型缓存权限
验收用户 A 不能 snapshot 用户 B 会话
M3 访客/信息亭
内容
需求Agent 只读或白名单应用
模块会话类型 aios-kiosk
验收无商店安装、无 L3

N. 虚拟化与工作区

N1 Agent 工作区容器
内容
需求高危 shell/文件工具默认进 rootless 容器
模块podman/bubblewrap 模板
验收容器内看不到主机密钥路径
N2 GPU/NPU 配额
内容
需求多任务共享加速器
模块cgroup + 设备管理器队列
验收超配额排队而非系统卡死
N3 开发容器桥接
内容
需求可选让容器内工具经显式策略调主机 DCP
默认
验收未开启时容器无 DCP socket

R. 远程控制协议(网络 / 串口)

实现细节(帧格式、命令字、状态机)见 第 13 章。本节只列功能级实现要点。

R1 统一报文 RCP
内容
需求网络与串口使用同一套帧与命令,便于一套客户端控桌面应用和系统
模块rcp-codec(编解码库,C/Rust 实现,Python 绑定)
接口二进制外帧 + CBOR 载荷;调试模式可切换 JSON 载荷(同字段)
依赖无传输假设;由 R2/R3 喂字节流
失败CRC/长度错误丢帧并回 NACK(BAD_FRAME);不执行半包
验收同一条 APP_ACT 在 TCP 与串口上载荷字节一致(去掉传输层差异)
R2 TCP/TLS 传输与配对
内容
需求局域网/指定网卡上方便接入;默认不裸奔
模块rcpd 监听 127.0.0.1 与可选 LAN 地址;TLS 1.3
接口默认端口 17420;配对见第 13 章
依赖aios-policy、用户会话 dcpd/agentd
失败证书或配对失败立即断连;不降级明文
验收未配对客户端无法下发 APP_ACT/SYS_POWER
R3 串口传输
内容
需求无网或工控场景用 UART/USB 串口控本机
模块rcpd-serial:打开 /dev/ttyS*/dev/ttyUSB*/dev/ttyACM*
接口115200 8N1 起,可协商更高波特率;帧格式与 TCP 载荷相同
依赖udev 规则把授权串口交给 rcpd;物理接入仍需配对
失败噪声导致 CRC 失败则丢帧;连续失败发 LINK_RESET
验收USB-CDC 回环完成「列窗口→点击」闭环
R4 系统控制报文
内容
需求查询与控制电源、音量、网络开关、服务状态等系统能力
模块rcp-sys 适配 systemd/logind/NetworkManager 等,经策略网关
接口SYS_INFO / SYS_CALL(白名单方法,禁止任意 shell)
依赖Polkit / aios-policy
失败未授权方法返回 NACK(FORBIDDEN)
验收SYS_CALL power.reboot 在未确认时不重启
R5 应用与桌面控制报文
内容
需求远程启动应用,并对无 AI 接口的桌面窗口做发现、快照、动作
模块rcp-dcp:把报文翻译为 dcp.*,不复制一套点击实现
接口APP_LIST APP_LAUNCH WIN_LIST DCP_SNAPSHOT DCP_FIND DCP_ACT DCP_ASSERT
依赖图形会话中的 dcpd;无会话时这些命令 NACK(NO_SESSION)
失败DCP 通道降级原因原样放进应答 reason
验收远程客户端经报文完成认证夹具上的点击与输入
R6 Agent 任务报文
内容
需求远程下发自然语言目标,收回进度与结果
模块rcp-agentagent.run
接口AGENT_RUN / AGENT_EVENT(进度)/ AGENT_ABORT
依赖agentd、确认 UI(L2/L3 仍在本机弹窗或远程确认策略)
失败本机无人值守且策略要求本地确认时,任务挂起并事件通知
验收中止报文后注入停止(与 E7 急停一致)
R7 鉴权、令牌与审计
内容
需求远程通道不能绕过权限;每条副作用可追责
模块配对密钥存 secrets;每连接 session_id;命令映射 capability
接口AUTH 成功后才接受业务帧;审计字段含 `transport=tcp
依赖I1–I5、I9
失败令牌吊销后下一条业务帧 NACK(REVOKED) 并断连
验收红队:无 AUTH 的 DCP_ACT 被拒且有审计
R8 客户端 SDK 与调试工具
内容
需求上位机/单片机侧方便接入
模块aios-rcp Python/TS SDK;rcp-dump 十六进制与字段解码
接口SDK:connect_tcp / connect_serial → 同一 Client API
验收README 样例 30 分钟内完成串口心跳与 WIN_LIST

5. 关键子系统:DCP 桌面操控平面

5.1 定位

会话级系统服务,合成操作面:Mode-A 语义 · Mode-B 协议 · Mode-C 视觉注入
动态链接 GTK/Qt 时,Mode-A 的数据源优先用 Widget Mirror,没有镜像再读 AT-SPI。
应用无 AI 接口不是障碍;有清单/Intent 只是加速。

5.2 稳定 API

dcp.list_targets()
dcp.snapshot(target)
dcp.find(target, query)
dcp.act(target, action, args)
dcp.assert(condition)
dcp.invoke(intent, params)
dcp.freeze() / dcp.record(...)

5.3 融合状态机

绑定 target → 探 Widget Mirror / AT-SPI / 协议 / 画像
 → 有镜像或语义树:A
 → 混合 / B / C(需截图·输入授权)
 → 敏感·验证码·DRM → STOP
 → 事务执行与断言 → 审计

5.4 与单应用特例

国民级商业软件仅为 画像与回归样本,架构不依赖厂商合作或协议破解。

5.5 工具包镜像(Widget Mirror)

结论:能做,而且应该做在操作系统自带的动态库上,而不是去改每个应用。它只覆盖「动态链接了系统工具包」的程序。静态链接、自己打包一套 GTK/Qt、以及不走这些库的自绘界面,这条路不存在,继续用 Mode-C。

为什么可行

GTK、Qt 的控件不是画完就丢的像素。库里有对象:创建、显示、隐藏、改文本、分配位置都会发生在 libgtk-4.solibQt6Widgets.so 这些动态库里。应用若在运行时加载的是系统里的这些库,发行版就可以在库的扩展点上加一份观测,应用不用重新编译。

这和现有无障碍桥是同一类做法:GTK 用 GTK_MODULES 加载 AT-SPI 桥,Qt 在控件变化时通知辅助功能。Widget Mirror 不另造点击通道,只是把工具包里已经存在的控件树,变成 DCP 能直接读的内存文档。

不怎么做
  • 不扫盘替换所有 .so,不向无关库注入代码。只挂系统提供的 GTK/Qt。
  • 不把文档写成磁盘上的 JSON 文件。布局一次会改几十个控件,落盘又慢又把界面文本留下来。
  • 不假设「只要是动态库就能看到按钮」。下面这些库里没有控件对象:Wayland 客户端库、图形驱动、字体库。钩它们只能知道有一块窗口表面,不知道按钮。
加载方式
工具包做法原因
GTK3/GTK4会话设置 GTK_MODULES=aios-mirrorGTK 官方扩展点,和现有无障碍模块相同,不必改 GTK 源码
Qt5/Qt6发行版 Qt 在 QWidget 的构造、setGeometrysetVisible、文本属性变化处调用弱符号;符号由 libaios-qt-hook.so 提供,没有该库则空操作Qt 没有等价的、可对所有程序自动加载的「控件模块」环境变量。C++ 符号用 LD_PRELOAD 去钩,换一个小版本就断。弱符号补丁控制在十几处调用
其他工具包第一版不做wx、Flutter engine 以后单独立项,不阻塞 GTK/Qt

Flatpak 默认不用宿主机的 GTK_MODULES。官方运行时里要带上 aios-mirror,否则沙箱应用没有镜像,自动回退。AppImage 或安装包自带 libgtk/libQt 的,系统库不会被加载,同样回退。

内存文档

每个图形进程一块 POSIX 共享内存,仅属主用户可读写。写侧在界面线程更新,读侧只读副本。双缓冲:写完一次原子交换序号,DCP 不读半截树。

布局风暴时合并,最快每 50ms 发布一版,而不是每个分配都发布。文档用版本化的二进制结构(实现可选 FlatBuffers),调试工具再导出 JSON。逻辑上每个顶层窗口一棵树:

window
  id, title, frame, client, scale, visible, focused
  widgets[]
    id            工具包对象的稳定编号,不是指针
    parent_id
    role          button / entry / label / ...
    name, text    密码框 text 恒为空,只标 sensitive_value=true
    bounds        相对客户区的 x,y,w,h,另存 scale
    visible, enabled, focused, checked
    actions[]     click / set_text / toggle
    rev           本节点最后变更序号

进程退出、窗口销毁,文档删除。dcpd 用套接字和对端 uid 校验后映射这块内存。其他用户和普通应用读不到。

和三条通道的关系

有完整镜像时,Mode-A 的「找控件、读状态、读坐标」走这份文档,点击和填字仍优先调用工具包自己的动作(模块内执行),其次才是 AT-SPI。没有镜像就保持现在的顺序:AT-SPI,然后协议,然后视觉。

镜像模块执行动作前必须向 dcpd 要 capability。模块自己不决定能不能点。密码、支付、认证窗口的规则不变。

做不到时不要装做做到
应用结果
动态链接系统 GTK/Qt文档可用,作为 Mode-A 主数据源
同一应用里的自绘区域只有一块无子控件的画布节点,内部仍走 Mode-C
静态链接工具包无镜像
自带一份 GTK/Qt 的商业包、多数 AppImage无镜像
Electron 网页内容、游戏、即时模式界面控件不在 GTK/Qt 对象里,无镜像
Flutter第一版不承诺。引擎里的控件在 Dart 侧,不在 GTK 控件树里

所以 Widget Mirror 提高的是「正常桌面程序」的成功率和坐标精度,不取消视觉兜底。


6. 安全、隐私与权限模型

6.1 四级风险

策略
L0读公开标题/非敏感树会话授权
L1输入、点击、本地只读信任条/应用级
L2截图、写文件、联网、装包显式确认
L3凭据、支付、删除、发送、改系统单次确认+短 TTL

6.2 隔离与审计

四层隔离 + Secret Broker + append-only 审计;密码/支付/认证窗默认 DENY;验证码/DRM 不绕过。


7. 兼容、发行与硬件

  • 软件: 基线 deb、Flatpak、基线 ELF;AppImage 条件;Snap 默认无。
  • 硬件: 上游驱动优先;闭源 GPU 按 SKU 认证;无加速器仍可用小模型+DCP。
  • 镜像自带: 控制中心、模型管理、商店、文件/浏览器/终端/设置、文档。

8. 非功能需求与验收

场景目标(设计预算)
召唤→上下文就绪P95 ≤ 300 ms
感知→建议动作P95 ≤ 800 ms
普通 E2E 成功率≥ 85%
仅 Mode-A≥ 95%
危险动作拦截审计100%
技能命中(成熟期)≥ 60%
Hello DCP≤ 30 分钟
空闲 AI 驻留RSS/CPU 可配置预算内

主成功率分母不含游戏/验证码/DRM。夹具:GTK/Qt、无 a11y 自绘、Flatpak、MCP 外置 Agent。


9. 工程目录与组件映射(建议落地树)

aios/
  kernel/                 # LTS 补丁与配置(极少)
  desktop/compositor/     # B1
  services/
    dcpd/                 # F*
    agentd/               # E*
    ai-engined/           # D*
    policy/               # I*
    gateway/              # H1-H4
    rcpd/                 # R* 远程控制协议(TCP + 串口)
    scheduler/            # K*
  portals/                # H7 等
  apps/control-center/    # GUI
  sdk/{python,ts}/        # H6
  cli/                    # H5
  profiles/               # F9 画像仓
  fixtures/               # H10
  live-build/             # A2
  docs/                   # 本文档

10. 分期路线图

阶段时间范围
M00–3 月ISO;dcpd A+C;agentd 最小闭环;夹具;威胁模型
M14–6 月安装器;G 入口;Plan/确认;MCP/CLI;技能 v1;商店雏形
M27–12 月路由/BYO;画像;K 调度;L 无障碍;RCP 网络+串口 v1;硬件矩阵;85%/95%
M313–18 月示范教学;M 企业策略;N 容器配额;补丁上游化

11. 明确不做的事项

  1. 内核内大模型
  2. 以逆向 IM/业务私有协议为 OS 主能力
  3. 破解验证码/反自动化/DRM
  4. 未授权操作支付与系统认证
  5. 任意发行版二进制无痛兼容空头支票
  6. 永久私有内核 ABI
  7. 承诺模型永不出错
  8. 远程/串口控制绕过本机权限、确认或审计(RCP 必须走同一策略引擎)

12. 术语表

术语含义
luminOS本操作系统
DCPDesktop Control Plane
Mode-A/B/C语义 / 协议 / 视觉注入
Widget Mirror系统 GTK/Qt 动态库维护的实时控件文档,Mode-A 的优先数据源
Context Packet唤醒上下文包
Capability短时能力令牌
应用画像OS 签名的可选 UI 锚点数据
BYO自带模型或 Agent
RCPRemote Control Protocol,网络与串口共用的控制报文

13. 远程控制协议 RCP(网络与串口)

13.1 目标与原则

上位机、另一台电脑或单片机,可通过 网络串口 控制 luminOS 上的:

  • 桌面应用(含没有 AI 接口的窗口:走 DCP)
  • 系统(电源、音量、网络开关、服务状态等白名单能力)
  • Agent 任务(下发目标、收进度、中止)

原则:

  1. 一套报文,两种传输。 TCP 与串口只是字节管道,命令语义相同。
  2. 不另开后门。 所有副作用经 aios-policy 与 DCP/systemd 适配器,L2/L3 规则不变。
  3. 禁止任意 shell。 系统控制是白名单方法,不是 exec(cmd)
  4. 物理串口也不等于已授权。 插上线仍需配对或预置密钥。

13.2 架构

上位机 SDK / 串口主站
        │  RCP 帧
        ▼
┌───────────────┐     ┌──────────────┐
│ TCP/TLS :17420│     │ UART/USB-CDC │
└───────┬───────┘     └──────┬───────┘
        └──────────┬─────────┘
                   ▼
               rcpd(编解码、会话、限流)
                   │
                   ▼
            aios-policy(鉴权、确认、审计)
                   │
        ┌──────────┼──────────┐
        ▼          ▼          ▼
      dcpd      agentd     rcp-sys
   桌面应用操控   任务       系统白名单

rcpd 为 systemd 系统服务 + 每用户会话代理:系统类命令可在无图形时处理;桌面类命令必须附着到已登录图形会话,否则 NO_SESSION

13.3 传输

传输实现默认
网络TCP + TLS 1.3;可选仅 127.0.0.1端口 17420;LAN 需在控制中心显式打开
串口原始字节流,默认 115200 8N1设备节点由 udev 标签 aios-rcp=1 才打开

串口在 HELLO 后可协商波特率(LINK_SET_BAUD),失败保持 115200。
TCP 上同样使用下面的二进制帧,便于抓包工具统一解析;TLS 只保护传输,不改变帧格式。

13.4 帧格式(外层,两种传输通用)

多字节整数均为 大端

偏移长度字段说明
02SOF固定 A1 05
21VER协议版本,当前 0x01
31FLAGSbit0=需要应答;bit1=载荷为 JSON(否则 CBOR);bit2=压缩(预留 0)
44MSG_ID命令字,见 13.6
84SEQ发送方递增序号,应答原样带回
122RSV置 0
144LEN载荷字节数,最大 65536
18LENPAYLOADCBOR 或 JSON
18+LEN4CRC32SOF 至载荷末字节的 CRC-32/ISO-HDLC

无转义:靠 LEN 定界。串口读到 SOF 后读满头部,再读 LEN+4。CRC 失败丢弃并计错误,不执行。

13.5 载荷公共字段

每条业务载荷(CBOR map)建议包含:

字段类型说明
sidstring会话 id,AUTH_OK 之后必填
tsuint发送方毫秒时间戳
targetstring可选,窗口/应用 id
argsmap命令参数
codeint仅应答:0 成功,非 0 见 13.8
reasonstring仅应答或事件:人可读原因码
dataany仅应答:结果

13.6 命令字

MSG_ID名称方向作用
0x0001HELLOC→S版本、传输能力、客户端 id
0x0002HELLO_ACKS→C服务端版本、是否要配对
0x0010AUTHC→S配对码或会话令牌
0x0011AUTH_OKS→C下发 sid 与权限掩码
0x0012AUTH_FAILS→C失败原因
0x0020PING双向保活
0x0021PONG双向保活应答
0x0100SYS_INFOC→S主机名、版本、会话是否存在、电量
0x0101SYS_CALLC→S白名单系统方法
0x0200APP_LISTC→S已安装应用
0x0201APP_LAUNCHC→S按 desktop id 启动
0x0202APP_CLOSEC→S请求关闭(L2,需确认策略)
0x0210WIN_LISTC→S当前窗口(DCP targets)
0x0211DCP_SNAPSHOTC→S结构化 UI 摘要;截图像素另走授权
0x0212DCP_FINDC→S按名/角色/文本找元素
0x0213DCP_ACTC→Sclick / ime_commit / scroll / key
0x0214DCP_ASSERTC→S等待断言
0x0300AGENT_RUNC→S自然语言任务
0x0301AGENT_EVENTS→C步骤进度(可无请求对应,SEQ=0)
0x0302AGENT_ABORTC→S中止任务并冻结注入
0x03F0CONFIRM_REQS→C本机需要确认时通知远端
0x03F1CONFIRM_RSPC→S远端确认(仅当策略允许远程确认)
0x7F00ACKS→C通用成功(若命令无专用应答)
0x7F01NACKS→C通用失败
0x7F10LINK_RESET双向重新同步帧

SYS_CALL 白名单第一版仅:

args.method风险说明
power.suspend / power.reboot / power.poweroffL3必须确认
audio.set_volumeL10–100
audio.set_muteL1bool
net.set_wifiL2开/关,不含改密
session.lockL1锁屏
svc.statusL0查询单元状态
svc.restartL3仅策略列出的单元名

不允许 method=shell。新增方法必须改策略表并发版 VER

13.7 会话时序

C: HELLO {client_id, ver, transport}
S: HELLO_ACK {need_auth: true, pairing_required}
C: AUTH {mode: "pairing_code", code: "482913"}
   # 配对码由本机控制中心显示,60 秒有效,一次性
S: AUTH_OK {sid, scopes: ["sys.read","dcp.act","agent.run"]}
C: WIN_LIST {sid}
S: ACK {seq, data: {windows:[...]}}
C: DCP_ACT {sid, target, args:{action:"click", node:"..."}}
S: ACK 或 NACK(NEED_CONFIRM)
S: CONFIRM_REQ {prompt, risk:"L2"}
   # 默认在本机弹窗;若策略 allow_remote_confirm 才接受 CONFIRM_RSP

串口与 TCP 时序相同。串口无 TLS,因此 AUTH 使用一次性配对码换短期 sid,后续帧带 sid;可选再协商会话内 HMAC(密钥来自配对),防止总线上窃听重放。第一版串口要求:物理可达 + 一次性配对码 + sid TTL ≤ 8 小时 + 序号防重放(SEQ 必须递增,否则 NACK(REPLAY))。

13.8 状态码

code名称含义
0OK成功
1BAD_FRAMECRC/长度/版本错误
2UNAUTH未认证
3FORBIDDEN策略拒绝
4NEED_CONFIRM等待确认
5NO_SESSION无图形会话,不能控桌面
6NOT_FOUND窗口或节点不存在
7TIMEOUT断言或应用无响应
8REVOKED令牌已吊销
9REPLAY序号回退
10BUSY已有独占任务
11DENIED_UI敏感界面拒绝自动化

13.9 载荷示例(逻辑 JSON,线上默认为 CBOR)

列窗口请求:

{"sid":"s_8f3","ts":1710000000000,"args":{}}

对应帧:MSG_ID=0x0210FLAGS bit0=1。

点击应答:

{"sid":"s_8f3","code":0,"reason":"MODE_A","data":{"tx":"tx_12","assert":"ok"}}

系统重启被拒:

{"sid":"s_8f3","code":4,"reason":"NEED_CONFIRM","data":{"method":"power.reboot","risk":"L3"}}

13.10 实现步骤(工程顺序)

  1. 冻结 rcp-codec:组帧、CRC、CBOR schema、单测(坏 CRC、截断、超长)。
  2. rcpd 先做 Unix 套接字环回,命令直通 dcpd 桩。
  3. AUTH 与策略映射,接上真实确认框。
  4. 打开 TCP/TLS 与串口两端,共用同一解码器。
  5. 实现 SYS_CALL 白名单适配器(logind、PipeWire、NetworkManager)。
  6. 发布 Python SDK 与 rcp-dump
  7. 夹具:串口回环 + TCP 各跑通 WIN_LISTDCP_ACT、未授权 power.reboot 被拒。

13.11 安全实现要点

  • LAN 监听默认关闭;打开时防火墙仅允许用户填写的网段。
  • 配对码 6 位、一次性、60 秒;不写进日志明文。
  • sid 绑定传输、客户端 id、用户 uid;换用户会话即失效。
  • 每条 DCP_ACT / SYS_CALL 写审计:transportclient_idmsg_idtargetcode
  • 速率限制:默认每连接每秒最多 20 条动作帧,超出 BUSY
  • 企业策略 M1 可设 rcp.network=offrcp.serial=off

14. 总结

luminOS = 可安装的 Linux 桌面 + AI 引擎与 Agent + 系统级 DCP(无 AI 接口也可控) + 统一接入与治理 + RCP(网络与串口同一报文控应用与系统) + 调度/无障碍/企业/隔离等配套

差异化核心:不在应用里找 AI 接口,而在操作系统里提供桌面操控平面;远程与串口只是这条平面的传输,不是第二套特权。

本文 v1.4 为唯一设计真源;实现与验收以功能 ID A1–N3、R1–R8 为准。动态链接 GTK/Qt 的控件观测见 F15。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值