Skip to content

Claude Code ​

Jue 状态:Read、Write、Artifact、Confirm 均为 Implemented。project 与 Plugin 两种 Artifact 均实现(Marketplace 聚合索引明确排除,见 adapter-standardization.md); Core apply/--dry-run/--check 已实现,原生 project 与 user apply scope 均可用;fixture→Canonical→Artifact→ 原生确认全链路(含 headless 真实调用与批次回滚)可由一条命令端到端重放; confirm() 已导出并组装为 defineExtension()/Adapter:Plugin 走真实 claude plugin validate --strict,project 无原生校验工具故如实返回 unconfirmed(诚实降级,非缺口)

官方依据:Claude Code Plugins、 Plugins Reference、 Skills、 Sub-agents、 Hooks、 MCP、 Memory、 Headless mode

探测环境:claude CLI 2.1.219(2026-07-26)。

1. 官方能力表面 ​

Claude Code 同时支持项目级 .claude/ 配置与可分发 Plugin。

Plugin manifest(.claude-plugin/plugin.json)对 --plugin-dir 运行时加载 是可选的:省略时 Claude Code 按目录名自动发现默认组件目录并派生 Plugin 名 (claude plugin validate 这条校验路径则要求必须存在 plugin.json 或 marketplace.json,两条路径的宽松度不同)。Plugin 可承载 skills/、commands/、agents/、hooks/(hooks.json,形如 {"hooks": {"<Event>": [...]}},也可内联在 manifest 的 hooks 键)、 .mcp.json、.lsp.json(lspServers)、workflows/、output-styles/、 themes/、monitors/monitors.json、bin/、channels 和声明式 userConfig (每项需要 type/title/description,通过 ${user_config.KEY} 注入并以 CLAUDE_PLUGIN_OPTION_<KEY> 导出)。Plugin manifest 还可以声明 dependencies (Plugin 间 semver 依赖数组,形如 ["<name>@<range>"],安装期拉取另一个 Artifact)。

CLI 生命周期覆盖 validate、install、enable、disable、update、 list、details、init/new、uninstall/remove、prune/autoremove、 tag、eval,以及 marketplace add/list/remove/update。

marketplace.json 是独立的分发索引文件,可以携带原本属于 Plugin 的字段(例如 一个没有 plugin.json 的 Plugin,其 lspServers 只出现在 marketplace 条目 里)。Read 方向要还原一个 Plugin 的完整事实面,需要同时读取其 marketplace 条目。

Skill/Command/Agent 三类组件共享同一套 frontmatter 执行语义字段: context: fork、agent、background、hooks、model、effort、 disable-model-invocation、user-invocable、paths(路径条件加载)。这些 字段让 skill 同时具备 agent 与 hook 的部分能力,边界比 Jue 的六类原子能力更 细。

2. 理想 Jue 映射 ​

Canonical / Adapter 职责Claude Code
context.globalproject CLAUDE.md;user ~/.claude/CLAUDE.md
rulesproject/user .claude/rules/*.md(用户根下即 ~/.claude/rules/*.md)
skills / commandsproject/user .claude/skills/*/SKILL.md 与 .claude/commands/*.md
agents.claude/agents/*.md(项目)、~/.claude/agents/*.md(用户);Plugin 内为 agents/
hooksproject/user .claude/settings.json 的 hooks 键,或 Plugin hooks/hooks.json/manifest 内联 hooks
mcp.serversproject .mcp.json;user ~/.claude.json
target-specific settingstools.claude(lspServers、monitors、themes、output-styles、bin、workflows、channels、userConfig、dependencies)
Artifactproject-native 配置,或 Claude Plugin(.claude-plugin/plugin.json + 组件目录,manifest 可选)
Confirmclaude plugin validate <path> [--strict];headless system/init(见 §3)

3. 转换边界 ​

  • Read 必须区分三种发现路径:.claude/ 项目配置、已安装 Plugin root、以及 <skills-dir>/<n>/.claude-plugin/plugin.json 形式的就地发现(不进 Plugin 缓存,独立于 plugin install)。
  • Plugin 的 lspServers、monitors、themes、output-styles、bin、 workflows、channels、userConfig、dependencies 是 Claude Code 私有 字段,Adapter 原样保留,不进入 Canonical。
  • Preset 可以物化为 Plugin,但 Preset 本身不携带 Claude 安装状态; Plugin 的 dependencies(安装期拉取另一个 Artifact)与 Preset 依赖 (构建期合并资产)语义不同,不互相映射。
  • Plugin 聚合体本身(plugin.json 表达身份、版本、依赖与组件路径重定向) 对应 Jue 的 Artifact,而不是 Capability。
  • Plugin scope、依赖、缓存和权限是 Artifact 的安装约束,不是 Capability。
  • 作用域优先级:Skill/Agent 是 managed/enterprise > user > project; Rule 是 project > user(CLAUDE.local.md 属本地覆盖);Settings 是 managed > CLI > local > project > user(permissions 键按 merge 而非 override 生效)。MCP 的 local scope 写入 ~/.claude.json,不落在 .claude/settings.local.json。Jue 的 project apply 写 .mcp.json,user apply 写 ~/.claude.json。Server 省略 scope 时继承本次 apply;显式 scope 不一致或 local 时在写入前失败。

Headless 原生确认路径 ​

bash
claude -p "<deterministic task>" --plugin-dir <path> \
  --output-format stream-json --verbose \
  --tools "" --setting-sources ""

首行 system/init 事件给出 plugins、plugin_errors、skills、 slash_commands、agents、mcp_servers(含 status)的完整清单;此路径也是 manifest-optional 自动发现在运行时确实生效的证据(plugin-auto-discovered 形态的目录会以 <dir>@inline 形式出现在 plugins 里)。不可加 --bare: --bare 会让 Plugin 的 agents 和 mcp_servers 从清单中静默消失,只保留 内置项。claude plugin list/claude plugin details 只能确认已安装 Plugin, 不接受 --plugin-dir。

--tools "" 不保证零成本:它只是让本轮没有工具可用,若 prompt 本身不需要 调用工具,模型仍会正常生成回复并产生真实计费(实测:同样的命令产生 total_cost_usd: 0.0394407)。要真正避免计费,prompt 必须设计成结构上必须依赖 一个已被禁用的工具才能完成,--tools "" 本身不会让 CLI 在调用模型前短路。 原生验证前须先确认目标 prompt 确实免费或已获得预算批准。

--bare 认证严格要求 ANTHROPIC_API_KEY 或经 --settings 的 apiKeyHelper (不读 OAuth/keychain),且不隔离操作机器上已安装的其余 Plugin(plugins 清单会连同 fixture 一起出现);plugin_errors 无错误时整个字段缺失,不是空 数组。可复现证据见 packages/ai-jue-adapter-claude/fixtures/README.md"native usability verification"一节与仓库根 scripts/verify-claude-native.js;同一 fixture→Canonical→Artifact→原生确认链路可由 scripts/verify-claude-mvp-gate.js 从干净环境一条命令重放,见该 README"Claude MVP Gate"一节。

4. 当前差距 ​

层级状态缺口
ReadImplementedpackages/ai-jue-adapter-claude/src/read.ts
WriteImplementedpackages/ai-jue-adapter-claude/src/write.ts,经 Core 执行器驱动
ArtifactImplementedproject 与 Plugin 两种已实现;Marketplace 聚合索引明确排除(非缺口)
ConfirmImplementedconfirm() 已导出并组装为 defineExtension()/Adapter;Plugin 走真实 plugin validate --strict(headless 证据);project 如实返回 unconfirmed(诚实降级,非缺口)

Define once. Adapt everywhere.