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
564 lines
19 KiB
JSON
564 lines
19 KiB
JSON
{
|
||
"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"
|
||
}
|
||
]
|
||
}
|