#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ KB Workflow Skill Main Entry 当用户发送"添加到知识库 + 链接"时触发。 此入口只负责: 1. 确认触发条件 2. 引导主代理读取 SKILL.md 3. 让主代理按照 SKILL.md 的指导执行完整 workflow """ import re import sys # 触发词模式 TRIGGER_PATTERNS = [ r'添加到知识库\s+(https?://[^\s]+)', r'保存到知识库\s+(https?://[^\s]+)', ] def extract_link(message: str) -> str | None: """从消息中提取链接""" for pattern in TRIGGER_PATTERNS: match = re.search(pattern, message) if match: return match.group(1) return None def main(message: str) -> Dict[str, Any]: """ 主入口函数 此函数返回指导信息,让主代理知道如何执行 workflow。 实际的 workflow 逻辑在 SKILL.md 中定义。 """ result = { "success": False, "url": None, "instructions": None, "error": None } try: # 1. 提取链接 url = extract_link(message) if not url: result["error"] = "未找到链接" return result result["url"] = url # 2. 生成指导信息 result["success"] = True result["instructions"] = { "action": "execute_workflow", "url": url, "workflow_prompt": f"""请按照 SKILL.md 中的指导执行完整的知识库 workflow: 1. 查重 - 检查知识库是否已存在此内容 2. 调用 kb-link-parser 解析 URL 3. 根据平台调用对应元数据技能 4. 调用内容下载技能 5. 调用 OCR 处理(30分钟超时) 6. 调用深度分析 7. 归档到 archive/ 目录 8. Git commit 9. 汇报完成 当前处理的 URL: {url} 开始执行 workflow。""" } except Exception as e: result["error"] = str(e) return result if __name__ == "__main__": # 从参数获取消息 if len(sys.argv) > 1: message = sys.argv[1] else: message = sys.stdin.read() if not message: print("请提供消息内容") sys.exit(1) result = main(message) print(result)