feat(governance): 新增 AI 技術雷達滾動監控
Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m39s
CD Pipeline / build-and-deploy (push) Successful in 4m35s
CD Pipeline / post-deploy-checks (push) Successful in 1m51s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m39s
CD Pipeline / build-and-deploy (push) Successful in 4m35s
CD Pipeline / post-deploy-checks (push) Successful in 1m51s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
This commit is contained in:
@@ -1,3 +1,32 @@
|
||||
## 2026-06-25|AI 技術雷達近即時監控與產品讀回
|
||||
|
||||
**背景**:使用者要求 AWOOOI 不能只評估 AI Agent,整個產品與網站必須持續、即時監控市場上所有主流 AI 技術,包含新技術、新版本、新整合與新應用,並能滾動更新到專案評估流程中。
|
||||
|
||||
**完成**:
|
||||
- 新增 `docs/ai/ai-technology-watch-sources.v1.json`,監控範圍擴到 `agent_frameworks`、`model_providers`、`rag_and_vector`、`mcp_and_a2a`、`evaluation_and_observability`、`model_serving` 六大領域。
|
||||
- 新增 `apps/api/src/services/ai_technology_watch.py` 與 `scripts/agents/ai-technology-watch.py`,沿用 AI Agent market watch 的只讀 primary-source fetch / change detection / review queue 邏輯。
|
||||
- `agent_market_watch.py` 新增 `github_tags` source type,支援 pgvector 這類沒有 GitHub Release 但有 tags 的主流專案,避免誤報來源失敗。
|
||||
- 新增 `docs/evaluations/ai_technology_watch_report_2026-06-25.json`:本輪 live 讀取 `20` 個技術項、`47` 個 primary sources、`6` 個技術領域,`source_failure_count=0`、`changed_technologies=0`、高優先級項目 `14`。
|
||||
- 新增 `scripts/dev/ai-technology-radar-readback.py`、`docs/operations/ai-technology-radar-readback.snapshot.json`、`docs/operations/AI-TECHNOLOGY-RADAR-READBACK-2026-06-25.md` 與 `docs/operations/AI-TECHNOLOGY-RADAR-READBACK.md`。
|
||||
- 新增 read-only API:`GET /api/v1/agents/ai-technology-radar-readback`,前端可讀 AI 技術雷達、Agent 專業分工、滾動更新節奏、審核佇列與 blocked gates。
|
||||
- 新增 `.gitea/workflows/ai-technology-watch.yaml`,每 6 小時執行只讀 AI 技術監控並寫入 Gitea step summary;workflow 不 commit、不發 Telegram、不安裝 SDK、不呼叫 LLM API、不切 provider route、不改 production。
|
||||
- 新增 schema 與測試:`ai_technology_watch_report_v1`、`ai_technology_radar_readback_v1`、watch service tests、readback loader tests、FastAPI endpoint tests。
|
||||
|
||||
**目前真相**:
|
||||
- AI 技術雷達來源成功率:`100%`。
|
||||
- AI 技術監控項目:`20`。
|
||||
- primary sources:`47`。
|
||||
- 技術領域:`6`。
|
||||
- 需要審核變更:`0`。
|
||||
- 來源失敗:`0`。
|
||||
- OpenClaw 替換批准:`false`。
|
||||
- SDK 安裝、付費 API、production routing、Telegram send、model provider switch、host write:全部仍為 `false`。
|
||||
- OpenClaw / Hermes / NemoTron / MarketRadar / Critic-Reviewer 的專業分工已在 readback 中可讀;NemoTron 仍定位為 replay evaluator / smoke gate,不得直接進 production routing。
|
||||
|
||||
**邊界**:
|
||||
- 本輪沒有安裝新 SDK、沒有呼叫付費 AI API、沒有發 Telegram、沒有修改 AI provider route、沒有主機寫入、沒有 Nginx / K8s / secret / runtime config 變更、沒有替換 OpenClaw。
|
||||
- `.gitea/workflows/ai-technology-watch.yaml` 只啟用 read-only source monitoring;任何後續自動整合、套件升級、模型切換、Telegram live delivery 或 production change 仍需獨立 owner gate。
|
||||
|
||||
## 2026-06-25|Wazuh release / route readback 狀態收斂與 agent registry 未完成邊界
|
||||
|
||||
**背景**:Wazuh 用戶端消失事故的關鍵狀態已從「IwoooS production route 仍 404」前進到「route 已部署但 Wazuh live metadata / agent registry 尚未驗收」。本輪同步前台、release gate、live metadata env gate、handoff 與 LOGBOOK,避免 operator 或平行工作視窗把 route 200、agent transport、service active 或 UI 可見誤判成所有主機已納回 Wazuh。
|
||||
|
||||
563
docs/ai/ai-technology-watch-sources.v1.json
Normal file
563
docs/ai/ai-technology-watch-sources.v1.json
Normal file
@@ -0,0 +1,563 @@
|
||||
{
|
||||
"schema_version": "ai_technology_watch_sources_v1",
|
||||
"updated_at": "2026-06-25",
|
||||
"cadence": {
|
||||
"near_real_time_watch": "每 6 小時執行一次只讀 primary-source 檢查,偵測主流 AI 技術版本、文件與 release 變更。",
|
||||
"daily_triage": "每日彙整變更技術,依商業適用性、依賴風險、成本風險與資安風險分組。",
|
||||
"weekly_scorecard": "每週刷新技術 scorecard,判斷是否值得進入 sandbox、offline replay 或 adapter design。",
|
||||
"monthly_strategy_review": "每月策略檢討,決定技術應納入 roadmap、維持 watch-only 或從監控清單移除。"
|
||||
},
|
||||
"policy": {
|
||||
"read_only": true,
|
||||
"raw_chat_history_synced": false,
|
||||
"sdk_installation_approved": false,
|
||||
"paid_api_calls_approved": false,
|
||||
"production_routing_approved": false,
|
||||
"workflow_modification_approved": false,
|
||||
"telegram_send_approved": false,
|
||||
"model_provider_switch_approved": false,
|
||||
"host_write_approved": false
|
||||
},
|
||||
"coverage_contract": {
|
||||
"scope": [
|
||||
"agent_frameworks",
|
||||
"model_providers",
|
||||
"rag_and_vector",
|
||||
"mcp_and_a2a",
|
||||
"evaluation_and_observability",
|
||||
"coding_agents",
|
||||
"multimodal_generation"
|
||||
],
|
||||
"must_not_do": [
|
||||
"安裝新 SDK",
|
||||
"呼叫付費模型 API",
|
||||
"修改 provider routing",
|
||||
"修改 production prompts",
|
||||
"發送 Telegram 指令",
|
||||
"寫入主機",
|
||||
"在缺少 replay / shadow / canary 證據時替換 OpenClaw"
|
||||
]
|
||||
},
|
||||
"candidates": [
|
||||
{
|
||||
"candidate_id": "openai_agents_sdk",
|
||||
"display_name": "OpenAI Agents SDK",
|
||||
"technology_area": "agent_frameworks",
|
||||
"integration_surface": "agent_handoff_tracing_guardrails",
|
||||
"awoooi_role": "協調者、handoff、tool tracing、guardrail 候選",
|
||||
"evaluation_priority": "p0",
|
||||
"requires_cost_approval": true,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "openai_agents_python_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/openai-agents/json",
|
||||
"reference_version": "0.17.7"
|
||||
},
|
||||
{
|
||||
"source_id": "openai_agents_typescript_npm",
|
||||
"type": "npm",
|
||||
"url": "https://registry.npmjs.org/%40openai%2Fagents",
|
||||
"reference_version": "0.12.0"
|
||||
},
|
||||
{
|
||||
"source_id": "openai_agents_docs",
|
||||
"type": "docs",
|
||||
"url": "https://developers.openai.com/api/docs/guides/agents"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "nvidia_nemotron_nemo",
|
||||
"display_name": "NVIDIA Nemotron + NeMo Agent Toolkit",
|
||||
"technology_area": "agent_frameworks",
|
||||
"integration_surface": "offline_replay_evaluator_smoke_gate",
|
||||
"awoooi_role": "NemoTron replay / evaluator / synthetic data gate",
|
||||
"evaluation_priority": "p0",
|
||||
"requires_cost_approval": true,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "nvidia_nemotron_developer_page",
|
||||
"type": "docs",
|
||||
"url": "https://developer.nvidia.com/topics/ai/nemotron"
|
||||
},
|
||||
{
|
||||
"source_id": "nvidia_nemo_agent_toolkit_docs",
|
||||
"type": "docs",
|
||||
"url": "https://docs.nvidia.com/nemo/agent-toolkit/latest/index.html"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "langgraph_runtime",
|
||||
"display_name": "LangGraph",
|
||||
"technology_area": "agent_frameworks",
|
||||
"integration_surface": "durable_workflow_human_in_loop",
|
||||
"awoooi_role": "事件處理與可恢復 workflow kernel 候選",
|
||||
"evaluation_priority": "p0",
|
||||
"requires_cost_approval": false,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "langgraph_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/langgraph/json",
|
||||
"reference_version": "1.2.6"
|
||||
},
|
||||
{
|
||||
"source_id": "langgraph_github_release",
|
||||
"type": "github_release",
|
||||
"url": "https://api.github.com/repos/langchain-ai/langgraph/releases/latest",
|
||||
"reference_version": "1.2.6"
|
||||
},
|
||||
{
|
||||
"source_id": "langgraph_docs",
|
||||
"type": "docs",
|
||||
"url": "https://docs.langchain.com/oss/python/langgraph/overview"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "google_adk_stack",
|
||||
"display_name": "Google Agent Development Kit",
|
||||
"technology_area": "agent_frameworks",
|
||||
"integration_surface": "gemini_enterprise_agent_stack",
|
||||
"awoooi_role": "Gemini/Vertex agent stack watch-only 候選",
|
||||
"evaluation_priority": "p1",
|
||||
"requires_cost_approval": true,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "google_adk_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/google-adk/json",
|
||||
"reference_version": "2.3.0"
|
||||
},
|
||||
{
|
||||
"source_id": "google_adk_github_release",
|
||||
"type": "github_release",
|
||||
"url": "https://api.github.com/repos/google/adk-python/releases/latest",
|
||||
"reference_version": "v2.3.0"
|
||||
},
|
||||
{
|
||||
"source_id": "google_adk_docs",
|
||||
"type": "docs",
|
||||
"url": "https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/adk"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "microsoft_agent_framework",
|
||||
"display_name": "Microsoft Agent Framework",
|
||||
"technology_area": "agent_frameworks",
|
||||
"integration_surface": "enterprise_mcp_a2a_workflow",
|
||||
"awoooi_role": "MCP/A2A enterprise workflow watch-only 候選",
|
||||
"evaluation_priority": "p1",
|
||||
"requires_cost_approval": true,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "microsoft_agent_framework_github_release",
|
||||
"type": "github_release",
|
||||
"url": "https://api.github.com/repos/microsoft/agent-framework/releases/latest",
|
||||
"reference_version": "dotnet-1.11.0"
|
||||
},
|
||||
{
|
||||
"source_id": "microsoft_agent_framework_docs",
|
||||
"type": "docs",
|
||||
"url": "https://learn.microsoft.com/en-us/agent-framework/overview/"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "crewai_flows",
|
||||
"display_name": "CrewAI Flows + Crews",
|
||||
"technology_area": "agent_frameworks",
|
||||
"integration_surface": "multi_agent_prototype",
|
||||
"awoooi_role": "快速 prototype / non-production 評估候選",
|
||||
"evaluation_priority": "p2",
|
||||
"requires_cost_approval": false,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "crewai_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/crewai/json",
|
||||
"reference_version": "1.14.7"
|
||||
},
|
||||
{
|
||||
"source_id": "crewai_docs",
|
||||
"type": "docs",
|
||||
"url": "https://docs.crewai.com/"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "modelcontextprotocol_sdk",
|
||||
"display_name": "Model Context Protocol SDK",
|
||||
"technology_area": "mcp_and_a2a",
|
||||
"integration_surface": "tool_registry_interoperability",
|
||||
"awoooi_role": "read-only tool registry / MCP adapter 候選",
|
||||
"evaluation_priority": "p0",
|
||||
"requires_cost_approval": false,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "mcp_typescript_sdk_npm",
|
||||
"type": "npm",
|
||||
"url": "https://registry.npmjs.org/%40modelcontextprotocol%2Fsdk"
|
||||
},
|
||||
{
|
||||
"source_id": "mcp_typescript_sdk_github_release",
|
||||
"type": "github_release",
|
||||
"url": "https://api.github.com/repos/modelcontextprotocol/typescript-sdk/releases/latest"
|
||||
},
|
||||
{
|
||||
"source_id": "mcp_typescript_sdk_docs",
|
||||
"type": "docs",
|
||||
"url": "https://github.com/modelcontextprotocol/typescript-sdk"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "a2a_protocol",
|
||||
"display_name": "Agent2Agent Protocol",
|
||||
"technology_area": "mcp_and_a2a",
|
||||
"integration_surface": "agent_to_agent_interop",
|
||||
"awoooi_role": "跨 Agent 溝通協定 watch-only 候選",
|
||||
"evaluation_priority": "p1",
|
||||
"requires_cost_approval": false,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "a2a_protocol_github_release",
|
||||
"type": "github_release",
|
||||
"url": "https://api.github.com/repos/a2aproject/A2A/releases/latest"
|
||||
},
|
||||
{
|
||||
"source_id": "a2a_python_github_release",
|
||||
"type": "github_release",
|
||||
"url": "https://api.github.com/repos/a2aproject/a2a-python/releases/latest"
|
||||
},
|
||||
{
|
||||
"source_id": "a2a_protocol_docs",
|
||||
"type": "docs",
|
||||
"url": "https://github.com/a2aproject/A2A"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "openai_model_platform",
|
||||
"display_name": "OpenAI Model Platform",
|
||||
"technology_area": "model_providers",
|
||||
"integration_surface": "model_capability_cost_routing",
|
||||
"awoooi_role": "模型能力、成本與 routing scorecard 來源",
|
||||
"evaluation_priority": "p0",
|
||||
"requires_cost_approval": true,
|
||||
"requires_dependency_approval": false,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "openai_models_docs",
|
||||
"type": "docs",
|
||||
"url": "https://platform.openai.com/docs/models"
|
||||
},
|
||||
{
|
||||
"source_id": "openai_python_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/openai/json"
|
||||
},
|
||||
{
|
||||
"source_id": "openai_node_npm",
|
||||
"type": "npm",
|
||||
"url": "https://registry.npmjs.org/openai"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "anthropic_claude_platform",
|
||||
"display_name": "Anthropic Claude Platform",
|
||||
"technology_area": "model_providers",
|
||||
"integration_surface": "model_capability_cost_routing",
|
||||
"awoooi_role": "Claude model / coding agent / remediation watch source",
|
||||
"evaluation_priority": "p0",
|
||||
"requires_cost_approval": true,
|
||||
"requires_dependency_approval": false,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "anthropic_models_docs",
|
||||
"type": "docs",
|
||||
"url": "https://docs.anthropic.com/en/docs/about-claude/models/overview"
|
||||
},
|
||||
{
|
||||
"source_id": "anthropic_sdk_npm",
|
||||
"type": "npm",
|
||||
"url": "https://registry.npmjs.org/%40anthropic-ai%2Fsdk"
|
||||
},
|
||||
{
|
||||
"source_id": "claude_agent_sdk_docs",
|
||||
"type": "docs",
|
||||
"url": "https://code.claude.com/docs/en/agent-sdk/overview"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "google_gemini_platform",
|
||||
"display_name": "Google Gemini Platform",
|
||||
"technology_area": "model_providers",
|
||||
"integration_surface": "model_capability_cost_routing",
|
||||
"awoooi_role": "Gemini model capability / cost watch source",
|
||||
"evaluation_priority": "p1",
|
||||
"requires_cost_approval": true,
|
||||
"requires_dependency_approval": false,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "gemini_models_docs",
|
||||
"type": "docs",
|
||||
"url": "https://ai.google.dev/gemini-api/docs/models"
|
||||
},
|
||||
{
|
||||
"source_id": "google_genai_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/google-genai/json"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "llamaindex_rag",
|
||||
"display_name": "LlamaIndex",
|
||||
"technology_area": "rag_and_vector",
|
||||
"integration_surface": "rag_indexing_connectors",
|
||||
"awoooi_role": "RAG ingestion / indexing / connector watch source",
|
||||
"evaluation_priority": "p1",
|
||||
"requires_cost_approval": false,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "llama_index_core_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/llama-index-core/json"
|
||||
},
|
||||
{
|
||||
"source_id": "llama_index_docs",
|
||||
"type": "docs",
|
||||
"url": "https://developers.llamaindex.ai/python/framework/"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "langchain_runtime",
|
||||
"display_name": "LangChain",
|
||||
"technology_area": "rag_and_vector",
|
||||
"integration_surface": "llm_app_runtime_connectors",
|
||||
"awoooi_role": "LLM app integration connector watch source",
|
||||
"evaluation_priority": "p2",
|
||||
"requires_cost_approval": false,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "langchain_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/langchain/json"
|
||||
},
|
||||
{
|
||||
"source_id": "langchain_docs",
|
||||
"type": "docs",
|
||||
"url": "https://docs.langchain.com/"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "pgvector_vector_store",
|
||||
"display_name": "pgvector",
|
||||
"technology_area": "rag_and_vector",
|
||||
"integration_surface": "postgres_vector_index",
|
||||
"awoooi_role": "現有 Postgres/pgvector 能力與版本 freshness 來源",
|
||||
"evaluation_priority": "p1",
|
||||
"requires_cost_approval": false,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "pgvector_github_tags",
|
||||
"type": "github_tags",
|
||||
"url": "https://api.github.com/repos/pgvector/pgvector/tags"
|
||||
},
|
||||
{
|
||||
"source_id": "pgvector_docs",
|
||||
"type": "docs",
|
||||
"url": "https://github.com/pgvector/pgvector"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "qdrant_vector_store",
|
||||
"display_name": "Qdrant",
|
||||
"technology_area": "rag_and_vector",
|
||||
"integration_surface": "dedicated_vector_database",
|
||||
"awoooi_role": "專用 vector DB 候選,只能 sandbox 評估",
|
||||
"evaluation_priority": "p2",
|
||||
"requires_cost_approval": false,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "qdrant_client_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/qdrant-client/json"
|
||||
},
|
||||
{
|
||||
"source_id": "qdrant_github_release",
|
||||
"type": "github_release",
|
||||
"url": "https://api.github.com/repos/qdrant/qdrant/releases/latest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "chromadb_vector_store",
|
||||
"display_name": "ChromaDB",
|
||||
"technology_area": "rag_and_vector",
|
||||
"integration_surface": "local_vector_database",
|
||||
"awoooi_role": "本機 / sandbox vector store 候選",
|
||||
"evaluation_priority": "p3",
|
||||
"requires_cost_approval": false,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "chromadb_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/chromadb/json"
|
||||
},
|
||||
{
|
||||
"source_id": "chromadb_github_release",
|
||||
"type": "github_release",
|
||||
"url": "https://api.github.com/repos/chroma-core/chroma/releases/latest"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "ragas_eval",
|
||||
"display_name": "Ragas",
|
||||
"technology_area": "evaluation_and_observability",
|
||||
"integration_surface": "rag_eval_metrics",
|
||||
"awoooi_role": "RAG / LLM app evaluation metrics 候選",
|
||||
"evaluation_priority": "p1",
|
||||
"requires_cost_approval": false,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "ragas_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/ragas/json"
|
||||
},
|
||||
{
|
||||
"source_id": "ragas_docs",
|
||||
"type": "docs",
|
||||
"url": "https://docs.ragas.io/en/stable/"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "langfuse_observability",
|
||||
"display_name": "Langfuse",
|
||||
"technology_area": "evaluation_and_observability",
|
||||
"integration_surface": "llm_observability_tracing",
|
||||
"awoooi_role": "LLM trace / prompt / eval observability 候選",
|
||||
"evaluation_priority": "p1",
|
||||
"requires_cost_approval": true,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "langfuse_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/langfuse/json"
|
||||
},
|
||||
{
|
||||
"source_id": "langfuse_docs",
|
||||
"type": "docs",
|
||||
"url": "https://langfuse.com/docs"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "huggingface_tgi",
|
||||
"display_name": "Hugging Face Text Generation Inference",
|
||||
"technology_area": "model_serving",
|
||||
"integration_surface": "self_hosted_model_serving",
|
||||
"awoooi_role": "自託管模型 serving 能力與版本 freshness 來源",
|
||||
"evaluation_priority": "p2",
|
||||
"requires_cost_approval": true,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "tgi_github_release",
|
||||
"type": "github_release",
|
||||
"url": "https://api.github.com/repos/huggingface/text-generation-inference/releases/latest"
|
||||
},
|
||||
{
|
||||
"source_id": "tgi_docs",
|
||||
"type": "docs",
|
||||
"url": "https://huggingface.co/docs/text-generation-inference/index"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"candidate_id": "vllm_serving",
|
||||
"display_name": "vLLM",
|
||||
"technology_area": "model_serving",
|
||||
"integration_surface": "self_hosted_llm_inference",
|
||||
"awoooi_role": "自託管 LLM inference 候選,需 GPU/成本/安全 gate",
|
||||
"evaluation_priority": "p2",
|
||||
"requires_cost_approval": true,
|
||||
"requires_dependency_approval": true,
|
||||
"requires_security_review": true,
|
||||
"sources": [
|
||||
{
|
||||
"source_id": "vllm_pypi",
|
||||
"type": "pypi",
|
||||
"url": "https://pypi.org/pypi/vllm/json"
|
||||
},
|
||||
{
|
||||
"source_id": "vllm_github_release",
|
||||
"type": "github_release",
|
||||
"url": "https://api.github.com/repos/vllm-project/vllm/releases/latest"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"discovery_sources": [
|
||||
{
|
||||
"source_id": "github_ai_agent_discovery",
|
||||
"type": "github_search",
|
||||
"url": "https://api.github.com/search/repositories?q=topic:ai-agent+stars:%3E5000&sort=updated&order=desc"
|
||||
},
|
||||
{
|
||||
"source_id": "github_mcp_discovery",
|
||||
"type": "github_search",
|
||||
"url": "https://api.github.com/search/repositories?q=topic:mcp+stars:%3E1000&sort=updated&order=desc"
|
||||
},
|
||||
{
|
||||
"source_id": "github_rag_discovery",
|
||||
"type": "github_search",
|
||||
"url": "https://api.github.com/search/repositories?q=topic:rag+stars:%3E3000&sort=updated&order=desc"
|
||||
}
|
||||
]
|
||||
}
|
||||
1142
docs/evaluations/ai_technology_watch_report_2026-06-25.json
Normal file
1142
docs/evaluations/ai_technology_watch_report_2026-06-25.json
Normal file
File diff suppressed because it is too large
Load Diff
70
docs/operations/AI-TECHNOLOGY-RADAR-READBACK-2026-06-25.md
Normal file
70
docs/operations/AI-TECHNOLOGY-RADAR-READBACK-2026-06-25.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# AI 技術雷達與滾動更新讀回
|
||||
|
||||
- 產生時間:`2026-06-25T03:56:51.751955+00:00`
|
||||
- 整體治理完成度:`42.2%`
|
||||
- AI 技術雷達來源成功率:`100.0%`
|
||||
- 監控技術項目:`20`
|
||||
- 技術領域:`6`
|
||||
- 官方 / primary sources:`47`
|
||||
- 來源失敗:`0`
|
||||
- 需要審核變更:`0`
|
||||
- 高優先級項目:`14`
|
||||
- 滾動更新狀態:`near_real_time_watch_ready_integration_gated`
|
||||
|
||||
## 技術領域覆蓋
|
||||
|
||||
| 技術領域 | 技術數 | 高優先級 | 需要審核 | 代表技術 |
|
||||
|---|---:|---:|---:|---|
|
||||
| `agent_frameworks` | `6` | `5` | `0` | OpenAI Agents SDK, NVIDIA Nemotron + NeMo Agent Toolkit, LangGraph, Google Agent Development Kit |
|
||||
| `evaluation_and_observability` | `2` | `2` | `0` | Ragas, Langfuse |
|
||||
| `mcp_and_a2a` | `2` | `2` | `0` | Model Context Protocol SDK, Agent2Agent Protocol |
|
||||
| `model_providers` | `3` | `3` | `0` | OpenAI Model Platform, Anthropic Claude Platform, Google Gemini Platform |
|
||||
| `model_serving` | `2` | `0` | `0` | Hugging Face Text Generation Inference, vLLM |
|
||||
| `rag_and_vector` | `5` | `2` | `0` | LlamaIndex, LangChain, pgvector, Qdrant |
|
||||
|
||||
## 高優先級審核佇列
|
||||
|
||||
| 技術 | 領域 | 優先級 | Gate | 下一步 |
|
||||
|---|---|---|---|---|
|
||||
|
||||
## Agent 專業分工
|
||||
|
||||
| Agent | 專業角色 | 自動化範圍 | 需要審核的邊界 |
|
||||
|---|---|---|---|
|
||||
| OpenClaw | 生產決策仲裁者、風險分級與最後 policy guard | 維持現有 production baseline、讀取 replay / shadow 評分、拒絕無證據替換 | 任何取代、降級、生產路由切換都必須通過 replay / shadow / canary 與人工批准。 |
|
||||
| NemoTron | 離線回放評估者、模型能力比較、合約輸出 smoke gate | 只讀 request pack、比對候選輸出、產生 replay scorecard 草稿 | 不得自行呼叫外部 NIM/API、不得讀 labels 作答、不得進生產路由。 |
|
||||
| Hermes | 知識管理、RAG 整理、報告草稿與長期技能庫維護 | 整理 primary source 摘要、建立 no-send 日週月報、準備人審包 | 不得同步 raw chat history、不得保存 secret、不得直接發 Telegram live report。 |
|
||||
| MarketRadar | AI 技術市場雷達、版本監控、來源失敗偵測 | 每 6 小時只讀 primary sources、產生 freshness / review queue | 不得自動新增 SDK、不得自動修改 provider route 或 workflow 行為。 |
|
||||
| Critic / Reviewer | 獨立審核、反例檢查、整合風險評分 | 檢查政策旗標、來源可靠性、成本與資安風險 | 只能輸出 blocked / candidate / owner_review,不得直接執行寫入。 |
|
||||
|
||||
## 滾動更新控制
|
||||
|
||||
| 節奏 | Agent 可自動做什麼 | 輸出 | Gate |
|
||||
|---|---|---|---|
|
||||
| 每 6 小時 | 讀取官方文件、PyPI、npm、GitHub release、primary source hash。 | AI 技術 watch report、來源失敗清單、review queue。 | `read_only_only` |
|
||||
| 每日 | 依 business applicability、成本、依賴、資安、AWOOOI fit 分類。 | 日報摘要與中低風險自動處理建議。 | `no_send_report_until_delivery_gate` |
|
||||
| 每週 | 刷新 scorecard,決定 sandbox / replay / adapter design 優先級。 | 週報、優先序、候選整合審查包。 | `scorecard_required_before_replay` |
|
||||
| 每月 | 彙整趨勢,提出 roadmap / watch-only / retire 建議。 | 月報與策略審核包。 | `human_review_for_strategy_or_production_change` |
|
||||
|
||||
## 優先工作清單
|
||||
|
||||
| 順序 | 工作 | 優先級 | 自動化模式 | 完成定義 |
|
||||
|---:|---|---|---|---|
|
||||
| 1 | AI 技術雷達 primary source 監控產品化 | `P0` | `agent_auto_read_only` | API、snapshot、Markdown、schema、測試與 production readback 都能顯示技術領域、來源與 Gate。 |
|
||||
| 2 | 近即時版本 / release / docs 變更偵測 | `P0` | `agent_auto_schedule_read_only` | 每 6 小時可跑 watch;失敗來源會進日報,不會自動整合。 |
|
||||
| 3 | OpenClaw / Hermes / NemoTron / MarketRadar 專業分工與成長紀錄 | `P0` | `agent_auto_read_model_human_review_for_write` | 每個 Agent 的角色、輸出、學習寫回與限制都能被前端讀回。 |
|
||||
| 4 | AI 技術 scorecard 與 sandbox / replay 優先級 | `P1` | `agent_propose_owner_review` | 高優先級變更先進 scorecard,再進 no-cost/no-write sandbox 或 replay 計畫。 |
|
||||
| 5 | Telegram Bot 報告與高風險審核橋接 | `P1` | `blocked_until_telegram_send_gate` | 低中風險只告警回報;高風險需 owner approval 後才可發送或執行。 |
|
||||
| 6 | 新 AI 技術探索與 watchlist 擴充 | `P2` | `agent_auto_discover_human_classify` | GitHub topic / package registry / 官方 blog 可提出候選,但加入正式 watchlist 前需審核。 |
|
||||
|
||||
## 仍被 Gate 擋下
|
||||
|
||||
- `sdk_installation_approved=false`
|
||||
- `paid_api_calls_approved=false`
|
||||
- `production_routing_approved=false`
|
||||
- `telegram_send_approved=false`
|
||||
- `model_provider_switch_approved=false`
|
||||
- `host_write_approved=false`
|
||||
- `openclaw_replacement_approved=false`
|
||||
- `replay_shadow_canary_gate_required=true`
|
||||
- `cost_and_data_boundary_review_required=true`
|
||||
70
docs/operations/AI-TECHNOLOGY-RADAR-READBACK.md
Normal file
70
docs/operations/AI-TECHNOLOGY-RADAR-READBACK.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# AI 技術雷達與滾動更新讀回
|
||||
|
||||
- 產生時間:`2026-06-25T03:56:51.751955+00:00`
|
||||
- 整體治理完成度:`42.2%`
|
||||
- AI 技術雷達來源成功率:`100.0%`
|
||||
- 監控技術項目:`20`
|
||||
- 技術領域:`6`
|
||||
- 官方 / primary sources:`47`
|
||||
- 來源失敗:`0`
|
||||
- 需要審核變更:`0`
|
||||
- 高優先級項目:`14`
|
||||
- 滾動更新狀態:`near_real_time_watch_ready_integration_gated`
|
||||
|
||||
## 技術領域覆蓋
|
||||
|
||||
| 技術領域 | 技術數 | 高優先級 | 需要審核 | 代表技術 |
|
||||
|---|---:|---:|---:|---|
|
||||
| `agent_frameworks` | `6` | `5` | `0` | OpenAI Agents SDK, NVIDIA Nemotron + NeMo Agent Toolkit, LangGraph, Google Agent Development Kit |
|
||||
| `evaluation_and_observability` | `2` | `2` | `0` | Ragas, Langfuse |
|
||||
| `mcp_and_a2a` | `2` | `2` | `0` | Model Context Protocol SDK, Agent2Agent Protocol |
|
||||
| `model_providers` | `3` | `3` | `0` | OpenAI Model Platform, Anthropic Claude Platform, Google Gemini Platform |
|
||||
| `model_serving` | `2` | `0` | `0` | Hugging Face Text Generation Inference, vLLM |
|
||||
| `rag_and_vector` | `5` | `2` | `0` | LlamaIndex, LangChain, pgvector, Qdrant |
|
||||
|
||||
## 高優先級審核佇列
|
||||
|
||||
| 技術 | 領域 | 優先級 | Gate | 下一步 |
|
||||
|---|---|---|---|---|
|
||||
|
||||
## Agent 專業分工
|
||||
|
||||
| Agent | 專業角色 | 自動化範圍 | 需要審核的邊界 |
|
||||
|---|---|---|---|
|
||||
| OpenClaw | 生產決策仲裁者、風險分級與最後 policy guard | 維持現有 production baseline、讀取 replay / shadow 評分、拒絕無證據替換 | 任何取代、降級、生產路由切換都必須通過 replay / shadow / canary 與人工批准。 |
|
||||
| NemoTron | 離線回放評估者、模型能力比較、合約輸出 smoke gate | 只讀 request pack、比對候選輸出、產生 replay scorecard 草稿 | 不得自行呼叫外部 NIM/API、不得讀 labels 作答、不得進生產路由。 |
|
||||
| Hermes | 知識管理、RAG 整理、報告草稿與長期技能庫維護 | 整理 primary source 摘要、建立 no-send 日週月報、準備人審包 | 不得同步 raw chat history、不得保存 secret、不得直接發 Telegram live report。 |
|
||||
| MarketRadar | AI 技術市場雷達、版本監控、來源失敗偵測 | 每 6 小時只讀 primary sources、產生 freshness / review queue | 不得自動新增 SDK、不得自動修改 provider route 或 workflow 行為。 |
|
||||
| Critic / Reviewer | 獨立審核、反例檢查、整合風險評分 | 檢查政策旗標、來源可靠性、成本與資安風險 | 只能輸出 blocked / candidate / owner_review,不得直接執行寫入。 |
|
||||
|
||||
## 滾動更新控制
|
||||
|
||||
| 節奏 | Agent 可自動做什麼 | 輸出 | Gate |
|
||||
|---|---|---|---|
|
||||
| 每 6 小時 | 讀取官方文件、PyPI、npm、GitHub release、primary source hash。 | AI 技術 watch report、來源失敗清單、review queue。 | `read_only_only` |
|
||||
| 每日 | 依 business applicability、成本、依賴、資安、AWOOOI fit 分類。 | 日報摘要與中低風險自動處理建議。 | `no_send_report_until_delivery_gate` |
|
||||
| 每週 | 刷新 scorecard,決定 sandbox / replay / adapter design 優先級。 | 週報、優先序、候選整合審查包。 | `scorecard_required_before_replay` |
|
||||
| 每月 | 彙整趨勢,提出 roadmap / watch-only / retire 建議。 | 月報與策略審核包。 | `human_review_for_strategy_or_production_change` |
|
||||
|
||||
## 優先工作清單
|
||||
|
||||
| 順序 | 工作 | 優先級 | 自動化模式 | 完成定義 |
|
||||
|---:|---|---|---|---|
|
||||
| 1 | AI 技術雷達 primary source 監控產品化 | `P0` | `agent_auto_read_only` | API、snapshot、Markdown、schema、測試與 production readback 都能顯示技術領域、來源與 Gate。 |
|
||||
| 2 | 近即時版本 / release / docs 變更偵測 | `P0` | `agent_auto_schedule_read_only` | 每 6 小時可跑 watch;失敗來源會進日報,不會自動整合。 |
|
||||
| 3 | OpenClaw / Hermes / NemoTron / MarketRadar 專業分工與成長紀錄 | `P0` | `agent_auto_read_model_human_review_for_write` | 每個 Agent 的角色、輸出、學習寫回與限制都能被前端讀回。 |
|
||||
| 4 | AI 技術 scorecard 與 sandbox / replay 優先級 | `P1` | `agent_propose_owner_review` | 高優先級變更先進 scorecard,再進 no-cost/no-write sandbox 或 replay 計畫。 |
|
||||
| 5 | Telegram Bot 報告與高風險審核橋接 | `P1` | `blocked_until_telegram_send_gate` | 低中風險只告警回報;高風險需 owner approval 後才可發送或執行。 |
|
||||
| 6 | 新 AI 技術探索與 watchlist 擴充 | `P2` | `agent_auto_discover_human_classify` | GitHub topic / package registry / 官方 blog 可提出候選,但加入正式 watchlist 前需審核。 |
|
||||
|
||||
## 仍被 Gate 擋下
|
||||
|
||||
- `sdk_installation_approved=false`
|
||||
- `paid_api_calls_approved=false`
|
||||
- `production_routing_approved=false`
|
||||
- `telegram_send_approved=false`
|
||||
- `model_provider_switch_approved=false`
|
||||
- `host_write_approved=false`
|
||||
- `openclaw_replacement_approved=false`
|
||||
- `replay_shadow_canary_gate_required=true`
|
||||
- `cost_and_data_boundary_review_required=true`
|
||||
496
docs/operations/ai-technology-radar-readback.snapshot.json
Normal file
496
docs/operations/ai-technology-radar-readback.snapshot.json
Normal file
@@ -0,0 +1,496 @@
|
||||
{
|
||||
"blocked_gates": [
|
||||
"sdk_installation_approved=false",
|
||||
"paid_api_calls_approved=false",
|
||||
"production_routing_approved=false",
|
||||
"telegram_send_approved=false",
|
||||
"model_provider_switch_approved=false",
|
||||
"host_write_approved=false",
|
||||
"openclaw_replacement_approved=false",
|
||||
"replay_shadow_canary_gate_required=true",
|
||||
"cost_and_data_boundary_review_required=true"
|
||||
],
|
||||
"generated_at": "2026-06-25T03:56:51.751955+00:00",
|
||||
"high_priority_review_queue": [],
|
||||
"integration_candidates": [
|
||||
{
|
||||
"awoooi_role": "協調者、handoff、tool tracing、guardrail 候選",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "OpenAI Agents SDK",
|
||||
"integration_surface": "agent_handoff_tracing_guardrails",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "agent_frameworks",
|
||||
"technology_id": "openai_agents_sdk"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "NemoTron replay / evaluator / synthetic data gate",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "NVIDIA Nemotron + NeMo Agent Toolkit",
|
||||
"integration_surface": "offline_replay_evaluator_smoke_gate",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "agent_frameworks",
|
||||
"technology_id": "nvidia_nemotron_nemo"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "事件處理與可恢復 workflow kernel 候選",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "LangGraph",
|
||||
"integration_surface": "durable_workflow_human_in_loop",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "agent_frameworks",
|
||||
"technology_id": "langgraph_runtime"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "Gemini/Vertex agent stack watch-only 候選",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "Google Agent Development Kit",
|
||||
"integration_surface": "gemini_enterprise_agent_stack",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "agent_frameworks",
|
||||
"technology_id": "google_adk_stack"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "MCP/A2A enterprise workflow watch-only 候選",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "Microsoft Agent Framework",
|
||||
"integration_surface": "enterprise_mcp_a2a_workflow",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "agent_frameworks",
|
||||
"technology_id": "microsoft_agent_framework"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "快速 prototype / non-production 評估候選",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "CrewAI Flows + Crews",
|
||||
"integration_surface": "multi_agent_prototype",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "agent_frameworks",
|
||||
"technology_id": "crewai_flows"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "read-only tool registry / MCP adapter 候選",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "Model Context Protocol SDK",
|
||||
"integration_surface": "tool_registry_interoperability",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "mcp_and_a2a",
|
||||
"technology_id": "modelcontextprotocol_sdk"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "跨 Agent 溝通協定 watch-only 候選",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "Agent2Agent Protocol",
|
||||
"integration_surface": "agent_to_agent_interop",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "mcp_and_a2a",
|
||||
"technology_id": "a2a_protocol"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "模型能力、成本與 routing scorecard 來源",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "OpenAI Model Platform",
|
||||
"integration_surface": "model_capability_cost_routing",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "model_providers",
|
||||
"technology_id": "openai_model_platform"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "Claude model / coding agent / remediation watch source",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "Anthropic Claude Platform",
|
||||
"integration_surface": "model_capability_cost_routing",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "model_providers",
|
||||
"technology_id": "anthropic_claude_platform"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "Gemini model capability / cost watch source",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "Google Gemini Platform",
|
||||
"integration_surface": "model_capability_cost_routing",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "model_providers",
|
||||
"technology_id": "google_gemini_platform"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "RAG ingestion / indexing / connector watch source",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "LlamaIndex",
|
||||
"integration_surface": "rag_indexing_connectors",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "rag_and_vector",
|
||||
"technology_id": "llamaindex_rag"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "LLM app integration connector watch source",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "LangChain",
|
||||
"integration_surface": "llm_app_runtime_connectors",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "rag_and_vector",
|
||||
"technology_id": "langchain_runtime"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "現有 Postgres/pgvector 能力與版本 freshness 來源",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "pgvector",
|
||||
"integration_surface": "postgres_vector_index",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "rag_and_vector",
|
||||
"technology_id": "pgvector_vector_store"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "專用 vector DB 候選,只能 sandbox 評估",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "Qdrant",
|
||||
"integration_surface": "dedicated_vector_database",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "rag_and_vector",
|
||||
"technology_id": "qdrant_vector_store"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "本機 / sandbox vector store 候選",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "ChromaDB",
|
||||
"integration_surface": "local_vector_database",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "rag_and_vector",
|
||||
"technology_id": "chromadb_vector_store"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "RAG / LLM app evaluation metrics 候選",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "Ragas",
|
||||
"integration_surface": "rag_eval_metrics",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "evaluation_and_observability",
|
||||
"technology_id": "ragas_eval"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "LLM trace / prompt / eval observability 候選",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "Langfuse",
|
||||
"integration_surface": "llm_observability_tracing",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "evaluation_and_observability",
|
||||
"technology_id": "langfuse_observability"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "自託管模型 serving 能力與版本 freshness 來源",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "Hugging Face Text Generation Inference",
|
||||
"integration_surface": "self_hosted_model_serving",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "model_serving",
|
||||
"technology_id": "huggingface_tgi"
|
||||
},
|
||||
{
|
||||
"awoooi_role": "自託管 LLM inference 候選,需 GPU/成本/安全 gate",
|
||||
"changed": false,
|
||||
"decision": "watch_only_no_change",
|
||||
"display_name": "vLLM",
|
||||
"integration_surface": "self_hosted_llm_inference",
|
||||
"recommended_actions": [
|
||||
"keep_watch_only_status"
|
||||
],
|
||||
"technology_area": "model_serving",
|
||||
"technology_id": "vllm_serving"
|
||||
}
|
||||
],
|
||||
"policy": {
|
||||
"host_write_approved": false,
|
||||
"model_provider_switch_approved": false,
|
||||
"openclaw_replacement_approved": false,
|
||||
"paid_api_calls_approved": false,
|
||||
"production_routing_approved": false,
|
||||
"raw_chat_history_synced": false,
|
||||
"read_only": true,
|
||||
"sdk_installation_approved": false,
|
||||
"telegram_send_approved": false
|
||||
},
|
||||
"priority_workplan": [
|
||||
{
|
||||
"automation_mode": "agent_auto_read_only",
|
||||
"done_definition": "API、snapshot、Markdown、schema、測試與 production readback 都能顯示技術領域、來源與 Gate。",
|
||||
"order": 1,
|
||||
"priority": "P0",
|
||||
"work_item": "AI 技術雷達 primary source 監控產品化"
|
||||
},
|
||||
{
|
||||
"automation_mode": "agent_auto_schedule_read_only",
|
||||
"done_definition": "每 6 小時可跑 watch;失敗來源會進日報,不會自動整合。",
|
||||
"order": 2,
|
||||
"priority": "P0",
|
||||
"work_item": "近即時版本 / release / docs 變更偵測"
|
||||
},
|
||||
{
|
||||
"automation_mode": "agent_auto_read_model_human_review_for_write",
|
||||
"done_definition": "每個 Agent 的角色、輸出、學習寫回與限制都能被前端讀回。",
|
||||
"order": 3,
|
||||
"priority": "P0",
|
||||
"work_item": "OpenClaw / Hermes / NemoTron / MarketRadar 專業分工與成長紀錄"
|
||||
},
|
||||
{
|
||||
"automation_mode": "agent_propose_owner_review",
|
||||
"done_definition": "高優先級變更先進 scorecard,再進 no-cost/no-write sandbox 或 replay 計畫。",
|
||||
"order": 4,
|
||||
"priority": "P1",
|
||||
"work_item": "AI 技術 scorecard 與 sandbox / replay 優先級"
|
||||
},
|
||||
{
|
||||
"automation_mode": "blocked_until_telegram_send_gate",
|
||||
"done_definition": "低中風險只告警回報;高風險需 owner approval 後才可發送或執行。",
|
||||
"order": 5,
|
||||
"priority": "P1",
|
||||
"work_item": "Telegram Bot 報告與高風險審核橋接"
|
||||
},
|
||||
{
|
||||
"automation_mode": "agent_auto_discover_human_classify",
|
||||
"done_definition": "GitHub topic / package registry / 官方 blog 可提出候選,但加入正式 watchlist 前需審核。",
|
||||
"order": 6,
|
||||
"priority": "P2",
|
||||
"work_item": "新 AI 技術探索與 watchlist 擴充"
|
||||
}
|
||||
],
|
||||
"professional_agent_roles": [
|
||||
{
|
||||
"agent": "OpenClaw",
|
||||
"auto_scope": "維持現有 production baseline、讀取 replay / shadow 評分、拒絕無證據替換",
|
||||
"professional_role": "生產決策仲裁者、風險分級與最後 policy guard",
|
||||
"review_boundary": "任何取代、降級、生產路由切換都必須通過 replay / shadow / canary 與人工批准。"
|
||||
},
|
||||
{
|
||||
"agent": "NemoTron",
|
||||
"auto_scope": "只讀 request pack、比對候選輸出、產生 replay scorecard 草稿",
|
||||
"professional_role": "離線回放評估者、模型能力比較、合約輸出 smoke gate",
|
||||
"review_boundary": "不得自行呼叫外部 NIM/API、不得讀 labels 作答、不得進生產路由。"
|
||||
},
|
||||
{
|
||||
"agent": "Hermes",
|
||||
"auto_scope": "整理 primary source 摘要、建立 no-send 日週月報、準備人審包",
|
||||
"professional_role": "知識管理、RAG 整理、報告草稿與長期技能庫維護",
|
||||
"review_boundary": "不得同步 raw chat history、不得保存 secret、不得直接發 Telegram live report。"
|
||||
},
|
||||
{
|
||||
"agent": "MarketRadar",
|
||||
"auto_scope": "每 6 小時只讀 primary sources、產生 freshness / review queue",
|
||||
"professional_role": "AI 技術市場雷達、版本監控、來源失敗偵測",
|
||||
"review_boundary": "不得自動新增 SDK、不得自動修改 provider route 或 workflow 行為。"
|
||||
},
|
||||
{
|
||||
"agent": "Critic / Reviewer",
|
||||
"auto_scope": "檢查政策旗標、來源可靠性、成本與資安風險",
|
||||
"professional_role": "獨立審核、反例檢查、整合風險評分",
|
||||
"review_boundary": "只能輸出 blocked / candidate / owner_review,不得直接執行寫入。"
|
||||
}
|
||||
],
|
||||
"report_contract": {
|
||||
"agent_auto_allowed_for": [
|
||||
"官方來源只讀監控",
|
||||
"版本與文件 hash 比對",
|
||||
"審核佇列分類",
|
||||
"繁中 no-send 報告草稿",
|
||||
"離線 replay fixture 準備",
|
||||
"低風險文件與讀回 snapshot 更新提案"
|
||||
],
|
||||
"api_endpoint": "/api/v1/agents/ai-technology-radar-readback",
|
||||
"daily": "每日彙整變更、來源失敗、審核佇列與可自動處理項目。",
|
||||
"frontend_target": "/zh-TW/governance?tab=agent-market",
|
||||
"human_review_required_for": [
|
||||
"新 SDK / package / MCP server 安裝",
|
||||
"付費 API 或 token 上限變更",
|
||||
"模型 provider / 生產路由切換",
|
||||
"Telegram Bot 即時發送或審批按鈕策略變更",
|
||||
"主機、K8s、workflow、Nginx、secret 或資料層寫入",
|
||||
"OpenClaw 生產決策核心替換、拆分或降級"
|
||||
],
|
||||
"monthly": "每月進行策略 review,決定納入 roadmap、維持 watch-only 或移出監控。",
|
||||
"near_real_time": "每 6 小時讀取 primary sources,偵測主流 AI 技術版本、文件與 release 變更。",
|
||||
"schedule_cron_utc": "0 */6 * * *",
|
||||
"schedule_enabled": true,
|
||||
"schedule_workflow": ".gitea/workflows/ai-technology-watch.yaml",
|
||||
"weekly": "每週做技術 scorecard,決定 sandbox / replay / adapter design 優先級。"
|
||||
},
|
||||
"rolling_update_controls": [
|
||||
{
|
||||
"agent_auto_action": "讀取官方文件、PyPI、npm、GitHub release、primary source hash。",
|
||||
"cadence": "每 6 小時",
|
||||
"cadence_source": "每 6 小時執行一次只讀 primary-source 檢查,偵測主流 AI 技術版本、文件與 release 變更。",
|
||||
"gate": "read_only_only",
|
||||
"output": "AI 技術 watch report、來源失敗清單、review queue。"
|
||||
},
|
||||
{
|
||||
"agent_auto_action": "依 business applicability、成本、依賴、資安、AWOOOI fit 分類。",
|
||||
"cadence": "每日",
|
||||
"cadence_source": "每日彙整變更技術,依商業適用性、依賴風險、成本風險與資安風險分組。",
|
||||
"gate": "no_send_report_until_delivery_gate",
|
||||
"output": "日報摘要與中低風險自動處理建議。"
|
||||
},
|
||||
{
|
||||
"agent_auto_action": "刷新 scorecard,決定 sandbox / replay / adapter design 優先級。",
|
||||
"cadence": "每週",
|
||||
"cadence_source": "每週刷新技術 scorecard,判斷是否值得進入 sandbox、offline replay 或 adapter design。",
|
||||
"gate": "scorecard_required_before_replay",
|
||||
"output": "週報、優先序、候選整合審查包。"
|
||||
},
|
||||
{
|
||||
"agent_auto_action": "彙整趨勢,提出 roadmap / watch-only / retire 建議。",
|
||||
"cadence": "每月",
|
||||
"cadence_source": "每月策略檢討,決定技術應納入 roadmap、維持 watch-only 或從監控清單移除。",
|
||||
"gate": "human_review_for_strategy_or_production_change",
|
||||
"output": "月報與策略審核包。"
|
||||
}
|
||||
],
|
||||
"schema_version": "ai_technology_radar_readback_v1",
|
||||
"source_scope": {
|
||||
"agent_market_radar_readback": "docs/operations/ai-agent-market-radar-readback.snapshot.json",
|
||||
"gitea_main_evidence_basis_commit": "683428bd",
|
||||
"scope_note": "本讀回只整合已提交的只讀來源監控、AI Agent 市場雷達與治理 gate;不包含 raw chat history、secret、session 或本機工作視窗內容。",
|
||||
"technology_source_registry": "docs/ai/ai-technology-watch-sources.v1.json",
|
||||
"technology_watch_report": "docs/evaluations/ai_technology_watch_report_2026-06-25.json"
|
||||
},
|
||||
"summary": {
|
||||
"ai_technology_radar_completion_percent": 100.0,
|
||||
"changed_technologies": 0,
|
||||
"high_priority_count": 14,
|
||||
"overall_completion_percent": 42.2,
|
||||
"review_queue_count": 0,
|
||||
"rolling_update_status": "near_real_time_watch_ready_integration_gated",
|
||||
"source_count": 47,
|
||||
"source_failures": 0,
|
||||
"technology_area_count": 6,
|
||||
"technology_count": 20
|
||||
},
|
||||
"technology_area_counts": {
|
||||
"agent_frameworks": 6,
|
||||
"evaluation_and_observability": 2,
|
||||
"mcp_and_a2a": 2,
|
||||
"model_providers": 3,
|
||||
"model_serving": 2,
|
||||
"rag_and_vector": 5
|
||||
},
|
||||
"technology_domains": [
|
||||
{
|
||||
"changed_count": 0,
|
||||
"high_priority_count": 5,
|
||||
"representative_technologies": [
|
||||
"OpenAI Agents SDK",
|
||||
"NVIDIA Nemotron + NeMo Agent Toolkit",
|
||||
"LangGraph",
|
||||
"Google Agent Development Kit"
|
||||
],
|
||||
"technology_area": "agent_frameworks",
|
||||
"technology_count": 6
|
||||
},
|
||||
{
|
||||
"changed_count": 0,
|
||||
"high_priority_count": 2,
|
||||
"representative_technologies": [
|
||||
"Ragas",
|
||||
"Langfuse"
|
||||
],
|
||||
"technology_area": "evaluation_and_observability",
|
||||
"technology_count": 2
|
||||
},
|
||||
{
|
||||
"changed_count": 0,
|
||||
"high_priority_count": 2,
|
||||
"representative_technologies": [
|
||||
"Model Context Protocol SDK",
|
||||
"Agent2Agent Protocol"
|
||||
],
|
||||
"technology_area": "mcp_and_a2a",
|
||||
"technology_count": 2
|
||||
},
|
||||
{
|
||||
"changed_count": 0,
|
||||
"high_priority_count": 3,
|
||||
"representative_technologies": [
|
||||
"OpenAI Model Platform",
|
||||
"Anthropic Claude Platform",
|
||||
"Google Gemini Platform"
|
||||
],
|
||||
"technology_area": "model_providers",
|
||||
"technology_count": 3
|
||||
},
|
||||
{
|
||||
"changed_count": 0,
|
||||
"high_priority_count": 0,
|
||||
"representative_technologies": [
|
||||
"Hugging Face Text Generation Inference",
|
||||
"vLLM"
|
||||
],
|
||||
"technology_area": "model_serving",
|
||||
"technology_count": 2
|
||||
},
|
||||
{
|
||||
"changed_count": 0,
|
||||
"high_priority_count": 2,
|
||||
"representative_technologies": [
|
||||
"LlamaIndex",
|
||||
"LangChain",
|
||||
"pgvector",
|
||||
"Qdrant"
|
||||
],
|
||||
"technology_area": "rag_and_vector",
|
||||
"technology_count": 5
|
||||
}
|
||||
]
|
||||
}
|
||||
127
docs/schemas/ai_technology_radar_readback_v1.schema.json
Normal file
127
docs/schemas/ai_technology_radar_readback_v1.schema.json
Normal file
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "urn:awoooi:ai-technology-radar-readback-v1",
|
||||
"title": "AWOOOI AI 技術雷達產品讀回快照 (v1)",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"schema_version",
|
||||
"generated_at",
|
||||
"source_scope",
|
||||
"summary",
|
||||
"policy",
|
||||
"technology_area_counts",
|
||||
"technology_domains",
|
||||
"high_priority_review_queue",
|
||||
"professional_agent_roles",
|
||||
"rolling_update_controls",
|
||||
"integration_candidates",
|
||||
"priority_workplan",
|
||||
"blocked_gates",
|
||||
"report_contract"
|
||||
],
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"type": "string",
|
||||
"const": "ai_technology_radar_readback_v1"
|
||||
},
|
||||
"generated_at": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"source_scope": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"summary": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"overall_completion_percent",
|
||||
"ai_technology_radar_completion_percent",
|
||||
"technology_count",
|
||||
"technology_area_count",
|
||||
"source_count",
|
||||
"changed_technologies",
|
||||
"review_queue_count",
|
||||
"source_failures",
|
||||
"high_priority_count",
|
||||
"rolling_update_status"
|
||||
],
|
||||
"properties": {
|
||||
"overall_completion_percent": {"type": "number"},
|
||||
"ai_technology_radar_completion_percent": {"type": "number"},
|
||||
"technology_count": {"type": "integer", "minimum": 0},
|
||||
"technology_area_count": {"type": "integer", "minimum": 0},
|
||||
"source_count": {"type": "integer", "minimum": 0},
|
||||
"changed_technologies": {"type": "integer", "minimum": 0},
|
||||
"review_queue_count": {"type": "integer", "minimum": 0},
|
||||
"source_failures": {"type": "integer", "minimum": 0},
|
||||
"high_priority_count": {"type": "integer", "minimum": 0},
|
||||
"rolling_update_status": {"type": "string", "minLength": 1}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"policy": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"read_only",
|
||||
"raw_chat_history_synced",
|
||||
"sdk_installation_approved",
|
||||
"paid_api_calls_approved",
|
||||
"production_routing_approved",
|
||||
"telegram_send_approved",
|
||||
"model_provider_switch_approved",
|
||||
"host_write_approved",
|
||||
"openclaw_replacement_approved"
|
||||
],
|
||||
"properties": {
|
||||
"read_only": {"type": "boolean", "const": true},
|
||||
"raw_chat_history_synced": {"type": "boolean", "const": false},
|
||||
"sdk_installation_approved": {"type": "boolean", "const": false},
|
||||
"paid_api_calls_approved": {"type": "boolean", "const": false},
|
||||
"production_routing_approved": {"type": "boolean", "const": false},
|
||||
"telegram_send_approved": {"type": "boolean", "const": false},
|
||||
"model_provider_switch_approved": {"type": "boolean", "const": false},
|
||||
"host_write_approved": {"type": "boolean", "const": false},
|
||||
"openclaw_replacement_approved": {"type": "boolean", "const": false}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"technology_area_counts": {
|
||||
"type": "object",
|
||||
"additionalProperties": {"type": "integer", "minimum": 0}
|
||||
},
|
||||
"technology_domains": {
|
||||
"type": "array",
|
||||
"items": {"type": "object", "additionalProperties": true}
|
||||
},
|
||||
"high_priority_review_queue": {
|
||||
"type": "array",
|
||||
"items": {"type": "object", "additionalProperties": true}
|
||||
},
|
||||
"professional_agent_roles": {
|
||||
"type": "array",
|
||||
"items": {"type": "object", "additionalProperties": true}
|
||||
},
|
||||
"rolling_update_controls": {
|
||||
"type": "array",
|
||||
"items": {"type": "object", "additionalProperties": true}
|
||||
},
|
||||
"integration_candidates": {
|
||||
"type": "array",
|
||||
"items": {"type": "object", "additionalProperties": true}
|
||||
},
|
||||
"priority_workplan": {
|
||||
"type": "array",
|
||||
"items": {"type": "object", "additionalProperties": true}
|
||||
},
|
||||
"blocked_gates": {
|
||||
"type": "array",
|
||||
"items": {"type": "string", "minLength": 1}
|
||||
},
|
||||
"report_contract": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
157
docs/schemas/ai_technology_watch_report_v1.schema.json
Normal file
157
docs/schemas/ai_technology_watch_report_v1.schema.json
Normal file
@@ -0,0 +1,157 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "urn:awoooi:ai-technology-watch-report-v1",
|
||||
"title": "AWOOOI AI 技術雷達來源監控報告 (v1)",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"schema_version",
|
||||
"generated_at",
|
||||
"mode",
|
||||
"registry",
|
||||
"cadence",
|
||||
"policy",
|
||||
"summary",
|
||||
"technology_area_counts",
|
||||
"technologies",
|
||||
"review_queue",
|
||||
"new_technology_discovery",
|
||||
"failures"
|
||||
],
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"type": "string",
|
||||
"const": "ai_technology_watch_report_v1"
|
||||
},
|
||||
"generated_at": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"mode": {
|
||||
"type": "string",
|
||||
"enum": ["offline", "live"]
|
||||
},
|
||||
"registry": {
|
||||
"type": "object",
|
||||
"required": ["path", "schema_version", "updated_at"],
|
||||
"properties": {
|
||||
"path": {"type": "string"},
|
||||
"schema_version": {"type": "string"},
|
||||
"updated_at": {"type": "string"}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"cadence": {
|
||||
"type": "object",
|
||||
"additionalProperties": true
|
||||
},
|
||||
"policy": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"read_only",
|
||||
"sdk_installation_approved",
|
||||
"paid_api_calls_approved",
|
||||
"production_routing_approved",
|
||||
"telegram_send_approved",
|
||||
"model_provider_switch_approved",
|
||||
"host_write_approved"
|
||||
],
|
||||
"properties": {
|
||||
"read_only": {"type": "boolean", "const": true},
|
||||
"sdk_installation_approved": {"type": "boolean", "const": false},
|
||||
"paid_api_calls_approved": {"type": "boolean", "const": false},
|
||||
"production_routing_approved": {"type": "boolean", "const": false},
|
||||
"telegram_send_approved": {"type": "boolean", "const": false},
|
||||
"model_provider_switch_approved": {"type": "boolean", "const": false},
|
||||
"host_write_approved": {"type": "boolean", "const": false}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"summary": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"technology_count",
|
||||
"technology_area_count",
|
||||
"source_count",
|
||||
"changed_technologies",
|
||||
"watch_only_technologies",
|
||||
"review_queue_count",
|
||||
"source_failure_count",
|
||||
"high_priority_count"
|
||||
],
|
||||
"properties": {
|
||||
"technology_count": {"type": "integer", "minimum": 0},
|
||||
"technology_area_count": {"type": "integer", "minimum": 0},
|
||||
"source_count": {"type": "integer", "minimum": 0},
|
||||
"changed_technologies": {"type": "integer", "minimum": 0},
|
||||
"watch_only_technologies": {"type": "integer", "minimum": 0},
|
||||
"review_queue_count": {"type": "integer", "minimum": 0},
|
||||
"source_failure_count": {"type": "integer", "minimum": 0},
|
||||
"high_priority_count": {"type": "integer", "minimum": 0}
|
||||
},
|
||||
"additionalProperties": true
|
||||
},
|
||||
"technology_area_counts": {
|
||||
"type": "object",
|
||||
"additionalProperties": {"type": "integer", "minimum": 0}
|
||||
},
|
||||
"technologies": {
|
||||
"type": "array",
|
||||
"items": {"$ref": "#/$defs/technology"}
|
||||
},
|
||||
"review_queue": {
|
||||
"type": "array",
|
||||
"items": {"type": "object", "additionalProperties": true}
|
||||
},
|
||||
"new_technology_discovery": {
|
||||
"type": "array",
|
||||
"items": {"type": "object", "additionalProperties": true}
|
||||
},
|
||||
"failures": {
|
||||
"type": "array",
|
||||
"items": {"type": "string"}
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"technology": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"technology_id",
|
||||
"display_name",
|
||||
"technology_area",
|
||||
"integration_surface",
|
||||
"awoooi_role",
|
||||
"evaluation_priority",
|
||||
"requires_cost_approval",
|
||||
"requires_dependency_approval",
|
||||
"requires_security_review",
|
||||
"sources",
|
||||
"changed",
|
||||
"decision",
|
||||
"recommended_actions"
|
||||
],
|
||||
"properties": {
|
||||
"technology_id": {"type": "string", "minLength": 1},
|
||||
"display_name": {"type": "string", "minLength": 1},
|
||||
"technology_area": {"type": "string", "minLength": 1},
|
||||
"integration_surface": {"type": "string"},
|
||||
"awoooi_role": {"type": "string"},
|
||||
"evaluation_priority": {"type": "string"},
|
||||
"requires_cost_approval": {"type": "boolean"},
|
||||
"requires_dependency_approval": {"type": "boolean"},
|
||||
"requires_security_review": {"type": "boolean"},
|
||||
"sources": {
|
||||
"type": "array",
|
||||
"items": {"type": "object", "additionalProperties": true}
|
||||
},
|
||||
"changed": {"type": "boolean"},
|
||||
"decision": {"type": "string"},
|
||||
"recommended_actions": {
|
||||
"type": "array",
|
||||
"items": {"type": "string"}
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
Reference in New Issue
Block a user