Skip to main content

mas-compiler

Compile a Multi-Agent System (MAS) into a Single-Agent System (SAS) by faithful pipeline compression. Implements the 3-phase compilation from arXiv 2601.04748. Takes a MAS codebase or description as input; produces a compiled SKILL.md with sequential [PHASE] sections and a tools/ directory. Invoke with /mas-compiler.

معلومات المصدر

المستودع
Tencent/AdaSkill
آخر نشاط في المصدر
١٤ أبريل ٢٠٢٦ في ٠٧:٤٤
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٢
التفرعات
١

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
3 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
mas-compiler
description
Compile a Multi-Agent System (MAS) into a Single-Agent System (SAS) by faithful pipeline compression. Implements the 3-phase compilation from arXiv 2601.04748. Takes a MAS codebase or description as input; produces a compiled SKILL.md with sequential [PHASE] sections and a tools/ directory. Invoke with /mas-compiler.
# MAS Compiler Implements the MAS→SAS compilation from arXiv 2601.04748 ("When Single-Agent with Skills Replace Multi-Agent Systems and When They Fail"). Input: a MAS codebase, paper, or description. Output: a compiled skill directory with `SKILL.md` + `tools/`. See `references/compilation_theory.md` for the formal definitions (ℳ, 𝒮, Φ, C1–C3). See `references/output_format.md` for the exact output template. --- ## Step 1 — Check Compilability (C1, C2, C3) Before compiling, verify all three conditions hold. Report violations clearly. **C1 — Serializable communication**: The communication graph 𝒢 admits a topological ordering. Fails if there are cycles (debate loops, circular routing, adversarial negotiation). **C2 — Shared history**: Every agent's output depends only on the shared conversation history h; no agent maintains private state or hidden objectives. **C3 — Homogeneous backbone**: All agents run on the same underlying model. If a condition fails, state which condition and why. Ask whether to proceed with an approximation (e.g., serialize a near-cyclic step) before continuing. --- ## Step 2 — Extract the Communication Graph Read the MAS source and record: For each agent aᵢ: - `name`: identifier used in the codebase - `role` ρᵢ: what this agent does (from its system prompt or role description) - `policy` ϕᵢ: the behavioral instructions governing how it operates - `tools`: any external libraries, APIs, or computation the agent calls For the communication graph 𝒢: - List all directed edges (aᵢ → aⱼ) — data flows from aᵢ to aⱼ - List N_out(aᵢ) = {aⱼ | (aᵢ, aⱼ) ∈ E} for each agent - Produce a topological ordering of agents For each edge (aᵢ → aⱼ), record the output contract: what format does aᵢ produce, and what does aⱼ expect to receive? --- ## Step 3 — Phase 1: Capability Decomposition Apply `Kᵢ = f_decomp(ρᵢ)` to each agent. For each agent aᵢ, extract its atomic capabilities κ — discrete, independently executable functions derived from its role description ρᵢ. One agent may yield 1–3 capabilities. Name each κ as a verb phrase (e.g., "decompose question", "explore schema", "generate SQL"). Produce a table: `agent → [κ₁, κ₂, ...]` for all agents. --- ## Step 4 — Phase 2: Backend Assignment Apply `ξ = f_backend(κ)` to each capability. | Condition | Backend | Action | |-----------|---------|--------| | κ requires external computation, data access, or a deterministic algorithm | External: ξ = t ∈ 𝒯 | Write a tool in `tools/` | | κ is purely cognitive (reasoning, generation, analysis) | Internal: ξ = ∅ | Embed as policy text | For each externalized capability, write a tool file in `tools/`: - One function per capability; inputs are JSON-serializable; return a flat dict - No LLM calls inside tools - All imports at top of file - Wrap body in `try/except Exception as e: return {"error": str(e)}` After each tool file, run: ```bash python -c "import sys; sys.path.insert(0, '<SKILL_DIR>'); from tools.<module> import <fn>; print('OK')" ``` --- ## Step 5 — Phase 3: Topology Internalization Apply `πκ^final = f_inject(πκ^base, N_out(aᵢ))` to each capability. For each capability κ from agent aᵢ with downstream set N_out(aᵢ): ``` πκ^final = πκ^base ⊕ ⋃_{aⱼ ∈ N_out(aᵢ)} Handover(aᵢ → aⱼ) ``` `⊕` is string concatenation. The **Handover** block appended to each section's policy specifies: - **Required output fields**: what the downstream phase needs - **Output format**: structure (e.g., list of tuples, dict with keys X and Y) - **Completion signal**: how the agent knows this phase is done This replaces explicit inter-agent message passing with implicit output format constraints embedded in each section's policy. --- ## Step 6 — Write the Compiled SKILL.md Follow the template in `references/output_format.md`. Each capability κ becomes one `[PHASE_NAME]` section. Sections are ordered by the topological sort of 𝒢. The compiled agent is instructed to execute phases in this order. Each section contains: - A `[PHASE_NAME]` header - **Role**: 1–2 sentences from ρᵢ - **Execute**: the finalized policy πκ^final (base policy + handover instruction) - **Tools** (if ξ ≠ ∅): tool name, file location, one-line description - **Handover → NEXT_PHASE**: the required output fields (omit on the final phase) --- ## Step 7 — Validate Check the compiled output: 1. One `[PHASE]` section per capability (matches the capability table from Step 3) 2. One tool file per externalized capability (from Step 4) 3. Every non-final section has a Handover block (from Step 5) 4. Sections are in topological order (matches 𝒢 from Step 2) Report what was compiled. Note any approximations made (e.g., a near-cyclic step that was serialized, a partially private agent that was treated as shared-history).
عرض على GitHub