| name | external-signal-provider |
| description | Integrate external signal providers (AgentFS, audit trails, toolcall logs) into the reward system. Use when adding external reward signals, processing toolcall audit trails, or connecting third-party agent telemetry to episode scoring. |
External Signal Provider Integration
Guide for integrating external signal providers into the rust-self-learning-memory reward system.
When to Use This Skill
- Adding a new external signal provider (AgentFS, GitHub Copilot, IDE telemetry)
- Processing toolcall audit trails as reward signals
- Implementing signal normalization from external sources
- Merging external signals with internal reward calculations
- Configuring external signal weights and thresholds
Related Documents
Quick Reference
pub struct AgentFsProvider {
db_path: String,
}
#[async_trait]
impl ExternalSignalProvider for AgentFsProvider {
fn name(&self) -> &str { "agentfs" }
async fn get_signals(&self, episode: &Episode) -> Result<ExternalSignalSet> {
let tc = ToolCalls::new(&self.db_path).await?;
let stats = tc.stats().await?;
Ok(ExternalSignalSet {
provider: "agentfs".to_string(),
tool_signals: normalize_tool_stats(stats, episode),
..Default::default()
})
}
}
let registry = ExternalSignalRegistry::new();
registry.register(Box::new(AgentFsProvider::new(db_path)));
let merger = SignalMerger::with_weights(0.7, 0.3);
let merged = merger.merge(&internal_reward, &external_signals);
Core Principles
- Normalization First: All external signals normalized to
ExternalSignalSet format
- Weighted Merging: Configurable weights for internal vs external signals (default: 70/30)
- Graceful Degradation: System works without external providers (fallback to internal only)
- Privacy by Default: Parameter sanitization enabled, credentials via env vars only
Feature Flags
[features]
agentfs = ["dep:agentfs-sdk"]
external-signals = []
Environment Variables
EXTERNAL_SIGNALS_ENABLED=true
EXTERNAL_SIGNAL_WEIGHT=0.3
EXTERNAL_SIGNAL_MIN_CONFIDENCE=0.5
AGENTFS_DB_PATH=/path/to/agent.db
AGENTFS_ENABLED=true
Implementation Checklist
See Also