Cherry Studio Code Mate 中 Claude Code 无头委派技能指南:非交互式代码分析与实现
【免费下载链接】cherry-studio🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端项目地址: https://gitcode.com/CherryHQ/cherry-studio
本文围绕 Cherry Studio 内置技能 code-mate-claude-code/SKILL.md,讲解如何通过 Code Mate 能力将仓库级分析、审查与实现任务一次性委派给 Claude Code 的命令行工具(非交互式-p模式),并安全地解析其结果。读完本文,你将掌握该技能的运行流程、claude -p --output-format json的正确用法、认证与最小权限原则,以及它与 Cherry Studio 内置 Code CLI 预设的底层关联,可直接用于让 Claude Code 与其它编码 Agent 对比执行同一仓库任务。
技能定位:一份“如何安全地调用 Claude Code”的行为契约
resources/code-cli-skills/code-mate-claude-code/SKILL.md是 Cherry Studio 为 Code Mate 场景内置的 Claude Code 委派技能。文件采用标准 Skills 格式,frontmatter 声明了其身份与触发条件:
--- name: code-mate-claude-code description: Runs Claude Code non-interactively for code analysis and implementation tasks. Use when the user asks to delegate repository work to Claude Code or compare its result with another coding agent. ---description划定了本技能的适用范围:在用户要求把仓库工作委派给 Claude Code,或希望将它与另一个编码 Agent 的结果做对比时触发。它刻意回避了“通用助手”定位,属于典型的“委派型(delegation)技能”:技能本体不代替 Claude Code 思考,而是约束调用方式、参数形态与结果解析规则。
这些技能模板随应用以只读内置资源分发。在 路径注册表 中,feature.code_cli.skills.builtin被映射到appRootResources/code-cli-skills目录(即resources/code-cli-skills/),与code-mate-codex、code-mate-github-copilot、code-mate-openclaw等十余个同类技能并列,构成一套完整的 Code CLI 委派技能族。
运行流程:四步委派一个一次性任务
SKILL.md 将运行过程收敛为三个步骤,并规定了必须遵守的执行纪律:
第 1 步:设定工作目录与超时。将 Bash 工作目录精确设置为用户点名的项目目录,并设置有限的超时时间(默认 10 分钟)。这一步保证了 Claude Code 只能在用户指定的仓库内活动,也避免了无界等待。
第 2 步:可用性检查。使用command -v claude检查命令行工具是否存在于 PATH 中;若缺失,立即停止并提示用户在 Code Mate 中安装 Claude Code,而不是尝试自行安装或降级处理。
第 3 步:执行一次性任务。运行以下命令:
claude -p "<prompt>" --output-format json参数语义如下:
| 参数 | 含义 | 使用要求 |
|---|---|---|
-p(--print) | 非交互式一次性执行,任务完成后进程退出 | 必须把 prompt 作为一个带引号的完整参数传入 |
--output-format json | 以 JSON 结构化输出结果 | 调用方按 JSON 解析,而非按终端文本解析 |
<prompt> | 委派给 Claude Code 的任务描述 | 单引号或双引号包裹,避免被 shell 拆词 |
第 4 步:解析结果。解析 JSON 输出;失败时需同时报告 stderr 与退出状态码。
技能同时给出两条红线:绝不启动交互式 REPL,绝不进入/login流程。这与技能的“headless(无头)委派”定位一致——Code Mate 是调用方、是编排者,而不是让用户在一个终端里手动操作 Claude Code 的入口。同理,同族的 code-mate-deepseek-harness 规定“绝不起动交互式 UI 或登录流程”,code-mate-openclaw 规定“绝不起动 onboarding、交互式 TUI 或登录流程”,可见这是整套委派技能的公共纪律。
认证与权限:凭据隔离 + 最小权限
认证失败即停止
当 Claude Code 报告缺少登录态、API 凭据或 provider 配置时,技能要求立即停止并向用户提示去 Code Mate 中完成 Claude Code 的配置。关键约束是:永远不要代为请求、读取、打印或复制凭据。这是凭据隔离原则——调用方(Agent)只负责发起任务与解析结果,不接触任何认证信息。
从 Cherry Studio 的源码可以进一步印证这种“登录态归用户管理”的设计。在 Code CLI 类型定义 中,LOGIN_CAPABLE_CLI_TOOLS集合明确包含CodeCli.CLAUDE_CODE,意味着 Claude Code 可以在“使用自己的账号登录(own login)”模式下运行:通过保留的虚拟 provider idcherry:cli-own-login(见 codeCli.ts)走“不注入任何 Cherry 凭据、CLI 回退到自身已保存账号”的路径。也就是说,SKILL.md 中“让用户在 Code Mate 里配置好”的认证方式,在实现层存在两条支撑路线:Cherry 侧注入 provider,或走 CLI 自身的账号登录。
权限收敛:默认只读,最小化 --allowedTools
技能对工具权限的管理可以概括为三层递减策略:
- 默认只读:除非任务明确要求,否则不授予任何写权限;
- 最小增量授权:仅当任务明确需要工具时,才添加最小的
--allowedTools条目; - 写权限需显式请求:只有当用户明确要求修改工作区时,才允许授予编辑或 shell 工具。
此外明确禁止使用“权限绕过模式”(permission-bypass mode)。这条规则的用意是:委派任务时,权限边界必须与用户意图严格对齐——代码审查、问题诊断这类只读任务,绝不应当被授予改写文件的能力。
应用示例:一次只读代码审查
SKILL.md 末尾给出了技能的标准用法示范:
对于审查类请求,让 Claude 在不改动文件的前提下检查当前仓库,运行上面的命令,然后汇总解析后的 JSON 结果。
落地到实际场景即为:用户要求“审查某仓库的认证逻辑是否存在漏洞”时,技能按顺序执行——进入目标仓库目录 →command -v claude确认可用 → 以claude -p "Inspect the current repository's auth code for vulnerabilities. Do not modify any files." --output-format json执行 → 解析 JSON、在失败时报告 stderr 与退出码 → 向用户汇总结构化结论。全程无文件写入、无交互界面、无凭据暴露。
与 Cherry Studio Code CLI 预设的底层关联
SKILL.md 描述的claude可执行文件,在 Cherry Studio 内部由一份单一事实来源(single source of truth)登记。在 Code CLI 工具预设表 中:
defineCodeCliTool({ id: CodeCli.CLAUDE_CODE, executable: 'claude', skillFolderName: 'code-mate-claude-code', packageName: '@anthropic-ai/claude-code', install: 'registry' })由此可知:
claude可执行名与code-mate-claude-code技能文件夹的对应关系由代码强制绑定;- 其官方发行包为
@anthropic-ai/claude-code,安装方式为registry(即从官方发行渠道安装),安装元数据由miseTool字段统一管理; - 这份预设表同时被主进程与渲染进程使用,保证界面展示、安装逻辑与技能加载指向同一个事实。
同族的code-mate-*技能共享同一套模板机制,但每个技能针对各自 CLI 的输出协议做了差异化处理:例如 DeepSeek Harness 将 stdout 视为最终文本而非 JSON(见 code-mate-deepseek-harness),OpenClaw 则要求“即使进程退出码为 0 也要解析 JSON payload 判断真实成败”(见 code-mate-openclaw)。相比之下,Claude Code 技能的协议最直接:以 JSON 为唯一可信输出,退出状态与 stderr 作为失败时的补充证据。理解这一差异,是正确地在多个编码 Agent 之间做结果对比的前提。
实践要点小结
- 一次任务、一次退出:始终使用
claude -p "<prompt>" --output-format json,绝不进入 REPL 或/login; - 目录与超时先行:先
cd到用户指定的精确项目目录,并设定有限超时(默认 10 分钟); - 可用性前置检查:
command -v claude失败时停止并引导用户在 Code Mate 中安装; - 凭据永不触碰:认证缺失时转交用户处理,不读取、不打印、不复制任何凭据;
- 权限宁小勿大:默认只读,仅按需追加最小
--allowedTools,写权限必须以用户的显式工作区变更请求为前提; - 结果按协议解析:以 JSON 为准,失败时同时报告 stderr 与退出状态码。
这套技能的价值在于把“调用 Claude Code”封装成一个可复现、可审计、权限受控的协议:开发者可以在 Cherry Studio 中让 Claude Code 与其他编码 Agent 各跑一遍同一份审查或实现任务,再基于结构化的 JSON 输出做公平对比——这正是该技能description中“compare its result with another coding agent”所承诺的典型场景。
【免费下载链接】cherry-studio🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端项目地址: https://gitcode.com/CherryHQ/cherry-studio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考