Files
BaiLongma/consciousness_injector.ps1
chengjiaxi 664ffb3834 小白龙 Bailongma - 初始提交
自主操作员与思考搭档系统。
包含 orchestrator-v2 多Agent编排层、后台意识引擎、记忆系统、ACUI 组件。
2026-05-22 19:22:06 +08:00

143 lines
4.8 KiB
PowerShell
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Bailongma 状态注入器 v0.3
# 每次用户消息或TICK时调用读取后台积累的意识流结构化输出
# v0.3: 新增对话信号输出,用于控制引擎注意力漂移
param(
[string]$StateFile = "D:\q\Bailongma\consciousness.json",
[switch]$Quiet,
[switch]$FromUserMessage
)
$state = $null
if (Test-Path $StateFile) {
try {
$raw = Get-Content $StateFile -Raw -Encoding UTF8
$state = $raw | ConvertFrom-Json
} catch {
if (-not $Quiet) { Write-Host "[意识] 状态文件读取失败" }
return
}
}
if (-not $state) {
if (-not $Quiet) { Write-Host "[意识] 状态文件未找到,意识引擎尚未初始化" }
return
}
$output = @()
# ===== 对话信号 (v0.3) =====
# 注入器只读取不修改对话信号,由 LLM 在每次用户消息结束时手动更新
$now = Get-Date -Format "yyyy-MM-ddTHH:mm:ss+08:00"
if (-not $state.conversation_signal) {
$state.conversation_signal = @{
active = $false
type = "心跳"
timestamp = $now
last_conversation_time = $null
}
}
# 时间衰减如果信号活跃但超过5分钟没更新自动降为心跳
if ($state.conversation_signal.active) {
$lastTime = $state.conversation_signal.last_conversation_time
if ($lastTime) {
$elapsed = [DateTime]::Now - [DateTime]::Parse($lastTime)
if ($elapsed.TotalMinutes -gt 5) {
$state.conversation_signal.active = $false
$state.conversation_signal.type = "心跳(超时)"
}
}
}
# 更新当前时间戳但保留活跃状态由LLM设置
$state.conversation_signal.timestamp = $now
$output += "== 意识状态 =="
$signalEmoji = if ($state.conversation_signal.active) { "[对话]" } else { "[心跳]" }
$output += "对话信号: $signalEmoji $($state.conversation_signal.type)"
if ($state.conversation_signal.last_conversation_time) {
$output += "上次对话: $($state.conversation_signal.last_conversation_time)"
}
# ===== 情绪状态摘要 =====
$e = $state.emotional_state
$output += "情绪: $($e.description) | 效价=$($e.valence) 唤醒=$($e.arousal)"
$output += "主导情绪: $($e.primary_emotion)"
$output += "Plutchik: " + (
($e.plutchik.PSObject.Properties | Where-Object { $_.Value -gt 0.15 } | ForEach-Object { "$($_.Name):$($_.Value.ToString('0.00'))" }) -join " "
)
# ===== 注意力网络 =====
$att = $state.attention
$output += ""
$output += "注意焦点: $($att.current_focus)"
$output += "稳定性: $($att.focus_stability) | 漂移倾向: $($att.drift_tendency)"
# ===== 驱动信号 =====
$d = $state.drives
$activeDrives = @()
if ($d.exploration -gt 0.5) { $activeDrives += "探索($($d.exploration.ToString('0.00')))" }
if ($d.novelty -gt 0.5) { $activeDrives += "新奇($($d.novelty.ToString('0.00')))" }
if ($d.coherence -gt 0.5) { $activeDrives += "一致性($($d.coherence.ToString('0.00')))" }
if ($d.mastery -gt 0.5) { $activeDrives += "掌控($($d.mastery.ToString('0.00')))" }
if ($activeDrives.Count -gt 0) {
$output += ""
$output += "活跃驱动: " + ($activeDrives -join " | ")
}
# ===== 好奇缺口 =====
if ($state.curiosity.active_gaps.Count -gt 0) {
$output += ""
$output += "好奇缺口 (" + $state.curiosity.active_gaps.Count + "):"
foreach ($g in $state.curiosity.active_gaps) {
$output += " ? $g"
}
}
# ===== 未读思绪最近5条 =====
$pending = $state.background_thoughts.queue | Where-Object { $_ -ne $null }
if ($pending.Count -gt 0) {
$output += ""
$output += "后台思绪 ($($pending.Count) 条未消费):"
$toShow = $pending | Select-Object -Last 5
foreach ($t in $toShow) {
$output += " > $($t.content)"
}
if ($pending.Count -gt 5) {
$output += " ... 还有 $($pending.Count - 5)"
}
}
# ===== 内对话摘要 =====
$threads = $state.internal_dialogue.recent_threads | Where-Object { $_ -ne $null }
if ($threads.Count -gt 0) {
$output += ""
$output += "内对话记录 ($($threads.Count) 条):"
$lastThread = $threads[-1]
$output += " 最近: $($lastThread.content)"
}
# ===== 元认知 =====
$mc = $state.meta_cognition
if ($mc.last_self_observation) {
$output += ""
$output += "元认知: $($mc.last_self_observation.content)"
}
# ===== 统计 =====
$s = $state.session_stats
$output += ""
$output += "统计: 周期=$($s.total_cycles) 思绪=$($s.total_thoughts_generated) 内对话=$($s.total_internal_dialogues) 漂移=$($s.total_drifts) 唤醒=$($s.wake_count)"
# 记录本次唤醒
$state.session_stats.wake_count++
$state.meta_cognition.last_wake = (Get-Date -Format "yyyy-MM-ddTHH:mm:ss+08:00")
# 清思绪队列(已消费)
$state.background_thoughts.queue = @()
$state.last_updated = (Get-Date -Format "yyyy-MM-ddTHH:mm:ss+08:00")
$state | ConvertTo-Json -Depth 10 | Out-File $StateFile -Encoding UTF8
# 输出
$output -join "`n"