Aster Studio 支持监控远程 Agent,允许你将任何使用 Aster 框架的应用连接到 Studio 进行统一监控。
┌─────────────────┐ WebSocket ┌─────────────────┐
│ Your App │ ─────────────────► │ Aster Studio │
│ (Agent Host) │ /v1/remote- │ (Server) │
│ │ agents/connect │ │
└─────────────────┘ └─────────────────┘
│ │
│ Events │ Dashboard
▼ ▼
Agent EventBus Web Console
package main
import (
"github.com/gorilla/websocket"
"encoding/json"
)
type StudioClient struct {
conn *websocket.Conn
agentID string
}
func NewStudioClient(studioURL, agentID string) (*StudioClient, error) {
conn, _, err := websocket.DefaultDialer.Dial(
studioURL + "/v1/remote-agents/connect",
nil,
)
if err != nil {
return nil, err
}
client := &StudioClient{conn: conn, agentID: agentID}
// 注册 Agent
client.Send(map[string]any{
"type": "register",
"agent": map[string]any{
"id": agentID,
"name": "My Agent",
"status": "ready",
},
})
return client, nil
}
func (c *StudioClient) SendEvent(event map[string]any) error {
return c.Send(map[string]any{
"type": "event",
"agent_id": c.agentID,
"event": event,
})
}
func (c *StudioClient) Send(msg map[string]any) error {
data, _ := json.Marshal(msg)
return c.conn.WriteMessage(websocket.TextMessage, data)
}
// Token 使用事件
client.SendEvent(map[string]any{
"channel": "monitor",
"event_type": "token_usage",
"input_tokens": 100,
"output_tokens": 50,
})
// 状态变更事件
client.SendEvent(map[string]any{
"channel": "monitor",
"event_type": "state_changed",
"state": "working",
})
// 错误事件
client.SendEvent(map[string]any{
"channel": "monitor",
"event_type": "error",
"severity": "error",
"message": "API call failed",
})
// 文本输出事件
client.SendEvent(map[string]any{
"channel": "progress",
"event_type": "text_chunk",
"delta": "Hello, ",
})
{
"type": "register",
"agent": {
"id": "agent-123",
"name": "Writing Agent",
"status": "ready",
"model": "claude-3-5-sonnet",
"capabilities": ["writing", "editing"]
}
}
{
"type": "register_session",
"session": {
"id": "session-456",
"agent_id": "agent-123",
"created_at": "2024-01-01T12:00:00Z"
}
}
{
"type": "event",
"agent_id": "agent-123",
"event": {
"channel": "monitor",
"event_type": "token_usage",
"input_tokens": 100,
"output_tokens": 50
}
}
{
"type": "ping"
}
响应:
{
"type": "pong"
}
在你的应用中启用 Studio 集成:
# 启用 Studio 客户端
ASTER_STUDIO_ENABLED=true
# Studio 服务地址
ASTER_STUDIO_URL=ws://localhost:3032