重构:把剩余 12 个顶层包全部迁到 internal/
继续之前的重构:把根目录残留的非数据/资源类子目录(agents、agenttool、ai、 autoreply、completion、conversation、llm、message、mqtpp、stream、 toolmanager、toolrouter)一并搬到 internal/ 下,并把全工程引用它们的 import 路径从 "meshtastic_mqtt_server/<x>" 重写为 "meshtastic_mqtt_server/internal/<x>"。 变更 - git mv 12 个顶层目录进 internal/,无函数体改动。 - 全工程 sed 把 import path 加上 internal/ 前缀,包括 main.go、 internal/bot/bot_service.go、internal/store/bot_store.go 中对 mqtpp 的引用,以及 ai 子系统内部 agents/agenttool/autoreply/conversation/ llm/toolmanager/toolrouter 之间的相互引用。 验证 - go build ./... 通过;go test ./... 全部包通过。 - AI 自动回复链路(main → ai.NewService → autoreply.Service → botSender) 保持不变,仅 import 路径调整。 - 根目录最终只剩 main.go / main_test.go / internal/ 加 go.mod / go.sum 与数据资源目录(dist、doc、firmware、py、win、meshmap_frontend)。 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
package stream
|
||||
|
||||
import "context"
|
||||
|
||||
// Frame represents an event in the stream
|
||||
type Frame struct {
|
||||
Type string `json:"type,omitempty"`
|
||||
Tool string `json:"tool,omitempty"`
|
||||
Stage string `json:"stage,omitempty"`
|
||||
Status string `json:"status,omitempty"`
|
||||
Message string `json:"message,omitempty"`
|
||||
Data map[string]any `json:"data,omitempty"`
|
||||
Error string `json:"error,omitempty"`
|
||||
Text string `json:"text,omitempty"`
|
||||
}
|
||||
|
||||
// EmitFunc is a function that emits frames
|
||||
type EmitFunc func(frame Frame)
|
||||
|
||||
// ContextKey type for context keys
|
||||
type contextKey string
|
||||
|
||||
const (
|
||||
// TrackerContextKey is the key for the stream tracker in context
|
||||
TrackerContextKey contextKey = "stream_tracker"
|
||||
)
|
||||
|
||||
// Tracker tracks token usage during streaming
|
||||
type Tracker struct {
|
||||
PromptTokens int
|
||||
CompletionTokens int
|
||||
ToolCalls int
|
||||
}
|
||||
|
||||
// NewTracker creates a new stream tracker
|
||||
func NewTracker() *Tracker {
|
||||
return &Tracker{}
|
||||
}
|
||||
|
||||
// AddTool adds tool call token usage
|
||||
func (t *Tracker) AddTool(promptTokens, completionTokens int) {
|
||||
t.PromptTokens += promptTokens
|
||||
t.CompletionTokens += completionTokens
|
||||
t.ToolCalls++
|
||||
}
|
||||
|
||||
// TrackerFromContext retrieves the tracker from context
|
||||
func TrackerFromContext(ctx context.Context) *Tracker {
|
||||
if tracker, ok := ctx.Value(TrackerContextKey).(*Tracker); ok {
|
||||
return tracker
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// WithTracker adds a tracker to the context
|
||||
func WithTracker(ctx context.Context, tracker *Tracker) context.Context {
|
||||
return context.WithValue(ctx, TrackerContextKey, tracker)
|
||||
}
|
||||
Reference in New Issue
Block a user