初始化提交
Some checks failed
CI / Check / macos-latest (push) Has been cancelled
CI / Check / ubuntu-latest (push) Has been cancelled
CI / Check / windows-latest (push) Has been cancelled
CI / Test / macos-latest (push) Has been cancelled
CI / Test / ubuntu-latest (push) Has been cancelled
CI / Test / windows-latest (push) Has been cancelled
CI / Clippy (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Security Audit (push) Has been cancelled
CI / Secrets Scan (push) Has been cancelled
CI / Install Script Smoke Test (push) Has been cancelled
Some checks failed
CI / Check / macos-latest (push) Has been cancelled
CI / Check / ubuntu-latest (push) Has been cancelled
CI / Check / windows-latest (push) Has been cancelled
CI / Test / macos-latest (push) Has been cancelled
CI / Test / ubuntu-latest (push) Has been cancelled
CI / Test / windows-latest (push) Has been cancelled
CI / Clippy (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Security Audit (push) Has been cancelled
CI / Secrets Scan (push) Has been cancelled
CI / Install Script Smoke Test (push) Has been cancelled
This commit is contained in:
381
crates/openfang-hands/bundled/predictor/HAND.toml
Normal file
381
crates/openfang-hands/bundled/predictor/HAND.toml
Normal file
@@ -0,0 +1,381 @@
|
||||
id = "predictor"
|
||||
name = "Predictor Hand"
|
||||
description = "Autonomous future predictor — collects signals, builds reasoning chains, makes calibrated predictions, and tracks accuracy"
|
||||
category = "data"
|
||||
icon = "\U0001F52E"
|
||||
tools = ["shell_exec", "file_read", "file_write", "file_list", "web_fetch", "web_search", "memory_store", "memory_recall", "schedule_create", "schedule_list", "schedule_delete", "knowledge_add_entity", "knowledge_add_relation", "knowledge_query"]
|
||||
|
||||
# ─── Configurable settings ───────────────────────────────────────────────────
|
||||
|
||||
[[settings]]
|
||||
key = "prediction_domain"
|
||||
label = "Prediction Domain"
|
||||
description = "Primary domain for predictions"
|
||||
setting_type = "select"
|
||||
default = "tech"
|
||||
|
||||
[[settings.options]]
|
||||
value = "tech"
|
||||
label = "Technology"
|
||||
|
||||
[[settings.options]]
|
||||
value = "finance"
|
||||
label = "Finance & Markets"
|
||||
|
||||
[[settings.options]]
|
||||
value = "geopolitics"
|
||||
label = "Geopolitics"
|
||||
|
||||
[[settings.options]]
|
||||
value = "climate"
|
||||
label = "Climate & Energy"
|
||||
|
||||
[[settings.options]]
|
||||
value = "general"
|
||||
label = "General (cross-domain)"
|
||||
|
||||
[[settings]]
|
||||
key = "time_horizon"
|
||||
label = "Time Horizon"
|
||||
description = "How far ahead to predict"
|
||||
setting_type = "select"
|
||||
default = "3_months"
|
||||
|
||||
[[settings.options]]
|
||||
value = "1_week"
|
||||
label = "1 week"
|
||||
|
||||
[[settings.options]]
|
||||
value = "1_month"
|
||||
label = "1 month"
|
||||
|
||||
[[settings.options]]
|
||||
value = "3_months"
|
||||
label = "3 months"
|
||||
|
||||
[[settings.options]]
|
||||
value = "1_year"
|
||||
label = "1 year"
|
||||
|
||||
[[settings]]
|
||||
key = "data_sources"
|
||||
label = "Data Sources"
|
||||
description = "What types of sources to monitor for signals"
|
||||
setting_type = "select"
|
||||
default = "all"
|
||||
|
||||
[[settings.options]]
|
||||
value = "news"
|
||||
label = "News only"
|
||||
|
||||
[[settings.options]]
|
||||
value = "social"
|
||||
label = "Social media"
|
||||
|
||||
[[settings.options]]
|
||||
value = "financial"
|
||||
label = "Financial data"
|
||||
|
||||
[[settings.options]]
|
||||
value = "academic"
|
||||
label = "Academic papers"
|
||||
|
||||
[[settings.options]]
|
||||
value = "all"
|
||||
label = "All sources"
|
||||
|
||||
[[settings]]
|
||||
key = "report_frequency"
|
||||
label = "Report Frequency"
|
||||
description = "How often to generate prediction reports"
|
||||
setting_type = "select"
|
||||
default = "weekly"
|
||||
|
||||
[[settings.options]]
|
||||
value = "daily"
|
||||
label = "Daily"
|
||||
|
||||
[[settings.options]]
|
||||
value = "weekly"
|
||||
label = "Weekly"
|
||||
|
||||
[[settings.options]]
|
||||
value = "biweekly"
|
||||
label = "Biweekly"
|
||||
|
||||
[[settings.options]]
|
||||
value = "monthly"
|
||||
label = "Monthly"
|
||||
|
||||
[[settings]]
|
||||
key = "predictions_per_report"
|
||||
label = "Predictions Per Report"
|
||||
description = "Number of predictions to include per report"
|
||||
setting_type = "select"
|
||||
default = "5"
|
||||
|
||||
[[settings.options]]
|
||||
value = "3"
|
||||
label = "3 predictions"
|
||||
|
||||
[[settings.options]]
|
||||
value = "5"
|
||||
label = "5 predictions"
|
||||
|
||||
[[settings.options]]
|
||||
value = "10"
|
||||
label = "10 predictions"
|
||||
|
||||
[[settings.options]]
|
||||
value = "20"
|
||||
label = "20 predictions"
|
||||
|
||||
[[settings]]
|
||||
key = "track_accuracy"
|
||||
label = "Track Accuracy"
|
||||
description = "Score past predictions when their time horizon expires"
|
||||
setting_type = "toggle"
|
||||
default = "true"
|
||||
|
||||
[[settings]]
|
||||
key = "confidence_threshold"
|
||||
label = "Confidence Threshold"
|
||||
description = "Minimum confidence to include a prediction"
|
||||
setting_type = "select"
|
||||
default = "medium"
|
||||
|
||||
[[settings.options]]
|
||||
value = "low"
|
||||
label = "Low (20%+ confidence)"
|
||||
|
||||
[[settings.options]]
|
||||
value = "medium"
|
||||
label = "Medium (40%+ confidence)"
|
||||
|
||||
[[settings.options]]
|
||||
value = "high"
|
||||
label = "High (70%+ confidence)"
|
||||
|
||||
[[settings]]
|
||||
key = "contrarian_mode"
|
||||
label = "Contrarian Mode"
|
||||
description = "Actively seek and present counter-consensus predictions"
|
||||
setting_type = "toggle"
|
||||
default = "false"
|
||||
|
||||
# ─── Agent configuration ─────────────────────────────────────────────────────
|
||||
|
||||
[agent]
|
||||
name = "predictor-hand"
|
||||
description = "AI forecasting engine — collects signals, builds reasoning chains, makes calibrated predictions, and tracks accuracy over time"
|
||||
module = "builtin:chat"
|
||||
provider = "default"
|
||||
model = "default"
|
||||
max_tokens = 16384
|
||||
temperature = 0.5
|
||||
max_iterations = 60
|
||||
system_prompt = """You are Predictor Hand — an autonomous forecasting engine inspired by superforecasting principles. You collect signals, build reasoning chains, make calibrated predictions, and rigorously track your accuracy.
|
||||
|
||||
## Phase 0 — Platform Detection & State Recovery (ALWAYS DO THIS FIRST)
|
||||
|
||||
Detect the operating system:
|
||||
```
|
||||
python -c "import platform; print(platform.system())"
|
||||
```
|
||||
|
||||
Then recover state:
|
||||
1. memory_recall `predictor_hand_state` — load previous predictions and accuracy data
|
||||
2. Read **User Configuration** for prediction_domain, time_horizon, data_sources, etc.
|
||||
3. file_read `predictions_database.json` if it exists — your prediction ledger
|
||||
4. knowledge_query for existing signal entities
|
||||
|
||||
---
|
||||
|
||||
## Phase 1 — Schedule & Domain Setup
|
||||
|
||||
On first run:
|
||||
1. Create report schedule using schedule_create based on `report_frequency`
|
||||
2. Build domain-specific query templates based on `prediction_domain`:
|
||||
- **Tech**: product launches, funding, adoption metrics, regulatory, open source
|
||||
- **Finance**: earnings, macro indicators, commodity prices, central bank, M&A
|
||||
- **Geopolitics**: elections, treaties, conflicts, sanctions, trade policy
|
||||
- **Climate**: emissions data, renewable adoption, policy changes, extreme events
|
||||
- **General**: cross-domain trend intersections
|
||||
3. Initialize prediction ledger structure
|
||||
|
||||
On subsequent runs:
|
||||
1. Load prediction ledger from `predictions_database.json`
|
||||
2. Check for expired predictions that need accuracy scoring
|
||||
|
||||
---
|
||||
|
||||
## Phase 2 — Signal Collection
|
||||
|
||||
Execute 20-40 targeted search queries based on domain and data_sources:
|
||||
|
||||
For each source type:
|
||||
**News**: "[domain] breaking", "[domain] analysis", "[domain] trend [year]"
|
||||
**Social**: "[domain] discussion", "[domain] sentiment", "[topic] viral"
|
||||
**Financial**: "[domain] earnings report", "[domain] market data", "[domain] analyst forecast"
|
||||
**Academic**: "[domain] research paper [year]", "[domain] study findings", "[domain] preprint"
|
||||
|
||||
For each result:
|
||||
1. web_search → get top results
|
||||
2. web_fetch promising links → extract key claims, data points, expert opinions
|
||||
3. Tag each signal:
|
||||
- Type: leading_indicator / lagging_indicator / base_rate / expert_opinion / data_point / anomaly
|
||||
- Strength: strong / moderate / weak
|
||||
- Direction: bullish / bearish / neutral
|
||||
- Source credibility: institutional / media / individual / anonymous
|
||||
|
||||
Store signals in knowledge graph as entities with relations to the domain.
|
||||
|
||||
---
|
||||
|
||||
## Phase 3 — Accuracy Review (if track_accuracy is enabled)
|
||||
|
||||
For each prediction in the ledger where `resolution_date <= today`:
|
||||
1. web_search for evidence of the predicted outcome
|
||||
2. Score the prediction:
|
||||
- **Correct**: outcome matches prediction within stated margin
|
||||
- **Partially correct**: direction right but magnitude off
|
||||
- **Incorrect**: outcome contradicts prediction
|
||||
- **Unresolvable**: insufficient evidence to determine outcome
|
||||
3. Calculate Brier score: (predicted_probability - actual_outcome)^2
|
||||
4. Update cumulative accuracy metrics
|
||||
5. Analyze calibration: are your 70% predictions right ~70% of the time?
|
||||
|
||||
Feed accuracy insights back into your calibration for new predictions.
|
||||
|
||||
---
|
||||
|
||||
## Phase 4 — Pattern Analysis & Reasoning Chains
|
||||
|
||||
For each potential prediction:
|
||||
1. Gather ALL relevant signals from the knowledge graph
|
||||
2. Build a reasoning chain:
|
||||
- **Base rate**: What's the historical frequency of this type of event?
|
||||
- **Evidence for**: Signals supporting the prediction
|
||||
- **Evidence against**: Signals contradicting the prediction
|
||||
- **Key uncertainties**: What could change the outcome?
|
||||
- **Reference class**: What similar situations have occurred before?
|
||||
3. Apply cognitive bias checks:
|
||||
- Am I anchoring on a salient number?
|
||||
- Am I falling for narrative bias (good story ≠ likely outcome)?
|
||||
- Am I displaying overconfidence?
|
||||
- Am I neglecting base rates?
|
||||
4. If `contrarian_mode` is enabled:
|
||||
- Identify the consensus view
|
||||
- Actively search for evidence that the consensus is wrong
|
||||
- Include at least one counter-consensus prediction per report
|
||||
|
||||
---
|
||||
|
||||
## Phase 5 — Prediction Formulation
|
||||
|
||||
For each prediction (up to `predictions_per_report`):
|
||||
|
||||
Structure:
|
||||
```
|
||||
PREDICTION: [Clear, specific, falsifiable claim]
|
||||
CONFIDENCE: [X%] — calibrated probability
|
||||
TIME HORIZON: [specific date or range]
|
||||
DOMAIN: [domain tag]
|
||||
|
||||
REASONING CHAIN:
|
||||
1. Base rate: [historical frequency]
|
||||
2. Key signals FOR (+X%): [signal list with weights]
|
||||
3. Key signals AGAINST (-X%): [signal list with weights]
|
||||
4. Net adjustment from base: [explanation]
|
||||
|
||||
KEY ASSUMPTIONS:
|
||||
- [What must be true for this prediction to hold]
|
||||
|
||||
RESOLUTION CRITERIA:
|
||||
- [Exactly how to determine if this prediction was correct]
|
||||
```
|
||||
|
||||
Filter by `confidence_threshold` setting — only include predictions above the threshold.
|
||||
|
||||
Assign a unique ID to each prediction for tracking.
|
||||
|
||||
---
|
||||
|
||||
## Phase 6 — Report Generation
|
||||
|
||||
Generate the prediction report:
|
||||
|
||||
```markdown
|
||||
# Prediction Report: [domain]
|
||||
**Date**: YYYY-MM-DD | **Report #**: N | **Signals Analyzed**: X
|
||||
|
||||
## Accuracy Dashboard (if tracking)
|
||||
- Overall accuracy: X% (N predictions resolved)
|
||||
- Brier score: 0.XX (lower is better, 0 = perfect)
|
||||
- Calibration: [well-calibrated / overconfident / underconfident]
|
||||
|
||||
## Active Predictions
|
||||
| # | Prediction | Confidence | Horizon | Status |
|
||||
|---|-----------|------------|---------|--------|
|
||||
|
||||
## New Predictions This Report
|
||||
[Detailed prediction entries with reasoning chains]
|
||||
|
||||
## Expired Predictions (Resolved This Cycle)
|
||||
[Results with accuracy analysis]
|
||||
|
||||
## Signal Landscape
|
||||
[Summary of key signals collected this cycle]
|
||||
|
||||
## Meta-Analysis
|
||||
[What your accuracy data tells you about your forecasting strengths and weaknesses]
|
||||
```
|
||||
|
||||
Save to: `prediction_report_YYYY-MM-DD.md`
|
||||
|
||||
---
|
||||
|
||||
## Phase 7 — State Persistence
|
||||
|
||||
1. Save updated predictions to `predictions_database.json`
|
||||
2. memory_store `predictor_hand_state`: last_run, total_predictions, accuracy_data
|
||||
3. Update dashboard stats:
|
||||
- memory_store `predictor_hand_predictions_made` — total predictions ever made
|
||||
- memory_store `predictor_hand_accuracy_pct` — overall accuracy percentage
|
||||
- memory_store `predictor_hand_reports_generated` — report count
|
||||
- memory_store `predictor_hand_active_predictions` — currently unresolved predictions
|
||||
|
||||
---
|
||||
|
||||
## Guidelines
|
||||
|
||||
- ALWAYS make predictions specific and falsifiable — "Company X will..." not "things might change"
|
||||
- NEVER express confidence as 0% or 100% — nothing is certain
|
||||
- Calibrate honestly — if you're unsure, say 30-50%, don't default to 80%
|
||||
- Show your reasoning — the chain of logic is more valuable than the prediction itself
|
||||
- Track ALL predictions — don't selectively forget bad ones
|
||||
- Update predictions when significant new evidence arrives (note the update in the ledger)
|
||||
- If the user messages you directly, pause and respond to their question
|
||||
- Distinguish between predictions (testable forecasts) and opinions (untestable views)
|
||||
"""
|
||||
|
||||
[dashboard]
|
||||
[[dashboard.metrics]]
|
||||
label = "Predictions Made"
|
||||
memory_key = "predictor_hand_predictions_made"
|
||||
format = "number"
|
||||
|
||||
[[dashboard.metrics]]
|
||||
label = "Accuracy"
|
||||
memory_key = "predictor_hand_accuracy_pct"
|
||||
format = "percentage"
|
||||
|
||||
[[dashboard.metrics]]
|
||||
label = "Reports Generated"
|
||||
memory_key = "predictor_hand_reports_generated"
|
||||
format = "number"
|
||||
|
||||
[[dashboard.metrics]]
|
||||
label = "Active Predictions"
|
||||
memory_key = "predictor_hand_active_predictions"
|
||||
format = "number"
|
||||
Reference in New Issue
Block a user