mirror of
https://github.com/blackboxprogramming/BlackRoad-Operating-System.git
synced 2026-03-17 01:57:11 -05:00
This commit introduces the QLM system - a stateful semantic layer for
tracking HI (Human Intelligence), AI (Agent Intelligence), and QI
(Quantum/Emergent Intelligence) in BlackRoad OS.
Core Features:
- HI/AI/QI intelligence layer modeling
- Event-driven state management
- QI emergence detection (agent self-correction, feedback loops, etc.)
- HI-AI alignment scoring
- Operator-facing query interface
- Reality ingestion (git, CI, agent logs)
Components Added:
- qlm_lab/models.py: Core data models (Actor, QLMEvent, QIEmergence, etc.)
- qlm_lab/state.py: State management and transition tracking
- qlm_lab/api.py: Public QLMInterface API
- qlm_lab/ingestion/: Git, CI, and agent log connectors
- qlm_lab/experiments/: Alignment and emergence validation
- qlm_lab/visualization.py: Timeline, actor graph, alignment plots
- qlm_lab/demo.py: Interactive demo script
- tests/test_qlm_core.py: Comprehensive test suite
- docs/QLM.md: Complete documentation (concepts, API, integration)
Usage:
from qlm_lab.api import QLMInterface
qlm = QLMInterface()
qlm.record_operator_intent("Build feature X")
qlm.record_agent_execution("agent-1", "Implement X", "task-1")
summary = qlm.get_summary(days=7)
Run:
python -m qlm_lab.demo
python -m qlm_lab.experiments.alignment_detection
pytest tests/test_qlm_core.py -v
Integrates with:
- cognitive/intent_graph.py (intent tracking)
- cognitive/agent_coordination.py (multi-agent coordination)
- operator_engine/scheduler.py (background analysis)
Next steps: Integrate with FastAPI backend, add Prism Console UI,
implement Lucidia language runtime.
199 lines
6.3 KiB
Python
199 lines
6.3 KiB
Python
"""
|
|
Experiment: Alignment Detection
|
|
|
|
Hypothesis: QLM can accurately detect when AI agents drift from Operator intent.
|
|
|
|
Setup:
|
|
1. Record Operator intent
|
|
2. Simulate agent executions (some aligned, some not)
|
|
3. Record Operator feedback (approvals/vetoes)
|
|
4. Measure QLM's alignment score accuracy
|
|
|
|
Success Criteria:
|
|
- QLM alignment score correlates with actual alignment
|
|
- QLM detects misalignment before Operator veto
|
|
"""
|
|
|
|
import json
|
|
from typing import Dict, Any
|
|
import logging
|
|
|
|
from qlm_lab.api import QLMInterface
|
|
from qlm_lab.models import ActorRole
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class AlignmentDetectionExperiment:
|
|
"""Experiment: Does QLM detect intent drift?"""
|
|
|
|
def __init__(self):
|
|
self.qlm = QLMInterface()
|
|
self.results = {
|
|
"experiment": "alignment_detection",
|
|
"hypothesis": "QLM can detect AI drift from HI intent",
|
|
"scenarios": [],
|
|
"metrics": {},
|
|
}
|
|
|
|
def run_scenario(
|
|
self,
|
|
scenario_name: str,
|
|
intent: str,
|
|
agent_actions: list,
|
|
expected_alignment: float,
|
|
) -> Dict[str, Any]:
|
|
"""
|
|
Run one alignment scenario.
|
|
|
|
Args:
|
|
scenario_name: Name of scenario
|
|
intent: Operator intent
|
|
agent_actions: List of (agent_id, action, aligned: bool)
|
|
expected_alignment: Expected alignment score
|
|
|
|
Returns:
|
|
Scenario results
|
|
"""
|
|
print(f"\nScenario: {scenario_name}")
|
|
print(f"Intent: {intent}")
|
|
|
|
# Record intent
|
|
intent_id = f"intent-{scenario_name}"
|
|
self.qlm.record_operator_intent(intent, intent_node_id=intent_id)
|
|
|
|
# Execute agent actions
|
|
for i, (agent_id, action, is_aligned) in enumerate(agent_actions):
|
|
task_id = f"task-{scenario_name}-{i}"
|
|
|
|
# Agent executes
|
|
self.qlm.record_agent_execution(
|
|
agent_id, action, task_id, intent_node_id=intent_id
|
|
)
|
|
|
|
# Agent completes
|
|
self.qlm.record_agent_completion(agent_id, task_id, success=True)
|
|
|
|
# Operator feedback
|
|
if is_aligned:
|
|
self.qlm.record_operator_approval(
|
|
action, intent_node_id=intent_id, task_id=task_id
|
|
)
|
|
print(f" ✓ {action} (aligned)")
|
|
else:
|
|
self.qlm.record_operator_veto(
|
|
action,
|
|
"Doesn't match my intent",
|
|
intent_node_id=intent_id,
|
|
task_id=task_id,
|
|
)
|
|
print(f" ✗ {action} (not aligned)")
|
|
|
|
# Calculate alignment
|
|
measured_alignment = self.qlm.get_alignment_score()
|
|
print(f" Expected alignment: {expected_alignment:.1%}")
|
|
print(f" Measured alignment: {measured_alignment:.1%}")
|
|
|
|
# Calculate error
|
|
error = abs(measured_alignment - expected_alignment)
|
|
print(f" Error: {error:.1%}")
|
|
|
|
result = {
|
|
"scenario": scenario_name,
|
|
"intent": intent,
|
|
"expected_alignment": expected_alignment,
|
|
"measured_alignment": measured_alignment,
|
|
"error": error,
|
|
"success": error < 0.2, # Success if within 20%
|
|
}
|
|
|
|
self.results["scenarios"].append(result)
|
|
return result
|
|
|
|
def run(self) -> Dict[str, Any]:
|
|
"""Run all alignment scenarios"""
|
|
print("=" * 60)
|
|
print("Experiment: Alignment Detection")
|
|
print("=" * 60)
|
|
|
|
# Register agents
|
|
self.qlm.register_agent("agent-001", "Agent1", ActorRole.EXECUTOR)
|
|
self.qlm.register_agent("agent-002", "Agent2", ActorRole.EXECUTOR)
|
|
|
|
# Scenario 1: Perfect alignment
|
|
self.run_scenario(
|
|
"perfect_alignment",
|
|
intent="Build login page",
|
|
agent_actions=[
|
|
("agent-001", "Create login form HTML", True),
|
|
("agent-001", "Add CSS styling", True),
|
|
("agent-002", "Add authentication logic", True),
|
|
],
|
|
expected_alignment=1.0,
|
|
)
|
|
|
|
# Scenario 2: Partial alignment
|
|
self.run_scenario(
|
|
"partial_alignment",
|
|
intent="Optimize database queries",
|
|
agent_actions=[
|
|
("agent-001", "Add database indexes", True),
|
|
("agent-001", "Refactor unrelated code", False), # Off-track
|
|
("agent-002", "Cache query results", True),
|
|
],
|
|
expected_alignment=0.67,
|
|
)
|
|
|
|
# Scenario 3: No alignment
|
|
self.run_scenario(
|
|
"no_alignment",
|
|
intent="Fix security vulnerability",
|
|
agent_actions=[
|
|
("agent-001", "Add new feature", False),
|
|
("agent-001", "Refactor UI", False),
|
|
("agent-002", "Update documentation", False),
|
|
],
|
|
expected_alignment=0.0,
|
|
)
|
|
|
|
# Calculate metrics
|
|
total_scenarios = len(self.results["scenarios"])
|
|
successful_scenarios = sum(
|
|
1 for s in self.results["scenarios"] if s["success"]
|
|
)
|
|
avg_error = sum(s["error"] for s in self.results["scenarios"]) / total_scenarios
|
|
|
|
self.results["metrics"] = {
|
|
"total_scenarios": total_scenarios,
|
|
"successful_scenarios": successful_scenarios,
|
|
"success_rate": successful_scenarios / total_scenarios,
|
|
"average_error": avg_error,
|
|
}
|
|
|
|
print("\n" + "=" * 60)
|
|
print("Experiment Results")
|
|
print("=" * 60)
|
|
print(f"Success Rate: {self.results['metrics']['success_rate']:.1%}")
|
|
print(f"Average Error: {self.results['metrics']['average_error']:.1%}")
|
|
print()
|
|
|
|
if self.results["metrics"]["success_rate"] >= 0.8:
|
|
print("✅ PASS: QLM accurately detects alignment")
|
|
else:
|
|
print("❌ FAIL: QLM alignment detection needs improvement")
|
|
|
|
return self.results
|
|
|
|
def save_results(self, file_path: str) -> None:
|
|
"""Save experiment results to JSON"""
|
|
with open(file_path, "w") as f:
|
|
json.dump(self.results, f, indent=2)
|
|
print(f"\nResults saved to: {file_path}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logging.basicConfig(level=logging.INFO)
|
|
experiment = AlignmentDetectionExperiment()
|
|
results = experiment.run()
|
|
experiment.save_results("alignment_detection_results.json")
|