三平台适配指南(Claude Code / Codex / TFRobot)¶
场景:同一批能力(SKILL 集合)要同时供 Claude Code、OpenAI Codex 与 TFRobot 使用。本指南给出三系统的差异对照与技术选型原则,供适配时逐项核对。 依据:各平台官方文档(2026-08 调研),链接见文末参考。
核心结论先行¶
SKILL.md是唯一跨三端复用的能力载体——三系统都遵循 Agent Skills 开放标准(YAML frontmatter + Markdown body +scripts//references//assets/)。- 分发清单(plugin manifest / marketplace)与 SubAgent 都是平台私有——没有跨系统等价物,各平台独立维护。
- 能力契约落在 SKILL.md,SubAgent 只承载平台侧优化——不要用平台私有的 SubAgent 定义承载跨端语义。
差异总表¶
| 维度 | Claude Code | Codex | TFRobot |
|---|---|---|---|
| SKILL 位置 | .claude/skills/(plugin 内 skills/) |
.agents/skills/(plugin 内 skills/) |
plugin 内 skills/ |
| Plugin 清单 | .claude-plugin/plugin.json |
.codex-plugin/plugin.json |
.tfrobot-plugin/plugin.json |
| Marketplace | .claude-plugin/marketplace.json |
.agents/plugins/marketplace.json |
.tfrobot-plugin/marketplace.json |
| 安装 | /plugin install <p>@<m> |
codex plugin add <p>@<m> |
/plugin install <p>@<m> |
| 激活 | description 匹配自动加载 | $ mention / /skills / description 隐式触发 |
Robot 装配后进 LLM 工具循环 |
| SubAgent | agents/*.md(frontmatter:name/description/tools/model) |
.codex/agents/*.toml(官方自述格式演进中) |
无此概念——会话隔离由 Robot 平台承载 |
| 用户输入/凭据 | plugin.json userConfig + ${user_config.KEY}(sensitive 入 keychain) |
无清单内凭据——从宿主环境继承 | mcp-servers/inputs.json + ${input:<id>}(password: true 隐藏输入) |
| 密钥文件 | 无 | 无 | .skillenv(LLM 不可见,硬秘密边界) |
| 占位符 | $ARGUMENTS / ${CLAUDE_SKILL_DIR} |
无 | $TFROBOT_SKILL_DIR(真实绝对目录)/ $TFROBOT_SESSION_ID / $TFROBOT_ROBOT_ID |
| frontmatter 扩展 | CLI 内支持扩展字段,但 claude.ai 上传 / Skills API 通道硬报错 | 未知 key 忽略;额外读 agents/openai.yaml |
仅 6 字段,私有字段一律拒收 |
| 校验 | claude plugin validate |
codex plugin --help 查原生 validate;否则官方 validator 脚本 |
仓库 validate_tfrobot_marketplace.py(镜像 SDK 边界) |
技术选型原则¶
1. SKILL.md:只用 6 个标准字段¶
name(1–64 字符,[a-z0-9-] kebab,必须与目录名一致)/ description(1–1024,首句触发关键词)/ license / compatibility / metadata / allowed-tools。
- Claude Code 的扩展字段(
argument-hint/model/user-invocable等)CLI 内可用,但出圈即报错(claude.ai 上传 / Skills API / 打包分发校验器硬拒绝)。 - Codex 对未知 key 宽容(忽略),但为了三端一致同样只用 6 字段。
- TFRobot 协议明确不引入任何私有字段(SKILL 协议 §0.3)。
- 若要兼容最窄通道(claude.ai 上传限 200 字符),description 控制在 200 字符内。
2. SubAgent:三系统最大差异,逐平台独立决策¶
| 平台 | 表达 | 注意 |
|---|---|---|
| Claude Code | agents/<name>.md,description 写「何时应委派」(第三人称 + 触发词),tools / disallowedTools 白名单 |
插件内 agent 以 <plugin>:<agent> 暴露;每次 spawn 有 token 成本,需「verbose 输出 / 并行 / 工具限制 / 模型降级」之一正当化 |
| Codex | .codex/agents/*.toml(name / description / developer_instructions),或在 SKILL.md 内写 subagent workflow 指令 |
官方自述「格式可能演进、偏重」——不作为跨平台长期资产;plugin 不携带 .codex/agents/ |
| TFRobot | 无 agents/——隔离需求写成「宿主支持的隔离 Robot 任务」表达 |
会话与线程隔离是 Robot 平台职责,SKILL 不声明执行编排 |
原则:跨端契约只落在 SKILL.md;SubAgent 是平台侧可选优化。若某平台暂时无法表达同等能力,在对应 SKILL 中写清降级行为,而不是保留无效的平台术语。
3. 凭据与用户输入:三种机制互不通用¶
- Claude Code:
plugin.json的userConfig声明字段,正文用${user_config.KEY};敏感字段sensitive: true存 keychain。 - Codex:清单不写凭据——spawn 时从宿主环境继承(团队密钥管理注入)。
- TFRobot:
mcp-servers/inputs.json声明输入(promptString/pickString/command),配置内用${input:<id>};密码标password: true;SKILL 自身的密钥走.skillenv(LLM 三层不可见)。
4. 平台专属能力:允许保留,写清理由¶
三平台不必逐字一致——业务目标、主要步骤、风险门控、验收标准一致即可;平台私有表达(工具名、交互方式、权限询问、MCP 配置、Agent/会话模型)必须本地化。平台专属 SKILL(如 Codex 的 slash 命令适配器)允许保留,在交付说明中记录。
适配工作流建议¶
- 业务语义先行:先定义与平台无关的统一语义(步骤、门控、验收),再逐平台落地。
- 以 Claude Code 为语义参考,移植时逐平台改写私有表达,不机械复制。
- 同步范围先确认:新增/修改 SKILL 后,明确要同步到哪些平台再动手;仅指源平台不算同步决定。
- 逐平台校验:三套校验各自跑通(见差异总表)。
- 禁用捷径:不要用软链接共享三套目录(Git clone / 缓存 / 打包行为不稳定);不要为了文本一致把平台术语带进另一套产物。
参考¶
- Claude Code docs map(全站入口)· skills · sub-agents · plugin-marketplaces
- Codex 文档站(llms.txt 全站索引:https://learn.chatgpt.com/llms.txt)· build-skills · build-plugins · subagents · custom-prompts(已废弃)
- Agent Skills 开放标准(三端共同规范)
- TFRobot 侧:SKILL 协议 · Marketplace 规范 · MCP Server 配置 · A2C-SMCP 协议