Skip to content

feat: AgentOS 桌面包——AgentOS 运行时的桌面窗口化呈现(HTTP 轮询版) - #5

Closed
ShiningRay wants to merge 1 commit into
mainfrom
feat/agentos-desk-package
Closed

ShiningRay wants to merge 1 commit into
mainfrom
feat/agentos-desk-package

Conversation

@ShiningRay

Copy link
Copy Markdown
Owner

概述

按设计文档(agentos 仓库 docs/emerald-desktop-ui-design-2026-09-15.md)实现阶段一:把 AgentOS 运行时呈现为 Emerald 桌面上的一组窗口——每个 Agent / Service 一个专属窗口,实时展示状态、配置与会话流,并可互动(发任务、答质询)。

本 PR 不含 AgentOS 仓库的任何改动(那边零改动,纯复用其 Observer HTTP 契约)。

组件(examples/apps/agentos/,命名空间 AgentOSDesk)

组件 说明
LinkCore + LinkService 唯一网络出口(Emerald::Service,on_startup):2s 轮询 AgentOS Observer(127.0.0.1:4470)的 9 个只读端点,数据落 9 个 Citrine Signal;离线自动降级。遵循 D10 Service/View 双子——窗口组件零 IO,只读 signal
AgentWindow(:agentos_agent,多实例) 状态徽标、按 thread 分组的会话流、处理中置顶、结果/过程/轨迹三档披露、底部互动条(normal/urgent + 回车发送)
ServiceWindow(:agentos_service,多实例) running 圆点、state 键值表(截断可展开)、pending/processing 双栏、互动条
InboxWindow(:agentos_inbox,单例) Human Endpoint 窗口化:质询计数徽标、橙色质询卡片内联回答、人话卡片流
WorldWindow(:agentos_world,单例) 总览键值 + API Key 状态 + 离线横幅;Registry 名单"开窗"按钮

接线(examples/desktop.rb):四 App 注册进桌面;LinkService 注册进 ServiceHub 并幂等补跑 activate_startup;ShellLauncherBridge 把 World 窗口的 ctx[:launcher].launch 桥到 DesktopShell#launch_app(裸 AppRegistry#launch 不开窗,D3)。

协议适配细节:窗口侧语义 kind: :ask 在 LinkCore#build_post_body 翻译为 AgentOS Message::KINDS 的 task(不翻译会被 Observer 判 400)。

验证

  • 新增纯 CRuby 单测 22 项(内核归一/信号同步/四窗渲染冒烟/POST body 契约)
  • rake test:394 runs, 0 failures;rake compile 通过
  • 真浏览器(headless Chrome + CDP 真实输入)端到端验收:拖拽/缩放提交几何、点击聚焦、轮询重渲染下窗口位置保持

已知限制(包 README 有详述)

  • 轮询 2s 延迟;启停 endpoint、改/撤队列等 control 交互属阶段二(WS,按 docs/SPEC-endpoint-protocol.md)
  • .emz 懒加载路径不支持多文件 entry(AppHost 单文件求值),分发前需合并
  • 多实例 endpoint 窗口暂未做"已开聚焦"去重(点击 World 窗口"开窗"会新开实例)

按 agentos/docs/emerald-desktop-ui-design-2026-09-15.md 阶段一落地:

- AgentOSDesk::LinkCore + LinkService(on_startup):唯一直连 AgentOS
  Observer(127.0.0.1:4470)的地方,2s 轮询 9 只读端点,数据落 Citrine
  Signal;窗口组件零 IO,只读 signal(PLAN D10 Service/View 双子)
- 四个窗口 App:AgentWindow/ServiceWindow(多实例,argv[:endpoint])、
  InboxWindow(Human 人话卡片流 + 质询内联回答)、WorldWindow(总览 +
  Registry 名单开窗,经 ShellLauncherBridge 桥到 shell.launch_app)
- 互动:发任务(normal/urgent)、回答质询(:ask 自动翻译为 AgentOS
  Message::KINDS 的 task);启停/改队列等 control 交互留阶段二(WS)
- 纯 CRuby 单测 22 项(内核归一/信号同步/四窗渲染冒烟),rake test
  394 全绿,rake compile 通过

已知限制(见包 README):.emz 懒加载路径不支持多文件 entry;多实例
endpoint 窗口暂未做"已开聚焦"去重。
@ShiningRay

Copy link
Copy Markdown
Owner Author

改为独立分发,本 PR 作废。

AgentOS 桌面包不应长在 emerald 仓库里:包源码已迁到独立包仓库 agentos-desk(lib 五组件 + manifest + 打包器 app/pack.rb 产出 .emz + 三个测试文件 + 开发主机页 + CI),本 PR 里的 examples/apps/agentos/ 与开发期 ShellLauncherBridge 接线一并移除。

让它真正能被安装所需的宿主能力(多 App 包、包内 Service 装载、ctx[:launch_app」开窗能力面、贡献命令的 app 字段)另开为 #6,不含任何应用代码。

@ShiningRay ShiningRay closed this Sep 15, 2026
@ShiningRay
ShiningRay deleted the feat/agentos-desk-package branch September 15, 2026 23:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant