sanks205/getobserver

GitHub: sanks205/getobserver

一款零配置的离线项目诊断工具,通过单次扫描统一分析代码、依赖、配置和基础设施问题并生成带修复建议的 HTML 报告。

Stars: 10 | Forks: 0

# Observer **找出问题所在——并为您提供修复方案。** *代码、依赖项、配置和基础设施——一次扫描,一份报告。离线运行,单一二进制文件,无需账号。* ![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg) ![Go](https://img.shields.io/badge/Go-1.26%2B-00ADD8?logo=go&logoColor=white) ![Platforms](https://img.shields.io/badge/platform-windows%20%7C%20macOS%20%7C%20linux-lightgrey) ![Single binary](https://img.shields.io/badge/install-single%20binary%2C%20no%20deps-success) ## ⬇️ 获取 Observer 下载适合您操作系统的单一二进制文件——无需 runtime,无需依赖项,无需账号: | Windows | macOS (Apple Silicon) | macOS (Intel) | Linux | |:---:|:---:|:---:|:---:| | [**下载**](https://github.com/sanks205/getobserver/releases/latest/download/observer_windows_amd64.exe) | [**下载**](https://github.com/sanks205/getobserver/releases/latest/download/observer_darwin_arm64) | [**下载**](https://github.com/sanks205/getobserver/releases/latest/download/observer_darwin_amd64) | [**下载**](https://github.com/sanks205/getobserver/releases/latest/download/observer_linux_amd64) | 更喜欢使用包管理器?Scoop · Homebrew · `go install` —— 请参阅[安装说明](#installation)。在 macOS/Linux 上:`chmod +x observer_*`。 然后将其指向任何项目: ``` observer analyze . --out report.html ``` 您将获得**一个独立的 `report.html`** —— 分组的问题发现、符合标准的安全评级 (A–E),以及针对每个问题的建议修复方案。完全离线;在浏览器中打开它或打印为 PDF。 目标:帮助开发者快速识别生产环境问题,而无需手动搜索庞大的代码库和服务器日志。 该 CLI 二进制文件名为 **`observer`**。 ## 演示 ![Observer 扫描项目并打开生产健康报告](https://raw.githubusercontent.com/sanks205/getobserver/main/docs/observer-demo.gif) 将其指向任何代码库,即可获得一份独立的 HTML 报告——无需服务器、无需账号、无需 instrumentation: ``` observer analyze ./examples/php-demo --ai --out report.html ``` Observer 会检测技术栈,标记安全 / runtime / 依赖项问题及其严重程度和建议修复方案,对项目的**安全性 (Security)** 和**代码健康度 (Code Health)** 进行评分 (A–F),并生成一个可共享的 `report.html`,您可以将其打开或打印为 PDF。 ## Observer 的对比 Observer 并不打算取代 SonarQube 或 Sentry——它是一种不同*类型*的工具:一个零配置、离线的快照,将代码、依赖项、runtime 和日志统一在一份报告中。客观对比如下: | | **Observer** | SonarQube / Semgrep | Snyk | Sentry | |---|---|---|---|---| | **配置** | 单一二进制文件,离线,无需账号 | Server/CI 或云端账号 | 云端账号 | Instrument 应用 + 账号 | | **覆盖范围** | 代码 + 依赖项 + runtime + 日志 + **基础设施/配置**,均在**一份报告**中 | 代码 | 依赖项 + 代码 | Runtime 错误 | | **静态分析深度** | 核心规则 + 可选 Semgrep | **更深**(支持多种语言) | 良好 | — | | **支持离线/无需注册** | ✅(可强制执行——`--assert-offline`) | — | — | — | | **定价** | 免费 + 一次性 Pro 版 | 订阅制 | 按开发者订阅 | 按使用量 + 按贡献者 | | **最适用于** | 审计、交接、SMB、离线扫描 | 持续的团队质量把控 | 依赖项繁重的团队 | 实时生产环境监控 | **使用 Observer 的场景** 当您需要进行一次性审计、遗留/客户交接、物理隔离 (air-gapped) 扫描,或无需搭建服务器或支付按席位费用即可获得统一的健康快照时。**选择其他工具的场景** 当您需要大规模的深度持续静态分析 (SonarQube/Semgrep) 或全天候的生产环境监控 (Sentry/Datadog) 时——许多团队会同时愉快地使用两者。 ## 限制 AI 生成的代码 现在 AI 编写了大量代码——而且它推送的问题正是 Observer 已经捕获的那些(硬编码的 secret、注入、脆弱的加密、有风险的依赖项),其比例甚至高于手写代码。Observer 是**这些变更的离线安全网**:无需重新扫描整个项目,只需扫描更改的部分。 ``` # 仅扫描你(或你的 AI 助手)刚刚更改的内容,对比上一次 commit observer analyze . --diff # PR review — 仅扫描该 branch 自 main fork 以来新增的行 observer analyze . --diff-base main --fail-on High # Pre-commit gate — 如果 staged changes 新增了 High 严重级别的 finding,则阻止 commit observer install-hook # one-time; bypass a commit with `git commit --no-verify` ``` 在任何扫描中添加 `--attest attestation.json` 以生成机器可读的记录——*“由 Observer 扫描,0 个高危,PASS”*——以附加到 PR 或保留用于审计跟踪。它是同样的离线二进制文件:您的代码永远不会离开您的机器,也无需账号。*(Observer Pro 可以对证明进行加密签名,以提供防篡改的证据。)* ## 隐私与物理隔离 (air-gapped) 使用 Observer 默认**完全离线运行**——关于您代码的任何信息都永远不会离开您的机器。没有账号,没有 telemetry,没有 phone-home。唯一涉及网络的功能都是明确选择启用的:`--cve` (OSV.dev 依赖项查找),`--ai` *配合* `OPENAI_API_KEY` 使用,以及 `--email` / `--slack` / `--teams` / `--webhook` 通知器。如果不开启它们,扫描将完全在本地进行。 对于受监管、物理隔离 (air-gapped) 或客户机密的工作,您可以将此保证变为**可强制执行的**: ``` observer analyze ./my-project --assert-offline ``` 如果传入了任何需要联网的 flag,`--assert-offline` 将拒绝运行,并取消设置 `OPENAI_API_KEY`,以便 AI 层保持在其本地启发式算法上。它会打印出 `Offline mode: no network I/O.`,这样您就可以在审计中将其作为证据。非常适合金融、医疗保健、政府/国防或在 NDA 下审计客户代码——代码保留在原地,并且您可以证明这一点。 ## 架构 该产品围绕一个单一的**诊断核心引擎 (Diagnostic Core Engine)** 构建,每个接口(目前是 CLI;以后会有 API 和企业级 agent)都重用它。 ``` Interfaces CLI · API · Enterprise agent | v Diagnostic Core Engine | v ┌─────────────────────────────────────────────┐ │ Modules │ │ technology detector · static scanner │ │ runtime analyzer · log analyzer │ │ dependency analyzer · AI analyzer │ │ report generator │ └─────────────────────────────────────────────┘ ``` ### 仓库布局 ``` ai-production-debugging-assistant/ ├── cmd/cli/ # `observer` CLI entry point ├── internal/ │ ├── scanner/ # Phase 1 — folder scan, file counts, categories │ ├── detector/ # Phase 2 — language/framework/db/infra detection │ ├── analyzer/ # Phase 3 — static code analysis │ ├── logger/ # Phase 5 — log analysis │ ├── reporter/ # Phase 7 — HTML report generation │ ├── runtime/ # Phase 4 — ingest observer-agent runtime events │ ├── ai/ # Phase 6 — provider-agnostic AI abstraction │ └── storage/ # PostgreSQL persistence (SaaS/enterprise) ├── observer-agent/ # Phase 4 — drop-in PHP runtime error collector ├── api/ # HTTP API (Gin/Fiber) — later phase ├── web-report/ # static report assets / future React dashboard ├── docker/ # Dockerfile + compose assets ├── docs/ # documentation ├── examples/ # demo projects with intentional issues │ └── php-demo/ ├── tests/ # integration tests └── README.md ``` ## 安装说明 ### 下载预构建的二进制文件(推荐) Observer 以**单一独立可执行文件**的形式发布——无需 runtime,无依赖项,不需要在您的系统上安装任何东西。从 [Releases](https://github.com/sanks205/getobserver/releases) 页面下载适用于您操作系统的二进制文件并运行它: | OS | 文件 | |---|---| | Windows | `observer_windows_amd64.exe` | | macOS (Apple Silicon) | `observer_darwin_arm64` | | macOS (Intel) | `observer_darwin_amd64` | | Linux | `observer_linux_amd64` / `observer_linux_arm64` | 在 macOS/Linux 上,使其具有可执行权限:`chmod +x observer_*`(可选地重命名为 `observer`)。 二进制文件目前**未签名**——请根据 [release](https://github.com/sanks205/getobserver/releases) 上的 `SHA256SUMS.txt` 验证您的下载。(签名/公证的构建版本已列入路线图。) ### 通过包管理器安装 **Windows — [Scoop](https://scoop.sh):** ``` scoop install https://raw.githubusercontent.com/sanks205/getobserver/main/packaging/scoop/observer.json ``` **macOS / Linux — [Homebrew](https://brew.sh):** ``` brew install https://raw.githubusercontent.com/sanks205/getobserver/main/packaging/homebrew/observer.rb ``` 这两种方式都会将 `observer` 命令安装到您的 PATH 中,并验证下载的 SHA-256。 ### 从源码构建 需要 [Go 1.26+](https://go.dev/dl/)。 ``` git clone https://github.com/sanks205/getobserver.git cd getobserver go build -o observer ./cmd/cli ``` 在 Windows 上,输出文件为 `observer.exe`。要交叉编译所有平台的 release 二进制文件:`pwsh scripts/build-release.ps1`(或 `./scripts/build-release.sh`)。 ## 使用方法 ``` # 扫描项目并生成 report.html observer analyze ./examples/php-demo # 选择自定义输出路径 observer analyze ./examples/php-demo --out booking-report.html # 包含 observer-agent 捕获的 runtime error(见 observer-agent/) observer analyze ./examples/php-demo --runtime /tmp/observer-runtime.jsonl # 在报告中包含 application log 分析 observer analyze ./examples/php-demo --logs ./examples/php-demo/logs # 或者单独分析 log(打印摘要) observer analyze-log ./examples/php-demo/logs # 启动本地 web dashboard(此后无需命令行): observer serve # open http://127.0.0.1:7777 — paste a folder, click Scan # 过往的扫描、stack、issue 计数以及“自上次扫描以来的新增项”会显示在一个页面上。 # 打开任意 report 并使用浏览器的打印 → 另存为 PDF。 # 添加针对 finding 的 AI 解释(root cause / impact / fix) observer analyze ./examples/php-demo --ai # 选择报告内容:仅部分 category 和/或最低 severity observer analyze ./examples/php-demo --categories "Security,Database" --min-severity High # 扫描 dependencies 以查找已知漏洞(OSV.dev;需要网络) observer analyze ./my-project --cve # Air-gapped / 受限环境:保证无网络 I/O — 拒绝 --cve/--email/--slack/ # --teams/--webhook 并强制 AI 使用 local heuristic。打印“Offline mode: no network I/O.” observer analyze ./my-project --assert-offline # 如果安装了 Semgrep,则进行更深入的多语言检测(若未安装则自动跳过) observer analyze ./my-project --semgrep # 自动检测并融入你已有的其他 engine(若不存在则各自自动跳过): observer analyze ./my-project --phpstan --bandit --gosec --eslint # CI:生成 SARIF 并在 High+ finding 时使构建失败(见 docs/CI.md) observer analyze . --sarif observer.sarif --fail-on High # 将 finding 导出到其他工具 / 电子表格 observer analyze . --json findings.json --csv findings.csv # 扫描完成后通知 channel(Slack / Teams / 通用 webhook) observer analyze . --slack "$SLACK_WEBHOOK" # or --teams / --webhook # 在现有 codebase 上采用:记录 baseline,然后仅报告新 issue observer analyze . --write-baseline .observer-baseline.json observer analyze . --baseline .observer-baseline.json --fail-on Medium # 仅扫描更改部分(AI 安全网)— 对比 HEAD、base branch 或 staged changes observer analyze . --diff --fail-on High observer analyze . --diff-base main --fail-on High observer analyze . --diff-staged --out "" --attest attestation.json # 安装一个 git pre-commit hook 来拦截 staged changes(绕过:git commit --no-verify) observer install-hook # 通过电子邮件发送 report(通过 env vars 配置 SMTP;见下文) observer analyze ./examples/php-demo --email "dev@example.com,lead@example.com" ``` ### 邮件配置(阶段 8) `--email` 会附加 HTML 报告并通过 SMTP 发送摘要。使用环境变量进行配置: | 变量 | 用途 | 默认值 | |---|---|---| | `SMTP_HOST` | SMTP server host | _(发送邮件必填)_ | | `SMTP_PORT` | 端口 (587 STARTTLS, 465 implicit TLS, 25) | `587` | | `SMTP_USER` / `SMTP_PASS` | 凭证(如果是 open relay 则省略) | _(无)_ | | `SMTP_FROM` | 发件人地址 | `SMTP_USER` | | `OBSERVER_SMTP_DRYRUN` | 设置为 `1` 以生成 `.eml` 文件而不是发送(不需要服务器) | _(关闭)_ | ``` # 在没有邮件服务器的情况下离线验证组成: OBSERVER_SMTP_DRYRUN=1 SMTP_FROM=observer@example.com \ observer analyze ./examples/php-demo --email dev@example.com # -> 将 report.html.eml 写入 report 旁边 ``` ### AI 配置 `--ai` flag 用于解释发现的问题。它是**与提供商无关的**,并且可以离线工作: - **未设置 key** → 本地启发式算法,仅重述发现的问题(从不捏造)。 - **设置了 `OPENAI_API_KEY`** → 使用 OpenAI;出现任何错误时回退到本地。 | 变量 | 用途 | 默认值 | |---|---|---| | `OPENAI_API_KEY` | 启用 OpenAI 提供商 | _(未设置 → 本地模式)_ | | `OPENAI_MODEL` | 模型 ID | `gpt-4o-mini` | | `OPENAI_BASE_URL` | 覆盖 API endpoint(用于代理/测试) | OpenAI | | `OBSERVER_AI_PROVIDER` | 设置为 `local` 以即使在拥有 key 时也强制使用离线模式 | _(自动)_ | ``` # 版本 / 帮助 observer version observer help ``` ### 输出示例 ``` Scanning ./examples/php-demo ... Project: php-demo Language: PHP Framework: CodeIgniter 3 3.1.11 [High] Database: MySQL [High] Files: 6 Directories: 4 Code structure: Controllers: 1 Models: 1 Services: 1 Config: 2 Report written to .../report.html ``` 它还会生成一个独立的 **`report.html`**,其中包含技术概述、检测到的信号、代码结构和文件类型明细。 ## 路线图 | 阶段 | 范围 | 状态 | |------:|-------|--------| | 1 | 核心 CLI —— 扫描项目,生成 HTML 报告 | ✅ 完成 | | 2 | 技术检测(框架 / DB / 基础设施) | ✅ 完成 | | 3 | 静态代码分析(安全与性能问题) | ✅ 完成 | | 4 | Runtime 错误收集 (`observer-agent`) | ✅ 完成 | | 5 | 日志分析器 (`observer analyze-log`) | ✅ 完成 | | 6 | AI 分析模块 (OpenAI + 可插拔提供商) | ✅ 完成 | | 7 | 专业的多区块 HTML 报告 | ✅ 完成 | | 8 | 邮件报告 (SMTP) | ✅ 完成 | | 9 | 打包与分发 —— 跨平台单一二进制构建 | ✅ 完成 | | 10 | GitHub 质量 (README、徽章、下载/构建、贡献) | ✅ 完成 | | 11 | `observer serve` —— 本地 Web dashboard(多项目、历史记录、差异对比) | ✅ 完成 | | 12 | 依赖项 CVE 扫描 (OSV.dev —— PHP/npm/PyPI/Go) | ✅ 完成 | | 12+ | 可选引擎包装器 —— Semgrep / PHPStan / Bandit / gosec / ESLint ✅(自动检测) | ✅ 完成 | | 13 | CI 与团队工作流(SARIF、质量门禁、基线、GitHub 工作流) | ✅ 完成 | | 14 | 变更代码扫描 —— `--diff` 门禁 + 证明 + pre-commit hook(AI 代码安全网) | ✅ 完成 | | 15 | 桌面应用程序 (Pro) 和托管云 (团队版)、多语言 agent | ⏳ 计划中 | 有关产品愿景、版本和定位,请参阅 **[PRODUCT.md](PRODUCT.md)**。 ## Observer Pro CLI 和本地 dashboard **永久免费**。**Observer Pro** 增加了可选的付费功能——一次性购买,通过许可证密钥激活,激活后完全离线: - **品牌化 PDF 报告** —— 适合交付给客户的 PDF,带有您的标志和品牌 —— [$39](https://observerly1.gumroad.com/l/observer-pdf) - **计划/自动扫描** —— 按计划重新扫描,出现新问题时发出警报 —— [$29](https://observerly1.gumroad.com/l/observer-schedule) - **高级规则包** —— 更深度的框架安全规则:Laravel · CodeIgniter · WordPress · Symfony · Django · Rails · Spring · Express —— [$49](https://observerly1.gumroad.com/l/observer-rules-php) 或者以 **[All-Access bundle —— $89](https://observerly1.gumroad.com/l/observer-pro)** 获取所有内容。 通过 `observer pro activate ` 激活。 ## 贡献 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。欢迎提交 Issues 和 PR。 ## 许可证 [MIT](LICENSE)
标签:EVTX分析, Go, Petitpotam, Ruby工具, SOC Prime, 发包工具, 多模态安全, 开发工具, 日志审计, 错误基检测, 静态代码分析