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

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

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

1. 会话级别指定默认授权模式(CLI 参数)

bash 复制代码
# 默认模式:default,每次文件/命令都询问确认
codebuddy --permission-mode default

# 自动允许文件编辑,bash仍然弹窗确认
codebuddy --permission-mode acceptEdits

# 完全跳过权限提示(高危,仅沙箱容器使用)
codebuddy --permission-mode bypassPermissions

# 只读规划模式,禁止写文件、禁止bash
codebuddy --permission-mode plan

简写高危参数 -y

bash 复制代码
# -y / --dangerously‑skip‑permissions,跳过大部分提示,高危操作依旧拦截
codebuddy -y

⚠️ -y ≠ bypassPermissions;要真正全放行,需要环境变量:

bash 复制代码
export CODEBUDDY_IS_SANDBOX=1
codebuddy -y

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

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

复制代码
/config set permissions.defaultMode acceptEdits

查看当前配置:

复制代码
/config list

配置文件位置:

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

settings.json 片段:

json 复制代码
{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

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

交互式登录:

bash 复制代码
codebuddy
# 会话内输入 /login

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

bash 复制代码
export CODEBUDDY_API_KEY="sk‑xxx"
export CODEBUDDY_INTERNET_ENVIRONMENT=internal
codebuddy -p "你的prompt"

常用组合示例

bash 复制代码
# 非交互运行,自动允许编辑,bash仍询问
codebuddy --permission-mode acceptEdits -p "重构src下所有ts文件"

# 沙箱环境完全放行(容器自动化)
export CODEBUDDY_IS_SANDBOX=1
codebuddy --permission-mode bypassPermissions -p "执行构建脚本"

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

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

进入 codebuddy cli 交互终端

bash 复制代码
codebuddy

交互内执行:

复制代码
/config get permissions.defaultMode
/config list

直接读取配置文件(Linux)

bash 复制代码
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 启动参数(非交互,不进交互式会话)

bash 复制代码
# 单次生效:自动接受编辑,shell仍确认
codebuddy --permission-mode acceptEdits -p "prompt内容"

# -y 简写,等价 --dangerously-skip-permissions,不会放行高危shell
codebuddy -y -p "prompt"

# 真正全放行,必须环境变量 + 参数一起,本地慎用
export CODEBUDDY_IS_SANDBOX=1
codebuddy --permission-mode bypassPermissions -p "执行脚本"

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

json 复制代码
{
  "permissions": {
    "defaultMode": "acceptEdits",
    "allowTools": ["readFile", "writeFile", "listDir"],
    "denyTools": ["shellExec", "runCommand"]
  }
}

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

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

bash 复制代码
export CODEBUDDY_API_KEY="sk-xxxx"
export CODEBUDDY_IS_SANDBOX=1
codebuddy \
  --permission-mode bypassPermissions \
  --no-interactive \
  -p "运行单元测试,输出测试报告"

6. 环境变量完整对照表

环境变量 作用
CODEBUDDY_IS_SANDBOX=1 解锁 bypassPermissions 真正放行高危操作
CODEBUDDY_API_KEY API‑key非交互登录
CODEBUDDY_PERMISSION_MODE 环境变量设置默认权限模式,优先级低于cli参数

注意优先级:CLI启动参数 > 环境变量 > settings.json持久配置 > 内置默认(default)

-c / --continue 就是你要的:继续上一轮最近会话

bash 复制代码
# 继续当前目录最近一次会话,进入交互REPL
codebuddy -c
# 等价完整写法
codebuddy --continue

常用组合(和权限参数一起用)

bash 复制代码
# 继续会话 + 自动允许编辑(交互)
codebuddy -c --permission-mode acceptEdits

# 继续会话 + 非交互直接给prompt,执行完退出
codebuddy -c -p "继续完成剩下的函数"

# 继续会话 + -y 跳过部分权限弹窗
codebuddy -c -y -p "补全单元测试"

-c vs -r(区别)

bash 复制代码
# -c / --continue:固定取【当前目录最近那一个会话】,不用填ID
codebuddy -c

# -r / --resume:指定session‑id恢复,不带id弹出会话列表选择
codebuddy -r
codebuddy -r "uuid-session-id"

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

完整实操示例链

bash 复制代码
# 第一轮
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;macOS brew 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恢复,不受目录约束,就是上面脚本在用的方式。
相关推荐
道可云37 分钟前
工赋·青听 | 从AI素养到专属智能体,共探化工行业数字化转型新路径
人工智能
baopixiaoz37 分钟前
BeeQuant × BeeAgent:AI量化新范式
大数据·人工智能·python·区块链
海兰41 分钟前
【部署】升级现有的 OpenClaw 到最新版(v2026.8.2)
人工智能·openclaw
Raas10042 分钟前
AI网关在架构中的位置?MAI Gateway(魔芋企业级AI网关)给出企业级答案
大数据·网络·人工智能·架构·gateway·ai网关·mai gateway
十铭忘1 小时前
HMM(隐马尔可夫模型)的理解7——Baum–Welch 算法
人工智能·算法
大模型任我行1 小时前
蚂蚁:金融文档解析新范式
人工智能·语言模型·自然语言处理·金融·论文笔记
IT毕设实战小研1 小时前
基于大数据的AI应用对就业与收入增长的区域差异分析及可视化
大数据·人工智能·python·随机森林·机器学习·课程设计
音视频牛哥1 小时前
世界模型如何重塑具身智能:从VLA到预测式机器人控制
人工智能·具身智能·世界模型·world model·vla模型·多模态感知·机器人决策
浅安的邂逅1 小时前
260902-Qwen3.8-Max-0902 登顶 Code Arena WebDev:1691 分超 Opus 5
人工智能·ai模型·行业动态·产品发布/更新·模型发布/更新