ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

dcg 危险命令防护工具 JSON Schema 集成指南:用 schemars 让 config.toml 拥有编辑器自动补全

dcg 危险命令防护工具 JSON Schema 集成指南:用 schemars 让 config.toml 拥有编辑器自动补全 dcg 危险命令防护工具 JSON Schema 集成指南用 schemars 让 config.toml 拥有编辑器自动补全【免费下载链接】destructive_command_guardThe Destructive Command Guard (dcg) is for blocking dangerous git and shell commands from being executed by agents.项目地址: https://gitcode.com/GitHub_Trending/de/destructive_command_guarddcgDestructive Command Guard是一个 AI 智能体危险命令防护工具能拦截 AI Agent 执行的git reset --hard、rm -rf /等破坏性命令。它的核心配置文件config.toml字段众多手写时容易拼错键名。好消息是dcg 通过 Rust 生态的schemars库直接从配置类型自动生成 JSON Schema让你的编辑器获得自动补全、悬停文档和错误校验。一、为什么 dcg 需要 JSON Schemadcg 的 config.toml 包含 16 个配置板块general、packs、policy、heredoc、history、git_awareness等每个板块又有若干字段。新手常见痛点❓ 记不住字段名retention_days还是retain_days❓ 不确定取值范围history.max_size_mb最小能设多少❓ 拼写错误静默通过TOML 本身不校验未知键错写enable true不报错配置直接失效JSON Schema 正是解法——它是描述配置结构的标准格式编辑器插件读入后即可提供补全与校验。二、schemars类型到 Schema 的一键生成dcg 没有手写 Schema而是在每个 Rust 配置结构体上派生schemars::JsonSchematraitSchema 由代码自动生成配置类型定义src/config.rs 中的Config结构体生成逻辑src/config.rs 的config_json_schema()函数调用schemars::schema_for!(Config)后补上$id、title、description元信息依赖声明Cargo.toml 中schemars 1.0注释明确写着用途——JSON Schema generation for config.toml (editor autocomplete/validation)这样做的好处配置结构一改Schema 自动跟上永远不会和二进制行为脱节。生成的成品已提交在仓库根目录config.schema.json采用 JSON Schema draft 2020-12 规范。三、一键启用编辑器自动补全步骤VS Code 用户Even Better TOML 插件在插件市场安装Even Better TOML在config.toml顶部加一行 Schema 关联注释#:schema 指向 dcg 发布的 config.schema.json 地址 [packs] enabled [kubernetes]也可以在 VS Code 设置的evenBetterToml.schema.associations中把**/dcg/config.toml和**/.dcg.toml关联到该 Schemataplo 用户LSP / CLI在仓库根目录的.taplo.toml中为 dcg 配置文件规则指定[rule.schema]的path即可。两种方式的完整配置示例参见官方文档 docs/configuration.md 的 Editor Autocomplete Validation 章节。启用后你会得到✅ 输入[his自动补出[history]✅ 悬停字段名显示完整文档如retention_days会提示保留天数默认 90✅ 未知字段、类型错误标红报错四、快速了解 Schema 结构config.schema.json 的根对象把 16 个配置板块暴露为properties每个板块通过$ref指向$defs中的定义关键亮点板块校验能力示例policy模式只允许deny/ask/warn/log四个值oneOf约束historyretention_days限制在 1~3650 之间minimum/maximumgeneralunverified_decision只能是ask或denyheredoctimeout_ms等字段标注uint64格式且minimum: 0这些约束来自 src/config.rs 中的#[schemars(range(min 1, max 3650))]等属性宏——校验规则与代码共享同一份真相。五、如何重新生成 Schema 与漂移检测手动重新生成# 打印到标准输出 dcg config schema # 写入或覆盖文件 dcg config schema --output config.schema.json该子命令定义于 src/cli.rs。漂移检测测试防止 Schema 过期dcg 内置了一个防脱节测试 tests/config_schema_drift.rs它用当前配置类型重新生成 Schema与仓库中提交的config.schema.json逐字节比对一旦有人改了配置结构却忘了重新生成 SchemaCI 立即失败。若确认是有意变更可运行DCG_BLESS_SCHEMA1 cargo test --test config_schema_drift让测试自动重写提交文件。六、总结 dcg 用schemars派生宏把 Rust 配置类型直接编译成 JSON SchemaSchema 与程序行为永不脱节⚡ 一条dcg config schema命令即可导出最新 Schema 配合Even Better TOML或taploconfig.toml立刻拥有补全、悬停文档与报错能力 漂移检测测试保证提交的 config.schema.json 始终与代码同步想让 AI Agent 安全执行命令配置是第一步有了 Schema配置这一步也可以又快又稳。 延伸阅读docs/configuration.md · src/config.rs · tests/config_schema_drift.rs【免费下载链接】destructive_command_guardThe Destructive Command Guard (dcg) is for blocking dangerous git and shell commands from being executed by agents.项目地址: https://gitcode.com/GitHub_Trending/de/destructive_command_guard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表