权限体系
DSCC 的每次工具调用都要经过权限模式裁决。模式定义在
crates/runtime/src/permissions.rs:4–23。
模式
| 模式 | 别名 | 级别 |
|---|---|---|
ReadOnly |
read-only、default、plan |
只读 |
WorkspaceWrite |
workspace-write、acceptEdits、auto |
cwd 内可写 |
DangerFullAccess |
danger-full-access、dontAsk |
无限制 |
Prompt |
prompt |
每次询问 |
Allow |
allow |
静默全部放行 |
裁决逻辑
来自 permissions.rs:88–135:
- 当前模式
≥所需模式 → 放行。 - 当前模式为
Allow→ 放行。 - 当前模式为
Prompt→ 询问。 - 当前为
WorkspaceWrite且所需为DangerFullAccess→ 询问。 - 其他 → 拒绝。
每工具要求
各工具通过
PermissionPolicy.tool_requirements: BTreeMap<String, PermissionMode>(permissions.rs:50–73)声明所需模式。未知工具的默认回退是
DangerFullAccess。
设置模式的方式
自低到高(冲突时高优先级生效):
| 来源 | 示例 |
|---|---|
settings.permissions.defaultMode |
全局或项目配置文件 |
DSCC_PERMISSION_MODE 环境变量 |
export DSCC_PERMISSION_MODE=workspace-write |
--permission-mode CLI 参数 |
dscc --permission-mode read-only prompt ... |
/permissions <mode> |
会话中途切换 |
相关
- config-files.md
defaultMode的配置位置。 - hooks.md 在钩子层拒绝工具调用。