Thread · 3 查看原帖 读opencode源码看到几个有意思的设计:
1. Hono服务端框架,暴露HTTP协议和多客户端通信。
如果是CLI/TUI客户端,并不需要走真实的HTTP请求,而是直接函数调用hono的服务实例app.fecth接口。因为前后端都是同一个进程
2. 全局事件总线机制。
支持多实例同步状态,比如浏览器开多个TAB打开同一个会话,任何会话窗口的状态变更都会同步出现在其他实例上。包括TUI实例!
和大多数ChatApp设计不同,每个实例只有一个global/event接口接收sse事件流。
用户input新的消息是通过POST接口,启动agent loop。
新消息往GlobalBus里面投递,前端实例只需要通过页面初始化时建立的global/event接口就能拿到最新的消息流!
也就同一个session只会有一个sse连接!而不是每个用户输入消息/runid就开启一个!
读opencode源码看到几个有意思的设计:
1. Hono服务端框架,暴露HTTP协议和多客户端通信。
如果是CLI/TUI客户端,并不需要走真实的HTTP请求,而是直接函数调用hono的服务实例app.fecth接口。因为前后端都是同一个进程
2. 全局事件总线机制。
支持多实例同步状态,比如浏览器开多个TAB打开同一个会话,任何会话窗口的状态变更都会同步出现在其他实例上。包括TUI实例!
和大多数ChatApp设计不同,每个实例只有一个global/event接口接收sse事件流。
用户input新的消息是通过POST接口,启动agent loop。
新消息往GlobalBus里面投递,前端实例只需要通过页面初始化时建立的global/event接口就能拿到最新的消息流!
也就同一个session只会有一个sse连接!而不是每个用户输入消息/runid就开启一个!