MCP-सक्षम मल्टी-एजेंट फ्रेमवर्क, जो डिक्लेरेटिव YAML-आधारित एजेंटिक वर्कफ़्लो के लिए है, और CodeQL एकीकरण के साथ AI-सहायित कोड ऑडिटिंग, भेद्यता ट्राइएज, और सुरक्षा अनुसंधान में उपयोग किया जाता है।
Security Lab Taskflow Agent एक MCP-सक्षम मल्टी-Agent फ्रेमवर्क है जो डिक्लेरेटिव, YAML-आधारित एजेंटिक वर्कफ़्लो के लिए है।
यह OpenAI Agents SDK के ऊपर बनाया गया है, यह ग्रामर वैलिडेशन के लिए Pydantic और टेम्पलेट रेंडरिंग के लिए Jinja2 का उपयोग करता है।
Taskflow Agent एक GitHub Workflow-जैसे YAML आधारित ग्रामर का लाभ उठाकर Agents के एक सेट का उपयोग करके कई कार्यों को पूरा करता है।
इसका प्राथमिक मूल्य प्रस्ताव एक CLI टूल के रूप में है जो उपयोगकर्ताओं को बिना कोई कोड लिखे एजेंटिक वर्कफ़्लो को शीघ्रता से परिभाषित और स्क्रिप्ट करने की अनुमति देता है।
Agents को personalities के माध्यम से परिभाषित किया जाता है, जो tools के एक सेट के साथ पूरा करने के लिए एक task प्राप्त करते हैं।
Agents तथाकथित taskflows के माध्यम से कार्यों के अनुक्रमों को पूरा करने के लिए सहयोग कर सकते हैं।
आप taskflow ग्रामर का विस्तृत अवलोकन यहाँ और उदाहरण taskflows यहाँ पा सकते हैं।
┌─────────────────────────────────────────────────────┐
│ CLI (cli.py) │
│ Typer-based entry point: -p, -t, -l, -g, -m, --resume, --lint│
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ Runner (runner.py) │
│ Taskflow execution loop, model resolution, │
│ template rendering, session checkpointing │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ MCP Lifecycle (mcp_lifecycle.py) │
│ Server connection, cleanup, process management │
└─────────────────────┬───────────────────────────────┘
│
┌─────────────────────▼───────────────────────────────┐
│ Agent (agent.py) │
│ TaskAgent wrapper, hooks, OpenAI Agents SDK bridge │
└─────────────────────────────────────────────────────┘
Supporting modules:
models.py — Pydantic v2 grammar models (validation)
session.py — Task-level checkpoint / resume
available_tools.py — YAML resource loader with caching
template_utils.py — Jinja2 template environment
mcp_utils.py — MCP client parameter resolution
mcp_transport.py — MCP transport implementations (stdio, streamable)
mcp_prompt.py — System prompt construction
prompt_parser.py — Legacy prompt argument parser
capi.py — AI API endpoint and token management
path_utils.py — Platform-aware data/log directories
एजेंट Chat Completions और Responses दोनों OpenAI APIs का समर्थन करता है।
API प्रकार को वैश्विक रूप से या model_config फ़ाइल में प्रति मॉडल कॉन्फ़िगर किया जा सकता है:
seclab-taskflow-agent:
version: "1.0"
filetype: model_config
api_type: chat_completions # default for all models
models:
gpt_default: gpt-4.1
gpt_responses: gpt-5.1
model_settings:
gpt_responses:
api_type: responses # override for this model
endpoint: https://api.githubcopilot.com
token: CAPI_TOKEN # env var name containing the API key
प्रति-मॉडल model_settings में शामिल हो सकते हैं:
api_type — "chat_completions" (डिफ़ॉल्ट) या "responses"endpoint — इस मॉडल के लिए API बेस URL ओवरराइडtoken — API कुंजी वाले एनवायरनमेंट वेरिएबल का नामरनर एक सामान्य इंटरफ़ेस के पीछे तीन SDKs को चला सकता है:
openai_agents (डिफ़ॉल्ट) — OpenAI Agents Python SDK। यह
मल्टी-पर्सनैलिटी हैंडऑफ़, दोनों chat_completions और responses
api_type, temperature, parallel_tool_calls,
exclude_from_context, और stdio, SSE, तथा streamable HTTP पर MCP का समर्थन करता है।copilot_sdk — GitHub Copilot Python SDK। यह स्ट्रीमिंग,
reasoning_effort, stdio/SSE/HTTP पर MCP, और प्रति-टूल अनुमति
गेटिंग का समर्थन करता है। SDK प्रति मॉडल अपना वायर प्रोटोकॉल स्वयं चुनता है, इसलिए YAML
api_type फ़ील्ड का पालन नहीं किया जाता; मल्टी-पर्सनैलिटी हैंडऑफ़,
temperature, और parallel_tool_calls भी उपलब्ध नहीं हैं।
जो टास्कफ़्लो असमर्थित फ़ील्ड का उपयोग करते हैं, वे लोड समय पर
BackendCapabilityError के साथ विफल हो जाते हैं, जिसमें अपराधी फ़ील्ड का नाम होता है।anthropic_sdk — Anthropic Python SDK, जो नेटिव
Messages API (/v1/messages) को चलाता है। यह स्ट्रीमिंग, MCP के माध्यम से टूल कॉलिंग,
और कॉन्फ़िगर करने योग्य reasoning.effort
(low, medium, high, max) के साथ अनुकूली सोच का समर्थन करता है। हैंडऑफ़ समर्थित नहीं हैं।
CAPI के Anthropic एंडपॉइंट के साथ उपयोग के लिए डिज़ाइन किया गया; प्रमाणीकरण
Authorization: Bearer का उपयोग करता है (x-api-key नहीं)।चयन प्राथमिकता (उच्चतम से निम्नतम):
model_settings ब्लॉक में प्रति-टास्क backend: (उस एक टास्क के लिए
मॉडल-स्तरीय मान को ओवरराइड करता है; _resolve_task_model() देखें)।model_settings में प्रति-मॉडल backend: (एक ही टास्कफ़्लो में
मिश्रित बैकएंड की अनुमति देता है)।backend: फ़ील्ड
(वैश्विक डिफ़ॉल्ट)।SECLAB_TASKFLOW_BACKEND एनवायरनमेंट वेरिएबल।openai_agents।seclab-taskflow-agent:
version: "1.0"
filetype: model_config
models:
code_analysis: claude-opus-4.7
general_tasks: gpt-5.4-mini
model_settings:
code_analysis:
api_type: messages
backend: anthropic_sdk
reasoning:
effort: high
general_tasks:
api_type: responses
backend: openai_agents
Taskflow रन कार्य स्तर पर स्वचालित रूप से चेकपॉइंट किए जाते हैं। यदि कोई कार्य पुनः प्रयास समाप्त होने के बाद विफल हो जाता है, तो सत्र सहेजा जाता है और इसे फिर से शुरू किया जा सकता है:
** 🤖💾 Session saved: abc123def456
** 🤖💡 Resume with: --resume abc123def456
अंतिम सफल चेकपॉइंट से फिर से शुरू करें:
python -m seclab_taskflow_agent --resume abc123def456
The session checkpoint CLI द्वारा प्रदान किए गए --model-config मान को (यदि कोई हो) सहेजता है, इसलिए पुनः आरंभ करने पर डिफ़ॉल्ट रूप से वही मॉडल कॉन्फ़िगरेशन उपयोग होता है। पुनः आरंभ करते समय मॉडल कॉन्फ़िगरेशन को ओवरराइड करने के लिए, --model-config / -m को स्पष्ट रूप से पास करें:
python -m seclab_taskflow_agent --resume abc123def456 -m examples.model_configs.responses_api
असफल कार्यों को सत्र सहेजे जाने से पहले बढ़ते बैकऑफ़ के साथ स्वचालित रूप से 3 बार तक पुनः प्रयास किया जाता है। सत्र चेकपॉइंट्स प्लेटफ़ॉर्म-विशिष्ट एप्लिकेशन डेटा निर्देशिका में संग्रहीत किए जाते हैं।
प्रत्येक रन एक मशीन-पठनीय मैनिफ़ेस्ट उत्पन्न करता है जो यह सारांशित करता है कि क्या हुआ:
प्रति-कार्य स्थिति (ok / failed / skipped), प्रत्येक कार्य किन मॉडलों के विरुद्ध चला,
समय, और प्रत्येक कार्य द्वारा उत्पादित नामित outputs (मल्टी-मॉडल कार्यों के लिए प्रति-मॉडल फैन-इन
रिकॉर्ड सहित)। इसमें कोई एंडपॉइंट या टोकन नहीं होता है।
रन समाप्त होने या विफल होने पर मैनिफ़ेस्ट को रन-स्कोप्ड आर्टिफ़ैक्ट्स निर्देशिका में लिखा जाता है, और इसे किसी भी सत्र के लिए ID द्वारा प्रिंट किया जा सकता है:
python -m seclab_taskflow_agent --manifest abc123def456
डिफ़ॉल्ट रूप से, त्रुटियाँ संक्षिप्त एक-पंक्ति संदेशों के रूप में दिखाई जाती हैं। पूर्ण ट्रेसबैक के लिए --debug का उपयोग करें (या
TASK_AGENT_DEBUG=1 सेट करें):