main: 增强工具功能与消息处理
- 添加 `FileReadTool`,支持文件内容读取与安全验证 - 引入 `hasToolMessages` 逻辑,优化工具历史上下文处理 - 修改工具选项逻辑,支持禁用工具时的动态调整 - 增加消息序列化逻辑,优化 Redis 序列管理与数据同步 - 扩展测试覆盖,验证序列化与工具调用场景 - 增强 Docker Compose 脚本,支持应用重置与日志清理 - 调整工具调用超时设置,提升运行时用户体验
This commit is contained in:
@@ -3,12 +3,16 @@
|
||||
namespace App\Services;
|
||||
|
||||
use App\Models\Message;
|
||||
use App\Services\MessageSequence;
|
||||
use App\Services\Tool\ToolCall;
|
||||
use App\Services\Tool\ToolResult;
|
||||
|
||||
class OutputSink
|
||||
{
|
||||
public function __construct(private readonly ChatService $chatService)
|
||||
public function __construct(
|
||||
private readonly ChatService $chatService,
|
||||
private readonly MessageSequence $messageSequence,
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -39,10 +43,12 @@ class OutputSink
|
||||
*/
|
||||
public function appendAgentDelta(string $sessionId, string $runId, string $content, int $deltaIndex, array $meta = []): void
|
||||
{
|
||||
$session = $this->chatService->getSession($sessionId);
|
||||
|
||||
// 1. 创建临时 Message 对象(不保存到数据库)
|
||||
$message = new Message([
|
||||
'message_id' => (string) \Illuminate\Support\Str::uuid(),
|
||||
'session_id' => $sessionId,
|
||||
'session_id' => $session->session_id,
|
||||
'role' => Message::ROLE_AGENT,
|
||||
'type' => 'message.delta',
|
||||
'content' => $content,
|
||||
@@ -51,7 +57,7 @@ class OutputSink
|
||||
'delta_index' => $deltaIndex,
|
||||
]),
|
||||
'dedupe_key' => "run:{$runId}:agent:delta:{$deltaIndex}",
|
||||
'seq' => 0, // delta 消息不需要真实的 seq
|
||||
'seq' => $this->messageSequence->nextForSession($session),
|
||||
'created_at' => now(),
|
||||
]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user