keeganthewhi/strixforcli
GitHub: keeganthewhi/strixforcli
一个通过本地 OAuth 代理调用多种 AI 订阅、无需 API 密钥的 Strix 分支,强化沙箱与审计能力以提升安全渗透测试的可控性与合规性。
Stars: 0 | Forks: 0
# strix-noapi
**与 [Strix](https://github.com/usestrix/strix) 相同。无 API 密钥。由您的 AI CLI 订阅提供支持。**
一个加固的 [`usestrix/strix`](https://github.com/usestrix/strix) 分支,它
用本地 OAuth 代理替换了 `LLM_API_KEY` 需求:strix 调用
通过 **Claude Max/Pro**、**ChatGPT Plus/Pro**、**Gemini Advanced**、
或 **Cursor Pro** 订阅。扫描引擎、提示词、工具、多智能体循环、报告 — 全部未改动。只需零边际扫描成本。
[](https://github.com/keeganthewhi/strix-noapi/actions/workflows/ci.yml)
[]()
[](https://github.com/usestrix/strix)
[](./LICENSE)
[]()
## 什么是这个
**如果您已经了解 Strix:** 这仍然是 Strix。相同的 300 次迭代智能体循环,
相同的 Jinja 提示词,相同的技能系统,相同的 Docker 沙箱(包含 nmap /
subfinder / Semgrep / Playwright / Caido),相同的 `create_vulnerability_report`
工具,相同的 SARIF 兼容输出。上游 `strix/` 树以原始形式保留 — 上游安全补丁可通过 `strix update` 精确挑选合并。
**变化之处:** 新增了一个 `strixnoapi/` 子包,它:
1. 在本地运行一个 **OAuth 代理**,监听 `127.0.0.1:` 并使用
承载令牌进行绑定。Strix 的 `litellm.acompletion()` 通过
`OPENAI_API_BASE` 调用它;代理读取您 CLI 的 OAuth 凭证并转发到真实提供者 API。
2. 在上游沙箱之上增加了一层 **加固层**(cap-drop ALL、自定义 seccomp、
`--read-only` 根、PID/内存限制、哈希链审计日志、20+ 种模式密钥脱敏、提示注入防护)。
3. 提供了上游没有的 **UX 命令**:`strix setup`、`strix doctor`、
`strix resume`、`strix audit verify`、`strix report --format sarif|html`、
`strix version`、`strix update`。
控制台脚本 `strix` 仍然以相同方式运行完整的渗透测试 — 您只是无需支付 API 令牌费用。
## 60 秒快速入门
```
git clone https://github.com/keeganthewhi/strix-noapi.git
cd strix-noapi
uv sync
uv run strix setup --auto # detects + persists chosen CLI
uv run strix doctor # preflight (all green)
STRIX_CLI_MODE=claude uv run strix \
--target /path/to/repo --target https://app.example.com \
--non-interactive --scan-mode deep
```
认证您将要路由的 CLI 一次:
| CLI | 安装 | 登录 |
|---|---|---|
| Claude Code | `npm i -g @anthropic-ai/claude-code` | `claude` |
| OpenAI Codex | `npm i -g @openai/codex` | `codex login` |
| Google Gemini | `npm i -g @google/gemini-cli` | `gemini` |
| Cursor | `curl https://cursor.com/install \| bash` | `cursor-agent login` |
## 架构
```
Strix agent loop (UNCHANGED from upstream)
│ litellm.acompletion(...)
▼
http://127.0.0.1:/v1/chat/completions
│ FastAPI proxy: bearer-auth, rate-limit, redact, audit, inject-guard
▼
claude_code / codex / gemini / cursor translator
│ reads OAuth token from ~/./ — never persisted
▼
api.anthropic.com / chatgpt.com / generativelanguage.googleapis.com / api.cursor.com
│ billed to YOUR subscription, not an API key
▼
Response streamed back, outbound redaction, audit appended
```
## 自动处理的兼容性问题
在针对真实订阅的端到端验证中发现并修复,用户无需处理:
- **Anthropic OAuth 内容门控** — 订阅路径仅接受精确的 Claude Code 系统提示。翻译器将上游的 `strix` 系统提示包裹在 `… ` 中作为第一条用户消息。
- **Windows Docker SDK npipe 缓冲区错误** — `win32file.WriteFile` 拒绝 `memoryview` 载荷;运行时将写入分块为 64 KiB 并强制转换为 `bytes`(在非 Windows 上为无操作)。
- **strix 预热双重探测** — 通过猴子补丁禁用,因为代理启动器已验证 `/health`,避免浪费订阅配额。
- **LiteLLM 长回合超时** — 扩展 Anthropic SSE 事件翻译器,覆盖 `message_start` / `content_block_start` /
`input_json_delta` / `thinking_delta` / `content_block_stop` /
`message_stop` / `error` / `ping`,消除回合中间的静默。
- **提示缓存** — 为 `strix_system` 块附加 `cache_control: {"type":"ephemeral"}`,以便 Anthropic 提示缓存折扣生效(持续运行中令牌减少约 10 倍)。
## 安全态势(与上游的差异)
- 代理仅绑定到 `127.0.0.1`;每个请求都需要 UUID 承载令牌。
- OAuth 令牌不会被 strixnoapi 持久化到磁盘;每次请求从 CLI 原生路径读取。
- 哈希链式 JSONL 审计日志(`~/.strix/audit/proxy-.jsonl`) — `strix audit verify` 可检测事后篡改。
- 20+ 种模式密钥脱敏(AWS、GitHub、JWT、Anthropic、OpenAI、
Stripe、Slack、私钥等)同时作用于提示词和响应。
- 提示注入防护 — 8 组模式家族;严格模式返回 400。
- 沙箱覆盖(`containers/Dockerfile.hardened`、
`containers/seccomp.json`、`containers/docker-run-hardened.sh`):
`cap-drop=ALL`、`no-new-privileges`、`--read-only`、`--pids-limit=512`、
`--memory=4g`、自定义 seccomp 拒绝 `ptrace`、`keyctl`、
`perf_event_open`、`bpf`、内核模块操作、`reboot`。
- 权限门控:如果 `~/.strix/cli-config.json` 可被所有者以外用户读取,则拒绝启动(POSIX 权限)。
- 每个构建均包含 CycloneDX SBOM。
详见 `SECURITY.md` 和 `THREAT_MODEL.md`。
## CLI 子命令
| 命令 | 功能 |
|---|---|
| `strix`(默认) | 运行扫描 — 与上游相同的标志(`--target`、`--scan-mode`、`--non-interactive`、`--instruction`、`--scope-mode`、`--diff-base`、`--config`) |
| `strix setup [--auto \| --cli ]` | 检测已安装的 CLI,持久化选择的模式,并在 `~/.strix/cli-config.json`(权限 0o600)写入配置 |
| `strix doctor [--json]` | 前置检查诊断 — Python、Docker、端口、CLI 认证、配置权限、磁盘 |
| `strix resume ` | 从最后一个检查点继续扫描 |
| `strix report --format sarif\|html\|markdown` | 导出发现 |
| `strix audit verify ` | 重新计算并检查哈希链 |
| `strix update [--dry-run]` | 拉取上游 `usestrix/strix` 安全补丁 |
| `strix version` | 打印 strix-noapi + 嵌入的 strix + 环境信息 |
| `strix-upstream` | 原始上游入口点,绕过代理 |
## 配置参考
```
# 激活代理所必需(否则将回退到 API-key 模式):
export STRIX_CLI_MODE=claude # or: codex, gemini, cursor, auto
# 可选的每 CLI 模型覆盖:
export STRIX_CLAUDE_MODEL=claude-sonnet-4-6
export STRIX_CODEX_MODEL=gpt-5.4
export STRIX_GEMINI_MODEL=gemini-2.5-pro
# 可选的代理调整:
export STRIX_PROXY_RATE_LIMIT=30 # requests/min (default 30)
export STRIX_PROXY_INACTIVITY_S=1800 # upstream call timeout
export STRIX_LOG_PROMPTS=0 # 1 to log redacted prompts (privacy default: off)
export STRIX_ENFORCE_PERMISSIONS=1 # 0 to skip 0o600 checks (not recommended)
# 可选的沙箱控制:
export STRIX_ALLOW_NET_RAW=1 # 0 to drop NET_RAW + NET_ADMIN (some nmap modes break)
export STRIXNOAPI_SKIP_NPIPE_PATCH=0 # 1 to skip Windows docker patch
```
配置文件(由 `strix setup` 生成):`~/.strix/cli-config.json`,权限 0o600。
## 回退到 API 密钥模式(上游行为)
```
unset STRIX_CLI_MODE
export STRIX_LLM=openai/gpt-5.4
export LLM_API_KEY=sk-...
uv run strix --target … # or: uv run strix-upstream --target …
```
## 测试与代码规范检查
```
make verify # ruff + 102 pytest on strixnoapi/
make fresh-clone-test # simulate a net-new user clone + install + verify
scripts/verify_install.sh # 12-step deep sanity check
```
CI 矩阵:ubuntu + macos + windows × Python 3.12 + 3.13;每次推送到 `main`、夜间 CVE 审计(`pip-audit` + `osv-scanner`)运行,针对 OWASP Juice Shop 的端到端工作流受保护。
## 文档
| 文件 | 说明 |
|---|---|
| `CLAUDE.md` | 在 Claude Code 及其他智能体于仓库中工作的操作手册 |
| `SECURITY.md` | 威胁模型 + 披露流程 |
| `THREAT.md` | STRIDE 风格分析及信任边界图 |
| `MIGRATION.md` | 与上游相比的文件级差异 |
| `CHANGELOG.md` | Keep-a-Changelog 格式,每次发布的说明 |
| `VERIFIED.md` | 真实端到端运行日志 |
| `CONTRIBUTING.md` | PR 检查清单 + 黄金规则("永不修改 `strix/`") |
| `NOTICE` | Apache 2.0 上游署名 |
## 许可证
Apache 2.0(继承自上游)。参见 `LICENSE`。
上游 Strix 版权 © OmniSecure Inc.;`NOTICE` 包含完整署名。
## 项目状态
**预览版(v0.1.0)。** 上游扫描引擎为生产级
(24k 星标,积极维护)。订阅-OAuth 代理是较新的层 — Claude / Codex / Gemini 已针对真实扫描端到端验证;Cursor 翻译器在首个用户实际使用 Cursor Pro 订阅前为实验性。
请在 `keeganthewhi/strix-noapi` 提交代理、加固层或子命令的 Bug。对于扫描引擎行为,上游(`usestrix/strix`)具有权威性。
标签:API集成, ChatGPT, Claude, Cursor, CVE检测, Docker, Gemini, GitHub Advanced Security, Promptflow, Python, SEO: strix-noapi, SEO: 无API密钥AI扫描, SEO: 本地AI代理, Strix, 代理转发, 可观测性, 多智能体循环, 安全加固, 安全防御评估, 容器沙箱, 提示注入防护, 无API密钥, 无后门, 最小权限, 本地OAuth代理, 硬沙箱, 请求拦截, 逆向工具