跳转到主要内容

流式输出

在 SessionConfig 中指定 streaming: true 后,就可以以流式方式接收来自 Copilot 的响应。 无论是 stdio 模式还是 TCP 模式,原本就有类似流式的行为。区别在于会接收 ASSISTANT_MESSAGE_DELTA
  • 为了实现流畅的显示,不要添加换行,直接输出。
  • Laravel Prompts 的 spin() 会破坏显示效果,因此不要一起使用。

具体的使用模式

Artisan 命令

如上所述,用 echo$this->output->write() 直接输出。显示与直接使用 Copilot CLI 时一致,容易理解。使用 Laravel Prompts 的 stream() 还可以以淡入效果显示。

在 Web 页面上通过 Server-Sent Events (SSE) 投递

使用 response()->eventStream() 的写法

response()->eventStream() 是在 Laravel 12 发布前不久添加的。由于本包仅支持 Laravel 12 及以上,因此可以使用。

使用 response()->stream() 的写法

前端代码示例

copilot.blade.php 是用于简单验证显示的。生产环境中如果使用 React 或 Vue,推荐使用 Laravel 官方的 npm 包。@laravel/stream-react@laravel/stream-vue

通过 WebSocket 投递

也可以组合 Laravel 的通知功能、广播功能与 Reverb,通过 WebSocket 投递 delta

Livewire 的 wire:stream

在 Livewire 中,也可以使用 wire:stream 指令进行流式显示。
最新信息请参考 GitHub 仓库
最后修改于 2026年7月18日