2.3 KiB
2.3 KiB
运行时契约(环境变量与目录)
本文档定义技能进程建议依赖的外部条件,便于不同 Claw 宿主统一接入。业务技能应读取环境变量,而不是在代码里写死路径或用户名。
必需程度说明
- 强烈建议:生产环境由宿主注入;技能应对缺失给出明确错误提示,避免静默写到意外目录。
- 可选:没有时技能仍可部分运行(例如只读
health)。
变量一览
CLAW_DATA_ROOT(强烈建议)
用户数据根。多个技能、多个用户的数据都在此根之下分区。
- 典型场景:组织策略指定的盘符路径或
~/.your-org-data。 - 未设置时:技能不应猜测网络盘;开发机 fallback 仅限
optional/paths_snippet.py中说明的情形。
CLAW_USER_ID(强烈建议)
当前会话所代表的用户或工作空间 ID(字符串)。与数据隔离强相关。
- 用于拼接:
{CLAW_DATA_ROOT}/{CLAW_USER_ID}/{skill_slug}/ - 未设置时:可用匿名占位(如
_anon)仅用于开发,生产应显式注入。
CLAW_SKILLS_ROOT(可选)
多个技能以并列目录安装时的根路径,例如:
{CLAW_SKILLS_ROOT}/skill-a/scripts/...
{CLAW_SKILLS_ROOT}/skill-b/scripts/...
编排型技能若需要通过子进程调用兄弟技能,应基于该变量定位脚本,避免写死绝对路径。
本技能推荐的数据目录
{CLAW_DATA_ROOT}/{CLAW_USER_ID}/{skill_slug}/
skill_slug:与SKILL.md内metadata.skill.slug一致。- 在此目录下可放置 SQLite 文件、缓存、上传临时文件等;不要向版本库提交该目录内容。
标准输出约定(建议)
为便于宿主与自动化解析,建议:
- 致命错误:单行前缀
ERROR:,例如ERROR:MISSING_ENV_CLAW_DATA_ROOT - 成功:人类可读一行或多行;若有机读需求,可用
JSON单行输出并在SKILL.md中说明格式。
与具体宿主的关系
若某宿主文档规定了另一套变量名,应在宿主启动技能子进程时注入为本文档中的 CLAW_* 名称,或在技能内使用一层极薄的 getenv 封装(见 optional/paths_snippet.py 注释示例)。不要在业务模块中散落多套变量名判断。