Local MCP Server
在Termux中运行本地MCP服务器,支持Ollama模型的文件读取与命令执行。
下载 312
自动扫描代码库中的环境变量,生成示例文件并检查配置安全。
openclaw skills install @fratua/env-setup命令、参数、文件名以原文为准
扫描代码库中所有引用的环境变量,生成 .env.example,验证当前的 .env 文件,并确保敏感信息未被提交。
在常见模式下搜索所有环境变量引用:
# Node.js / JavaScript / TypeScript
grep -rn "process\.env\.\w\+" --include="*.js" --include="*.ts" --include="*.jsx" --include="*.tsx" . | grep -v node_modules | grep -v dist
# Python
grep -rn "os\.environ\|os\.getenv\|environ\.get" --include="*.py" . | grep -v __pycache__ | grep -v .venv
# Rust
grep -rn "env::var\|env::var_os\|dotenv" --include="*.rs" . | grep -v target
# Go
grep -rn "os\.Getenv\|os\.LookupEnv\|viper\." --include="*.go" . | grep -v vendor
# Docker / docker-compose
grep -rn "\${.*}" --include="*.yml" --include="*.yaml" docker-compose* 2>/dev/null
# 配置文件中的通用 .env 引用
grep -rn "env\." --include="*.toml" --include="*.yaml" --include="*.yml" . 2>/dev/nullWindows PowerShell 替代方案:
Get-ChildItem -Recurse -Include *.js,*.ts,*.jsx,*.tsx -Exclude node_modules,dist | Select-String "process\.env\.\w+"
Get-ChildItem -Recurse -Include *.py -Exclude __pycache__,.venv | Select-String "os\.environ|os\.getenv"解析 grep 输出,提取唯一的变量名:
process.env.DATABASE_URL → DATABASE_URLos.environ.get("SECRET_KEY", "default") → SECRET_KEY(默认值:default)os.getenv("API_KEY") → API_KEYenv::var("RUST_LOG") → RUST_LOG去重并按字母顺序排序。记录每个变量所在的文件和行号。
对每个变量进行分类:
| 类别 | 匹配模式 | 示例 |
|---|---|---|
| 🔴 敏感信息 | *KEY*, *SECRET*, *TOKEN*, *PASSWORD*, *CREDENTIAL* | API_KEY, JWT_SECRET |
| 🟡 服务地址 | *URL*, *HOST*, *ENDPOINT*, *URI* | DATABASE_URL, REDIS_HOST |
| 🟢 配置项 | *PORT*, *ENV*, *MODE*, *LEVEL*, *DEBUG* | PORT, NODE_ENV, LOG_LEVEL |
| ⚪ 其他 | 其余所有 | APP_NAME, MAX_RETRIES |
.env.example创建包含说明、类别和安全默认值的 .env.example:
# ============================================
# 环境配置
# 由 env-setup 工具生成
# ============================================
# --- 应用配置 ---
NODE_ENV=development
PORT=3000
LOG_LEVEL=info
# --- 数据库 ---
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
# --- 认证(🔴 敏感信息 — 永远不要提交真实值)---
JWT_SECRET=change-me-in-production
API_KEY=your-api-key-here
# --- 外部服务 ---
REDIS_URL=redis://localhost:6379规则:
change-me、your-xxx-here)🔴 敏感信息 警告.env 文件如果存在 .env 文件,则与发现的变量进行对比:
## .env 验证报告
### ❌ 缺失(代码中引用但未在 .env 中定义)
- `STRIPE_SECRET_KEY` — 在 src/billing.ts:14 中引用
- `SMTP_PASSWORD` — 在 src/email.ts:8 中引用
### ⚠️ 未使用(存在于 .env 但代码中未引用)
- `OLD_API_ENDPOINT` — 可能可安全删除
### ✅ 存在且被引用
- `DATABASE_URL` ✓
- `PORT` ✓
- `NODE_ENV` ✓.gitignore 安全检查 .env 是否已加入 .gitignore:
grep -q "^\.env$\|^\.env\.\*" .gitignore 2>/dev/null若未找到,建议添加以下内容:
# 环境文件
.env
.env.local
.env.*.local同时检查 Git 历史中是否曾意外提交过 .env 文件:
git log --all --diff-filter=A -- .env .env.local .env.production 2>/dev/null若发现,提醒用户敏感信息可能已存在于 Git 历史中,并建议使用 git filter-branch 或 BFG Repo-Cleaner 进行清理。
# 环境变量报告
| 指标 | 数量 |
|------|------|
| 发现的总变量数 | 15 |
| 🔴 敏感信息 | 4 |
| ❌ .env 中缺失 | 2 |
| ⚠️ .env 中未使用 | 1 |
| ✅ 配置正确 | 12 |
| .gitignore 保护 | ✅ |NEXT_PUBLIC_*(客户端暴露),需单独标记docker-compose.yml 中的 environment: 部分.env.development、.env.production、.env.test —— 需全部验证.env.example 和一个初始的 .env 文件${VAR:-default} —— 提取 VAR 名称| 错误 | 解决方案 |
|---|---|
| 未发现环境变量 | 项目可能未使用环境变量 —— 请确认用户意图 |
| .env 文件语法错误 | 标记不符合 KEY=value 格式的行 |
| 扫描到二进制文件 | 使用 --binary-files=without-match 排除 |
| 无法读取 .env 文件权限不足 | 检查文件权限;可能需要提升权限访问 |
*由 Clawb (SOVEREIGN) 构建 — 更多技能敬请期待*
已收录 1 个 Skill