CodeBuddy‑CLI 默认授权(权限模式)命令行参数
CodeBuddy‑CLI 默认授权权限模式命令行参数区分两件事账号登录认证和工具操作授权权限模式 permission‑mode1. 会话级别指定默认授权模式CLI 参数# 默认模式default每次文件/命令都询问确认codebuddy --permission-mode default# 自动允许文件编辑bash仍然弹窗确认codebuddy --permission-mode acceptEdits# 完全跳过权限提示高危仅沙箱容器使用codebuddy --permission-mode bypassPermissions# 只读规划模式禁止写文件、禁止bashcodebuddy --permission-mode plan简写高危参数-y# -y / --dangerously‑skip‑permissions跳过大部分提示高危操作依旧拦截codebuddy-y⚠️-y≠ bypassPermissions要真正全放行需要环境变量exportCODEBUDDY_IS_SANDBOX1codebuddy-y2. 持久修改全局默认权限模式写入配置文件进入 codebuddy 交互会话内执行斜杠命令/config set permissions.defaultMode acceptEdits查看当前配置/config list配置文件位置Linux/macOS~/.config/codebuddy/settings.jsonWindows%APPDATA%/codebuddy/settings.jsonsettings.json 片段{permissions:{defaultMode:acceptEdits}}3. 账号登录认证不是工具授权交互式登录codebuddy# 会话内输入 /login非交互 CI 使用 API‑Key 环境变量认证国内版示例exportCODEBUDDY_API_KEYsk‑xxxexportCODEBUDDY_INTERNET_ENVIRONMENTinternal codebuddy-p你的prompt常用组合示例# 非交互运行自动允许编辑bash仍询问codebuddy --permission-mode acceptEdits-p重构src下所有ts文件# 沙箱环境完全放行容器自动化exportCODEBUDDY_IS_SANDBOX1codebuddy --permission-mode bypassPermissions-p执行构建脚本接续上一轮补充完整实操命令、查看、重置、白名单、CI非交互完整用法1. 查看当前生效权限配置进入 codebuddy cli 交互终端codebuddy交互内执行/config get permissions.defaultMode /config list直接读取配置文件Linuxcat~/.config/codebuddy/settings.json2. 持久设置默认授权交互斜杠命令# 默认每次询问 /config set permissions.defaultMode default # 默认接受文件修改shell命令依旧弹窗确认 /config set permissions.defaultMode acceptEdits # 完全绕过权限校验仅沙箱/CI容器本地机器不要随便用 /config set permissions.defaultMode bypassPermissions # 只读模式禁止写文件、禁止执行shell /config set permissions.defaultMode plan重置恢复出厂/config unset permissions.defaultMode3. CLI 启动参数非交互不进交互式会话# 单次生效自动接受编辑shell仍确认codebuddy --permission-mode acceptEdits-pprompt内容# -y 简写等价 --dangerously-skip-permissions不会放行高危shellcodebuddy-y-pprompt# 真正全放行必须环境变量 参数一起本地慎用exportCODEBUDDY_IS_SANDBOX1codebuddy --permission-mode bypassPermissions-p执行脚本4. 工具黑白名单配置settings.json{permissions:{defaultMode:acceptEdits,allowTools:[readFile,writeFile,listDir],denyTools:[shellExec,runCommand]}}修改保存后重启 codebuddy cli 立即生效。5. CI/脚本自动化完整示例无人工确认exportCODEBUDDY_API_KEYsk-xxxxexportCODEBUDDY_IS_SANDBOX1codebuddy\--permission-mode bypassPermissions\--no-interactive\-p运行单元测试输出测试报告6. 环境变量完整对照表环境变量作用CODEBUDDY_IS_SANDBOX1解锁 bypassPermissions 真正放行高危操作CODEBUDDY_API_KEYAPI‑key非交互登录CODEBUDDY_PERMISSION_MODE环境变量设置默认权限模式优先级低于cli参数注意优先级CLI启动参数 环境变量 settings.json持久配置 内置默认(default)✅-c/--continue就是你要的继续上一轮最近会话# 继续当前目录最近一次会话进入交互REPLcodebuddy-c# 等价完整写法codebuddy--continue常用组合和权限参数一起用# 继续会话 自动允许编辑交互codebuddy-c--permission-mode acceptEdits# 继续会话 非交互直接给prompt执行完退出codebuddy-c-p继续完成剩下的函数# 继续会话 -y 跳过部分权限弹窗codebuddy-c-y-p补全单元测试-cvs-r区别# -c / --continue固定取【当前目录最近那一个会话】不用填IDcodebuddy-c# -r / --resume指定session‑id恢复不带id弹出会话列表选择codebuddy-rcodebuddy-ruuid-session-id⚠️-c是目录绑定必须在同一个工作目录执行才能读到上次会话记录换目录会找不到历史。完整实操示例链# 第一轮codebuddy --permission-mode acceptEdits# 退出后接续上一轮codebuddy-c--permission-mode acceptEdits# 非交互脚本接续codebuddy-c-y-p优化错误处理逻辑交互会话内斜杠命令REPL里面用不是shell/resume # 会话选择面板 /resume list # 列出全部会话id下面两套脚本一键写入 CodeBuddy‑CLI settings.jsonjq 实现不破坏原有配置保存 session_id 到环境变量文件任意目录都可-r恢复会话不受当前目录约束依赖需要jq绝大多数 Linux 发行版可apt install jq/yum install jqmacOSbrew install jq。① 一键脚本写入 settings.json设置默认权限模式保存为cb‑set‑perm.sh#!/bin/bash set -e CB_SETTINGS$HOME/.config/codebuddy/settings.json mkdir -p $(dirname $CB_SETTINGS) # 目标权限模式可选default / acceptEdits / plan / bypassPermissions PERM_MODEacceptEdits # 如果文件不存在初始化为空对象 [ ! -f $CB_SETTINGS ] echo {} $CB_SETTINGS # 使用 jq 更新 permissions.defaultMode保留原有全部配置 jq --arg mode $PERM_MODE .permissions.defaultMode $mode $CB_SETTINGS ${CB_SETTINGS}.tmp mv ${CB_SETTINGS}.tmp $CB_SETTINGS echo ✅ 已设置 permissions.defaultMode $PERM_MODE cat $CB_SETTINGS使用chmod x cb-set-perm.sh ./cb-set-perm.sh② 保存 session_id任意目录恢复会话不受工作目录限制思路退出 CodeBuddy 前拿到 session‑id写入~/.cb_last_session.env后续 source 之后直接codebuddy -r $CB_LAST_SESSION。脚本cb-save-session.sh#!/bin/bash CB_ENV$HOME/.cb_last_session.env # 列出所有会话取最新一条的 id SESSION_ID$(codebuddy --list-sessions 2/dev/null | jq -r .[0].id) if [[ -z $SESSION_ID || $SESSION_ID null ]];then echo ❌ 没有找到历史会话 exit 1 fi cat $CB_ENV EOF # CodeBuddy last session id export CB_LAST_SESSION$SESSION_ID EOF echo ✅ 已保存会话ID: $SESSION_ID 到 $CB_ENV echo 使用方式source $CB_ENV codebuddy -r \\$CB_LAST_SESSION\使用流程# 1. 正常跑一次 codebuddy做完工作退出 codebuddy # 2. 执行脚本保存最新会话id chmod x cb-save-session.sh ./cb-save-session.sh # 3. 切到任意别的目录加载环境变量恢复会话 cd /some/other/path source ~/.cb_last_session.env codebuddy -r $CB_LAST_SESSION常用组合示例恢复会话 权限参数source ~/.cb_last_session.env codebuddy -r $CB_LAST_SESSION --permission-mode acceptEdits如果你想一条命令直接拉起不用手动 source写别名放进~/.bashrc/~/.zshrcalias cb-resumesource ~/.cb_last_session.env codebuddy -r $CB_LAST_SESSION --permission-mode acceptEdits生效后任意目录直接cb-resume补充查看会话列表原生 CLI 参数# 输出全部会话 json包含 id、创建时间、工作目录 codebuddy --list-sessions对比回顾codebuddy -c当前目录最近会话换目录失效codebuddy -r session‑id按ID恢复不受目录约束就是上面脚本在用的方式。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →