satsuki050325-lang/bionic

GitHub: satsuki050325-lang/bionic

一个本地优先的操作驾驶舱,解决多平台告警分散、观察链路割裂的问题。

Stars: 0 | Forks: 0

# Bionic **一个面向 solo 开发者和小型 SaaS 团队的本地优先操作驾驶舱。** 停止每天检查五个仪表板。 Bionic 告诉你什么重要、为什么重要,以及接下来要做什么。 Bionic 连接 GitHub、Vercel、Stripe、Sentry 以及你自己的服务, 然后将嘈杂的信号转化为可操作的告警——完全在你的机器上运行。 ## Bionic 的功能 - **事件 → 告警**:自动检测服务健康度下降和错误激增 - **定时摘要**:向 Discord 发送每周研究摘要 - **部署 → 观察 → 告警**:监控 Vercel 部署后的错误率 - **审计日志**:以完全透明的方式记录每个自动化操作 - **MCP 服务器**:通过自然语言在 Claude Desktop 中查询 Bionic - **Discord 机器人**:接收带 approve/deny 按钮的告警通知 ## 10 分钟快速开始 从零到运行仪表板并带有模拟信号的最快方式。 ### 1. 克隆并安装 ``` git clone https://github.com/satsuki050325-lang/bionic.git cd bionic pnpm install ``` ### 2. 设置 Supabase 先安装并登录 Supabase CLI: ``` npm install -g supabase supabase login ``` 在 [supabase.com](https://supabase.com) 创建一个项目,然后应用迁移: ``` supabase link --project-ref YOUR_PROJECT_REF supabase db push ``` ### 3. 初始化配置 ``` npx tsx packages/cli/src/index.ts init ``` 这会创建包含你的配置的 `.env.local` 文件。 ### 4. 诊断你的设置 ``` npx tsx packages/cli/src/index.ts doctor ``` 在继续之前修复所有 `FAIL` 项目。 ### 5. 启动引擎 ``` pnpm --filter @bionic/engine dev ``` ### 6. 尝试演示 ``` npx tsx packages/cli/src/index.ts demo ``` 这会模拟一个生产事件,让你在不连接真实服务的情况下看到 Bionic 在行动 运行 `demo --cleanup` 以在之后移除模拟数据。 ### 7. 打开仪表板 ``` pnpm --filter @bionic/app dev ``` 打开 [http://localhost:3000](http://localhost:3000)。 ## 先决条件 - Node.js 20+ - pnpm 9+ - Supabase 账户(免费层级可用) - Supabase CLI(`npm install -g supabase`)——执行 `supabase db push` 时必需 - Discord 服务器(可选,用于通知) ## 最小设置 以基础告警和摘要功能快速运行 Bionic 的最快方式。 ### 1. 克隆并安装 ``` git clone https://github.com/satsuki050325-lang/bionic.git cd bionic pnpm install ``` ### 2. 配置环境 ``` cp .env.example .env.local ``` 用最小必需值编辑 `.env.local`: ``` # Required SUPABASE_URL=https://your-project.supabase.co SUPABASE_SERVICE_ROLE_KEY=your-service-role-key # Leave empty during development (token auth is disabled when not set) BIONIC_ENGINE_TOKEN= # Optional: Discord Webhook for digest notifications DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/xxx ``` ### 3. 应用数据库迁移 按顺序通过 Supabase SQL 编辑器运行 `supabase/migrations/` 中的每个文件。 详见 `supabase/migrations/README.md`。 ### 4. 启动引擎 ``` pnpm --filter @bionic/engine dev ``` 引擎运行在 `http://localhost:3001`。 ### 5. 启动应用(可选) ``` pnpm --filter @bionic/app dev ``` 应用运行在 `http://localhost:3000`。 ## 完整设置(带 Discord 机器人) 添加 Discord 机器人以支持告警通知和 approve/deny 按钮。 ### 额外环境变量 ``` # Discord Bot BIONIC_DISCORD_BOT_TOKEN=your-bot-token BIONIC_DISCORD_CHANNEL_ID=your-channel-id BIONIC_DISCORD_APPROVER_IDS=your-discord-user-id # Scheduler (optional) BIONIC_SCHEDULER_ENABLED=true BIONIC_DIGEST_CRON=0 9 * * 1 BIONIC_DIGEST_TIMEZONE=Asia/Tokyo ``` ### 创建 Discord 机器人 1. 前往 https://discord.com/developers/applications 2. 创建一个名为 “Bionic” 的新应用 3. 进入 Bot → Reset Token → 复制令牌 4. 启用 “Message Content Intent” 和 “Server Members Intent” 5. 进入 OAuth2 → URL Generator → 选择 `bot` 作用域 6. 添加权限:发送消息、读取消息、嵌入链接 7. 打开生成的 URL 并将机器人邀请到你的服务器 ## 服务集成 为你的服务接入以向 Bionic 引擎发送可观测性事件。 ### 直接 API(推荐) 无需任何 SDK,直接将信号发送到 Bionic 引擎: ``` curl -X POST http://localhost:3001/api/events \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $BIONIC_ENGINE_TOKEN" \ -d '{ "event": { "id": "'"test-$(date +%s)-$RANDOM"'", "projectId": "project_bionic", "serviceId": "my-service", "type": "service.health.reported", "source": "sdk", "occurredAt": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'", "payload": { "status": "ok" } } }' ``` ### SDK(即将推出) Bionic SDK(`@bionic/sdk`)将在未来的版本中发布到 npm。 在此期间,请使用上方的直接 API,或在 monorepo 的 `packages/sdk` 中查看源代码。 ## Vercel Webhook 设置(部署 → 观察 → 告警) 在部署后监控错误率并发送告警。 ### 要求 - ngrok(用于本地开发):`sudo apt install ngrok && ngrok config add-authtoken ` - Vercel 专业计划(用于 Webhook 配置) ### 设置 1. 启动 ngrok 隧道: ``` ngrok http 3001 ``` 2. 添加到 `.env.local`: ``` VERCEL_WEBHOOK_SECRET=your-webhook-secret BIONIC_VERCEL_PROJECT_MAP=prj_xxx:your-service-id ``` 3. 配置 Vercel Webhook: - Vercel → Settings → Webhooks → Add Webhook - URL:`https://your-ngrok-url/api/webhooks/vercel` - 事件:`deployment.ready` ## GitHub Webhook 设置(CI 失败检测) 检测 GitHub Actions 中的 CI 失败并创建告警。 ### 设置 1. 添加到 `.env.local`: ``` GITHUB_WEBHOOK_SECRET=your-webhook-secret BIONIC_GITHUB_REPO_MAP=owner/repo:your-service-id ``` 2. 配置 GitHub Webhook: - 仓库 → Settings → Webhooks → Add webhook - Payload URL:`https://your-ngrok-url/api/webhooks/github` - 内容类型:`application/json` - 密钥:与 `GITHUB_WEBHOOK_SECRET` 相同 - 事件:选择 “Workflow runs” 3. 重启引擎。 ## Stripe Webhook 设置(支付监控) 监控支付失败、争议和订阅变更。 ### 设置 1. 添加到 `.env.local`: ``` STRIPE_WEBHOOK_SECRET=whsec_... BIONIC_STRIPE_SERVICE_ID=medini ``` 2. 配置 Stripe Webhook: - Stripe Dashboard → Developers → Webhooks → Add endpoint - 端点 URL:`https://your-ngrok-url/api/webhooks/stripe` - 事件:`invoice.payment_failed`、`charge.dispute.created`、 `customer.subscription.deleted`、`customer.subscription.updated`、 `payment_intent.payment_failed`、`charge.refunded` 3. 重启引擎。 ## Sentry Webhook 设置(错误监控) 监控 Sentry 问题:新问题和回归会触发告警。 ### 设置 1. 添加到 `.env.local`: ``` SENTRY_WEBHOOK_SECRET=your-secret BIONIC_SENTRY_SERVICE_ID=medini ``` 2. 配置 Sentry: - Sentry → Settings → Integrations → Webhooks(或 Internal Integration) - Webhook URL:`https://your-ngrok-url/api/webhooks/sentry` - 资源/事件:`issue` 3. 重启引擎。 ## 事件摘要(AI 驱动,可选) 当设置 `ANTHROPIC_API_KEY` 时,Bionic 会使用 Claude Haiku 在仪表板上生成 AI 驱动的事件摘要。 要启用: ``` ANTHROPIC_API_KEY=your-api-key ``` ## MCP 设置(Claude Desktop) 通过自然语言在 Claude Desktop 中查询 Bionic。 ### 构建 ``` pnpm --filter @bionic/mcp build ``` ### 配置 Claude Desktop 添加到 `%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json`(Windows)或 `~/Library/Application Support/Claude/claude_desktop_config.json`(Mac): ``` { "mcpServers": { "bionic-ops": { "command": "node", "args": ["C:\\path\\to\\bionic\\packages\\mcp\\dist\\index.js"], "env": { "BIONIC_ENGINE_URL": "http://localhost:3001", "BIONIC_ENGINE_TOKEN": "", "BIONIC_PROJECT_ID": "project_bionic" } } } } ``` 保存配置后重启 Claude Desktop。 ## 验证 运行所有检查: ``` pnpm verify ``` 这会执行类型检查 + 引擎测试 + 应用构建。 ## 故障排除 ### 引擎无法启动 - 检查 `.env.local` 中是否设置了 `SUPABASE_URL` 和 `SUPABASE_SERVICE_ROLE_KEY` - 在生产环境中,`BIONIC_ENGINE_TOKEN` 是必需的 ### Discord 机器人未发送通知 - 确认已设置 `BIONIC_DISCORD_CHANNEL_ID`(设置机器人令牌时必需) - 检查机器人是否已正确添加到服务器并具备相应权限 - 对于私有频道,请将机器人添加为成员 ### MCP 服务器未在 Claude Desktop 中显示 - 在 Windows(MSIX 安装)中使用路径 `%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\` - 在注册前构建 MCP 包:`pnpm --filter @bionic/mcp build` - 完全重启 Claude Desktop 以应用配置更改 ### ngrok URL 变更 - 免费计划每次重启都会生成新 URL - 重启 ngrok 后更新 Vercel Webhook URL ## CLI 使用 ### bionic init 交互式设置,会用你的配置创建 `.env.local`。 ``` npx tsx packages/cli/src/index.ts init ``` ### bionic doctor 诊断你的 Bionic 设置并报告任何配置问题。 ``` npx tsx packages/cli/src/index.ts doctor ``` ### bionic demo 模拟生产事件,让你在不连接真实服务的情况下探索 Bionic。 ``` npx tsx packages/cli/src/index.ts demo npx tsx packages/cli/src/index.ts demo --cleanup # remove demo data ``` ### 引擎状态与审批 ``` # Engine status npx tsx packages/cli/src/index.ts status # List pending approvals npx tsx packages/cli/src/index.ts approvals # Approve an action npx tsx packages/cli/src/index.ts approve # Deny an action npx tsx packages/cli/src/index.ts deny ``` ## 项目结构 ``` bionic/ packages/ engine/ # Core runner (Express + node-cron + discord.js) sdk/ # Thin client for service integration cli/ # Terminal interface mcp/ # Claude Desktop MCP server shared/ # Shared TypeScript types apps/ app/ # Web dashboard (Next.js) supabase/ migrations/ # Database schema docs/ ROADMAP.md MCP.md TECHNICAL_DESIGN.md BIONIC_PRODUCT.md ``` ## 开发 ``` # Install dependencies pnpm install # Start Engine (development) pnpm --filter @bionic/engine dev # Start App (development) pnpm --filter @bionic/app dev # Run all checks pnpm verify # Run engine tests pnpm --filter @bionic/engine test ``` ## 许可证 AGPL-3.0。详见 [LICENSE](./LICENSE)。 如需商业用途且不涉及 AGPL 义务,请联系获取商业许可证。
标签:Claude Desktop, Discord 机器人, GitHub 集成, GNU通用公共许可证, MCP 服务, MITM代理, Node.js, PostgreSQL, SaaS 工具, Sentry 集成, SEO, Stripe 集成, Supabase, TypeScript, Vercel 集成, 事件驱动, 信号降噪, 健康检查, 全栈, 关键词优化, 单体开发者, 可执行操作, 告警系统, 周报, 威胁情报, 安全插件, 审计日志, 小型团队, 开发者工具, 快速启动, 本地优先, 监控, 网络调试, 自动化, 自动化攻击, 运维仪表盘, 透明操作, 部署监控, 错误率监控