AgentSkillsCN

synapse-runtime-context-api

讲解如何使用 Synapse RuntimeContext API。当用户询问“RuntimeContext”、“ctx.”、“日志记录”、“进度追踪”、“set_progress”、“set_metrics”、“log_message”、“BaseStepContext”、“TrainContext”、“ExportContext”、“UploadContext”、“InferenceContext”、“AddTaskDataContext”,或需要帮助进行 Synapse 插件的上下文与日志记录时,可选用此技能。

SKILL.md
--- frontmatter
name: synapse-runtime-context-api
description: Explains how to use Synapse RuntimeContext API. Use when the user asks about "RuntimeContext", "ctx.", "logging", "progress tracking", "set_progress", "set_metrics", "log_message", "BaseStepContext", "TrainContext", "ExportContext", "UploadContext", "InferenceContext", "AddTaskDataContext", or needs help with synapse plugin context and logging.

Synapse RuntimeContext API

RuntimeContext provides logging, progress tracking, and client access for plugin actions.

Quick Reference

python
from synapse_sdk.plugins.context import RuntimeContext

def train(params: TrainParams, ctx: RuntimeContext) -> dict:
    # Progress tracking
    ctx.set_progress(0, 100)

    # Metrics recording
    ctx.set_metrics({'loss': 0.05}, 'training')

    # User-facing message
    ctx.log_message('Training started', 'info')

    # Event logging
    ctx.log('checkpoint', {'epoch': 5}, '/path/to/file')

    # Debug logging
    ctx.log_dev_event('Debug info', {'data': 'value'})

    # Signal completion
    ctx.end_log()

    return {'status': 'completed'}

Context Attributes

AttributeTypeDescription
ctx.loggerBaseLoggerLogger instance
ctx.envPluginEnvironmentEnvironment variables
ctx.job_idstr | NoneJob tracking ID
ctx.clientBackendClient | NoneAPI client
ctx.agent_clientAgentClient | NoneRay operations client
ctx.checkpointdict | NonePretrained model info

Progress Tracking

python
# Basic progress
ctx.set_progress(current=50, total=100)

# Progress with category (multi-phase)
ctx.set_progress(5, 10, category='download')
ctx.set_progress(3, 100, category='training')

Metrics Recording

python
ctx.set_metrics(
    value={'loss': 0.05, 'accuracy': 0.95},
    category='training'
)

Logging Methods

MethodDescription
log(event, data, file)Log event with data
log_message(message, context)User-facing message
log_dev_event(message, data)Debug/dev event
end_log()Signal completion

Message Contexts

python
ctx.log_message('Success!', 'success')   # Green
ctx.log_message('Warning', 'warning')    # Yellow
ctx.log_message('Error', 'danger')       # Red
ctx.log_message('Info', 'info')          # Blue (default)

Environment Access

python
# Get environment variable
api_key = ctx.env.get('API_KEY', '')
debug_mode = ctx.env.get('DEBUG', 'false') == 'true'

Checkpoint Info

python
if ctx.checkpoint:
    model_path = ctx.checkpoint.get('path')
    category = ctx.checkpoint.get('category')  # 'base' or fine-tuned

Specialized Step Contexts

For step-based workflows, specialized contexts extend BaseStepContext:

python
from synapse_sdk.plugins.actions.train import TrainContext
from synapse_sdk.plugins.actions.export import ExportContext
from synapse_sdk.plugins.actions.upload import UploadContext
from synapse_sdk.plugins.actions.inference import InferenceContext, DeploymentContext
from synapse_sdk.plugins.actions.add_task_data import AddTaskDataContext
ContextPurposeKey Attributes
TrainContextTraining workflowsdataset, model_path, model
ExportContextExport workflowsresults, exported_count, output_path
UploadContextUpload workflowsuploaded_files, data_units
InferenceContextInference workflowsmodel, results, processed_count
DeploymentContextDeployment workflowsserve_app_id, deployed
AddTaskDataContextPre-annotation workflowstask_ids, success_count, failures

All step contexts include:

  • runtime_ctx - Reference to RuntimeContext
  • set_progress() / set_metrics() - Auto-uses step name as category
  • log() - Event logging

See step-workflow skill for details.

Additional Resources

For advanced patterns: