节点手册:技能执行与技能包

适用版本:ChengOS v0.1.0+ | 最后核对:2026-08-13 | 来源:crates/cheng-nodes/src/nodes/builtin/tools

把技能当作可构建、可校验的对象,而不只是拿来运行。tools/skill 执行一个技能。 tools/write_skill_package 产出技能包,tools/validate_skill_spec 在有人尝试发布或导入之前 按包格式对其做校验 —— 先校验再分发正是要点所在,因为已发布的产物不可变更。 tools/cli_install 执行技能包声明的安装步骤。

执行技能 — tools/skill

按名称查找并执行已注册的技能.

输入

字段 类型 必填 默认值 说明
skill_name string 要执行的技能名称(唯一标识).
input_data any null 传递给工作流的输入数据(可选).
timeout_seconds integer 3600 最大等待时间(秒),默认 3600.
async_execution boolean false 如果为 true,启动工作流后立即返回,不等待完成.
env_vars object null 来自技能凭证注入节点的环境变量(可选)

输出

字段 类型 说明
status string 技能执行状态(参见 SkillOutput::status 文档了解闭枚举和前端映射)
skill_id string 匹配的技能 ID.
skill_name string 匹配的技能名称.
execution_id string 工作流执行 ID(如已启动).
outputs any 工作流输出数据
instructions string 技能使用说明(无关联工作流时返回).
next_action string 建议的下一步操作(供 LLM 参考).
error string 错误信息
missing_binaries array PATH 上未找到的必要二进制文件;安装它们或在使用它们的宿主机上运行技能.
missing_credentials array 无法解析的凭证绑定列表;渲染到凭证设置界面。
approval_outcome string 高风险技能的审批门结果
normalization_status string 规范规范规范化状态
policy_warnings array<string> 运行时策略警告
operation string 产生此输出的 Hub 操作
data any 操作特定的载荷(发现页面或状态报告)

写入技能包 — tools/write_skill_package

受限:安全地将技能包写入 skills/<name>/ 目录下,遵守管理员锁定并防止路径遍历.

输入

字段 类型 必填 默认值 说明
package object 来自 tools/validate_skill_spec 的组合验证包.优先将 Validate.validated_package 连接到单个端口.
skill_name string "" 稳定的技能 slug.接受普通字符串或 JSON 字符串形式 {“skill_name”: “…”}(生成器提示形状).
files array<object> 要写入的文件负载.接受结构化数组或相同数组的 JSON 字符串,因此可直接连接到返回 JSON 文本的 AI/LLM 响应.
force_admin_override boolean false 调用方必须在获得明确管理员同意后才能设置此参数,以覆盖锁定技能.
workspace_id string null 导入技能的所属工作区。设置后,写入器通过 SKILL.md 导入元数据将技能标记为该工作区私有。通常从执行上下文解析而非直接提供。
source_snapshot object null 来自 tools/fetch_repository 的不透明源快照工件引用。原样转发;切勿重建、枚举或省略源字节。

输出

字段 类型 说明
success boolean 指示包是否通过验证、审批并提交。
status string 稳定状态:written \
retryable boolean 调用方可以合理修复并重试时为 true(如可修复的验证失败或过时目标)。
skill_name string 实际写入的技能 slug(已通过 slug 校验).
written_paths array<string> 已写入磁盘的文件的绝对路径列表.仅写入通过白名单(SKILL.md / skill.yaml / workflow.json / references/*)的文件.
package_digest string 已提交(消毒 + 受信任元数据)包字节的 sha256 摘要。成功时存在。
validation any 包确定性验证失败时的结构化验证结果(valid, issue_fingerprint, issues, warnings)。
error string 失败时的错误描述信息.仅当 success=false 时存在.
error_code string 结构化错误代码(如 INVALID_SKILL_NAME,EMPTY_PAYLOAD,SKILL_LOCKED,PATH_TRAVERSAL,DISALLOWED_FILE 等),便于上层做条件分支.仅当 success=false 时存在.

验证技能规范 — tools/validate_skill_spec

在文件写入前验证 LLM 生成的技能包是否符合 ChengOS 规范与契约.

输入

字段 类型 必填 默认值 说明
name_path string null 组合的技能名称和包路径输入.这是手工构建导入工作流的单端口路径:普通字符串作为 package_path 处理,skill_name 从最终路径段推断;JSON 字符串或对象则使用 { “skill_name”: “…”, “package_path”: “…” }.
skill_name string "" 稳定的技能 slug.必须与规范中的 name 匹配.
files array<object> [] 导入器将写入的文件负载——通常为 SKILL.md,skill.yaml,workflow.json 以及引用.接受结构化数组或相同形状的 JSON 字符串,因此可直接连接到返回 JSON 文本的 AI/LLM 响应.
package_path string null chengflow/workspaces 下的可选暂存路径(或 CHENG_VALIDATE_SKILL_STAGING_ROOT).当 files 为空时,这可能指向:包含 [{path, content}, …] 的 JSON 清单文件,或 { “files”: […] };也可能是包含 SKILL.md,skill.yaml,可选 workflow.json 和可选 references/* 的技能包目录.
sandbox_root string null package_path 解析的基准目录。填入与文件操作工具写入包时使用的相同 sandbox_root — 即该工具 [Instance Constraints] 块和 view_file/edit_file 结果中显示的绝对目录(如 /home/cheng/works/chengos/chengflow/skills)。然后在 package_path 中只传包文件夹名。这是验证器找到写入器创建文件的方式。
skip_review boolean false 可信导入:仅跳过 LLM/人工审查阶段(提升为 ready),适用于已知安全的包。确定性验证始终运行。仅在服务器启用 CHENG_ALLOW_SKILL_SKIP_REVIEW、包无错误且工具面非高风险时生效。
skip_review_reason string null skip_review 生效时记录的审计原因(如 owned-package-reimport)。
trusted_source boolean false 导入来源可信的建议性提示;本身不绕过任何检查。

输出

字段 类型 说明
valid boolean 指示技能包是否通过验证.
errors array<string> 验证失败时返回的结构化错误列表.
warnings array<string> 验证过程中的警告信息.
skill_name_out string 运行时条件验证后的技能名称.仅当验证成功时存在.
normalization_status string 验证后的规范归一化状态.
canonical_spec any 运行时条件的规范对象.仅当验证成功时存在.
sanitized_files array<object> 原始文件列表,其中 skill.yaml 被清理后的规范替换(normalization.status 强制为 needs_review,execution.auto_execute 强制为 false,移除任何 LLM 注入的前端信任开关).下游 tools/write_skill_package 必须使用 sanitized_files,绝不能使用原始 LLM 输出,因此磁盘上的 skill.yaml 反映已验证的策略.
sanitized_files_if_valid array 运行时条件清理后的文件.仅当验证成功时存在.
validated_package object 运行时条件包,包含 skill_name 和清理后的文件.仅当验证成功时存在.
approval_summary string 运行时条件 JSON 摘要,用于管理员审批.仅当验证成功时存在.
backend_type string 验证通过的后端类型(workflow \
llm_tools any 智能体技能的 LLM 可见工具表层(llm_tools.expose).非智能体技能无此输出.
requires_tool_review boolean 当公开的工具表层授予广泛/高风险访问权限时为 true,必须在技能被提升为就绪状态前由管理员进行审查.
review_skipped boolean 可信跳过审查生效时为 true(跳过 LLM/人工审查阶段提升为 ready)。确定性验证仍会运行。
issues array<object> 结构化验证问题,含稳定代码、严重性、文件/字段位置和可重试性。兼容错误/警告从同一集合渲染。
issue_fingerprint string 基于排序的 (severity, code, file, path) 元组的稳定指纹;排除消息文本和源内容。无问题时不存在。

CLI 安装 — tools/cli_install

从可信 CLI 包索引确定性地生成、验证并按顺序执行安装步骤;LLM 只提供 CLI 名称,高风险步骤仍需审批。

输入

字段 类型 必填 默认值 说明
cli_name string 要安装的 CLI 名称,例如 gh、jq 或 rg;必须存在于可信包索引中。
working_subdir string null 执行边界内的可选相对工作目录。
timeout_ms integer 120000 每个安装步骤的执行超时时间(毫秒)。
memory_mb integer 512 每个安装步骤的内存限制(MB)。

输出

字段 类型 说明
success boolean 是否成功
status string 稳定状态:ok、not_found 或 error。
cli_name string CLI 名称
provider_id string 提供商 ID
package_manager string 包管理器
steps array<object> 步骤结果
error string 错误信息

下一步

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容