金色时刻 · 15:48
让好资源,触手可及
AGENT SKILL

understanding-transformers

understanding-transformers 是面向数据与分析的 Agent Skill,来自 elbwalker/walkerOS。查看技能说明、操作步骤与使用约定,并通过原项目了解详细用法。

Use when working with transformers, understanding event validation/enrichment/redaction, or learning about transformer chaining. Covers interface, return values, and pipeline integration.

SKILL.md

下载 MD ↓
nameunderstanding-transformers
descriptionUse when working with transformers, understanding event validation/enrichment/redaction, or learning about transformer chaining. Covers interface, return values, and pipeline integration.

Understanding walkerOS Transformers

Overview

Transformers are middleware for validating, enriching, and redacting events in the walkerOS pipeline. They run in chains at configurable points between sources, collector, and destinations.

Core principle: Transformers transform events. They don't capture (sources) or deliver (destinations)—they modify events in-flight.

Use Cases

Use Case Purpose Example
Validate Ensure events match schema contracts JSON Schema validation
Enrich Add server-side data to events User segments, geo data
Redact Remove sensitive data before destinations Strip PII, anonymize IPs

Transformer Interface

See packages/core/src/types/transformer.ts for canonical interface.

Init Function (Context Pattern)

Transformers use a context-based initialization pattern:

import type { Transformer } from '@walkeros/core';

export const transformerMyTransformer: Transformer.Init<Types> = (context) => {
  const { config = {}, env, logger, id } = context;
  const settings = SettingsSchema.parse(config.settings || {});

  return {
    push(event, pushContext) {
      // Process event
      return event;
    },
  };
};

Init Context contains:

Property Type Purpose
config Transformer.Config Settings, mapping, next chain
env Types['env'] Environment dependencies
logger Logger Logging functions
id string Transformer identifier
collector Collector.Instance Reference to collector
ingest Ingest (optional) Request metadata from source

Instance Methods

Method Purpose Required
push Process event, return modified/false Required
init One-time initialization Optional
destroy Cleanup resources Optional

Return Values

The push function controls event flow:

Return Behavior
event Continue chain with modified event
void Continue chain, event unchanged
false Stop chain, event dropped
push(event, context) {
  if (!event.data?.id) {
    context.logger.error('Missing required id');
    return false;  // Stop chain
  }

  event.data.enrichedAt = Date.now();
  return event;  // Continue with modified event
}

Pipeline Integration

Transformers run at two points in the pipeline:

Source → [Pre-Transformers] → Collector → [Post-Transformers] → Destination
          (source.next)                   (destination.before)

Pre-Collector Chain

Runs after source captures event, before collector enrichment:

sources: {
  browser: {
    code: sourceBrowser,
    next: 'validate'  // First transformer in pre-chain
  }
}

Post-Collector Chain

Runs after collector enrichment, before destination receives event:

destinations: {
  gtag: {
    code: destinationGtag,
    before: 'redact'  // First transformer in post-chain
  }
}

Chain Linking

Transformers link together via next:

transformers: {
  validate: {
    code: transformerValidator,
    config: { next: 'enrich' }  // Chain to next transformer
  },
  enrich: {
    code: transformerEnrich,
    config: { next: 'redact' }
  },
  redact: {
    code: transformerRedact
    // No next = end of chain
  }
}

Push Context

The push function receives a context with event metadata:

Property Purpose
config Transformer configuration
env Environment dependencies
logger Scoped logger for output
id Transformer identifier
collector Access to collector instance
ingest Request metadata from source
push(event, context) {
  const { logger, id, ingest } = context;

  logger.debug('Processing', { transformer: id, event: event.name });

  // Access request metadata if available
  if (ingest?.ip) {
    event.data = { ...event.data, clientIp: ingest.ip };
  }

  return event;
}

Transformer Paths

Path Description
packages/transformers/ Transformer packages
packages/transformers/validator/ Validator transformer

Related

Skills:

Source Files:

Package READMEs:

Documentation:

来源:elbwalker/walkerOS · MIT 许可 · 许可原文 · MD 为来源页保存的历史版本