news 2026/9/2 17:54:15

CodeBuddy‑CLI 默认授权(权限模式)命令行参数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CodeBuddy‑CLI 默认授权(权限模式)命令行参数

CodeBuddy‑CLI 默认授权(权限模式)命令行参数

区分两件事:账号登录认证工具操作授权(权限模式 permission‑mode)

1. 会话级别指定默认授权模式(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_SANDBOX=1codebuddy-y

2. 持久修改全局默认权限模式(写入配置文件)

进入 codebuddy 交互会话内执行斜杠命令:

/config set permissions.defaultMode acceptEdits

查看当前配置:

/config list

配置文件位置:

  • Linux/macOS:~/.config/codebuddy/settings.json
  • Windows:%APPDATA%/codebuddy/settings.json

settings.json 片段:

{"permissions":{"defaultMode":"acceptEdits"}}

3. 账号登录认证(不是工具授权)

交互式登录:

codebuddy# 会话内输入 /login

非交互 CI 使用 API‑Key 环境变量认证(国内版示例)

exportCODEBUDDY_API_KEY="sk‑xxx"exportCODEBUDDY_INTERNET_ENVIRONMENT=internal codebuddy-p"你的prompt"

常用组合示例

# 非交互运行,自动允许编辑,bash仍询问codebuddy --permission-mode acceptEdits-p"重构src下所有ts文件"# 沙箱环境完全放行(容器自动化)exportCODEBUDDY_IS_SANDBOX=1codebuddy --permission-mode bypassPermissions-p"执行构建脚本"

接续上一轮,补充完整实操命令、查看、重置、白名单、CI非交互完整用法

1. 查看当前生效权限配置

进入 codebuddy cli 交互终端

codebuddy

交互内执行:

/config get permissions.defaultMode /config list

直接读取配置文件(Linux)

cat~/.config/codebuddy/settings.json

2. 持久设置默认授权(交互斜杠命令)

# 默认每次询问 /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.defaultMode

3. CLI 启动参数(非交互,不进交互式会话)

# 单次生效:自动接受编辑,shell仍确认codebuddy --permission-mode acceptEdits-p"prompt内容"# -y 简写,等价 --dangerously-skip-permissions,不会放行高危shellcodebuddy-y-p"prompt"# 真正全放行,必须环境变量 + 参数一起,本地慎用exportCODEBUDDY_IS_SANDBOX=1codebuddy --permission-mode bypassPermissions-p"执行脚本"

4. 工具黑白名单配置(settings.json)

{"permissions":{"defaultMode":"acceptEdits","allowTools":["readFile","writeFile","listDir"],"denyTools":["shellExec","runCommand"]}}

修改保存后重启 codebuddy cli 立即生效。

5. CI/脚本自动化完整示例(无人工确认)

exportCODEBUDDY_API_KEY="sk-xxxx"exportCODEBUDDY_IS_SANDBOX=1codebuddy\--permission-mode bypassPermissions\--no-interactive\-p"运行单元测试,输出测试报告"

6. 环境变量完整对照表

环境变量作用
CODEBUDDY_IS_SANDBOX=1解锁 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-r"uuid-session-id"

⚠️-c目录绑定:必须在同一个工作目录执行,才能读到上次会话记录,换目录会找不到历史。

完整实操示例链

# 第一轮codebuddy --permission-mode acceptEdits# 退出后,接续上一轮codebuddy-c--permission-mode acceptEdits# 非交互脚本接续codebuddy-c-y-p"优化错误处理逻辑"

交互会话内斜杠命令(REPL里面用,不是shell)

/resume # 会话选择面板 /resume list # 列出全部会话id

下面两套脚本:

  1. 一键写入 CodeBuddy‑CLI settings.json(jq 实现,不破坏原有配置)
  2. 保存 session_id 到环境变量文件,任意目录都可-r恢复会话,不受当前目录约束

依赖:需要jq,绝大多数 Linux 发行版可apt install jq/yum install jq;macOSbrew 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_MODE="acceptEdits" # 如果文件不存在,初始化为空对象 [ ! -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/~/.zshrc

alias cb-resume='source ~/.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恢复,不受目录约束,就是上面脚本在用的方式。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 17:47:25

沥青期货2610合约(BU2610)价格分析报告

沥青期货2610合约&#xff08;BU2610&#xff09;价格分析 日期&#xff1a;2026年9月1日 一、价格走势概述 沥青期货主力合约BU2610近期呈现强劲上涨态势。8月19日合约报收4313元/吨&#xff0c;此后持续走高。8月25日夜盘收涨2.09%至4639元/吨。8月26日&#xff0c;BU2610…

作者头像 李华
网站建设 2026/9/2 17:46:11

Base-GPUI:在Rust高性能GUI中实现无头组件交互逻辑复用

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

作者头像 李华
网站建设 2026/9/2 17:42:54

GD32F303C移植UCOSIII实战:从零到跑通完整指南

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

作者头像 李华