diff --git a/deps/agent-native b/deps/agent-native index c348441..e86e74b 160000 --- a/deps/agent-native +++ b/deps/agent-native @@ -1 +1 @@ -Subproject commit c348441691e8bdab784a03aa9be64d53dacff341 +Subproject commit e86e74bc36185c8531df161eb57666b5dad72bc9 diff --git a/internal/runtime/llm_direct.go b/internal/runtime/llm_direct.go index 770e0b2..4e33d02 100644 --- a/internal/runtime/llm_direct.go +++ b/internal/runtime/llm_direct.go @@ -233,9 +233,6 @@ func (l *LLMRunner) runDirect(rc RunCtx, stream agentllm.StreamFunc, model strin go func() { defer close(out) for ev := range in { - if ev.Kind == agentllm.KindToolCallDelta { - st.noteToolDelta(ev) - } if ev.Kind == agentllm.KindMessageEnd { if ev.Message.Role == "" { ev.Message.Role = agentllm.RoleAssistant @@ -488,13 +485,13 @@ func (st *directRun) noteModelSwitch(from, to string) { st.switches = append(st.switches, fmt.Sprintf("模型 %s 在输出前失败,已改用 %s", from, to)) } -func (st *directRun) noteToolDelta(ev agentllm.Event) { +func (st *directRun) noteToolDelta(ev nruntime.Event) { if !st.acting { _ = st.rc.Emit(core.EvRunPhase, core.RunPhasePayload{Phase: core.PhaseActing}) st.acting = true } _ = st.rc.Emit(core.EvToolCallDelta, core.ToolCallDeltaPayload{ - Index: ev.ToolIndex, CallID: ev.ToolID, Name: ev.ToolName, Delta: ev.ArgumentsDelta, + Index: ev.ToolIndex, CallID: ev.CallID, Name: ev.Tool, Delta: ev.Detail, }) } @@ -511,6 +508,8 @@ func (st *directRun) onEvent(ev nruntime.Event) { st.thinkStart, st.thinkEnd = time.Time{}, time.Time{} st.textStart, st.textEnd = time.Time{}, time.Time{} st.turnBody = "" + case "tool_call_delta": + st.noteToolDelta(ev) case "text_delta": if !st.responding { _ = st.rc.Emit(core.EvRunPhase, core.RunPhasePayload{Phase: core.PhaseResponding})