
Cherry Studio Code Mate 的 Claude Code 技能非交互式驱动 claude CLI 的运行规程与权限边界【免费下载链接】cherry-studioAI productivity studio with smart chat, autonomous agents, and 300 assistants. Unified access to frontier LLMs项目地址: https://gitcode.com/GitHub_Trending/ch/cherry-studio本文围绕 Cherry Studio 内置的 Code Mate 技能文件resources/code-cli-skills/code-mate-claude-code/SKILL.md展开完整解析该技能如何以非交互方式调用 Claude Codeclaude -p ... --output-format json完成代码分析与实现任务、如何划定凭证与工具权限的边界并结合仓库源码说明该技能在 BinaryManager 安装、SkillService 同步与登录态探测等链路中的落地方式。读完本篇你可以复刻委托 Claude Code 处理仓库任务并解析 JSON 结果的完整工作流并理解 Cherry Studio 是如何把这份技能文件自动安装、镜像和按需卸载的。技能文件定位Code Mate 的 Claude Code 委托规程该技能位于 resources/code-cli-skills/code-mate-claude-code/SKILL.md是一个带 YAML 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. ---从 frontmatter 的description可以看出它的触发语义当用户要求把仓库工作委托给 Claude Code或把 Claude Code 的结果与另一个编码 Agent 对比时Code Mate 应当加载这份规程。它不是一个可执行脚本而是一份写给 Agent 的操作手册——规定了工作目录、超时、可用性检查、单任务退出、结果解析、凭证处理和最小权限工具授权等一系列硬性约束。同类技能在仓库中成组存在resources/code-cli-skills/下还有code-mate-codex、code-mate-gemini、code-mate-opencode等Claude Code 是其中通过 mise registry 安装anthropic-ai/claude-code的代表。运行规程单任务、有限时、JSON 输出SKILL.md 的 Run 部分给出了完整执行序列以下是原文档的完整继承固定工作目录与超时将 Bash 工作目录设置为用户明确指定的那个项目并设置有限超时通常为 10 分钟可用性检查用command -v claude探测 CLI 是否存在若缺失停止执行并提示用户在 Code Mate 中安装 Claude Code单任务运行并退出claude -p prompt --output-format json关键执行细节同样继承自原文档Prompt 必须作为一个带引号的参数整体传入避免 shell 拆分或元字符注入成功后解析 JSON 结果--output-format json让输出成为机器可读结构失败时报告 stderr 和退出状态而不是静默吞掉绝不启动交互式 REPL 或/login流程——技能只走 headless-p模式登录问题属于安装/配置阶段不属于技能执行阶段。这条命令模板并非孤例预置测试 src/shared/data/presets/tests/codeCliTools.test.ts 中明确断言CodeCli.CLAUDE_CODE对应的命令模板就是claude -p prompt --output-format json与技能文件互相印证。认证与权限边界只读默认、最小授权、凭证零接触Authentication And Permissions 一节定义了四条边界全部是硬性规则凭证零接触如果 Claude 报告缺少登录、API 凭证或 provider 配置立即停止并让用户在 Code Mate 中完成 Claude Code 配置。技能永不请求、读取、打印或复制凭证只读默认工具访问保持 read-only 为默认状态最小授权仅当任务明确需要工具时才添加最小必要的--allowedTools条目只有用户明确要求变更工作区时才授予 edit 或 shell 工具禁止权限绕过不得使用 permission-bypass 模式。原文档还给了一个典型示例对于代码审查类请求让 Claude 在不改动任何文件的前提下检查当前仓库运行上述命令然后汇总解析后的 JSON 结果回报。这套规程本质上把 Claude Code 当作只读分析器 按需写者来使用写权限必须由用户显式触发。源码深潜技能如何被安装、同步与卸载预置定义executable 与技能文件夹的绑定技能的身份由共享预置 src/shared/data/presets/codeCliTools.ts 唯一确定defineCodeCliTool({ id: CodeCli.CLAUDE_CODE, executable: claude, skillFolderName: code-mate-claude-code, packageName: anthropic-ai/claude-code, install: registry })defineCodeCliTool会自动派生skillNamespace: code-cli:claude-code同文件 L35并依据install: registry生成 mise 安装规格直接使用 executable 名作为 registry 条目。这个预置表是主进程与渲染进程共用的单一事实来源同时决定了可执行文件名claude、npm 包名anthropic-ai/claude-code和技能文件夹名。安装即装技能installCli 的两段式动作CodeCliService 的installCliL106-L114先经 BinaryManager 安装二进制再调用installCliSkillL151-L157把技能同步进技能库const sourcePath path.join( toAsarUnpackedPath(application.getPath(feature.code_cli.skills.builtin)), preset.skillFolderName ) await skillService.syncBuiltinSkill(preset.skillFolderName, sourcePath, app.getVersion(), preset.skillNamespace)其中feature.code_cli.skills.builtin在路径注册表 src/main/core/paths/pathRegistry.ts 中被定义为应用资源目录下的code-cli-skills只读模板目录——也就是本篇开头读取的 SKILL.md 所在目录并经toAsarUnpackedPath处理以兼容打包后的 asar 环境。与之对称的是生命周期内的持续对账onAllReadyL100-L104触发reconcileCliSkillsL126-L143遍历全部预置并按 BinaryManager 的可用性快照决定装或卸——二进制可用则installCliSkill应用确认不存在application.status absent则调用skillService.uninstallBuiltinSkill精确卸载后者在 SkillService 中还会校验source builtin且 namespace 匹配拒绝误删用户技能。run()L450 起在启动前也会顺带确保该 CLI 的技能已同步L533-L542保证能跑 claude时技能一定在场。技能落盘Data/Skills 库与 CLAUDE_CONFIG_DIR 镜像SkillService 类注释L39-L53说明了这套技能体系的物理布局技能以{dataPath}/Skills/{folderName}/为应用持有的规范库在安装 / 卸载 / 启动对账三个时机镜像进CLAUDE_CONFIG_DIR/skillsClaude Agent SDK 的发现路径镜像对 builtin 技能采用校验过的副本而非符号链接L720-L740并且会在linkMirror时重新计算目录哈希若与数据库记录的contentHash不一致就拒绝镜像L699-L715——这保证了本 SKILL.md 的内容在运行时不会被中间篡改。登录态探测只查在不在不碰凭证值技能文档要求凭证缺失时停下让用户完成配置应用侧的对应能力是checkClaudeLoginCodeCliService.ts L181-L211其注释明确只探测凭证存在性永不读取或存储凭证值macOS执行security find-generic-password -s Claude Code-credentials不带-w参数因此既不读出密钥也不会触发 ACL 弹窗退出码即是否已登录的信号Linux/Windows解析 shell 登录环境的CLAUDE_CONFIG_DIRGUI 启动的 Electron 进程不继承 rc 导出的变量所以特意从 shell 环境取值而非process.env检查configDir/.credentials.json是否存在。这与 SKILL.md 的Never request, read, print, or copy credentials是同一安全姿态在两个层面的落点技能层面禁止 Agent 触碰凭证服务层面探测也刻意降级为存在性。与交互式启动的分工技能走 headlessCLI 页面走终端值得注意的对比是Cherry Studio 的另一条路径——代码工具页面的code_cli.runsrc/main/ipc/handlers/codeCli.ts——恰恰是交互式的run()L450-L954会在真实终端中cd进目标目录并启动claude当模式为login-flow时还会在命令后追加/loginL691-L693源码注释特别指出这个登录入口被建模为固定布尔值而非自由参数串因为它最终要拼进 shell 字符串和 Windows.bat文件渲染层传入的字符串会成为注入面。两条路径的分工清晰维度本文技能headlesscode_cli.run终端触发者Code Mate Agent 按 SKILL.md 规程用户在代码工具页面点击启动命令形态claude -p prompt --output-format json单任务即退裸claude进入交互式会话login-flow 时追加/login结果消费解析 JSON、汇报 stderr 与退出码用户直接在终端观察超时约束技能规定通常 10 分钟终端常驻无任务级超时权限姿态只读默认 显式最小--allowedTools用户自行在交互会话中授权实操清单与适用前提基于原文档规程与源码事实可整理出如下落地清单前置条件目标机器已安装 Claude Codecommand -v claude命中。在 Cherry Studio 中可通过代码工具安装流程经 BinaryManager 以 mise registry 方式安装anthropic-ai/claude-code并自动带上本技能登录态使用 Claude Pro/Max OAuth 登录时登录凭证保存在 CLI 侧macOS Keychain 的Claude Code-credentials项或其他平台CLAUDE_CONFIG_DIR/.credentials.json应用只探测存在性。凭证缺失时按规程停止让用户在 Code Mate 中完成配置执行cd到用户指定的项目 →claude -p prompt --output-format json整体引号传参、设 10 分钟量级的超时→ 解析 JSON失败处理原样报告 stderr 与退出状态不要降级为交互式重试权限默认只读确需工具时只加最小--allowedToolsedit/shell 工具仅在用户明确要求改工作区时授予全程不使用权限绕过。适用限制说明本规程面向委托仓库工作 / 跨 Agent 结果对比的场景它假定claudeCLI 的输出 JSON 结构稳定若 CLI 版本升级改变--output-format json的字段解析逻辑需要随之调整。技能文件本身是只读的内置模板feature.code_cli.skills.builtin其内容完整性由 SkillService 的哈希校验在运行时守护用户侧无需也不应手工改动它。【免费下载链接】cherry-studioAI productivity studio with smart chat, autonomous agents, and 300 assistants. Unified access to frontier LLMs项目地址: https://gitcode.com/GitHub_Trending/ch/cherry-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考