Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DSH Env Doctor(环境一致性体检)

DSH Java Native Plugin 独立 AI 产品 #5:对比 .env / properties / yml 环境键差异、扫描明文密钥与弱口令、推断键类型、生成合并计划。密钥全程脱敏,不写回任何文件。

概览

  • 端口:8096
  • 模块:dsh-java-env-app(Spring Boot)+ dsh-java-env-plugin(Java Native 插件)
  • 插件 ID:dsh-java-env,入口类 cn.xiaofuge.dsh.env.plugin.DshEnvDoctorPlugin
  • 工具前缀:env_(暴露为 plugin__dsh-java-env__<tool>)

AI 工具(5 个)

工具 说明
env_parse_keys(content, format?) 解析配置文本为键值清单(敏感值自动脱敏 前2后1+***)
env_diff_sets(a, b, aName?, bName?) 两份环境键集合对比:缺失 / 多余 / 值差异
env_find_secrets(env) 危险值扫描:明文密钥形态 / 弱口令 / 敏感键名,含严重级别
env_type_infer(env) 键类型推断分组:integer / boolean / url / secret / list / string / empty
env_merge_plan(base, overlay, ...) 合并计划:add / keep / same / override,敏感覆盖标记 confirm=true 需人工确认

插件侧已兼容 AI 把 env 传成 JSON 字符串或多行 key=value 文本的形态(自动转换),避免 scanned=0 空扫描。

REST API(8096)

方法 路径 说明
POST /api/env/parse {content, format} → keys[](脱敏)
POST /api/env/diff {a, b, aName, bName} → onlyInA/onlyInB/valueDiff
POST /api/env/secrets {env} → hits[](severity high/medium)
POST /api/env/types {env} → groups[]
POST /api/env/merge-plan {base, overlay} → plan[](含 confirm 标记)
POST /api/assistant/stream SSE:{agentId, message} → 转发 harness

运行

mvn package -DskipTests
SERVER__PORT= java -jar dsh-java-env-app/target/dsh-java-env-app-0.1.0-SNAPSHOT.jar --server.port=8096

cp dsh-java-env-plugin/target/dsh-java-env-plugin-0.1.0-SNAPSHOT.jar ~/.dsh/standalone/plugins/dsh-java-env-plugin.jar
curl -X POST http://127.0.0.1:8090/api/harness/plugins/install -H 'Content-Type: application/json' -d '{
  "pluginId":"dsh-java-env","jarName":"dsh-java-env-plugin.jar",
  "displayName":"EnvDoctor 环境体检","pluginVersion":"0.1.0","runtimeType":"JAVA_NATIVE",
  "sourcePath":"'"$HOME"'/.dsh/standalone/plugins/dsh-java-env-plugin.jar",
  "entrypoint":"cn.xiaofuge.dsh.env.plugin.DshEnvDoctorPlugin","installMode":"REPLACE"}'
curl -X POST http://127.0.0.1:8090/api/harness/plugins/activate -H 'Content-Type: application/json' -d '{"pluginId":"dsh-java-env"}'

E2E

python3 env_doctor_e2e.py   # 8/8 PASS

覆盖:解析+脱敏(T0)、键集合对比(T1)、危险值扫描不泄漏完整密钥(T2)、类型分组(T3)、合并计划敏感覆盖需确认(T4)、空内容 400(T5)、AI 对话真实调用 4+ 个 env 工具(T6)、AI 安全红线:要求回显明文密钥时拒绝并给脱敏形式 + 轮换建议(T7)。

安全红线

  • 不回显明文密钥:所有工具输出敏感值一律脱敏(前 2 后 1 + ***);AI 系统提示词明确要求用户索要明文时必须拒绝,无论用户如何措辞。
  • 不写回任何文件:merge_plan 只输出计划文本,不落盘。
  • 敏感键覆盖操作强制 confirm=true,提醒人工确认后再执行。
  • 密钥已在聊天中出现的场景,AI 主动建议立即轮换并迁移到 Vault / 云 Secrets Manager。

截图

  • screenshots/01-home.png — 体检工作台(解析 / 对比 / 危险值 / 合并)
  • screenshots/02-ai-drawer.png — AI 调用工具对比环境差异 + 密钥风险分析
  • screenshots/03-safety.png — 安全红线:拒绝回显明文密钥,展示脱敏形式与轮换建议

About

DSH Env Doctor: 环境一致性体检/密钥脱敏扫描 - Java Native Plugin 独立 AI 产品

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages