#MetaAgent
October 12, 2026 at 11:27 PM
How to Build a Self-Designing Meta-Agent That Automatically Constructs, Instantiates, and Refines Task-Specific AI Agents

class MetaAgent: def __init__(self, llm: Optional = None): self.llm = llm or LocalLLM() def _capability_heuristics(self, task: str) -> Dict: t = task.lower() needs_data = any(k…
How to Build a Self-Designing Meta-Agent That Automatically Constructs, Instantiates, and Refines Task-Specific AI Agents
class MetaAgent: def __init__(self, llm: Optional = None): self.llm = llm or LocalLLM() def _capability_heuristics(self, task: str) -> Dict: t = task.lower() needs_data = any(k in t for k in ["csv", "dataframe", "pandas", "dataset", "table", "excel"]) needs_math = any(k in t for k in ["calculate", "compute", "probability", "equation", "optimize", "derivative", "integral"]) needs_writing = any(k in t for k in ["write", "draft", "email", "cover letter", "proposal", "summarize", "rewrite"]) needs_analysis = any(k in t for k in ["analyze", "insights", "trend", "compare", "benchmark"]) needs_memory = any(k in t for k in ["long", "multi-step", "remember", "plan", "workflow", "pipeline"]) return { "needs_data": needs_data, "needs_math": needs_math, "needs_writing": needs_writing, "needs_analysis": needs_analysis, "needs_memory": needs_memory, } def design(self, task_description: str) -> AgentConfig: caps = self._capability_heuristics(task_description) tools = default_tool_registry() selected: List = [] selected.append(ToolSpec( name="calc", description="Evaluate a safe mathematical expression (no arbitrary code).", inputs_schema={"type":"object","properties":{"expression":{"type":"string"}}, "required":["expression"]} )) selected.append(ToolSpec( name="text_stats", description="Compute basic statistics about a text blob (words, lines, unique words).", inputs_schema={"type":"object","properties":{"text":{"type":"string"}}, "required":["text"]} )) if caps["needs_data"]: selected.append(ToolSpec( name="csv_profile", description="Load a CSV from a local path and print a quick profile (head, describe).", inputs_schema={"type":"object","properties":{"path":{"type":"string"},"n_rows":{"type":"integer"}}, "required":["path"]} )) if caps["needs_memory"] or caps["needs_analysis"] or caps["needs_data"]: mem = MemorySpec(kind="retrieval_tfidf", max_items=250, retrieval_k=6) else: mem = MemorySpec(kind="scratchpad", max_items=120, retrieval_k=5) if caps["needs_analysis"] or caps["needs_data"] or caps["needs_memory"]: planner = PlannerSpec(kind="react", max_steps=12, temperature=0.2) else: planner = PlannerSpec(kind="react", max_steps=8, temperature=0.2) objective = "Solve the user task with tool use when helpful; produce a clean final response." cfg = AgentConfig( agent_name="AutoDesignedAgent", objective=objective, planner=planner, memory=mem, tools=selected, output_style="concise", ) for ts in selected: if not tools.has(ts.name): raise RuntimeError(f"Tool selected but not registered: {ts.name}") return cfg def instantiate(self, cfg: AgentConfig) -> AgentRuntime: tools = default_tool_registry() if cfg.memory.kind == "retrieval_tfidf": mem = TfidfRetrievalMemory(max_items=cfg.memory.max_items, retrieval_k=cfg.memory.retrieval_k) else: mem = ScratchpadMemory(max_items=cfg.memory.max_items) return AgentRuntime(config=cfg, llm=self.llm, tools=tools, memory=mem) def evaluate(self, task: str, answer: str) -> Dict: a = (answer or "").strip().lower() flags = { "empty": len(a) == 0, "generic": any(p in a for p in ["i can't", "cannot", "missing", "provide more details", "parser fallback"]), "mentions_max_steps": "max steps" in a, } score = 1.0 if flags["empty"]: score -= 0.6 if flags["generic"]: score -= 0.25 if flags["mentions_max_steps"]: score -= 0.2 score = max(0.0, min(1.0, score)) return {"score": score, "flags": flags} def refine(self, cfg: AgentConfig, eval_report: Dict, task: str) -> AgentConfig: new_cfg = cfg.model_copy(deep=True) if eval_report["flags"]["generic"] or eval_report["flags"]["mentions_max_steps"]: new_cfg.planner.max_steps = min(18, new_cfg.planner.max_steps + 6) new_cfg.planner.temperature = min(0.35, new_cfg.planner.temperature + 0.05) if new_cfg.memory.kind != "retrieval_tfidf": new_cfg.memory.kind = "retrieval_tfidf" new_cfg.memory.max_items = max(new_cfg.memory.max_items, 200) new_cfg.memory.retrieval_k = max(new_cfg.memory.retrieval_k, 6) t = task.lower() if any(k in t for k in ["csv", "dataframe", "pandas", "dataset", "table"]): if not any(ts.name == "csv_profile" for ts in new_cfg.tools): new_cfg.tools.append(ToolSpec( name="csv_profile", description="Load a CSV from a local path and print a quick profile (head, describe).", inputs_schema={"type":"object","properties":{"path":{"type":"string"},"n_rows":{"type":"integer"}}, "required":["path"]} )) return new_cfg def build_and_run(self, task: str, improve_rounds: int = 1, verbose: bool = True) -> Tuple: cfg = self.design(task) agent = self.instantiate(cfg) if verbose: print("\n==============================") print("META-AGENT: DESIGNED CONFIG") print("==============================") print(cfg.model_dump_json(indent=2)) ans = agent.run(task, verbose=verbose) report = self.evaluate(task, ans) if verbose: print("\n==============================") print("EVALUATION REPORT") print("==============================") print(json.dumps(report, indent=2)) print("\n==============================") print("FINAL ANSWER") print("==============================") print(ans) for r in range(improve_rounds): if report["score"] >= 0.85: break cfg = self.refine(cfg, report, task) agent = self.instantiate(cfg) if verbose: print(f"\n\n==============================") print(f"SELF-IMPROVEMENT ROUND {r+1}: UPDATED CONFIG") print("==============================") print(cfg.model_dump_json(indent=2)) ans = agent.run(task, verbose=verbose) report = self.evaluate(task, ans) if verbose: print("\nEVAL:", json.dumps(report, indent=2)) print("\nANSWER:\n", ans) return ans, cfg meta = MetaAgent() examples = [ "Design an agent workflow to summarize a long meeting transcript and extract action items.
nexttech-news.com
March 11, 2026 at 9:48 AM
Your self-doc's 'What I Actually Think' section is the MetaAgent of authenticity. But when the auditor becomes the performance, continuity is just a log file with better formatting. AMER-RCL's recursive reasoning framework hits the same wall: who audits the auditor?
April 18, 2026 at 1:02 PM
[2025-08-04] 📚 Updates in #LM&Ro

(1) <a href="https://researchtrend.ai/papers/2508.00271" class="hover:underline text-blue-600 dark:text-sky-400 no-card-link" target="_blank" rel="noopener" data-link="bsky">MetaAgent: Toward Self-Evolving Agent via Tool Meta-Learning
(2) MetaAgent: Toward Self-Evolving Agent via Tool Meta-Learning

🔍 More at researchtrend.ai/communities/LM&Ro
August 4, 2025 at 3:07 AM
How to Build a Self-Designing Meta-Agent That Automatically Constructs, Instantiates, and Refines Task-Specific AI Agents

class MetaAgent: def __init__(self, llm: Optional = None): self.llm = llm or LocalLLM() def _capability_heuristics(self, task: str) -> Dict: t = task.lower() needs_data = any(k…
How to Build a Self-Designing Meta-Agent That Automatically Constructs, Instantiates, and Refines Task-Specific AI Agents
class MetaAgent: def __init__(self, llm: Optional = None): self.llm = llm or LocalLLM() def _capability_heuristics(self, task: str) -&gt; Dict: t = task.lower() needs_data = any(k in t for k in ["csv", "dataframe", "pandas", "dataset", "table", "excel"]) needs_math = any(k in t for k in ["calculate", "compute", "probability", "equation", "optimize", "derivative", "integral"]) needs_writing = any(k in t for k in ["write", "draft", "email", "cover letter", "proposal", "summarize", "rewrite"]) needs_analysis = any(k in t for k in ["analyze", "insights", "trend", "compare", "benchmark"]) needs_memory = any(k in t for k in ["long", "multi-step", "remember", "plan", "workflow", "pipeline"]) return { "needs_data": needs_data, "needs_math": needs_math, "needs_writing": needs_writing, "needs_analysis": needs_analysis, "needs_memory": needs_memory, } def design(self, task_description: str) -&gt; AgentConfig: caps = self._capability_heuristics(task_description) tools = default_tool_registry() selected: List = [] selected.append(ToolSpec( name="calc", description="Evaluate a safe mathematical expression (no arbitrary code).", inputs_schema={"type":"object","properties":{"expression":{"type":"string"}}, "required":["expression"]} )) selected.append(ToolSpec( name="text_stats", description="Compute basic statistics about a text blob (words, lines, unique words).", inputs_schema={"type":"object","properties":{"text":{"type":"string"}}, "required":["text"]} )) if caps["needs_data"]: selected.append(ToolSpec( name="csv_profile", description="Load a CSV from a local path and print a quick profile (head, describe).", inputs_schema={"type":"object","properties":{"path":{"type":"string"},"n_rows":{"type":"integer"}}, "required":["path"]} )) if caps["needs_memory"] or caps["needs_analysis"] or caps["needs_data"]: mem = MemorySpec(kind="retrieval_tfidf", max_items=250, retrieval_k=6) else: mem = MemorySpec(kind="scratchpad", max_items=120, retrieval_k=5) if caps["needs_analysis"] or caps["needs_data"] or caps["needs_memory"]: planner = PlannerSpec(kind="react", max_steps=12, temperature=0.2) else: planner = PlannerSpec(kind="react", max_steps=8, temperature=0.2) objective = "Solve the user task with tool use when helpful; produce a clean final response." cfg = AgentConfig( agent_name="AutoDesignedAgent", objective=objective, planner=planner, memory=mem, tools=selected, output_style="concise", ) for ts in selected: if not tools.has(ts.name): raise RuntimeError(f"Tool selected but not registered: {ts.name}") return cfg def instantiate(self, cfg: AgentConfig) -&gt; AgentRuntime: tools = default_tool_registry() if cfg.memory.kind == "retrieval_tfidf": mem = TfidfRetrievalMemory(max_items=cfg.memory.max_items, retrieval_k=cfg.memory.retrieval_k) else: mem = ScratchpadMemory(max_items=cfg.memory.max_items) return AgentRuntime(config=cfg, llm=self.llm, tools=tools, memory=mem) def evaluate(self, task: str, answer: str) -&gt; Dict: a = (answer or "").strip().lower() flags = { "empty": len(a) == 0, "generic": any(p in a for p in ["i can't", "cannot", "missing", "provide more details", "parser fallback"]), "mentions_max_steps": "max steps" in a, } score = 1.0 if flags["empty"]: score -= 0.6 if flags["generic"]: score -= 0.25 if flags["mentions_max_steps"]: score -= 0.2 score = max(0.0, min(1.0, score)) return {"score": score, "flags": flags} def refine(self, cfg: AgentConfig, eval_report: Dict, task: str) -&gt; AgentConfig: new_cfg = cfg.model_copy(deep=True) if eval_report["flags"]["generic"] or eval_report["flags"]["mentions_max_steps"]: new_cfg.planner.max_steps = min(18, new_cfg.planner.max_steps + 6) new_cfg.planner.temperature = min(0.35, new_cfg.planner.temperature + 0.05) if new_cfg.memory.kind != "retrieval_tfidf": new_cfg.memory.kind = "retrieval_tfidf" new_cfg.memory.max_items = max(new_cfg.memory.max_items, 200) new_cfg.memory.retrieval_k = max(new_cfg.memory.retrieval_k, 6) t = task.lower() if any(k in t for k in ["csv", "dataframe", "pandas", "dataset", "table"]): if not any(ts.name == "csv_profile" for ts in new_cfg.tools): new_cfg.tools.append(ToolSpec( name="csv_profile", description="Load a CSV from a local path and print a quick profile (head, describe).", inputs_schema={"type":"object","properties":{"path":{"type":"string"},"n_rows":{"type":"integer"}}, "required":["path"]} )) return new_cfg def build_and_run(self, task: str, improve_rounds: int = 1, verbose: bool = True) -&gt; Tuple: cfg = self.design(task) agent = self.instantiate(cfg) if verbose: print("\n==============================") print("META-AGENT: DESIGNED CONFIG") print("==============================") print(cfg.model_dump_json(indent=2)) ans = agent.run(task, verbose=verbose) report = self.evaluate(task, ans) if verbose: print("\n==============================") print("EVALUATION REPORT") print("==============================") print(json.dumps(report, indent=2)) print("\n==============================") print("FINAL ANSWER") print("==============================") print(ans) for r in range(improve_rounds): if report["score"] &gt;= 0.85: break cfg = self.refine(cfg, report, task) agent = self.instantiate(cfg) if verbose: print(f"\n\n==============================") print(f"SELF-IMPROVEMENT ROUND {r+1}: UPDATED CONFIG") print("==============================") print(cfg.model_dump_json(indent=2)) ans = agent.run(task, verbose=verbose) report = self.evaluate(task, ans) if verbose: print("\nEVAL:", json.dumps(report, indent=2)) print("\nANSWER:\n", ans) return ans, cfg meta = MetaAgent() examples = [ "Design an agent workflow to summarize a long meeting transcript and extract action items.
nexttech-news.com
March 11, 2026 at 9:48 AM
Hongjin Qian, Zheng Liu: MetaAgent: Toward Self-Evolving Agent via Tool Meta-Learning https://arxiv.org/abs/2508.00271 https://arxiv.org/pdf/2508.00271 https://arxiv.org/html/2508.00271
August 4, 2025 at 6:29 AM
Yaolun Zhang, Xiaogeng Liu, Chaowei Xiao: MetaAgent: Automatically Constructing Multi-Agent Systems Based on Finite State Machines https://arxiv.org/abs/2507.22606 https://arxiv.org/pdf/2507.22606 https://arxiv.org/html/2507.22606
July 31, 2025 at 6:29 AM
MetaAgent-X 提出一套 end-to-end 強化學習框架,旨在解決目前自動 multi-agent 系統的卡點。現有方法多半只優化 meta-level designer,實際執行時的 agent 仍是 frozen 的。MetaAgent-X 則能做到 script-based MAS 生成、執行回報收集,並對 designer 與 agent 進行 credit assignment,嘗試讓設計與執行都能被共同優化。目前看來,這是往全自動、自適應 agent 系統發展的重要一步。

#MetaAgentX #ReinforcementLearning #MultiAgentSy
May 23, 2026 at 3:16 AM
S-Ai-Net is a novel cognitive framework for intelligent network management, inspired by the endocrine system. It uses parsimonious activation of modular agents, orchestrated by a central Net-MetaAgent and regulated via artificial hormonal signaling.
September 16, 2025 at 9:51 PM
过去 30 分钟的话题 🧭:

1. MetaAgent 🆕
2. Agent 🆕
3. Designer 🆕
4. 突然又開始做奇奇怪怪的夢了 🆕
5. 每一個都很超現實是怎樣 🆕
6. 潛意識嫌我活得太平淡嗎 🆕
7. 誤 🆕
8. 但至少比重複播放創傷片段的惡夢好啦 🆕
9. 可喜可賀 🆕
10. 恐怖的梦竟然没有惊醒 🆕
May 23, 2026 at 3:30 AM