feat: 添加权限管理系统
- 实现 tree-sitter 解析 bash 命令,准确识别管道、&&、子shell 等复杂命令 - 新增权限检查器模式,支持 allow/deny/ask 三级权限控制 - BashPermissionChecker: 支持命令模式匹配和外部目录访问检测 - FilePermissionChecker: 支持文件操作分级(read/write/edit/list/search/delete) - 敏感路径规则:系统目录拒绝,SSH/AWS 等凭证目录需确认 - 会话级权限记忆,用户决定可在当前会话内生效 - 所有工具(bash、read_file、write_file、edit_file、list_directory、search_files)已集成权限检查
This commit is contained in:
@@ -5,6 +5,7 @@ import { Agent } from './core/agent.js';
|
||||
import { TerminalUI } from './ui/terminal.js';
|
||||
import { loadConfig, initConfig } from './utils/config.js';
|
||||
import { allTools } from './tools/index.js';
|
||||
import { getPermissionManager, promptPermission } from './permission/index.js';
|
||||
|
||||
const program = new Command();
|
||||
|
||||
@@ -21,11 +22,18 @@ program
|
||||
await initConfig();
|
||||
});
|
||||
|
||||
// 初始化权限系统
|
||||
function setupPermissions(): void {
|
||||
const permissionManager = getPermissionManager();
|
||||
permissionManager.setAskCallback(promptPermission);
|
||||
}
|
||||
|
||||
// 单次查询命令
|
||||
program
|
||||
.command('ask <question>')
|
||||
.description('单次提问(不进入交互模式)')
|
||||
.action(async (question: string) => {
|
||||
setupPermissions();
|
||||
const config = loadConfig();
|
||||
const agent = new Agent(config);
|
||||
|
||||
@@ -48,6 +56,7 @@ program
|
||||
|
||||
// 默认:交互模式
|
||||
program.action(async () => {
|
||||
setupPermissions();
|
||||
const config = loadConfig();
|
||||
const agent = new Agent(config);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user