尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Cherry Studio Code Mate 的 Claude Code 技能:非交互式驱动 claude CLI 的运行规程与权限边界
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),仅供参考
RELATED

相关推荐

基于两阶段鲁棒优化的微网电源容量配置仿真

基于两阶段鲁棒优化的微网电源容量配置仿真

赶在交稿前整理一下这段时间做的一个项目:基于两阶段鲁棒优化算法的微网电源容量优化配置仿真,整体在MATLAB环境里用YALMIP建模,求解器走CPLEX。核心关键词是微网容量配置、两阶段鲁棒、YALMIP、CPLEX,算得上电力系统优化方向里非…

📅 2026/9/13 6:29:31
DBeaver 执行计划实战手册:4 步定位并压快你的慢 SQL

DBeaver 执行计划实战手册:4 步定位并压快你的慢 SQL

DBeaver 执行计划实战手册:4 步定位并压快你的慢 SQL 【免费下载链接】dbeaver Free universal database tool and SQL client 项目地址: https://gitcode.com/GitHub_Trending/db/dbeaver 一条两表 JOIN 跑 5.2 秒,SQL 一个字符没改,调了两个索引之后变成 0.3 秒。差别…

📅 2026/9/13 6:29:31
AI改写同质化问题解析与专业降AI方法

AI改写同质化问题解析与专业降AI方法

1. 现象解析:AI改写为何陷入同质化循环 最近在内容创作圈出现一个有趣现象:很多人用AI工具修改AI生成的内容,结果越改越像AI。这种现象背后隐藏着几个关键技术原理: 1.1 语言模型的趋同效应 主流AI写作工具基于相似的预训练模型…

📅 2026/9/13 6:29:30
MORE NEWS

更多资讯

📰

Python项目CI/CD实践:工具链与部署策略详解

1. Python项目CI/CD实践概述 在Python项目开发中,持续集成和持续部署(CI/CD)已经成为提升开发效率、保障代码质量的标配实践。我经历过多个Python项目从零搭建CI/CD管道的完整过程,深刻体会到自动化流程对团队协作和项目交付带来的…

📰

AI Agent跨会话记忆系统设计与工程落地

1. 项目概述:为什么“让 Agent 记住你”不是功能,而是分水岭“走进AI Agent第三篇:让 Agent 记住你”——这个标题乍看像一篇技术教程的延续,但实际踩中了当前AI Agent落地最深的裂缝。我带团队做过7个生产级Agent项目&#xff0c…

📰

汽车电子MES选型必读:追溯、防错与合规落地的全流程指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

泛型编程详解:从类型参数到代码复用,彻底告别复制粘贴

泛型这个词,很多写了两年三年的开发看到它还是会心里发怵,觉得这是个“高级特性”,面试前背一背、工作里能不碰就不碰。但你要是真把它拆开看,泛型其实干的事情特别朴素:它就是在帮你写“填空模板”。类型不确定的地方…

📰

Windows下Node.js与npm环境配置:从安装到排错的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Workbuddy微信本地桥接方案:SQLite监听+HTTP Schema对接

1. 这不是“接入微信”,而是让Workbuddy真正理解你的个人微信对话流Workbuddy这个词最近在技术圈和效率工具用户群里频繁出现,但很多人一看到“Workbuddy怎么接入微信”这个标题,第一反应是——是不是像企业微信那样点几下就能同步消息&#…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬