系统定位LinuxAI Desktop 是一个运行在 Linux 桌面机上的本地优先local-first自主 AI Agent。它在用户自有机器上同时具备感知读桌面 / 文件 / 系统 / 网络决策本地大模型 意图识别 规划记忆共享工作记忆 经验沉淀 文件索引工具调用真实执行文件 / 脚本 / GUI / 网络 / 系统操作反馈优化离线学习循环越用越准这是什么WhatLinuxAI Desktop 是一个本地优先local-first的自主 AI Agent跑在你自己的 Linux 桌面机上会思考本地 9B 模型Ollama qwen3.5不联网也能用。✋会动手能读文件、跑脚本、控桌面鼠标/窗口/键盘、管网络与系统。有记忆共享工作记忆 531 万文件索引 10 万意图库。越用越准离线学习循环把每次成功变成经验。安全兜底危险动作强制拦截 独立审计。1. 总体架构分层系统采用L0–L3 多层混合架构并在其间插入 L0.5感知、L1.5执行引擎、L2.5执行层三个夹层形成清晰的职责边界flowchart TB subgraph L3[L3 桌面 UI 层 · GTK3 原生] UI[linuxai_desktop.pybr/窗口/对话/文件/脚本/记忆/桌面/自主进化] end subgraph L2[L2 桥接编排层 · core_bridge.py (Python, HTTP :18765)] BR[Agent 回路 · 意图管线(5层) · 离线学习循环 · open_skill 自循环 · 记忆] end subgraph L25[L2.5 执行层 · L25Executor (纯 Python)] EX[统一指令 command/gui/file/appbr/wmctrl/xdotool/shutil] end subgraph L15[L1.5 执行引擎 · consent/verify/schedule/monitor] ENG[SECURITY_LEVELstandard 真实护栏br/consent 默认 auto · SQLite core_db] end subgraph L1[L1 C 核心 · linuxai-core (静态二进制, UNIX socket)] CORE[~43 工具 asmcore(95 fn)br/gui_*/file_*/script_run/memory_*/net_*/sys_*] end subgraph L05[L0.5 感知层 · l05 (Rust, HTTP :18766 UDS 事件)] PER[inotify wmctrl 窗口树 fsstats 截图 soak] end subgraph L0[L0 本地大模型 · Ollama qwen3.5:9b (:11434, think:false)] LLM[function-calling · 内联意图识别] end subgraph RUST[Rust 微服务UDS 行式JSON] FS[fsexec 文件执行器br/(SQLiteHashSet, 9 原子操作)] GT[gate 策略网关br/(readonly/workspace/danger 审计)] end UI -- HTTP :18765 mmap ShmRing -- BR BR -- function-calling /api/chat -- LLM BR -- UNIX socket 行式JSON -- CORE BR -- 调用 -- L25 BR -- 订阅事件 -- L05 BR -- 委托最终裁决 -- GT L25 -- spawn 子进程 -- CORE CORE -- fork/exec AT-SPI 助手 -- ATSPI[linuxai-atspi (动态助手)] FS -- 被 bridge 调用 -- BR GT -. 旁路审计 .- BR关键约束来自实战C 核心的 llm 与 consent 全部委托给唯一的 socket 客户端core_bridge.py任何进程直接连 C 核心发chat都会卡死核心不内置 LLM。因此 bridge 是“大脑 手脚”的唯一落点。. 各层详解2.1 L0 — 本地大模型引擎Ollamaqwen3.5:9b监听127.0.0.1:11434。默认think:false关闭思考链实测首字 0.14s、整答 ~1s若开启思考链首字需等 ~59s前 5000 字全是 thinking界面表现为“长时间空白”易被误判为卡死。内联意图识别对话请求中直接附带意图预分类减少一次分类往返。深度思考需求对话页勾选「深度思考」即开启思考链边想边显示正式回答前插入⟢ 回答分隔标记。2.2 L0.5 — 感知层l05Rust二进制linuxai-l05零外部依赖std-only extern C直调 libc适配CPUQuota5%/MemoryMax50M的极低资源预算。契约HTTP127.0.0.1:18766GET /api/summary轻量快照load/内存/活动窗口/进程数、GET /api/snapshot全量CPU%/磁盘/网速/进程Top/温度、GET /api/fsstats文件系统感知统计、GET /api/screenshotscrot 截图、GET /api/soak长稳 RSS 采样。UNIX 数据报/tmp/linuxai-l05-events.sockbridge 服务端每事件一行 JSON类型含window_activated / file_changed / resource_alert / app_crashed / window_opened / window_closed。采样全部走/procinotifywmctrl -l轻量 AT-SPI 等效不依赖 GUI 会话即可运行。fsstats全量扫描fs_index.txt531 万行 / 556MB统计总数、扩展名种类、顶层分布并按等距抽样步长 2659≈2000 条lstat估算文件/目录比release 单次全扫 ~2–4s。2.3 L1 — C 核心linuxai-core静态二进制gcc -static编译~/linuxai-desktop/core_c/linuxai-core无动态依赖便于跨机拷贝即跑。协议UNIX socket 行式 JSON详见第 4 节。工具集约43 个含gui_*AT-SPI 经独立动态助手linuxai-atspifork/exec、file_*、script_run、memory_*SQLite、net_*、sys_*、asm_core95 个底层函数。静态核心不能dlopen动态库→ 所有动态能力AT-SPI 读取拆成独立动态 C 助手linuxai-atspi由核心fork/exec直调。环境要求AT-SPI 读取层DBUS_SESSION_BUS_ADDRESSDISPLAY:0at-spi2-registryd在跑。2.4 L1.5 — 执行引擎已删除neutral姿态恒为enforce真实护栏非“建议”。SECURITY_LEVELstandard拦截critical/highmedium记录后放行。consent默认auto核心模式consentui是死路会卡住。用core_db.cSQLite替代早期 jsonl 日志集中存审计 / 同意 / 上下文 / 记忆 / 工具 / asm 审计 / 画像。2.5 L2 — 桥接编排层core_bridge.py系统的“大脑 手脚”落点。职责Agent 回路Ollama function-calling按意图自动选工具 →execute_tool()本机真实执行 → 结果回灌 → 循环≤8 轮。意图管线5 层见第 6 节。离线学习循环3 个见第 7 节。open_skill 自循环让程序自循环打开各类文件/文件夹由模型检验开关_OPEN_SKILL_ENABLED端点/api/open_skill/*。GUI 控制经 L2.5L25Executor直接驱动桌面。共享记忆UI / 桥接 / Agent 三层共享同一份记忆。重要坑已修bridge 早期from executor import L25Executor指向缺失的.so→_l25None→ 所有 GUI/文件动作静默不执行且无报错。现改为from l25 import L25Executor纯 Python 重建版。切勿改回executor。2.6 L2.5 — 执行层L25Executor纯 Python文件l25/__init__.py类L25Executor经wmctrl / xdotool / shutil重建统一指令。统一指令typecommand子进程执行。guiclose_window / minimize / minimize_all / activate / type / key / click / screenshot / paste / clipboard。filecopy / move / rename / delete / mkdir。app启动应用。激活窗口api_gui_open_pathspawn 后须wmctrl -a激活GNOME 下未聚焦窗口首击只聚焦需双击或先xdotool windowactivate。2.7 L3 — GTK3 桌面 UIlinuxai_desktop.py纯原生 GTK3 控件窗口/Notebook/对话气泡/文件树/脚本编辑器/记忆列表不内嵌任何 WebView彻底无“网页感”。侧栏页签对话 / 文件 / 脚本 / 记忆 / 桌面 / 自主进化 / 自循环。零拷贝 IPC经mmap读取ShmRing/dev/shm的 LLM token比反复 HTTP 轮询延迟低得多。无DISPLAYSSH时自动降级为“仅桥接层”常驻端口 18765不提供网页界面。3. 通信协议逐对说明3.1 C 核心 UNIX socket · 行式 JSON传输UNIX domain socket核心端单连接行式 JSON一行一帧\n结尾。帧结构{ op: ..., args: {...} }→{ ok: bool, result: ... }。调用链约定bridge 是唯一 socket 客户端C 核心把llm与consent委托给它。核心agent_runPLAN → STEP → REVIEW → EVOLVE → DONE步骤解析parse_stepsMAX_STEPS6。AT-SPI 读取gui_desktop_list/gui_read_tree由核心fork/exec动态助手linuxai-atspi直调静态核心不能dlopen。3.2 ShmRing · POSIX 共享内存环文件shm_ring.py每段会话一段独立的/dev/shm/linuxai_stream_id映射。头 16 字节magic(4) cap(4) wpos(4) rpos(4)主体cap字节环形缓冲。单生产者bridge 流式 token 读取线程/ 单消费者UI 进程独立mmap环满时丢弃最旧数据保证不阻塞生产者。这是L0(LLM) 与 L3(UI) 之间的零拷贝流通道/api/chat异步立即返{sid, shm}真结果写 ShmRing/api/shm/status是 GET 诊断注意它不是收sid的接口。3.3 HTTP API端口服务关键端点:18765bridgeUI 内部调用/api/chat({message,mode}→{sid,shm}) ·/api/session/close·/api/file/*·/api/script/run·/api/memory/*·/api/gui·/api/agent/autonomous·/api/security/*·/api/shm/status·/api/open_skill/*·/api/intent/lookup·/api/train/*·/api/metrics:18766l05 感知层/api/summary·/api/snapshot·/api/fsstats·/api/screenshot·/api/soak:11434Ollama/api/chatfunction-callingthink:false:8080euroconnect 静态站站点本身见第 11 节mode:agent的/api/chat在桥接层跑完整 function-calling 工具回路工具动作/结果写进该会话 ShmRingUI 与无头脚本都能读。3.4 Rust 微服务 UDS · 行式 JSON服务socket语义fsexec/tmp/linuxai-fsexec.sock一请求行→一响应行op∈ {open,close,create,add,delete,copy,paste,read,scan,lookup,stats}gate/tmp/linuxai-gate.sock工具调用最终裁决{tool,args}→{allow,level,reason}append-only 审计l05-events/tmp/linuxai-l05-events.sock数据报每事件一行 JSONbridge 为服务端三者均std-only 手写 mini JSON 解析器与既有 ShmRing/UDS 风格一致离线可编译、无 crates 网络依赖。3.5 AT-SPI fork/exec 链路静态核心无法dlopen动态库 → 所有桌面读取能力窗口树、组件树拆成独立动态 C 助手linuxai-atspi。调用方式核心fork/exec该助手读取结果以行式 JSON 回传。4. 存储与状态介质内容说明SQLitelinuxai.db7 表audit(76) / consent_log(27) / context(36) / memory(25) / tools(48) / asm_audit(0) / profile(0)核心审计/同意/上下文/记忆/工具清单core_db.cjsonlintent_library.jsonl(14.3MB10万条) ·fs_index.txt(556MB531万项) ·train_state.json·action_routes.json·memory.jsonl·gate_audit.jsonl·fsexec_audit.jsonl意图库 / 文件索引 / 训练态 / 动作路由 / 共享记忆 / 双写审计ShmRinglinuxai.db-shm 会话流跨进程共享内存环LAIS/16多进程共用同一 ShmRingfsexecfsindex.dbpaths(path TEXT PK, kind INT) WITHOUT ROWIDHashSetString内存缓存531 万路径权威持久层 就绪后 O(1) 命中纳秒~微秒要点fs_index.txt是556MB / 531 万行的全量路径索引fsindex.db是其 SQLite 化权威副本HashSet是内存加速层后台装载线程期间降级走 SQLite 主键查询毫秒级。训练态train_state.json由多线程原子合并落盘_train_state_merge_save读-合-写防互覆盖epoch 开始须 popfinished_at/next_run_atscanned0驱动桌面训练画面。5. 意图识别管线5 层调用优先级由高到低命中即短路flowchart LR A[① rule_engine.precheckbr/(12 正则, 最高优先级)] --|未命中| B[② _action_routebr/(59 条训练规则)] B --|未命中| C[③ L1 intent_classifierbr/(10万意图库)] C --|未命中| D[④ L2 maybe_intent_dispatchbr/(结构化意图DB 2万→2.4万)] D --|未命中| E[⑤ L3 LLMbr/(function-calling 兜底)]① rule_engine.precheck12 条正则覆盖“打开X/最小化/关闭窗口/复制/删除/扫描端口/监听端口”等高频模糊意图最高优先级直接路由到具体动作绕过模型猜测低延迟。② _action_route离线动作训练循环产出的 59 条规则见第 7 节处理“把窗口收了”“装个X”等自然模糊句。③ intent_classifier10 万条意图库中文二元组 ascii token 重叠 短语子串命中通用/防御意图命中即取精准命令经 SecurityGuard 直接执行攻击意图阈值 2拦截并给防御建议。④ maybe_intent_dispatch更早的结构化意图 DB2 万→2.4 万条含 sysres 资源域 4000 条INTENT_EXEC_THRESHOLD(默认 4) 命中即执行。⑤ LLM 兜底以上均不命中才进模型 function-calling。模糊无动词句如“把窗口收了”早期会routeNone而失败现 rule_engine _action_route 已覆盖12 条模糊语句路由全对。6. 离线学习循环越用越准bridge.py 三个常驻线程每300s一轮间隔可配LAI_FSINDEX_INTERVAL等_fsindex_learn_loop重建/增量fs_index.txt531 万项落盘fsindex.db。_intent_learn_loop维护 10 万意图库intent_library.jsonl。_action_learn_loop贪心增益学习_action_learn 候选特征_cand_features判别词 n-gram 槽位×动词逐条试加仅接受有增益的规则实测从 66% 卡死率提升到82.6% 路由精度泛化 82.9%规则 12→59覆盖 11 类动作。训练态train_state.jsonaction_acc0.826 / action_acc_gen0.829 / action_rules59 / action_kinds11。桌面训练画面linuxai_train_view.pyGTK3 深色2s 轮询实时展示精度区块linuxai-train.service常驻。7. 自主任务循环C 核心core_agent.cagent_run走PLAN → STEP → REVIEW → EVOLVE → DONEparse_steps解析步骤MAX_STEPS6。bridgeagent_stream预算LAI_AGENT_BUDGET_S300s按 step 计数每步工具调用过 SecurityGuard[PLAN]/[STEP]/[TOOL]/[SEC]/[REVIEW]/[EVOLVE]/[DONE]事件写 ShmRingUI 实时渲染。lc_agent.py攻防四阶段侦察 → 识别 → 加固 → 验证。健壮性autonomous_run全程try/except/finally任何阶段异常发[FAIL]并在finally强制done.set()UI 绝不会永远停在“运行中”lessons统一强转字符串避免TypeError中断回路。实证多步任务“统计 /var/log 文件数存 /tmp/logcount.txt” → 2 步真实执行并输出482。8. 安全护栏双层防护bridge 内 SecurityGuardassess_action分级critical/high/medium/lowstrict仅放 lowstandard默认拦截 critical/highloose全放。每次评估写security.logUI 实时[SEC]。gateRust 最终裁决/tmp/linuxai-gate.sockreadonly / workspace / danger三级readonly只读工具file_read/file_search/gui_/l05_/net_* 等直接放行。workspace写动作限定用户区/home/xw/...、/tmp系统路径/etc /usr /boot /proc /sys /bin /srv ...一律danger拒。script_run致命模式rm -rf /、mkfs、dd if/dev/、curl…|sh、shutdown等直接拒。独立append-only 审计gate_audit.jsonl与 Python/SQLite 双写抗篡改。高危坑已补assess_action本不拦l25_execute的文件删/写 → 删/会rmtree(/)。已补l25_execute分支根目录critical 拦系统前缀high拦用户文件//tmp仍放行。8/8 回归通过。9. GUI 自动化L25Executor统一command/gui/file/appgui含minimize_all显示桌面、paste/clipboard、screenshotscrot。AT-SPI 读取gui_desktop_list/gui_read_tree经linuxai-atspi动态助手。GNOME 陷阱未聚焦窗口首击只聚焦 → 双击或先xdotool windowactivate无 HiDPI窗口像素屏幕像素1:1。xdg 接管linuxai-openlinuxai-desktop.desktop接管x-scheme-handler/linuxaitext/plaininode/directory目录被路由到 linuxai-open 不弹窗 → GUI 打开文件夹直接spawn nautilus --new-window。10. 服务化systemd 五服务服务角色状态linuxai-coreC 核心activeenabledLingeryesRestartalwayslinuxai-bridge桥接编排层 (:18765)同上linuxai-uiGTK3 主 UI常驻同上LAI_OPEN_PAGE7启动落“自循环”页linuxai-l05感知层 (:18766)同上CPUQuota5%linuxai-train训练画面 (:18765 数据)同上linuxai-hudHUD 浮窗已 disable --now重启systemctl --user enable --now linuxai-hud管理systemctl --user {status|restart} linuxai-*unit 源~/linuxai-desktop/systemd/。 主 UI 已常驻崩溃自愈Restartalways。12. 关键设计决策与权衡决策选择理由大模型位置本地 Ollama隐私、零延迟、离线可用思考链默认关闭首字 59s→0.14s避免“假死”核心语言C 静态二进制 Rust 微服务低资源、零动态依赖、跨机即跑进程间流ShmRing POSIX 共享内存零拷贝、比 HTTP 轮询低延迟控制面协议UNIX socket 行式 JSON简单、无序列化依赖、易调试文件索引SQLite HashSet 双存持久权威 内存 O(1) 命中意图识别5 层短路高频意图零模型延迟模糊意图不漏安全SecurityGuard gate 双写审计执行层与策略层分离抗篡改GUI原生 GTK3 无 WebView无“网页感”、低内存13. 已知限制与后续演进C 核心静态化代价不能dlopen→ AT-SPI 必须拆独立助手已解。意图库规模10 万条依赖离线生成与定期reload热更新有抖动。代理自启云机euroconnect-proxy的WantedBy需确认防重启掉:443。模型 tool-call 缺陷qwen3.5 含路径tools 时偶发 EOF 500 → 降级链剥 tools 纯文本格式引导接住已解。演进方向LoRA 离线重训纳入实时回路、意图库向量化、跨机联邦记忆。附录 A动作清单工具面文件file_list / file_read / file_write / file_search / file_grep / file_delete(回收站)脚本script_runbash/python 子进程超时危险模式拦截记忆memory_store / memory_recall桌面(GUI)gui_mouse_* / gui_win_* / gui_key / gui_type系统sys_resource / sys_process / net_*感知l05_snapshot / l05_fsstats / l05_screenshot执行层l25_executecommand/gui/file/app文件执行器(fsexec)open/close/create/add/delete/copy/paste/read/scan/lookup/stats策略gatereadonly/workspace/danger
