name: go-riskengine description: Expert skill for the riskengine open-source Go project. Use when implementing, reviewing, or extending any component of the risk decision engine: rule engine, model engine, feature service, orchestrator, list service, audit, API layer, or deployment config. Provides concise domain knowledge, interface contracts, and implementation patterns to minimize context token usage.
RiskEngine Go Project Skill
Full design reference: 风控决策引擎深度设计方案.md
Domain rules: .cursor/rules/riskengine-domain.mdc
Quick Reference
Project Layout
riskengine/
├── cmd/server/ # main.go – wire & serve
├── cmd/migrate/ # DB/config migration tool
├── internal/
│ ├── engine/ # DecisionEngine – top-level orchestration
│ ├── rule/ # Rule DSL parser, evaluator, hot-reload
│ ├── feature/ # Parallel feature fetching, velocity windows
│ ├── model/ # ONNX inference pool, champion-challenger
│ ├── list/ # Bloom+Redis+DB tiered list service
│ ├── orchestrator/ # DAG executor, A/B router, aggregator
│ ├── audit/ # Kafka audit writer, PII masking
│ ├── config/ # Config loader (Viper + Nacos/Etcd watch)
│ └── middleware/ # Rate limit, auth, trace injection
├── pkg/
│ ├── expr/ # Expression evaluator (wraps antonmedv/expr)
│ ├── sliding/ # Redis sliding-window velocity counter
│ ├── bloom/ # In-process Bloom filter
│ └── pool/ # Generic goroutine pool (ONNX CGO isolation)
├── api/
│ ├── http/v1/ # Gin handlers + OpenAPI spec
│ └── grpc/proto/ # Protobuf definitions
├── configs/ # YAML config templates
├── deployments/ # Docker, Kubernetes manifests
├── scripts/ # lint, test, benchmark scripts
└── docs/ # Architecture diagrams, ADRs
Core Interfaces (never change signatures without major version bump)
See reference.md for full interface definitions.
Key contracts:
engine.Engine–Evaluate(ctx, *DecisionRequest) (*DecisionResult, error)rule.Evaluator–Evaluate(ctx, *rule.Context) ([]*rule.Result, error)feature.Fetcher–Fetch(ctx, *feature.Key) (feature.Map, error)model.Scorer–Score(ctx, feature.Map) (map[string]float64, error)list.Service–Check(ctx, *list.Query) (list.Status, error)
Decision Flow (implement in this order when adding a new scene)
- Add scene code to
api/http/v1/scenes.go - Define
PolicySetYAML inconfigs/policies/<scene>.yaml - Register feature fetchers needed for the scene
- Add/reuse rules in
configs/rules/ - Wire in
internal/orchestrator/registry.go - Add integration test in
internal/engine/testdata/<scene>/
Performance Targets
| Component | P99 Target |
|---|---|
| List check (L1 Bloom) | < 1ms |
| Feature fetch (parallel) | < 20ms |
| Rule evaluation (100 rules) | < 10ms |
| Model scoring (XGBoost) | < 15ms |
| End-to-end decision | < 60ms |
| Throughput (8-core) | > 20,000 TPS |
Key Dependencies
go.uber.org/zap # logging
github.com/gin-gonic/gin # HTTP
google.golang.org/grpc # gRPC
github.com/redis/go-redis/v9 # Redis
golang.org/x/sync # errgroup
github.com/antonmedv/expr # expression engine
github.com/prometheus/client_golang # metrics
go.opentelemetry.io/otel # tracing
Additional Resources
- Full interface contracts: reference.md
- Implementation examples: examples.md
- Feature implementation steps &
/opsx:commands: skillriskengine-workflow