diff --git a/pipeline_service/agent_loop_v2.py b/pipeline_service/agent_loop_v2.py index 38f6acc..5386720 100644 --- a/pipeline_service/agent_loop_v2.py +++ b/pipeline_service/agent_loop_v2.py @@ -626,6 +626,7 @@ class AgentExecutor: "run_command": self._t_run_command, # ── 通用工具集(Hermes CLI 能力子集)── "read_file": self._t_read_file, + "load_skill": self._t_load_skill, "write_file": self._t_write_file, "list_files": self._t_list_files, "search_files": self._t_search_files, @@ -793,6 +794,23 @@ class AgentExecutor: except Exception as e: return f"ERROR: {str(e)[:300]}" + async def _t_load_skill(self, sor, p, pid): + name = (p.get("name") or "").strip() + if not name: + return "FAIL: 需要技能名称" + if not self._skill_loader: + return "FAIL: 技能系统未初始化" + merged = self._skill_loader.get_merged( + pipeline_id=self.pipeline_id or "", + role=self.role or "", + project_id=self.project_id or "", + org_id=self.org_id or "", + user_id=self.user_id or "") + if name not in merged: + names = ", ".join(sorted(merged.keys())) or "(无可用技能)" + return f"FAIL: 技能 '{name}' 不存在。可用技能: {names}" + return merged[name].to_prompt_block() + async def _t_write_file(self, sor, p, pid): path = p.get("path", "") content = p.get("content", "")