Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build transparent, observable AI agents using AgentScope — agents you can see, understand, and trust with full execution tracing and debugging. Use when: building production agents that need observability, debugging complex agent behaviors, creating agents with audit trails.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | -29% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -28% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -21% | 0% |
Build transparent, observable AI agents using AgentScope — a framework for creating agents you can see, understand, and trust with full execution tracing and debugging.
AgentScope provides three pillars of observability for AI agents: execution tracing (every step recorded with inputs, outputs, timing), decision logging (why the agent chose action A over B), and live debugging (inspect, pause, and replay agent executions). It integrates with monitoring stacks like OpenTelemetry, Prometheus, Datadog, and Grafana.
bashpip install agentscope
Or with Node.js:
bashnpm install agentscope
pythonfrom agentscope import Agent, Tracer tracer = Tracer(output="./traces/") agent = Agent( name="research-assistant", model="claude-sonnet-4-20250514", tracer=tracer, ) result = agent.run("Summarize the key findings from this paper") trace = tracer.latest() print(f"Steps: {trace.step_count}") print(f"Duration: {trace.duration_ms}ms") print(f"Tokens used: {trace.total_tokens}") for step in trace.steps: print(f" [{step.type}] {step.name}: {step.duration_ms}ms") print(f" Input: {step.input[:100]}...") print(f" Output: {step.output[:100]}...")
Track why an agent made specific choices:
pythonfrom agentscope import Agent, DecisionLogger logger = DecisionLogger( log_alternatives=True, log_reasoning=True, ) agent = Agent( name="trading-agent", model="claude-sonnet-4-20250514", decision_logger=logger, tools=["market-data", "portfolio", "trade-executor"], ) result = agent.run("Review portfolio and suggest rebalancing") for decision in logger.decisions: print(f"Decision: {decision.action}") print(f"Reasoning: {decision.reasoning}") for alt in decision.alternatives: print(f" - {alt.action} (score: {alt.score:.2f}, rejected: {alt.rejection_reason})")
pythonfrom agentscope import AgentTeam, Tracer, Dashboard tracer = Tracer(output="./traces/") team = AgentTeam( agents=[ Agent(name="researcher", model="claude-sonnet-4-20250514", role="research"), Agent(name="analyst", model="claude-sonnet-4-20250514", role="analysis"), Agent(name="writer", model="claude-sonnet-4-20250514", role="writing"), ], tracer=tracer, coordination="sequential", ) result = team.run("Create a market analysis report for Q4 2025") for message in tracer.messages(): print(f"[{message.sender} → {message.receiver}] {message.content[:80]}...") dashboard = Dashboard(tracer) dashboard.serve(port=8080)
pythonfrom agentscope import Agent, AuditTrail audit = AuditTrail( storage="./audit_logs/", format="jsonl", include_timestamps=True, redact_pii=True, ) agent = Agent( name="claims-processor", model="claude-sonnet-4-20250514", audit_trail=audit, ) result = agent.run("Process insurance claim #12345") report = audit.export( trace_id=result.trace_id, format="pdf", include_decisions=True, ) report.save("audit-claim-12345.pdf")
pythonfrom agentscope import Agent, Tracer from agentscope.exporters import OTelExporter exporter = OTelExporter( endpoint="http://localhost:4317", service_name="my-agent-service", ) tracer = Tracer(exporters=[exporter]) agent = Agent(name="support-agent", model="claude-sonnet-4-20250514", tracer=tracer) # Traces automatically appear in Jaeger/Grafana/Datadog
pythonfrom agentscope import AgentTeam, Tracer, Replayer tracer = Tracer(output="./traces/") team = AgentTeam( agents=[ Agent(name="researcher", model="claude-sonnet-4-20250514", role="research"), Agent(name="analyst", model="claude-sonnet-4-20250514", role="analysis"), ], tracer=tracer, ) result = team.run("Analyze Q4 revenue trends for FAANG companies") # Replay and inspect each step trace = tracer.latest() replayer = Replayer(trace) for step in replayer: print(f"Step {step.index}: {step.name} — {step.duration_ms}ms") if step.is_decision: print(f" Chose: {step.decision.action}, Alternatives: {len(step.decision.alternatives)}")
pythonfrom agentscope import Agent, AuditTrail from agentscope.exporters import PrometheusExporter audit = AuditTrail(storage="./audit_logs/", format="jsonl", redact_pii=True) metrics = PrometheusExporter(port=9090) agent = Agent( name="claims-processor", model="claude-sonnet-4-20250514", audit_trail=audit, tracer=Tracer(exporters=[metrics]), ) result = agent.run("Process insurance claim #67890 for water damage — $12,400") report = audit.export(trace_id=result.trace_id, format="pdf", include_decisions=True) report.save("audit-claim-67890.pdf") # Prometheus exposes: agent_step_duration_seconds, agent_total_tokens, agent_error_count
log_alternatives=True during development to understand agent decision-makingredact_pii=True in production to avoid logging sensitive dataOther measured skills in the registry, with their headline benchmark lift.