手搓 Claw 系列 (3):全能感知 —— 多模态与动态技能树
[!TIP] 目标:通过 CLI 传参实现多模态(视觉/文件)感知,并构建动态加载的插件式技能系统。 1. 让 CLI “看见”世界 多模态能力不一定非要复杂的 SDK。在 VISAGENT 中,我们利用 gemini CLI 对文件路径的天然支持(@path),在 RoleEngine 层实现了感知接入: def _do_raw_invoke(self, message, files=None): # 构造多模态后缀 mm_suffix = "" if files: mm_suffix = "\n" + "\n".join([f"@{f}" for f in files]) # 拼接到最终 Prompt full_input = f"{message}{mm_suffix}" # ... 执行 subprocess 实战经验:为了处理复杂的视觉任务,我们专门封装了 vision_expert 技能,通过 DEEP 模式引导 AI 进行 Chain-of-Thought 推演,从而实现对截图、UI 组件的精确识别。 2. 动态技能树:SkillHandler 手搓系统的灵活性在于 插件化。我们设计了 SkillHandler 模块,它能自动发现 skills/ 目录下的所有能力: 自动化发现:启动时扫描目录。 Manifest 规范:每个技能自带 manifest.json,定义其功能描述与 权限主权 (Sovereignty)。 Sovereignty-Aware:在 Prompt 注入时,系统会明确告知 AI 它被授权访问的 FS 路径和网络域,实现安全约束。 3. 灵活的 Hooks 机制 为了在 AI 调用前后插入逻辑,我们实现了一组 Python Hooks: ...