Capability Runtime
头文件:claw_cap.h
claw_cap 是 Capability 运行时:所有面向「可被调用的一段能力」——无论是给模型当 tool、给控制台当 cap call、还是被 Event Router 直接 call_cap——都先登记成带元数据的描述符,再经统一入口执行。
Capability 描述符
Section titled “Capability 描述符”claw_cap_descriptor_t 描述单个能力,核心字段包括:
id/name:标识与展示名(调用时通常用 name 或 id,以实现为准)。family:逻辑分组(列表输出时会带上)。description、input_schema_json:给人和给模型看的说明与参数 schema。kind:CALLABLE、EVENT_SOURCE、HYBRID等,表达该能力是否以调用为主、是否会产事件、或两者兼有。cap_flags:例如是否允许被大语言模型调用(CLAW_CAP_FLAG_CALLABLE_BY_LLM)、是否支持生命周期等。init/start/stop:可选的生命周期钩子。execute:真正执行时收到 JSON 字符串输入、调用上下文claw_cap_call_context_t(含 session、channel、caller 等),输出写入调用方提供的缓冲区。
一批相关描述符可以放在 claw_cap_group_t,通过 claw_cap_register_group 注册为 Group,便于统一 start/stop 与按 group 启停。
发起 claw_cap_call 的常见路径
Section titled “发起 claw_cap_call 的常见路径”常见调用路径:
- Agent:
claw_core→ 配置的call_cap→claw_cap_call_from_core(会把claw_core_request_t映射成claw_cap_call_context_t)。 - Console:
cap call <name> <json>(见 Console 交互)。 - Event Router:规则动作
call_cap(见 数据流与自动化)。
claw_cap_call_context_t.caller 区分 SYSTEM / AGENT / CONSOLE,Capability 实现可据此区分调用方。
大语言模型可见性
Section titled “大语言模型可见性”claw_cap_build_llm_tools_json 会根据当前上下文生成工具列表;claw_cap_tools_provider 把它作为 TOOLS 类上下文交给 claw_core。
claw_cap_set_llm_visible_groups 用 group_id 白名单 限制暴露范围。
basic_demo 里默认对大语言模型暴露 cap_files、cap_skill、cap_system、cap_lua,完整结构化记忆模式还会暴露 claw_memory,
见 app_claw.c 中的 BASIC_DEMO_LLM_VISIBLE_GROUPS。
状态与运维 API
Section titled “状态与运维 API”claw_cap_list/claw_cap_list_groups:枚举能力与 group。claw_cap_enable_group/claw_cap_disable_group:按组启用或禁用。claw_cap_unregister_group/claw_cap_unregister:卸载(带超时等待活跃调用结束)。
能力(cap_*)总览 自带的 Capabilities 总览