欢迎光临
我们一直在努力

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

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

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

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

# 默认模式:default,每次文件/命令都询问确认
codebuddy –permission-mode default

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

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

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

简写高危参数 -y

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

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

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 片段:

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

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

交互式登录:

codebuddy
# 会话内输入 /login

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

export CODEBUDDY_API_KEY="sk‑xxx"
export CODEBUDDY_INTERNET_ENVIRONMENT=internal
codebuddy -p "你的prompt"

常用组合示例

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

# 沙箱环境完全放行(容器自动化)
export CODEBUDDY_IS_SANDBOX=1
codebuddy –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,不会放行高危shell
codebuddy -y -p "prompt"

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

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

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

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

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

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 就是你要的:继续上一轮最近会话

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

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

# 继续会话 + 自动允许编辑(交互)
codebuddy -c –permission-mode acceptEdits

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

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

-c vs -r(区别)

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

# -r / –resume:指定session‑id恢复,不带id弹出会话列表选择
codebuddy -r
codebuddy -r "uuid-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.json(jq 实现,不破坏原有配置)
  • 保存 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恢复,不受目录约束,就是上面脚本在用的方式。
    赞(0)
    未经允许不得转载:171主机测评 » CodeBuddy‑CLI 默认授权(权限模式)命令行参数
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址