Mirrors
AI agent testing: replay real sessions against a rebuilt staging environment to catch regressions.
التثبيت
أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: .cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).
claude mcp add --transport http mirrors 'https://api.runmirrors.com/mcp'
{
"mcpServers": {
"mirrors": {
"type": "http",
"url": "https://api.runmirrors.com/mcp"
}
}
}
التوثيق
مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.
mirrorkit (Go)
A lightweight, drop-in production trace collector for LLM agents — the Go
sibling of the Python mirrorkit and
TypeScript mirrorkit (npm) packages.
It does exactly one thing: take traces you hand it and send them to your
Mirrors backend — batched in the background, non-blocking, and safe (it never
panics into your app after Init). It does not instrument SDKs and does
not run agents; you build the trace, it ships it.
Install
go get github.com/ai-singhal/mirrorkit-go
Requires Go ≥ 1.21. Zero dependencies (standard library only).
Usage
package main
import (
"time"
mirrorkit "github.com/ai-singhal/mirrorkit-go"
)
func main() {
mirrorkit.Init(mirrorkit.Options{APIKey: "mk_live_...", Project: "my-agent"})
defer mirrorkit.Shutdown(5 * time.Second)
mirrorkit.LogTrace([]mirrorkit.Message{
mirrorkit.SystemMessage("You are a helpful assistant."),
mirrorkit.UserMessage("What's the weather in Paris?"),
mirrorkit.AssistantMessage("It's 18C and sunny."),
}, mirrorkit.WithModel("claude-opus-4-8"))
}
Each trace is enqueued and flushed to {endpoint}/api/collect by a background
goroutine (Authorization: Bearer <apiKey>, body {project, traces}).
Tool calls
Build tool-call and tool-result messages with the helpers:
mirrorkit.LogTrace([]mirrorkit.Message{
mirrorkit.UserMessage("Cancel booking BK-4471."),
mirrorkit.AssistantToolCalls(
mirrorkit.NewToolCall("call_1", "cancel_booking", map[string]any{"id": "BK-4471"}),
),
mirrorkit.ToolResult("call_1", `{"status":"cancelled"}`),
mirrorkit.AssistantMessage("Done — BK-4471 is cancelled."),
})
Options
mirrorkit.Init(mirrorkit.Options{
APIKey: "mk_live_...", // required
Project: "my-agent", // default "default"
Endpoint: "https://api.mirror.dev", // else MIRRORKIT_ENDPOINT / MIRROR_ENDPOINT / prod
FlushInterval: 2 * time.Second, // ms between background flushes
MaxBatch: 50, // max traces per POST
MaxQueue: 10_000, // in-memory cap; oldest dropped past this
Debug: false, // internal debug logs (or MIRRORKIT_DEBUG=1)
})
Endpoint resolution: Options.Endpoint → MIRRORKIT_ENDPOINT → MIRROR_ENDPOINT
→ the production default.
Lifecycle
mirrorkit.Flush(5 * time.Second) // block until the queue drains
mirrorkit.Shutdown(5 * time.Second) // stop the background goroutine (flushes first)
Prefer one collector per process via the package-level Init / LogTrace /
Flush / Shutdown. For multiple independent collectors, use NewClient and
call LogTrace / Flush / Shutdown on the returned *Client.
Testing
cd mirrorkit-go && go vet ./... && go test ./...
الأسئلة الشائعة
ما هو Mirrors؟
AI agent testing: replay real sessions against a rebuilt staging environment to catch regressions.
كيف أثبّت Mirrors؟
يعمل كخادم بعيد. في Claude Code: claude mcp add --transport http mirrors 'https://api.runmirrors.com/mcp'. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.
هل يحتاج Mirrors إلى مفتاح API؟
لا يذكر إدراجه في السجل أي مفتاح أو سر إلزامي. قد تتطلب بعض الميزات حسابًا لدى الخدمة التي يتصل بها.
هل Mirrors مفتوح المصدر؟
نعم. شيفرته متاحة على GitHub بترخيص MIT.
من يصون Mirrors؟
ينشره ai-singhal. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.
من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.