|
| 1 | +<!DOCTYPE html> |
| 2 | +<html lang="zh-CN"> |
| 3 | +<head> |
| 4 | +<meta charset="utf-8"> |
| 5 | +<meta name="viewport" content="width=device-width, initial-scale=1"> |
| 6 | +<title>ShellWard — AI 应用合规网关|网安法/PIPL/等保/数据出境一键体检</title> |
| 7 | +<meta name="description" content="一行命令扫出你的 AI 项目踩了哪些中国合规红线(网安法 2026/PIPL/等保2.0/数据出境/AI标识)。零上传、零依赖、开源。npx shellward scan"> |
| 8 | +<meta property="og:title" content="ShellWard — AI 应用合规网关"> |
| 9 | +<meta property="og:description" content="npx shellward scan — 30 秒查出 AI 项目的数据出境、硬编码密钥、个人信息暴露等合规风险,并给出境内替代处方。"> |
| 10 | +<style> |
| 11 | +:root{--ink:#0f172a;--muted:#64748b;--line:#e2e8f0;--brand:#cb0000;--bg:#f8fafc;--ok:#15803d} |
| 12 | +*{box-sizing:border-box} |
| 13 | +html{scroll-behavior:smooth} |
| 14 | +body{margin:0;color:var(--ink);background:#fff;font:16px/1.7 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif} |
| 15 | +a{color:var(--brand);text-decoration:none} |
| 16 | +.wrap{max-width:960px;margin:0 auto;padding:0 20px} |
| 17 | +nav{display:flex;align-items:center;justify-content:space-between;padding:18px 0;border-bottom:1px solid var(--line)} |
| 18 | +nav .logo{font-weight:800;font-size:18px} |
| 19 | +nav .logo span{color:var(--brand)} |
| 20 | +nav a.gh{color:var(--ink);font-size:14px;border:1px solid var(--line);padding:6px 14px;border-radius:8px} |
| 21 | +.hero{text-align:center;padding:64px 0 40px} |
| 22 | +.hero h1{font-size:40px;line-height:1.25;margin:0 0 16px;letter-spacing:-.5px} |
| 23 | +.hero h1 .hl{color:var(--brand)} |
| 24 | +.hero p.sub{font-size:19px;color:var(--muted);max-width:680px;margin:0 auto 28px} |
| 25 | +.cmd{display:inline-flex;align-items:center;gap:12px;background:#0f172a;color:#e2e8f0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:17px;padding:14px 20px;border-radius:10px} |
| 26 | +.cmd button{background:#1e293b;color:#94a3b8;border:0;border-radius:6px;padding:6px 10px;font-size:12px;cursor:pointer} |
| 27 | +.cmd button:hover{color:#fff} |
| 28 | +.badges{margin-top:22px;display:flex;gap:8px;justify-content:center;flex-wrap:wrap} |
| 29 | +.badges img{height:20px} |
| 30 | +section{padding:48px 0;border-top:1px solid var(--line)} |
| 31 | +h2{font-size:26px;margin:0 0 8px;text-align:center} |
| 32 | +.lead{color:var(--muted);text-align:center;max-width:680px;margin:0 auto 28px} |
| 33 | +.term{background:#0f172a;border-radius:12px;padding:20px 22px;color:#e2e8f0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13.5px;line-height:1.7;overflow-x:auto;white-space:pre} |
| 34 | +.term .r{color:#f87171}.term .y{color:#fbbf24}.term .g{color:#4ade80}.term .d{color:#64748b}.term .b{color:#7dd3fc} |
| 35 | +.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin-top:24px} |
| 36 | +.card{border:1px solid var(--line);border-radius:12px;padding:20px;background:var(--bg)} |
| 37 | +.card h3{margin:0 0 6px;font-size:17px} |
| 38 | +.card p{margin:0;color:var(--muted);font-size:14.5px} |
| 39 | +.problem{background:#fef2f2;border:1px solid #fecaca;border-radius:12px;padding:24px;margin-top:8px} |
| 40 | +.problem b{color:var(--brand)} |
| 41 | +.trust{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:20px} |
| 42 | +.trust div{text-align:center;padding:16px;border:1px solid var(--line);border-radius:10px} |
| 43 | +.trust .big{font-size:22px;font-weight:800;color:var(--ok)} |
| 44 | +.cta{text-align:center} |
| 45 | +.cta a.btn{display:inline-block;background:var(--brand);color:#fff;padding:14px 32px;border-radius:10px;font-weight:700;font-size:17px;margin:8px} |
| 46 | +.cta a.btn.alt{background:#fff;color:var(--ink);border:1px solid var(--line)} |
| 47 | +footer{border-top:1px solid var(--line);padding:32px 0;color:var(--muted);font-size:14px;text-align:center} |
| 48 | +table{width:100%;border-collapse:collapse;margin-top:18px;font-size:14px} |
| 49 | +th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left} |
| 50 | +th{color:var(--muted);font-weight:600} |
| 51 | +td code{background:#f1f5f9;padding:1px 6px;border-radius:4px;font-size:12.5px} |
| 52 | +@media(max-width:640px){.hero h1{font-size:30px}.cmd{font-size:14px}} |
| 53 | +</style> |
| 54 | +</head> |
| 55 | +<body> |
| 56 | +<div class="wrap"> |
| 57 | + |
| 58 | +<nav> |
| 59 | + <div class="logo">🛡️ Shell<span>Ward</span></div> |
| 60 | + <a class="gh" href="https://github.com/jnMetaCode/shellward">GitHub ⭐</a> |
| 61 | +</nav> |
| 62 | + |
| 63 | +<header class="hero"> |
| 64 | + <h1>AI 应用<span class="hl">合规网关</span><br>一行命令,查清你踩了哪些红线</h1> |
| 65 | + <p class="sub">为中国监管而生的 AI Agent 安全合规工具。网安法 2026 · PIPL · 等保2.0 · 数据出境 · AI标识,30 秒出一张红黄绿体检报告。</p> |
| 66 | + <div class="cmd"> |
| 67 | + <span><span style="color:#64748b">$</span> npx shellward scan</span> |
| 68 | + <button onclick="navigator.clipboard&&navigator.clipboard.writeText('npx shellward scan').then(()=>{this.textContent='已复制'})">复制</button> |
| 69 | + </div> |
| 70 | + <div class="badges"> |
| 71 | + <img src="https://img.shields.io/npm/v/shellward?color=cb0000&label=npm" alt="npm"> |
| 72 | + <img src="https://img.shields.io/badge/tests-251%20passing-brightgreen" alt="tests"> |
| 73 | + <img src="https://img.shields.io/badge/dependencies-0-brightgreen" alt="deps"> |
| 74 | + <img src="https://img.shields.io/badge/license-Apache--2.0-blue" alt="license"> |
| 75 | + </div> |
| 76 | +</header> |
| 77 | + |
| 78 | +<section> |
| 79 | + <h2>问题:你的 AI 项目可能正在违规</h2> |
| 80 | + <p class="lead">2026 年 1 月 1 日,修订版《网络安全法》生效,罚款上限提到 <b>1000 万</b>,新增"责令关闭 App"。</p> |
| 81 | + <div class="problem"> |
| 82 | + 几乎每个国产 AI 应用都在调 OpenAI / Claude / Gemini。但只要你把用户的<b>身份证号、手机号、对话内容</b>发给境外大模型,在中国监管下这就是<b>数据出境</b>——敏感个人信息 1 万人即触发安全评估,重要数据一律不得无评估出境。2026 年已有 API 中转站站长因此被刑拘。<br><br> |
| 83 | + 问题是:<b>你的项目,现在到底踩了哪些线?</b> |
| 84 | + </div> |
| 85 | +</section> |
| 86 | + |
| 87 | +<section> |
| 88 | + <h2>30 秒,精确到「文件:行」</h2> |
| 89 | + <p class="lead">零安装、只读、不上传任何数据。一行命令,给你一张可截图、可存档的体检报告。</p> |
| 90 | + <div class="term"><span class="d">## 🔍 项目实测风险</span> |
| 91 | +🌐 数据出境风险: 2 | 🔑 硬编码密钥: 3 | 🪪 个人信息暴露: 2 | 📂 .env 权限: 1 |
| 92 | + |
| 93 | +<span class="r">- .env:2 境外大模型端点: OpenAI — 向其发送个人信息即构成数据出境</span> |
| 94 | +<span class="r">- package.json:12 境外大模型 SDK 依赖: @anthropic-ai/sdk — 项目内含出境通道</span> |
| 95 | +<span class="r">- src/config.ts:3 硬编码 GitHub Token: ghp_12*** — 凭据不应写入源码</span> |
| 96 | +<span class="y">- customers.csv:2 手机号 13912*** — 个人信息出现在文件中,需评估脱敏</span> |
| 97 | + |
| 98 | +<span class="b">合规得分: 63/100 [C]</span> <span class="g">🟢 8</span> | <span class="y">🟡 3</span> | <span class="r">🔴 1</span> | ⚪ 2</div> |
| 99 | +</section> |
| 100 | + |
| 101 | +<section> |
| 102 | + <h2>不止诊断,还给处方</h2> |
| 103 | + <p class="lead">扫到境外模型后,直接告诉你换成哪个境内已备案模型——多数是 OpenAI 兼容接口,<b>改个 base_url 就合规</b>。</p> |
| 104 | + <table> |
| 105 | + <thead><tr><th>境内模型</th><th>厂商</th><th>OpenAI 兼容 base_url</th></tr></thead> |
| 106 | + <tbody> |
| 107 | + <tr><td>通义千问</td><td>阿里云百炼</td><td><code>dashscope.aliyuncs.com/compatible-mode/v1</code></td></tr> |
| 108 | + <tr><td>DeepSeek</td><td>深度求索</td><td><code>api.deepseek.com</code></td></tr> |
| 109 | + <tr><td>Kimi</td><td>月之暗面</td><td><code>api.moonshot.cn/v1</code></td></tr> |
| 110 | + <tr><td>智谱 GLM</td><td>智谱 AI</td><td><code>open.bigmodel.cn/api/paas/v4</code></td></tr> |
| 111 | + </tbody> |
| 112 | + </table> |
| 113 | +</section> |
| 114 | + |
| 115 | +<section> |
| 116 | + <h2>能力</h2> |
| 117 | + <div class="grid"> |
| 118 | + <div class="card"><h3>🌐 数据出境检测</h3><p>识别境外大模型端点与 SDK 依赖(openai/anthropic/gemini…)——中国独有、英文工具没有的概念。</p></div> |
| 119 | + <div class="card"><h3>🪪 中文 PII</h3><p>身份证(GB11643 校验)、银行卡(Luhn)、运营商手机号,配合 PIPL 敏感个人信息识别。</p></div> |
| 120 | + <div class="card"><h3>📋 合规评分卡</h3><p>映射网安法/PIPL/等保2.0/数据出境/AI标识,红黄绿评分,发现驱动。</p></div> |
| 121 | + <div class="card"><h3>📄 报告导出</h3><p><code>--html</code> 生成可打印成 PDF 的专业报告,供等保/PIPL 备案与审计存档。</p></div> |
| 122 | + <div class="card"><h3>🔒 运行时防护</h3><p>MCP / 插件 / SDK 接入,拦截提示注入、危险命令、数据外泄与 MCP 工具投毒。</p></div> |
| 123 | + <div class="card"><h3>⚙️ CI 门禁</h3><p>GitHub Action 一行接入,PR 自动合规扫描,发现 critical 直接拦构建。</p></div> |
| 124 | + </div> |
| 125 | +</section> |
| 126 | + |
| 127 | +<section> |
| 128 | + <h2>为什么可以放心用</h2> |
| 129 | + <div class="trust"> |
| 130 | + <div><div class="big">零上传</div>纯本地只读,代码不出本机</div> |
| 131 | + <div><div class="big">零依赖</div>可在信创/私有化/离线环境直接跑</div> |
| 132 | + <div><div class="big">开源</div>Apache-2.0,代码全公开</div> |
| 133 | + <div><div class="big">中文优先</div>为中文语境与中国监管而生</div> |
| 134 | + </div> |
| 135 | +</section> |
| 136 | + |
| 137 | +<section class="cta"> |
| 138 | + <h2>现在就试</h2> |
| 139 | + <p class="lead">在你的 AI 项目根目录运行:</p> |
| 140 | + <div style="text-align:center"><div class="cmd" style="display:inline-flex">npx shellward scan</div></div> |
| 141 | + <p style="margin-top:24px"> |
| 142 | + <a class="btn" href="https://github.com/jnMetaCode/shellward">GitHub ⭐ Star</a> |
| 143 | + <a class="btn alt" href="https://www.npmjs.com/package/shellward">npm</a> |
| 144 | + </p> |
| 145 | +</section> |
| 146 | + |
| 147 | +<footer> |
| 148 | + 公众号「AI不止语」· 技术问答 · 项目更新 · 实战文章<br> |
| 149 | + ShellWard · Apache-2.0 · <a href="https://github.com/jnMetaCode/shellward">github.com/jnMetaCode/shellward</a> |
| 150 | +</footer> |
| 151 | + |
| 152 | +</div> |
| 153 | +</body> |
| 154 | +</html> |
0 commit comments