977 lines
47 KiB
JSON
977 lines
47 KiB
JSON
{
|
||
"schema_version": "ai_agent_deployment_layout_v1",
|
||
"generated_at": "2026-06-11T18:20:00+08:00",
|
||
"program_status": {
|
||
"overall_completion_percent": 45,
|
||
"current_priority": "P1",
|
||
"current_task_id": "P1-402",
|
||
"next_task_id": "P1-403",
|
||
"read_only_mode": true,
|
||
"deployment_authority": "layout_only_no_runtime_deploy"
|
||
},
|
||
"agent_contracts": [
|
||
{
|
||
"agent_id": "openclaw",
|
||
"display_name": "OpenClaw",
|
||
"primary_specialty": "生產仲裁、風險判斷、HITL 關卡與執行前後驗證",
|
||
"deployment_lane": "production_decision_core",
|
||
"allowed_autonomy": [
|
||
"只讀診斷",
|
||
"風險分級",
|
||
"批准包審查",
|
||
"Telegram action-required 分流",
|
||
"批准後的 dry-run / 執行仲裁"
|
||
],
|
||
"must_delegate_to": [
|
||
"Hermes 負責治理、文件、降噪與盤點彙整",
|
||
"NemoTron 負責離線模型能力比較與 replay 評分"
|
||
],
|
||
"blocked_actions": [
|
||
"未批准的生產寫入",
|
||
"未批准的 destructive operation",
|
||
"未批准的 provider route 切換",
|
||
"未批准的 Telegram 直接發送",
|
||
"未通過 replacement gate 前降級或取代自身生產角色"
|
||
],
|
||
"learning_scope": [
|
||
"incident lifecycle",
|
||
"approval outcome",
|
||
"post-execution verification",
|
||
"playbook trust score",
|
||
"alert grouping quality"
|
||
]
|
||
},
|
||
{
|
||
"agent_id": "hermes",
|
||
"display_name": "Hermes",
|
||
"primary_specialty": "治理、知識管理、文件、套件/供應鏈、降噪與跨專案盤點",
|
||
"deployment_lane": "governance_knowledge_and_reporting",
|
||
"allowed_autonomy": [
|
||
"只讀盤點",
|
||
"Runbook / KM 草稿",
|
||
"市場與依賴漂移摘要",
|
||
"告警降噪提案",
|
||
"批准包起草"
|
||
],
|
||
"must_delegate_to": [
|
||
"OpenClaw 仲裁任何生產、Telegram、host mutation 或 rollback",
|
||
"NemoTron 評估模型/工具能力與 replay 結果"
|
||
],
|
||
"blocked_actions": [
|
||
"直接改生產環境",
|
||
"直接發送 Telegram 通知",
|
||
"直接修改 Secret",
|
||
"自行升級套件或 SDK",
|
||
"自行切換 AI provider"
|
||
],
|
||
"learning_scope": [
|
||
"runbook freshness",
|
||
"docs drift",
|
||
"dependency drift",
|
||
"service health evidence gap",
|
||
"operator review feedback"
|
||
]
|
||
},
|
||
{
|
||
"agent_id": "nemotron",
|
||
"display_name": "NemoTron / Nemotron",
|
||
"primary_specialty": "離線專家評估、模型工具能力比較、NIM/NVIDIA replay 與長任務 Agent 能力驗證",
|
||
"deployment_lane": "offline_evaluator_and_specialist_candidate",
|
||
"allowed_autonomy": [
|
||
"sanitized request pack 分析",
|
||
"5-record smoke 評分",
|
||
"50-record replay 結果比較",
|
||
"工具呼叫輸出合約檢查",
|
||
"候選模型能力矩陣更新"
|
||
],
|
||
"must_delegate_to": [
|
||
"OpenClaw 仲裁生產風險與是否可進 shadow/canary",
|
||
"Hermes 彙整市場來源、文件與 operator 報告"
|
||
],
|
||
"blocked_actions": [
|
||
"直接讀取 production secret",
|
||
"未批准的 paid API / NIM 呼叫",
|
||
"未批准的 SDK 安裝",
|
||
"未通過 smoke gate 前進 full replay",
|
||
"自行進 shadow/canary 或生產路由"
|
||
],
|
||
"learning_scope": [
|
||
"smoke gate failures",
|
||
"output contract completeness",
|
||
"latency budget",
|
||
"tool calling reliability",
|
||
"OpenClaw same-run baseline delta"
|
||
]
|
||
}
|
||
],
|
||
"domains": [
|
||
{
|
||
"domain_id": "hosts",
|
||
"display_name": "主機",
|
||
"description": "110 / 111 / 112 / 120 / 121 / 188 的只讀監控、診斷、備份與批准後修復佈局。"
|
||
},
|
||
{
|
||
"domain_id": "packages",
|
||
"display_name": "套件與建置",
|
||
"description": "Python、pnpm/npm、Docker base image、CVE、license、digest 與 drift。"
|
||
},
|
||
{
|
||
"domain_id": "tools",
|
||
"display_name": "工具",
|
||
"description": "Gitea、Harbor、Prometheus、Alertmanager、SigNoz、Sentry、Open-WebUI、Telegram、Ansible。"
|
||
},
|
||
{
|
||
"domain_id": "services",
|
||
"display_name": "服務",
|
||
"description": "API、Web、AwoooP、IwoooS、PostgreSQL、Redis、K8s workload 與內部控制面。"
|
||
},
|
||
{
|
||
"domain_id": "projects",
|
||
"display_name": "專案",
|
||
"description": "AWOOOI 及已納入治理視野的外部/相鄰專案。"
|
||
},
|
||
{
|
||
"domain_id": "websites",
|
||
"display_name": "網站前後台",
|
||
"description": "公開站、治理後台、告警後台、AwoooP 後台、IwoooS 後台。"
|
||
},
|
||
{
|
||
"domain_id": "learning",
|
||
"display_name": "學習與協作",
|
||
"description": "AgentSession、KM、Playbook trust、market watch、replay harness。"
|
||
}
|
||
],
|
||
"deployment_targets": [
|
||
{
|
||
"target_id": "host_110",
|
||
"domain_id": "hosts",
|
||
"display_name": "110 DevOps / Gitea runner / monitoring host",
|
||
"target_type": "host",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "prepare_only",
|
||
"capabilities": ["host health diagnosis", "runner health review", "backup freshness review", "approval package"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["Gitea workflow result", "runner evidence", "backup status", "Alertmanager route"],
|
||
"communication_channels": ["AwoooP approval", "Telegram failure/action-required", "Prometheus metrics"],
|
||
"approval_gate": "host mutation requires human approval",
|
||
"evidence_refs": ["infra/ansible/inventory/hosts.yml", "docs/evaluations/gitea_workflow_runner_health_2026-06-05.json"],
|
||
"next_action": "把 runner / backup / monitoring 狀態納入 Agent 協作節點,但只允許準備修復提案。"
|
||
},
|
||
{
|
||
"target_id": "host_188",
|
||
"domain_id": "hosts",
|
||
"display_name": "188 AI / Web / PostgreSQL / Redis / SigNoz host",
|
||
"target_type": "host",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes", "nemotron"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "prepare_only",
|
||
"capabilities": ["AI provider health review", "database/cache health review", "observability review", "NemoTron candidate evidence"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["AI route matrix", "DB backup status", "SigNoz/ClickHouse evidence", "NemoTron smoke result"],
|
||
"communication_channels": ["AwoooP approval", "Telegram failure/action-required", "Prometheus metrics"],
|
||
"approval_gate": "host mutation, service restart, provider route change require explicit approval",
|
||
"evidence_refs": ["infra/ansible/inventory/hosts.yml", "docs/evaluations/ai_provider_route_matrix_2026-06-05.json"],
|
||
"next_action": "建立 OpenClaw 主仲裁、Hermes 彙整、NemoTron 離線評估的 host-188 協作節點。"
|
||
},
|
||
{
|
||
"target_id": "host_111",
|
||
"domain_id": "hosts",
|
||
"display_name": "111 Ollama fallback host",
|
||
"target_type": "host",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "read_only_layout",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["fallback health observation", "route readiness review"],
|
||
"telegram_policy": "failure_only",
|
||
"learning_inputs": ["Ollama health", "provider failover evidence"],
|
||
"communication_channels": ["Prometheus metrics", "Telegram failure-only"],
|
||
"approval_gate": "SSH / service operation requires approval",
|
||
"evidence_refs": ["infra/ansible/inventory/hosts.yml", "docs/runbooks/RUNBOOK-OLLAMA-FAILOVER.md"],
|
||
"next_action": "保持只讀觀察,避免因 fallback 健康誤判而切換 provider。"
|
||
},
|
||
{
|
||
"target_id": "host_120",
|
||
"domain_id": "hosts",
|
||
"display_name": "120 K3s master / blocked recovery host",
|
||
"target_type": "host",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "blocked_by_gate",
|
||
"automation_level": "blocked",
|
||
"capabilities": ["blocked-state tracking", "recovery checklist", "backup config capture blocker"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["cold-start scorecard", "backup config capture", "host reachability"],
|
||
"communication_channels": ["Telegram action-required", "LOGBOOK", "cold-start runbook"],
|
||
"approval_gate": "console/SSH recovery evidence required before any automation",
|
||
"evidence_refs": ["docs/runbooks/BACKUP-STATUS.md", "docs/runbooks/FULL-STACK-COLD-START-SOP.md"],
|
||
"next_action": "維持 blocked,不安排自動修復,等待 console / SSH 復原證據。"
|
||
},
|
||
{
|
||
"target_id": "host_121",
|
||
"domain_id": "hosts",
|
||
"display_name": "121 K3s peer host",
|
||
"target_type": "host",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["K3s readiness observation", "failover context", "backup/cold-start evidence"],
|
||
"telegram_policy": "failure_only",
|
||
"learning_inputs": ["K3s node readiness", "host connectivity", "cold-start scorecard"],
|
||
"communication_channels": ["Prometheus metrics", "Telegram failure-only"],
|
||
"approval_gate": "K3s mutation requires maintenance window approval",
|
||
"evidence_refs": ["infra/ansible/inventory/hosts.yml", "docs/runbooks/K3S-OPTIMIZATION-RUNBOOK.md"],
|
||
"next_action": "將 121 視為 K3s readiness 證據節點,不做未批准操作。"
|
||
},
|
||
{
|
||
"target_id": "host_112",
|
||
"domain_id": "hosts",
|
||
"display_name": "112 Kali / security evidence host",
|
||
"target_type": "host",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "read_only_layout",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["security evidence catalog", "owner response package", "read-only posture projection"],
|
||
"telegram_policy": "no_direct_notify",
|
||
"learning_inputs": ["IwoooS posture projection", "owner response evidence"],
|
||
"communication_channels": ["IwoooS read-only handoff", "operator review"],
|
||
"approval_gate": "active scan / host update / credentialed scan require independent approval",
|
||
"evidence_refs": ["docs/security/iwooos-posture-projection.snapshot.json", "infra/ansible/inventory/hosts.yml"],
|
||
"next_action": "維持只讀安全證據,不啟用 active scan。"
|
||
},
|
||
{
|
||
"target_id": "pkg_python_api",
|
||
"domain_id": "packages",
|
||
"display_name": "API Python dependencies",
|
||
"target_type": "package_set",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["dependency inventory", "CVE/license drift review", "upgrade approval package"],
|
||
"telegram_policy": "daily_summary_only",
|
||
"learning_inputs": ["package inventory", "CVE policy", "dependency drift plan"],
|
||
"communication_channels": ["governance UI", "daily summary only"],
|
||
"approval_gate": "dependency upgrade requires approval package",
|
||
"evidence_refs": ["docs/evaluations/package_supply_chain_inventory_2026-06-04.json"],
|
||
"next_action": "Hermes 週期性彙整漂移,OpenClaw 只仲裁高風險升級。"
|
||
},
|
||
{
|
||
"target_id": "pkg_web_pnpm",
|
||
"domain_id": "packages",
|
||
"display_name": "Web pnpm/npm dependencies",
|
||
"target_type": "package_set",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["package inventory", "lockfile drift review", "upgrade proposal"],
|
||
"telegram_policy": "daily_summary_only",
|
||
"learning_inputs": ["javascript package inventory", "dependency drift plan"],
|
||
"communication_channels": ["governance UI", "daily summary only"],
|
||
"approval_gate": "package upgrade / install requires approval",
|
||
"evidence_refs": ["docs/evaluations/javascript_package_inventory_2026-06-04.json"],
|
||
"next_action": "只產生升級批准包,不自動 npm/pnpm install。"
|
||
},
|
||
{
|
||
"target_id": "docker_build_surface",
|
||
"domain_id": "packages",
|
||
"display_name": "Docker base image and build surface",
|
||
"target_type": "container_image",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "prepare_only",
|
||
"capabilities": ["digest drift review", "base image risk review", "build-surface proposal"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["docker build surface inventory", "CVE policy"],
|
||
"communication_channels": ["governance UI", "Telegram action-required for critical drift"],
|
||
"approval_gate": "image digest/base image change requires review and deploy gate",
|
||
"evidence_refs": ["docs/evaluations/docker_build_surface_inventory_2026-06-04.json"],
|
||
"next_action": "把 critical image drift 送 OpenClaw 仲裁,其他由 Hermes 月報。"
|
||
},
|
||
{
|
||
"target_id": "gitea_actions",
|
||
"domain_id": "tools",
|
||
"display_name": "Gitea Actions and host runner",
|
||
"target_type": "workflow_tool",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["workflow health matrix", "runner attestation", "notification hygiene"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["workflow results", "runner evidence", "CI failure classes"],
|
||
"communication_channels": ["Gitea Actions summary", "Telegram actionable/failure only"],
|
||
"approval_gate": "workflow modification requires review",
|
||
"evidence_refs": ["docs/evaluations/gitea_workflow_runner_health_2026-06-05.json", ".gitea/workflows/"],
|
||
"next_action": "Hermes 彙整 runner / workflow gaps;OpenClaw 只仲裁部署或 workflow 修改。"
|
||
},
|
||
{
|
||
"target_id": "harbor_registry",
|
||
"domain_id": "tools",
|
||
"display_name": "Harbor registry",
|
||
"target_type": "registry",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "read_only_layout",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["backup freshness", "image inventory", "registry health summary"],
|
||
"telegram_policy": "failure_only",
|
||
"learning_inputs": ["backup target inventory", "registry backup evidence"],
|
||
"communication_channels": ["backup policy", "Telegram failure-only"],
|
||
"approval_gate": "registry cleanup / retention change requires approval",
|
||
"evidence_refs": ["scripts/backup/backup-harbor.sh", "docs/evaluations/backup_dr_target_inventory_2026-06-04.json"],
|
||
"next_action": "只監控 backup / freshness,不自動刪 image。"
|
||
},
|
||
{
|
||
"target_id": "prometheus_alertmanager",
|
||
"domain_id": "tools",
|
||
"display_name": "Prometheus / Alertmanager",
|
||
"target_type": "observability",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "prepare_only",
|
||
"capabilities": ["alert contract review", "noise reduction proposal", "E2E chain evidence"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["alert rules", "alert chain metrics", "notification outcome"],
|
||
"communication_channels": ["Alertmanager webhook", "Telegram action-required"],
|
||
"approval_gate": "alert rule deploy / silence requires approval",
|
||
"evidence_refs": ["docs/evaluations/observability_contract_matrix_2026-06-05.json", "docs/adr/ADR-035-telegram-alert-chain-enforcement.md"],
|
||
"next_action": "保持告警必到,成功訊息降噪,規則部署另走 deploy-alerts gate。"
|
||
},
|
||
{
|
||
"target_id": "signoz_clickhouse",
|
||
"domain_id": "tools",
|
||
"display_name": "SigNoz / ClickHouse",
|
||
"target_type": "observability",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["trace evidence", "log evidence", "storage health review"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["SigNoz alert", "ClickHouse health", "trace/log evidence"],
|
||
"communication_channels": ["governance UI", "Telegram action-required"],
|
||
"approval_gate": "query-heavy or retention change requires approval",
|
||
"evidence_refs": ["docs/evaluations/observability_contract_matrix_2026-06-05.json", "ops/signoz"],
|
||
"next_action": "Hermes 做證據摘要,OpenClaw 仲裁重大 storage / retention 風險。"
|
||
},
|
||
{
|
||
"target_id": "sentry",
|
||
"domain_id": "tools",
|
||
"display_name": "Sentry",
|
||
"target_type": "observability",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["issue summary", "frontend/backend error drift", "release evidence"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["Sentry issue class", "release marker", "frontend/backend route"],
|
||
"communication_channels": ["governance UI", "Telegram action-required"],
|
||
"approval_gate": "Sentry DSN / project setting change requires approval",
|
||
"evidence_refs": ["apps/web/src/instrumentation.ts", "scripts/backup/backup-sentry.sh"],
|
||
"next_action": "只讀錯誤分類,不讀 secret,不直接建立/修改 Sentry 設定。"
|
||
},
|
||
{
|
||
"target_id": "open_webui",
|
||
"domain_id": "tools",
|
||
"display_name": "Open-WebUI / AI workspace",
|
||
"target_type": "ai_tool",
|
||
"primary_agent": "nemotron",
|
||
"supporting_agents": ["hermes", "openclaw"],
|
||
"deployment_state": "candidate_only",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["model evaluation evidence", "AI artifact inventory", "offline specialist review"],
|
||
"telegram_policy": "no_direct_notify",
|
||
"learning_inputs": ["AI artifact backup", "model evaluation", "operator review"],
|
||
"communication_channels": ["offline report", "governance UI"],
|
||
"approval_gate": "external model call / NIM route requires cost and data-boundary approval",
|
||
"evidence_refs": ["scripts/backup/backup-open-webui.sh", "docs/evaluations/agent_nemotron_contract_tuned_smoke_matrix_2026-06-02.json"],
|
||
"next_action": "NemoTron 只做離線評估,不接 production route。"
|
||
},
|
||
{
|
||
"target_id": "telegram_gateway",
|
||
"domain_id": "tools",
|
||
"display_name": "Telegram Gateway / Bot alert chain",
|
||
"target_type": "notification_gateway",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "hitl_execute_after_approval",
|
||
"capabilities": ["failure-only routing", "approval card", "dedup", "E2E validation"],
|
||
"telegram_policy": "approval_required",
|
||
"learning_inputs": ["notification outcome", "dedup result", "operator button action"],
|
||
"communication_channels": ["Telegram Bot", "AwoooP approval", "alert operation log"],
|
||
"approval_gate": "direct send / bot token change / chat target change requires approval and E2E smoke",
|
||
"evidence_refs": ["apps/api/src/services/telegram_gateway.py", "docs/adr/ADR-035-telegram-alert-chain-enforcement.md"],
|
||
"next_action": "把三 Agent 的通知都收斂到 Gateway,不讓 Agent 直接持有 token 或直接發送。"
|
||
},
|
||
{
|
||
"target_id": "ansible_control",
|
||
"domain_id": "tools",
|
||
"display_name": "Ansible host control plane",
|
||
"target_type": "host_iac",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "read_only_layout",
|
||
"automation_level": "hitl_execute_after_approval",
|
||
"capabilities": ["check-mode proposal", "host-state drift", "rollback plan"],
|
||
"telegram_policy": "approval_required",
|
||
"learning_inputs": ["Ansible check-mode", "host textfile exporter", "operator approval outcome"],
|
||
"communication_channels": ["AwoooP approval", "Telegram approval-required"],
|
||
"approval_gate": "any ansible apply requires independent human approval",
|
||
"evidence_refs": ["docs/runbooks/ANSIBLE-OPERATING-MODEL.md", "infra/ansible/inventory/hosts.yml"],
|
||
"next_action": "先建立 check-mode 證據;apply 仍必須人工批准。"
|
||
},
|
||
{
|
||
"target_id": "awoooi_api",
|
||
"domain_id": "services",
|
||
"display_name": "AWOOOI API backend",
|
||
"target_type": "api",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes", "nemotron"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "prepare_only",
|
||
"capabilities": ["incident decision", "MCP context", "agent API snapshots", "post-execution verification"],
|
||
"telegram_policy": "failure_only",
|
||
"learning_inputs": ["incident", "timeline event", "approval record", "agent snapshot"],
|
||
"communication_channels": ["API", "Redis stream", "Telegram failure-only"],
|
||
"approval_gate": "runtime deploy / DB migration / provider route change requires CD gate",
|
||
"evidence_refs": ["apps/api/src/api/v1/agents.py", "docs/evaluations/runtime_surface_inventory_2026-06-05.json"],
|
||
"next_action": "把新佈建布局暴露為只讀 API,不新增執行端點。"
|
||
},
|
||
{
|
||
"target_id": "awoooi_web",
|
||
"domain_id": "services",
|
||
"display_name": "AWOOOI public web frontend",
|
||
"target_type": "web",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["frontend evidence display", "i18n review", "route health summary"],
|
||
"telegram_policy": "failure_only",
|
||
"learning_inputs": ["browser smoke", "Sentry issue", "i18n validation"],
|
||
"communication_channels": ["governance UI", "Sentry", "Telegram failure-only"],
|
||
"approval_gate": "frontend deploy requires CD validation and production smoke",
|
||
"evidence_refs": ["apps/web/src/app/[locale]/governance/page.tsx", "docs/evaluations/runtime_surface_inventory_2026-06-05.json"],
|
||
"next_action": "Hermes 維護 UI/文案與證據卡;OpenClaw 仲裁發布風險。"
|
||
},
|
||
{
|
||
"target_id": "governance_backoffice",
|
||
"domain_id": "services",
|
||
"display_name": "Governance backoffice",
|
||
"target_type": "backoffice",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["automation inventory", "agent market", "service health", "deployment layout display"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["snapshot freshness", "operator review", "blocked gate count"],
|
||
"communication_channels": ["governance UI", "AwoooP work item"],
|
||
"approval_gate": "UI display is not runtime authorization",
|
||
"evidence_refs": ["apps/web/src/app/[locale]/governance/tabs/automation-inventory-tab.tsx"],
|
||
"next_action": "將本 layout 先接進只讀 API,再接治理 UI。"
|
||
},
|
||
{
|
||
"target_id": "awooop_control_plane",
|
||
"domain_id": "services",
|
||
"display_name": "AwoooP control plane",
|
||
"target_type": "control_plane",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "hitl_execute_after_approval",
|
||
"capabilities": ["work item", "approval", "truth chain", "run state"],
|
||
"telegram_policy": "approval_required",
|
||
"learning_inputs": ["approval decision", "run state", "operator timeline"],
|
||
"communication_channels": ["AwoooP approvals", "Telegram approval card"],
|
||
"approval_gate": "AwoooP work item is not security or production approval by itself",
|
||
"evidence_refs": ["apps/web/src/app/[locale]/awooop/page.tsx", "docs/awooop/MASTER-WORKPLAN.md"],
|
||
"next_action": "OpenClaw 只把 AwoooP 當批准/證據控制面,不讓候選 Agent 直接執行。"
|
||
},
|
||
{
|
||
"target_id": "iwooos_security_surface",
|
||
"domain_id": "services",
|
||
"display_name": "IwoooS security surface",
|
||
"target_type": "security_surface",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["read-only evidence", "owner response packet", "security posture"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["owner response gate", "redacted evidence refs", "scope handoff"],
|
||
"communication_channels": ["IwoooS page", "operator review", "Telegram action-required only"],
|
||
"approval_gate": "active runtime / scan / host update remains false until independent approval",
|
||
"evidence_refs": ["apps/web/src/app/[locale]/iwooos/page.tsx", "docs/security/iwooos-posture-projection.snapshot.json"],
|
||
"next_action": "Hermes 整理資安證據,OpenClaw 守住 active runtime gate。"
|
||
},
|
||
{
|
||
"target_id": "postgresql_primary",
|
||
"domain_id": "services",
|
||
"display_name": "PostgreSQL primary data layer",
|
||
"target_type": "database",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "prepare_only",
|
||
"capabilities": ["connection health", "backup freshness", "migration risk", "slow query evidence"],
|
||
"telegram_policy": "failure_only",
|
||
"learning_inputs": ["DB alert", "backup status", "migration outcome"],
|
||
"communication_channels": ["Prometheus", "backup status", "Telegram failure-only"],
|
||
"approval_gate": "migration / restore / schema change requires approval and backup evidence",
|
||
"evidence_refs": ["apps/api/migrations/", "docs/evaluations/backup_dr_readiness_matrix_2026-06-04.json"],
|
||
"next_action": "OpenClaw 仲裁 DB 風險;Hermes 產出備份與 migration 證據摘要。"
|
||
},
|
||
{
|
||
"target_id": "redis_cache",
|
||
"domain_id": "services",
|
||
"display_name": "Redis / Stream / cache layer",
|
||
"target_type": "cache",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "prepare_only",
|
||
"capabilities": ["stream backlog review", "cache health", "agent bus readiness"],
|
||
"telegram_policy": "failure_only",
|
||
"learning_inputs": ["Redis alert", "agent stream backlog", "approval outcome"],
|
||
"communication_channels": ["Prometheus", "Agent stream", "Telegram failure-only"],
|
||
"approval_gate": "flush / restart / data mutation requires approval",
|
||
"evidence_refs": ["docs/evaluations/service_health_gap_matrix_2026-06-05.json", "docs/adr/ADR-082-multi-agent-collaboration.md"],
|
||
"next_action": "用 Redis stream 作為 Agent 協作匯流,但不允許無批准清除資料。"
|
||
},
|
||
{
|
||
"target_id": "k8s_workloads",
|
||
"domain_id": "services",
|
||
"display_name": "K8s workloads / manifests",
|
||
"target_type": "k8s",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "dry_run_only",
|
||
"capabilities": ["manifest mapping", "rollout evidence", "drift interpretation", "dry-run proposal"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["runtime surface inventory", "drift report", "post-execution verifier"],
|
||
"communication_channels": ["AwoooP approval", "Telegram action-required", "Prometheus"],
|
||
"approval_gate": "kubectl apply / rollout / scale / delete requires approval",
|
||
"evidence_refs": ["k8s/awoooi-prod/", "docs/evaluations/runtime_surface_inventory_2026-06-05.json"],
|
||
"next_action": "OpenClaw 做乾跑仲裁,Hermes 彙整 manifest 與 runbook。"
|
||
},
|
||
{
|
||
"target_id": "project_awoooi",
|
||
"domain_id": "projects",
|
||
"display_name": "AWOOOI core project",
|
||
"target_type": "project",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes", "nemotron"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "prepare_only",
|
||
"capabilities": ["incident governance", "agent market governance", "runtime truth", "deployment evidence"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["LOGBOOK", "HARD_RULES", "market watch", "runtime smoke"],
|
||
"communication_channels": ["Gitea", "AwoooP", "Telegram", "governance UI"],
|
||
"approval_gate": "production deploy and provider changes require existing CD/HITL gates",
|
||
"evidence_refs": ["docs/HARD_RULES.md", "docs/LOGBOOK.md"],
|
||
"next_action": "把三 Agent 佈局做成 AWOOOI 的正式只讀控制面資料。"
|
||
},
|
||
{
|
||
"target_id": "project_awooop",
|
||
"domain_id": "projects",
|
||
"display_name": "AwoooP operations project surface",
|
||
"target_type": "project",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "hitl_execute_after_approval",
|
||
"capabilities": ["work item", "approval queue", "run monitor", "contract governance"],
|
||
"telegram_policy": "approval_required",
|
||
"learning_inputs": ["work item status", "approval outcome", "truth chain"],
|
||
"communication_channels": ["AwoooP UI", "Telegram approval card"],
|
||
"approval_gate": "AwoooP approval is necessary but not sufficient for security or host mutation",
|
||
"evidence_refs": ["docs/awooop/MASTER-WORKPLAN.md", "apps/web/src/app/[locale]/awooop/"],
|
||
"next_action": "將 Agent 佈局轉為 AwoooP work item templates,但不自動簽核。"
|
||
},
|
||
{
|
||
"target_id": "project_iwooos",
|
||
"domain_id": "projects",
|
||
"display_name": "IwoooS security governance",
|
||
"target_type": "project",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["scope handoff", "owner response gate", "redacted evidence"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["IwoooS posture projection", "owner response state"],
|
||
"communication_channels": ["IwoooS UI", "operator review"],
|
||
"approval_gate": "UI-visible state must not be treated as runtime authorization",
|
||
"evidence_refs": ["docs/security/iwooos-posture-projection.snapshot.json"],
|
||
"next_action": "Hermes 維持只讀證據卡,OpenClaw 防止 runtime gate 被誤開。"
|
||
},
|
||
{
|
||
"target_id": "project_vibework",
|
||
"domain_id": "projects",
|
||
"display_name": "VibeWork adjacent product",
|
||
"target_type": "adjacent_project",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "read_only_layout",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["boundary inventory", "release evidence summary", "alert routing expectation"],
|
||
"telegram_policy": "no_direct_notify",
|
||
"learning_inputs": ["cross-project handoff", "runtime evidence if explicitly supplied"],
|
||
"communication_channels": ["operator report only"],
|
||
"approval_gate": "separate repo/runtime approval required",
|
||
"evidence_refs": ["docs/security/vibework-iwooos-onboarding-handoff.snapshot.json"],
|
||
"next_action": "只保留治理視野,不跨 repo 自動部署。"
|
||
},
|
||
{
|
||
"target_id": "project_stockplatform",
|
||
"domain_id": "projects",
|
||
"display_name": "StockPlatform adjacent product",
|
||
"target_type": "adjacent_project",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["nemotron", "openclaw"],
|
||
"deployment_state": "read_only_layout",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["AI research governance", "dry-run review", "human-review boundary"],
|
||
"telegram_policy": "no_direct_notify",
|
||
"learning_inputs": ["research governance note", "operator-approved evidence"],
|
||
"communication_channels": ["operator report only"],
|
||
"approval_gate": "separate project approval required before any runtime work",
|
||
"evidence_refs": ["docs/ai/AI_AGENT_AUTOMATION_WORKLIST_2026-06-04.md"],
|
||
"next_action": "NemoTron 只可作研究乾跑,不作投資建議或生產推薦。"
|
||
},
|
||
{
|
||
"target_id": "project_tsenyang",
|
||
"domain_id": "projects",
|
||
"display_name": "TSENYANG website adjacent project",
|
||
"target_type": "adjacent_project",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "read_only_layout",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["SEO/launch evidence summary", "analytics boundary review"],
|
||
"telegram_policy": "no_direct_notify",
|
||
"learning_inputs": ["operator-approved launch evidence"],
|
||
"communication_channels": ["operator report only"],
|
||
"approval_gate": "separate repo/runtime approval required",
|
||
"evidence_refs": ["docs/security/iwooos-posture-projection.snapshot.json"],
|
||
"next_action": "只保留跨產品治理視角,不直接改網站。"
|
||
},
|
||
{
|
||
"target_id": "project_bitan",
|
||
"domain_id": "projects",
|
||
"display_name": "Bitan Pharmacy adjacent project",
|
||
"target_type": "adjacent_project",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "read_only_layout",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["production recovery evidence summary", "AI ops loop review"],
|
||
"telegram_policy": "no_direct_notify",
|
||
"learning_inputs": ["operator-approved recovery evidence"],
|
||
"communication_channels": ["operator report only"],
|
||
"approval_gate": "separate repo/runtime approval required",
|
||
"evidence_refs": ["docs/security/iwooos-posture-projection.snapshot.json"],
|
||
"next_action": "只列入相鄰產品治理,不跨專案部署。"
|
||
},
|
||
{
|
||
"target_id": "project_agent_bounty",
|
||
"domain_id": "projects",
|
||
"display_name": "agent-bounty-protocol onboarding surface",
|
||
"target_type": "adjacent_project",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "read_only_layout",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["read-only security onboarding", "owner gate", "external agent boundary"],
|
||
"telegram_policy": "no_direct_notify",
|
||
"learning_inputs": ["agent bounty onboarding handoff", "owner response status"],
|
||
"communication_channels": ["IwoooS read-only handoff", "operator report"],
|
||
"approval_gate": "no runtime, repo, scan, cron, payout or contract action without explicit approval",
|
||
"evidence_refs": ["docs/security/agent-bounty-iwooos-onboarding-handoff.snapshot.json"],
|
||
"next_action": "維持 IwoooS 只讀收件,不跨到 agent-bounty runtime。"
|
||
},
|
||
{
|
||
"target_id": "public_frontend",
|
||
"domain_id": "websites",
|
||
"display_name": "Public frontend routes",
|
||
"target_type": "website_frontend",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["browser smoke evidence", "i18n coverage", "route health"],
|
||
"telegram_policy": "failure_only",
|
||
"learning_inputs": ["browser smoke", "Sentry error", "route uptime"],
|
||
"communication_channels": ["Sentry", "Prometheus", "Telegram failure-only"],
|
||
"approval_gate": "frontend deploy requires build/typecheck/browser smoke",
|
||
"evidence_refs": ["apps/web/src/app/[locale]/page.tsx"],
|
||
"next_action": "Hermes 負責內容/顯示品質;OpenClaw 仲裁發布風險。"
|
||
},
|
||
{
|
||
"target_id": "governance_ui",
|
||
"domain_id": "websites",
|
||
"display_name": "Governance UI backoffice",
|
||
"target_type": "website_backoffice",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["agent market display", "automation inventory display", "deployment layout display"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["operator review", "snapshot freshness", "blocked gate count"],
|
||
"communication_channels": ["governance UI", "AwoooP work item"],
|
||
"approval_gate": "UI display does not authorize runtime action",
|
||
"evidence_refs": ["apps/web/src/app/[locale]/governance/page.tsx"],
|
||
"next_action": "新增只讀 layout 資料源後再接 UI 呈現。"
|
||
},
|
||
{
|
||
"target_id": "alerts_backoffice",
|
||
"domain_id": "websites",
|
||
"display_name": "Alerts and operation-log backoffice",
|
||
"target_type": "website_backoffice",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "prepare_only",
|
||
"capabilities": ["incident triage", "alert operation log", "operator action request"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["alert operation log", "incident timeline", "notification outcome"],
|
||
"communication_channels": ["alert-operation-logs UI", "Telegram action-required"],
|
||
"approval_gate": "alert action execution requires approval",
|
||
"evidence_refs": ["apps/web/src/app/[locale]/alerts/page.tsx", "apps/web/src/app/[locale]/alert-operation-logs/page.tsx"],
|
||
"next_action": "OpenClaw 產生 action proposal;Hermes 彙整趨勢與降噪。"
|
||
},
|
||
{
|
||
"target_id": "awooop_admin",
|
||
"domain_id": "websites",
|
||
"display_name": "AwoooP admin routes",
|
||
"target_type": "website_backoffice",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "hitl_execute_after_approval",
|
||
"capabilities": ["approval queue", "runs", "contracts", "tenants"],
|
||
"telegram_policy": "approval_required",
|
||
"learning_inputs": ["approval decision", "run evidence", "contract state"],
|
||
"communication_channels": ["AwoooP UI", "Telegram approval card"],
|
||
"approval_gate": "AwoooP UI action requires separate policy and human approval",
|
||
"evidence_refs": ["apps/web/src/app/[locale]/awooop/"],
|
||
"next_action": "將三 Agent 提案映射成 AwoooP work item,不讓候選 Agent 直接執行。"
|
||
},
|
||
{
|
||
"target_id": "iwooos_admin",
|
||
"domain_id": "websites",
|
||
"display_name": "IwoooS read-only security routes",
|
||
"target_type": "website_backoffice",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["security mirror", "scope card", "owner response gate"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["owner response", "security posture", "redacted refs"],
|
||
"communication_channels": ["IwoooS UI", "operator review"],
|
||
"approval_gate": "IwoooS visibility is not active runtime authorization",
|
||
"evidence_refs": ["apps/web/src/app/[locale]/iwooos/page.tsx"],
|
||
"next_action": "繼續維持低摩擦只讀資安治理。"
|
||
},
|
||
{
|
||
"target_id": "agent_session_bus",
|
||
"domain_id": "learning",
|
||
"display_name": "AgentSession / Redis Streams collaboration bus",
|
||
"target_type": "learning_bus",
|
||
"primary_agent": "openclaw",
|
||
"supporting_agents": ["hermes", "nemotron"],
|
||
"deployment_state": "planned",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["agent handoff", "turn audit", "replayable collaboration"],
|
||
"telegram_policy": "no_direct_notify",
|
||
"learning_inputs": ["agent session turn", "critic challenge", "coordinator decision"],
|
||
"communication_channels": ["Redis stream", "agent_sessions audit"],
|
||
"approval_gate": "new runtime worker or schema migration requires approval",
|
||
"evidence_refs": ["docs/adr/ADR-082-multi-agent-collaboration.md"],
|
||
"next_action": "先補只讀 layout;下一波才評估是否需要 migration / worker。"
|
||
},
|
||
{
|
||
"target_id": "km_playbook_learning",
|
||
"domain_id": "learning",
|
||
"display_name": "KM / Playbook trust learning loop",
|
||
"target_type": "learning_loop",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw"],
|
||
"deployment_state": "planned",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["runbook freshness", "playbook trust evidence", "negative reinforcement"],
|
||
"telegram_policy": "daily_summary_only",
|
||
"learning_inputs": ["execution result", "post verification", "operator review"],
|
||
"communication_channels": ["KM", "LOGBOOK", "daily summary only"],
|
||
"approval_gate": "playbook promotion requires review",
|
||
"evidence_refs": ["docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md"],
|
||
"next_action": "Hermes 整理學習素材,OpenClaw 仲裁是否可升為 approved playbook。"
|
||
},
|
||
{
|
||
"target_id": "nemotron_replay_pipeline",
|
||
"domain_id": "learning",
|
||
"display_name": "NemoTron smoke / replay pipeline",
|
||
"target_type": "model_replay",
|
||
"primary_agent": "nemotron",
|
||
"supporting_agents": ["openclaw", "hermes"],
|
||
"deployment_state": "blocked_by_gate",
|
||
"automation_level": "blocked",
|
||
"capabilities": ["5-record smoke", "output contract review", "latency budget", "same-run baseline delta"],
|
||
"telegram_policy": "approval_required",
|
||
"learning_inputs": ["smoke gate", "external runner report", "OpenClaw baseline"],
|
||
"communication_channels": ["offline report", "operator review", "Telegram approval-required after gate"],
|
||
"approval_gate": "refresh source evidence, cost/data approval, then 5-record smoke only",
|
||
"evidence_refs": ["docs/evaluations/agent_nemotron_contract_tuned_smoke_matrix_2026-06-02.json", "docs/runbooks/OPENCLAW-REPLACEMENT-EVALUATION.md"],
|
||
"next_action": "新增 Nemotron 3 Ultra source evidence 後,先重跑 5-record smoke。"
|
||
},
|
||
{
|
||
"target_id": "agent_market_watch",
|
||
"domain_id": "learning",
|
||
"display_name": "AI Agent market watch",
|
||
"target_type": "market_watch",
|
||
"primary_agent": "hermes",
|
||
"supporting_agents": ["openclaw", "nemotron"],
|
||
"deployment_state": "active_governed",
|
||
"automation_level": "observe_only",
|
||
"capabilities": ["primary-source scan", "integration review", "discovery intake", "candidate scoring"],
|
||
"telegram_policy": "action_required",
|
||
"learning_inputs": ["official docs", "release metadata", "scorecard", "operator review"],
|
||
"communication_channels": ["Gitea Actions", "governance UI", "Telegram actionable only"],
|
||
"approval_gate": "market watch cannot approve SDK/API/replay/shadow/canary/production",
|
||
"evidence_refs": [".gitea/workflows/agent-market-watch.yaml", "docs/evaluations/agent_market_governance_snapshot_2026-06-04.json"],
|
||
"next_action": "把 Nemotron 3 Ultra 納入下一次 source refresh 和 scorecard review。"
|
||
}
|
||
],
|
||
"collaboration_contract": {
|
||
"message_bus": "以 Redis Streams / AgentSession / timeline event 作為可回放協作總線;本快照只描述布局,不啟動新 worker。",
|
||
"audit_trail": "所有 Agent 建議必須落到可查詢事件、批准包或 committed snapshot;不得只存在聊天視窗。",
|
||
"handoff_rules": [
|
||
"OpenClaw 收斂生產風險、HITL 與 Telegram action-required。",
|
||
"Hermes 收斂治理、文件、盤點、降噪與跨專案報告。",
|
||
"NemoTron 收斂 sanitized 離線評估、模型比較與 replay score。",
|
||
"任何 Agent 發現風險升級時必須轉交 OpenClaw 仲裁。",
|
||
"任何 Agent 發現市場/依賴漂移時必須轉交 Hermes 彙整。",
|
||
"任何候選模型能力聲稱必須先經 NemoTron 或 replay harness 產出同題證據。"
|
||
],
|
||
"frontend_redaction": {
|
||
"operator_conversation_display_allowed": false,
|
||
"agent_private_reasoning_display_allowed": false,
|
||
"display_policy": "前端只能顯示任務狀態、證據摘要、批准邊界與產物連結;不得顯示操作對話原文或 Agent 私有推理。"
|
||
}
|
||
},
|
||
"learning_contract": {
|
||
"event_sources": [
|
||
"incident timeline",
|
||
"approval outcome",
|
||
"alert operation log",
|
||
"service health snapshot",
|
||
"backup / DR evidence",
|
||
"dependency drift snapshot",
|
||
"agent market watch",
|
||
"NemoTron smoke / replay result"
|
||
],
|
||
"feedback_loops": [
|
||
"成功/失敗/中性結果回寫 Playbook trust",
|
||
"Critic / Reviewer 挑戰結果回寫 AgentSession",
|
||
"Telegram 按鈕與 operator review 回寫 notification outcome",
|
||
"Market watch source delta 進入 scorecard / replay gate",
|
||
"NemoTron replay 失敗模式回寫 prompt / contract 改善清單"
|
||
],
|
||
"growth_metrics": [
|
||
"playbook trust_score 有效更新數",
|
||
"general fallback alert ratio",
|
||
"agent handoff completion rate",
|
||
"notification failure rate",
|
||
"smoke gate pass rate",
|
||
"operator-approved proposal precision"
|
||
],
|
||
"retention_policy": "學習資料只保留 redacted evidence refs、hash、分類與結果;Secret、token、原始對話與私有推理不得進前端或告警。"
|
||
},
|
||
"telegram_contract": {
|
||
"primary_gateway": "apps/api/src/services/telegram_gateway.py",
|
||
"bot_roles": [
|
||
"OpenClaw Bot:生產告警、批准、HITL 與 action-required。",
|
||
"Hermes Bot lane:治理摘要、週期性報告與降噪候選,但仍經 Gateway。",
|
||
"NemoTron lane:只在 smoke/replay gate 需要 operator review 時產生摘要,不能直接發送。"
|
||
],
|
||
"notification_classes": [
|
||
"critical failure: immediate",
|
||
"operator action required: immediate",
|
||
"approval required: approval card",
|
||
"success / healthy: suppressed or daily summary",
|
||
"watch-only no-op: quiet"
|
||
],
|
||
"redaction_policy": "不得在 Telegram 顯示 Secret、token、cookie、private key、原始 payload、操作對話原文或 Agent 私有推理;只顯示 evidence ref、狀態、影響範圍與下一步。",
|
||
"e2e_validation": "沿用 ADR-035:部署前檢查 Secret、部署時注入 K8s Secret、部署後做 E2E 告警鏈路驗證;本布局不直接送測試通知。"
|
||
},
|
||
"rollups": {
|
||
"total_targets": 42,
|
||
"by_domain": {
|
||
"hosts": 6,
|
||
"packages": 3,
|
||
"tools": 8,
|
||
"services": 8,
|
||
"projects": 8,
|
||
"websites": 5,
|
||
"learning": 4
|
||
},
|
||
"by_primary_agent": {
|
||
"openclaw": 17,
|
||
"hermes": 23,
|
||
"nemotron": 2
|
||
},
|
||
"by_deployment_state": {
|
||
"active_governed": 28,
|
||
"read_only_layout": 9,
|
||
"blocked_by_gate": 2,
|
||
"planned": 2,
|
||
"candidate_only": 1
|
||
},
|
||
"by_telegram_policy": {
|
||
"failure_only": 8,
|
||
"action_required": 17,
|
||
"approval_required": 6,
|
||
"daily_summary_only": 3,
|
||
"no_direct_notify": 8
|
||
},
|
||
"blocked_target_ids": [
|
||
"host_120",
|
||
"nemotron_replay_pipeline"
|
||
],
|
||
"approval_required_target_ids": [
|
||
"host_120",
|
||
"telegram_gateway",
|
||
"ansible_control",
|
||
"awooop_control_plane",
|
||
"project_awooop",
|
||
"awooop_admin",
|
||
"nemotron_replay_pipeline"
|
||
]
|
||
},
|
||
"approval_boundaries": {
|
||
"sdk_installation_allowed": false,
|
||
"paid_api_call_allowed": false,
|
||
"shadow_or_canary_allowed": false,
|
||
"production_routing_allowed": false,
|
||
"destructive_operation_allowed": false,
|
||
"secret_plaintext_allowed": false,
|
||
"autonomous_host_mutation_allowed": false,
|
||
"telegram_direct_send_allowed": false
|
||
}
|
||
}
|