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** 订阅。扫描引擎、提示词、工具、多智能体循环、报告 — 全部未改动。只需零边际扫描成本。 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/244b5bee9f004755.svg)](https://github.com/keeganthewhi/strix-noapi/actions/workflows/ci.yml) [![tests](https://img.shields.io/badge/tests-102%20passing-brightgreen)]() [![upstream](https://img.shields.io/badge/upstream-usestrix%2Fstrix%20v0.8.3-blue)](https://github.com/usestrix/strix) [![license](https://img.shields.io/badge/license-Apache%202.0-green)](./LICENSE) [![python](https://img.shields.io/badge/python-3.12%2B-blue)]() ## 什么是这个 **如果您已经了解 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代理, 硬沙箱, 请求拦截, 逆向工具