[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-ygwyg--MAHORAGA":3,"tool-ygwyg--MAHORAGA":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",155373,2,"2026-04-14T11:34:08",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":75,"owner_location":75,"owner_email":75,"owner_twitter":76,"owner_website":75,"owner_url":77,"languages":78,"stars":91,"forks":92,"last_commit_at":93,"license":94,"difficulty_score":10,"env_os":95,"env_gpu":96,"env_ram":97,"env_deps":98,"category_tags":105,"github_topics":75,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":106,"updated_at":107,"faqs":108,"releases":137},7453,"ygwyg\u002FMAHORAGA","MAHORAGA","autonomous trading agent powered by social sentiment analysis and ai that learns, grows, and adapts","MAHORAGA 是一款基于大语言模型（LLM）的自主交易代理，能够全天候在云端自动运行。它通过实时监测 StockTwits、Reddit 等社交平台的市场情绪，利用 AI 分析信号并自动通过 Alpaca 执行加密货币及期权交易，旨在解决人工交易难以持续监控市场、易受情绪干扰以及无法快速响应社交媒体风向变化的痛点。\n\n该工具特别适合具备一定编程基础的开发者、量化交易爱好者及金融技术研究人员使用。用户无需本地服务器，只需配置 Cloudflare 账号即可部署。MAHORAGA 的技术亮点在于其独特的架构设计：依托 Cloudflare Durable Objects 实现状态持久化与自动重启，确保 7×24 小时稳定运行；支持 OpenAI、Anthropic、Google 等多主流大模型灵活切换；内置“陈旧性检测”机制，能自动识别并退出失去动能的头寸以控制风险。此外，其插件化的策略系统允许用户在不修改核心代码的前提下自定义交易逻辑，配合 Discord 实时通知功能，让自动化交易既强大又易于管理。需要注意的是，该项目主要用于教育和信息参考，不构成任何投资建议。","⚠️ **Warning:** This software is provided for educational and informational purposes only. Nothing in this repository constitutes financial, investment, legal, or tax advice.\n\n# MAHORAGA\n\nAn autonomous, LLM-powered trading agent that runs 24\u002F7 on Cloudflare Workers.\n\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1467592472158015553?color=7289da&label=Discord&logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FvMFnHe2YBh)\n\nMAHORAGA monitors social sentiment from StockTwits and Reddit, uses AI (OpenAI, Anthropic, Google, xAI, DeepSeek via AI SDK) to analyze signals, and executes trades through Alpaca. It runs as a Cloudflare Durable Object with persistent state, automatic restarts, and 24\u002F7 crypto trading support.\n\n\u003Cimg width=\"1278\" height=\"957\" alt=\"dashboard\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fygwyg_MAHORAGA_readme_317bd13d72ad.png\" \u002F>\n\n## Features\n\n- **24\u002F7 Operation** — Runs on Cloudflare Workers, no local machine required\n- **Multi-Source Signals** — StockTwits, Reddit (4 subreddits), Twitter confirmation\n- **Multi-Provider LLM** — OpenAI, Anthropic, Google, xAI, DeepSeek via AI SDK or Cloudflare AI Gateway\n- **Crypto Trading** — Trade BTC, ETH, SOL around the clock\n- **Options Support** — High-conviction options plays\n- **Staleness Detection** — Auto-exit positions that lose momentum\n- **Pre-Market Analysis** — Prepare trading plans before market open\n- **Discord Notifications** — Get alerts on BUY signals\n- **Pluggable Strategy System** — Create custom strategies without touching core files\n\n## Requirements\n\n- Node.js 18+\n- Cloudflare account (free tier works)\n- Alpaca account (free, paper trading supported)\n- LLM API key (OpenAI, Anthropic, Google, xAI, DeepSeek) or Cloudflare AI Gateway credentials\n\n## Quick Start\n\n### 1. Clone and install\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fygwyg\u002FMAHORAGA.git\ncd mahoraga\nnpm install\n```\n\n### 2. Create Cloudflare resources\n\n```bash\n# Create D1 database\nnpx wrangler d1 create mahoraga-db\n# Copy the database_id to wrangler.jsonc\n\n# Create KV namespace\nnpx wrangler kv namespace create CACHE\n# Copy the id to wrangler.jsonc\n\n# Run migrations\nnpx wrangler d1 migrations apply mahoraga-db\n```\n\n### 3. Set secrets\n\n```bash\n# Required\nnpx wrangler secret put ALPACA_API_KEY\nnpx wrangler secret put ALPACA_API_SECRET\n\n# API Authentication - generate a secure random token (64+ chars recommended)\n# Example: openssl rand -base64 48\nnpx wrangler secret put MAHORAGA_API_TOKEN\n\n# LLM Provider (choose one mode)\nnpx wrangler secret put LLM_PROVIDER  # \"openai-raw\" (default), \"ai-sdk\", or \"cloudflare-gateway\"\nnpx wrangler secret put LLM_MODEL     # e.g. \"gpt-4o-mini\" or \"anthropic\u002Fclaude-sonnet-4\"\n\n# LLM API Keys (based on provider mode)\nnpx wrangler secret put OPENAI_API_KEY         # For openai-raw or ai-sdk with OpenAI\nnpx wrangler secret put OPENAI_BASE_URL        # Optional: override OpenAI base URL for openai-raw and ai-sdk (OpenAI models)\n# npx wrangler secret put ANTHROPIC_API_KEY    # For ai-sdk with Anthropic\n# npx wrangler secret put GOOGLE_GENERATIVE_AI_API_KEY  # For ai-sdk with Google\n# npx wrangler secret put XAI_API_KEY          # For ai-sdk with xAI\u002FGrok\n# npx wrangler secret put DEEPSEEK_API_KEY     # For ai-sdk with DeepSeek\n# npx wrangler secret put CLOUDFLARE_AI_GATEWAY_ACCOUNT_ID  # For cloudflare-gateway\n# npx wrangler secret put CLOUDFLARE_AI_GATEWAY_ID          # For cloudflare-gateway\n# npx wrangler secret put CLOUDFLARE_AI_GATEWAY_TOKEN       # For cloudflare-gateway\n\n# Optional\nnpx wrangler secret put ALPACA_PAPER         # \"true\" for paper trading (recommended)\nnpx wrangler secret put TWITTER_BEARER_TOKEN\nnpx wrangler secret put DISCORD_WEBHOOK_URL\nnpx wrangler secret put KILL_SWITCH_SECRET   # Emergency kill switch (separate from API token)\n```\n\n### 4. Deploy\n\n```bash\nnpx wrangler deploy\n```\n\n### 5. Enable the agent\n\nAll API endpoints require authentication via Bearer token:\n\n```bash\n# Set your API token as an env var for convenience\nexport MAHORAGA_TOKEN=\"your-api-token\"\n\n# Enable the agent\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fenable\n```\n\n### 6. Monitor\n\n```bash\n# Check status\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fstatus\n\n# View logs\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Flogs\n\n# Emergency kill switch (uses separate KILL_SWITCH_SECRET)\ncurl -H \"Authorization: Bearer $KILL_SWITCH_SECRET\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fkill\n\n# Run dashboard locally\ncd dashboard && npm install && npm run dev\n```\n\n## Local Development\n\n```bash\n# Terminal 1 - Start wrangler\nnpx wrangler dev\n\n# Terminal 2 - Start dashboard  \ncd dashboard && npm run dev\n\n# Terminal 3 - Enable the agent\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  http:\u002F\u002Flocalhost:8787\u002Fagent\u002Fenable\n```\n\n## Custom Strategies\n\nMahoraga uses a **pluggable strategy system**. The core harness is a thin orchestrator — all customizable logic lives in strategy modules. You never need to modify core files.\n\n### How it works\n\n1. Create `src\u002Fstrategy\u002Fmy-strategy\u002Findex.ts` implementing the `Strategy` interface\n2. Change one import line in `src\u002Fstrategy\u002Findex.ts`\n\n```typescript\n\u002F\u002F src\u002Fstrategy\u002Findex.ts\nimport { myStrategy } from \".\u002Fmy-strategy\";\nexport const activeStrategy = myStrategy;\n```\n\n### What you can customize\n\n| Component | File | What it does |\n|-----------|------|--------------|\n| **Gatherers** | `gatherers\u002F*.ts` | Fetch signals from data sources (StockTwits, Reddit, etc.) |\n| **Prompts** | `prompts\u002F*.ts` | LLM prompt templates for research and analysis |\n| **Entry rules** | `rules\u002Fentries.ts` | Decide which signals to buy |\n| **Exit rules** | `rules\u002Fexits.ts` | Decide when to sell positions |\n| **Config** | `config.ts` | Default parameters and source weights |\n\nYou can reuse default gatherers, mix in custom ones, override prompts, and define your own entry\u002Fexit rules — all without touching core files.\n\n### Adding a new data source\n\nCreate a gatherer that returns `Signal[]`:\n\n```typescript\nimport type { Gatherer, StrategyContext } from \"..\u002F..\u002Ftypes\";\n\nconst myGatherer: Gatherer = {\n  name: \"my-source\",\n  gather: async (ctx: StrategyContext) => {\n    const res = await fetch(\"https:\u002F\u002Fyour-api.com\u002Fdata\");\n    const data = await res.json();\n    return data.items.map(item => ({\n      symbol: item.ticker,\n      source: \"my_source\",\n      source_detail: \"my_source_v1\",\n      sentiment: item.sentiment,\n      raw_sentiment: item.sentiment,\n      volume: 1,\n      freshness: 1.0,\n      source_weight: 0.9,\n      reason: `MySource: ${item.summary}`,\n      timestamp: Date.now(),\n    }));\n  },\n};\n```\n\nThen include it in your strategy's `gatherers` array.\n\nSee `docs\u002Fharness.html` for the full customization guide.\n\n## Configuration\n\n| Setting | Default | Description |\n|---------|---------|-------------|\n| `max_positions` | 5 | Maximum concurrent positions |\n| `max_position_value` | 5000 | Maximum $ per position |\n| `take_profit_pct` | 10 | Take profit percentage |\n| `stop_loss_pct` | 5 | Stop loss percentage |\n| `min_sentiment_score` | 0.3 | Minimum sentiment to consider |\n| `min_analyst_confidence` | 0.6 | Minimum LLM confidence to trade |\n| `options_enabled` | false | Enable options trading |\n| `crypto_enabled` | false | Enable 24\u002F7 crypto trading |\n| `llm_model` | gpt-4o-mini | Research model (cheap, for bulk analysis) |\n| `llm_analyst_model` | gpt-4o | Analyst model (smart, for trading decisions) |\n\n### LLM Provider Configuration\n\nMAHORAGA supports multiple LLM providers via three modes:\n\n| Mode | Description | Required Env Vars |\n|------|-------------|-------------------|\n| `openai-raw` | Direct OpenAI API (default) | `OPENAI_API_KEY` |\n| `ai-sdk` | Vercel AI SDK with 5 providers | One or more provider keys |\n| `cloudflare-gateway` | Cloudflare AI Gateway (\u002Fcompat) | `CLOUDFLARE_AI_GATEWAY_ACCOUNT_ID`, `CLOUDFLARE_AI_GATEWAY_ID`, `CLOUDFLARE_AI_GATEWAY_TOKEN` |\n\n**Optional OpenAI Base URL Override:**\n\n- `OPENAI_BASE_URL` — Override the base URL used for OpenAI requests. Applies to `LLM_PROVIDER=openai-raw` and OpenAI models in `LLM_PROVIDER=ai-sdk` (models starting with `openai\u002F`). Default: `https:\u002F\u002Fapi.openai.com\u002Fv1`.\n\n**Cloudflare AI Gateway Notes:**\n\n- This integration calls Cloudflare's OpenAI-compatible `\u002Fcompat\u002Fchat\u002Fcompletions` endpoint and always sends `cf-aig-authorization`.\n- It is intended for BYOK\u002FUnified Billing setups where upstream provider keys are configured in Cloudflare (so your worker does not send provider API keys).\n- Models use the `{provider}\u002F{model}` format (e.g. `openai\u002Fgpt-5-mini`, `google-ai-studio\u002Fgemini-2.5-flash`, `anthropic\u002Fclaude-sonnet-4-5`).\n\n**AI SDK Supported Providers:**\n\n| Provider | Env Var | Example Models |\n|----------|---------|----------------|\n| OpenAI | `OPENAI_API_KEY` | `openai\u002Fgpt-4o`, `openai\u002Fo1` |\n| Anthropic | `ANTHROPIC_API_KEY` | `anthropic\u002Fclaude-sonnet-4`, `anthropic\u002Fclaude-opus-4` |\n| Google | `GOOGLE_GENERATIVE_AI_API_KEY` | `google\u002Fgemini-2.5-pro`, `google\u002Fgemini-2.5-flash` |\n| xAI (Grok) | `XAI_API_KEY` | `xai\u002Fgrok-4`, `xai\u002Fgrok-3` |\n| DeepSeek | `DEEPSEEK_API_KEY` | `deepseek\u002Fdeepseek-chat`, `deepseek\u002Fdeepseek-reasoner` |\n\n**Example: Using Claude with AI SDK:**\n\n```bash\nnpx wrangler secret put LLM_PROVIDER      # Set to \"ai-sdk\"\nnpx wrangler secret put LLM_MODEL         # Set to \"anthropic\u002Fclaude-sonnet-4\"\nnpx wrangler secret put ANTHROPIC_API_KEY # Your Anthropic API key\n```\n\n## API Endpoints\n\n| Endpoint | Description |\n|----------|-------------|\n| `\u002Fagent\u002Fstatus` | Full status (account, positions, signals) |\n| `\u002Fagent\u002Fenable` | Enable the agent |\n| `\u002Fagent\u002Fdisable` | Disable the agent |\n| `\u002Fagent\u002Fconfig` | Get or update configuration |\n| `\u002Fagent\u002Flogs` | Get recent logs |\n| `\u002Fagent\u002Ftrigger` | Manually trigger (for testing) |\n| `\u002Fagent\u002Fkill` | Emergency kill switch (uses `KILL_SWITCH_SECRET`) |\n| `\u002Fmcp` | MCP server for tool access |\n\n## Security\n\n### API Authentication (Required)\n\nAll `\u002Fagent\u002F*` endpoints require Bearer token authentication using `MAHORAGA_API_TOKEN`:\n\n```bash\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fstatus\n```\n\nGenerate a secure token: `openssl rand -base64 48`\n\n### Emergency Kill Switch\n\nThe `\u002Fagent\u002Fkill` endpoint uses a separate `KILL_SWITCH_SECRET` for emergency shutdown:\n\n```bash\ncurl -H \"Authorization: Bearer $KILL_SWITCH_SECRET\" https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fkill\n```\n\nThis immediately disables the agent, cancels all alarms, and clears the signal cache.\n\n### Cloudflare Access (Recommended)\n\nFor additional security with SSO\u002Femail verification, set up Cloudflare Access:\n\n```bash\n# 1. Create a Cloudflare API token with Access:Edit permissions\n#    https:\u002F\u002Fdash.cloudflare.com\u002Fprofile\u002Fapi-tokens\n\n# 2. Run the setup script\nCLOUDFLARE_API_TOKEN=your-token \\\nCLOUDFLARE_ACCOUNT_ID=your-account-id \\\nMAHORAGA_WORKER_URL=https:\u002F\u002Fmahoraga.your-subdomain.workers.dev \\\nMAHORAGA_ALLOWED_EMAILS=you@example.com \\\nnpm run setup:access\n```\n\nThis creates a Cloudflare Access Application with email verification or One-Time PIN.\n\n## Project Structure\n\n```\nmahoraga\u002F\n├── wrangler.jsonc              # Cloudflare Workers config\n├── src\u002F\n│   ├── index.ts                # Entry point & routing\n│   ├── core\u002F\n│   │   ├── types.ts            # Shared types (Signal, AgentState, etc.)\n│   │   └── policy-broker.ts    # PolicyEngine-wrapped trade execution\n│   ├── durable-objects\u002F\n│   │   └── mahoraga-harness.ts # Core orchestrator (thin — delegates to strategy)\n│   ├── strategy\u002F\n│   │   ├── types.ts            # Strategy interface contract\n│   │   ├── index.ts            # Active strategy selector (change this one line)\n│   │   └── default\u002F            # Default \"sentiment-momentum\" strategy\n│   │       ├── index.ts        # Strategy assembly\n│   │       ├── config.ts       # Default config & source weights\n│   │       ├── gatherers\u002F      # StockTwits, Reddit, SEC, crypto, Twitter\n│   │       ├── prompts\u002F        # LLM prompt templates\n│   │       ├── rules\u002F          # Entry\u002Fexit\u002Fstaleness\u002Foptions\u002Fcrypto rules\n│   │       └── helpers\u002F        # Ticker extraction, sentiment analysis\n│   ├── mcp\u002F                    # MCP server & tools\n│   ├── policy\u002F                 # Trade validation & risk engine\n│   ├── providers\u002F              # Alpaca, LLM providers\n│   └── schemas\u002F                # Config schemas (Zod)\n├── dashboard\u002F                  # React dashboard\n├── docs\u002F                       # Documentation\n└── migrations\u002F                 # D1 database migrations\n```\n\n## Safety Features\n\n| Feature | Description |\n|---------|-------------|\n| Paper Trading | Start with `ALPACA_PAPER=true` |\n| Kill Switch | Emergency halt via secret |\n| Position Limits | Max positions and $ per position |\n| Daily Loss Limit | Stops trading after 2% daily loss |\n| Staleness Detection | Auto-exit stale positions |\n| No Margin | Cash-only trading |\n| No Shorting | Long positions only |\n\n## Community\n\nJoin our Discord for help and discussion:\n\n**[Discord Server](https:\u002F\u002Fdiscord.gg\u002FvMFnHe2YBh)**\n\n## Disclaimer\n\n**⚠️ IMPORTANT: READ BEFORE USING**\n\nThis software is provided for **educational and informational purposes only**. Nothing in this repository constitutes financial, investment, legal, or tax advice.\n\n**By using this software, you acknowledge and agree that:**\n\n- All trading and investment decisions are made **at your own risk**\n- Markets are volatile and **you can lose some or all of your capital**\n- No guarantees of performance, profits, or outcomes are made\n- The authors and contributors are **not responsible** for any financial losses\n- This software may contain bugs or behave unexpectedly\n- Past performance does not guarantee future results\n\n**Always start with paper trading and never risk money you cannot afford to lose.**\n\n## License\n\nMIT License - Free for personal and commercial use. See [LICENSE](LICENSE) for full terms.\n","⚠️ **警告**：本软件仅用于教育和信息目的。本仓库中的任何内容均不构成财务、投资、法律或税务建议。\n\n# MAHORAGA\n\n一款基于大型语言模型（LLM）的自主交易代理，可在 Cloudflare Workers 上 24\u002F7 全天候运行。\n\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1467592472158015553?color=7289da&label=Discord&logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FvMFnHe2YBh)\n\nMAHORAGA 会监控 StockTwits 和 Reddit 上的市场情绪，利用 AI（通过 AI SDK 使用 OpenAI、Anthropic、Google、xAI 和 DeepSeek）分析信号，并通过 Alpaca 执行交易。它以 Cloudflare Durable Object 的形式运行，具备持久化状态、自动重启功能，并提供 24\u002F7 的加密货币交易支持。\n\n\u003Cimg width=\"1278\" height=\"957\" alt=\"dashboard\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fygwyg_MAHORAGA_readme_317bd13d72ad.png\" \u002F>\n\n## 功能特性\n\n- **全天候运行** — 在 Cloudflare Workers 上运行，无需本地机器\n- **多源信号** — 来自 StockTwits、Reddit（4 个子版块）以及 Twitter 的确认信号\n- **多提供商 LLM** — 通过 AI SDK 或 Cloudflare AI Gateway 支持 OpenAI、Anthropic、Google、xAI 和 DeepSeek\n- **加密货币交易** — 全天候交易 BTC、ETH 和 SOL\n- **期权支持** — 高确定性的期权策略\n- **过时检测** — 自动平仓失去动能的头寸\n- **盘前分析** — 在市场开盘前制定交易计划\n- **Discord 通知** — 接收买入信号提醒\n- **可插拔策略系统** — 无需修改核心文件即可创建自定义策略\n\n## 系统要求\n\n- Node.js 18+\n- Cloudflare 账户（免费层级即可）\n- Alpaca 账户（免费，支持模拟交易）\n- LLM API 密钥（OpenAI、Anthropic、Google、xAI、DeepSeek）或 Cloudflare AI Gateway 凭证\n\n## 快速入门\n\n### 1. 克隆并安装\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fygwyg\u002FMAHORAGA.git\ncd mahoraga\nnpm install\n```\n\n### 2. 创建 Cloudflare 资源\n\n```bash\n# 创建 D1 数据库\nnpx wrangler d1 create mahoraga-db\n# 将 database_id 复制到 wrangler.jsonc 中\n\n# 创建 KV 命名空间\nnpx wrangler kv namespace create CACHE\n# 将 id 复制到 wrangler.jsonc 中\n\n# 运行数据库迁移\nnpx wrangler d1 migrations apply mahoraga-db\n```\n\n### 3. 设置密钥\n\n```bash\n# 必需\nnpx wrangler secret put ALPACA_API_KEY\nnpx wrangler secret put ALPACA_API_SECRET\n\n# API 认证 — 生成一个安全的随机令牌（推荐 64 个字符以上）\n# 示例：openssl rand -base64 48\nnpx wrangler secret put MAHORAGA_API_TOKEN\n\n# LLM 提供商（选择一种模式）\nnpx wrangler secret put LLM_PROVIDER  # \"openai-raw\"（默认）、\"ai-sdk\" 或 \"cloudflare-gateway\"\nnpx wrangler secret put LLM_MODEL     # 例如：\"gpt-4o-mini\" 或 \"anthropic\u002Fclaude-sonnet-4\"\n\n# LLM API 密钥（根据提供商模式）\nnpx wrangler secret put OPENAI_API_KEY         # 用于 openai-raw 或使用 OpenAI 的 ai-sdk\nnpx wrangler secret put OPENAI_BASE_URL        # 可选：覆盖 openai-raw 和 ai-sdk 的 OpenAI 基础 URL（适用于 OpenAI 模型）\n# npx wrangler secret put ANTHROPIC_API_KEY    # 用于使用 Anthropic 的 ai-sdk\n# npx wrangler secret put GOOGLE_GENERATIVE_AI_API_KEY  # 用于使用 Google 的 ai-sdk\n# npx wrangler secret put XAI_API_KEY          # 用于使用 xAI\u002FGrok 的 ai-sdk\n# npx wrangler secret put DEEPSEEK_API_KEY     # 用于使用 DeepSeek 的 ai-sdk\n# npx wrangler secret put CLOUDFLARE_AI_GATEWAY_ACCOUNT_ID  # 用于 cloudflare-gateway\n# npx wrangler secret put CLOUDFLARE_AI_GATEWAY_ID          # 用于 cloudflare-gateway\n# npx wrangler secret put CLOUDFLARE_AI_GATEWAY_TOKEN       # 用于 cloudflare-gateway\n\n# 可选\nnpx wrangler secret put ALPACA_PAPER         # 设置为 \"true\" 以启用模拟交易（推荐）\nnpx wrangler secret put TWITTER_BEARER_TOKEN\nnpx wrangler secret put DISCORD_WEBHOOK_URL\nnpx wrangler secret put KILL_SWITCH_SECRET   # 紧急停止开关（与 API 令牌分开）\n```\n\n### 4. 部署\n\n```bash\nnpx wrangler deploy\n```\n\n### 5. 启用代理\n\n所有 API 端点都需要通过 Bearer 令牌进行认证：\n\n```bash\n# 为了方便起见，将您的 API 令牌设置为环境变量\nexport MAHORAGA_TOKEN=\"your-api-token\"\n\n# 启用代理\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fenable\n```\n\n### 6. 监控\n\n```bash\n# 检查状态\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fstatus\n\n# 查看日志\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Flogs\n\n# 紧急停止开关（使用单独的 KILL_SWITCH_SECRET）\ncurl -H \"Authorization: Bearer $KILL_SWITCH_SECRET\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fkill\n\n# 在本地运行仪表板\ncd dashboard && npm install && npm run dev\n```\n\n## 本地开发\n\n```bash\n# 终端 1 — 启动 wrangler\nnpx wrangler dev\n\n# 终端 2 — 启动仪表板  \ncd dashboard && npm run dev\n\n# 终端 3 — 启用代理\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  http:\u002F\u002Flocalhost:8787\u002Fagent\u002Fenable\n```\n\n## 自定义策略\n\nMahoraga 使用一个 **可插拔的策略系统**。核心框架是一个轻量级的协调器——所有可定制的逻辑都位于策略模块中。您无需修改核心文件。\n\n### 工作原理\n\n1. 创建 `src\u002Fstrategy\u002Fmy-strategy\u002Findex.ts`，实现 `Strategy` 接口\n2. 修改 `src\u002Fstrategy\u002Findex.ts` 中的一行导入语句\n\n```typescript\n\u002F\u002F src\u002Fstrategy\u002Findex.ts\nimport { myStrategy } from \".\u002Fmy-strategy\";\nexport const activeStrategy = myStrategy;\n```\n\n### 可自定义的内容\n\n| 组件 | 文件 | 作用 |\n|-----------|------|--------------|\n| **数据收集器** | `gatherers\u002F*.ts` | 从数据源（StockTwits、Reddit 等）获取信号 |\n| **提示模板** | `prompts\u002F*.ts` | 用于研究和分析的 LLM 提示模板 |\n| **入场规则** | `rules\u002Fentries.ts` | 决定购买哪些信号 |\n| **出场规则** | `rules\u002Fexits.ts` | 决定何时卖出头寸 |\n| **配置** | `config.ts` | 默认参数和各数据源权重 |\n\n您可以复用默认的数据收集器，混合使用自定义的收集器，覆盖提示模板，并定义自己的入场\u002F出场规则——所有这些都不需要修改核心文件。\n\n### 添加新的数据源\n\n创建一个返回 `Signal[]` 的数据收集器：\n\n```typescript\nimport type { Gatherer, StrategyContext } from \"..\u002F..\u002Ftypes\";\n\nconst myGatherer: Gatherer = {\n  name: \"my-source\",\n  gather: async (ctx: StrategyContext) => {\n    const res = await fetch(\"https:\u002F\u002Fyour-api.com\u002Fdata\");\n    const data = await res.json();\n    return data.items.map(item => ({\n      symbol: item.ticker,\n      source: \"my_source\",\n      source_detail: \"my_source_v1\",\n      sentiment: item.sentiment,\n      raw_sentiment: item.sentiment,\n      volume: 1,\n      freshness: 1.0,\n      source_weight: 0.9,\n      reason: `MySource: ${item.summary}`,\n      timestamp: Date.now(),\n    }));\n  },\n};\n```\n\n然后将其加入到您的策略的 `gatherers` 数组中。\n\n完整自定义指南请参阅 `docs\u002Fharness.html`。\n\n## 配置\n\n| 设置 | 默认值 | 描述 |\n|---------|---------|-------------|\n| `max_positions` | 5 | 最大并发持仓数 |\n| `max_position_value` | 5000 | 每个仓位的最大金额（美元） |\n| `take_profit_pct` | 10 | 止盈百分比 |\n| `stop_loss_pct` | 5 | 止损百分比 |\n| `min_sentiment_score` | 0.3 | 考虑交易的最低情绪得分 |\n| `min_analyst_confidence` | 0.6 | 进行交易所需的最低 LLM 置信度 |\n| `options_enabled` | false | 启用期权交易 |\n| `crypto_enabled` | false | 启用 24\u002F7 加密货币交易 |\n| `llm_model` | gpt-4o-mini | 研究模型（便宜，用于批量分析） |\n| `llm_analyst_model` | gpt-4o | 分析师模型（智能，用于交易决策） |\n\n### LLM 提供商配置\n\nMAHORAGA 支持通过三种模式使用多个 LLM 提供商：\n\n| 模式 | 描述 | 必需的环境变量 |\n|------|-------------|-------------------|\n| `openai-raw` | 直接使用 OpenAI API（默认） | `OPENAI_API_KEY` |\n| `ai-sdk` | Vercel AI SDK，支持 5 家提供商 | 一个或多个提供商的密钥 |\n| `cloudflare-gateway` | Cloudflare AI Gateway (\u002Fcompat) | `CLOUDFLARE_AI_GATEWAY_ACCOUNT_ID`、`CLOUDFLARE_AI_GATEWAY_ID`、`CLOUDFLARE_AI_GATEWAY_TOKEN` |\n\n**可选的 OpenAI 基础 URL 替换：**\n\n- `OPENAI_BASE_URL` — 替换用于 OpenAI 请求的基础 URL。适用于 `LLM_PROVIDER=openai-raw` 以及 `LLM_PROVIDER=ai-sdk` 中的 OpenAI 模型（以 `openai\u002F` 开头）。默认值：`https:\u002F\u002Fapi.openai.com\u002Fv1`。\n\n**Cloudflare AI Gateway 注意事项：**\n\n- 该集成会调用 Cloudflare 兼容 OpenAI 的 `\u002Fcompat\u002Fchat\u002Fcompletions` 端口，并始终发送 `cf-aig-authorization`。\n- 它适用于 BYOK\u002F统一计费设置，在这种情况下上游提供商的密钥已在 Cloudflare 中配置（因此您的 Worker 不会发送提供商的 API 密钥）。\n- 模型采用 `{provider}\u002F{model}` 格式（例如 `openai\u002Fgpt-5-mini`、`google-ai-studio\u002Fgemini-2.5-flash`、`anthropic\u002Fclaude-sonnet-4-5`）。\n\n**AI SDK 支持的提供商：**\n\n| 提供商 | 环境变量 | 示例模型 |\n|----------|---------|----------------|\n| OpenAI | `OPENAI_API_KEY` | `openai\u002Fgpt-4o`、`openai\u002Fo1` |\n| Anthropic | `ANTHROPIC_API_KEY` | `anthropic\u002Fclaude-sonnet-4`、`anthropic\u002Fclaude-opus-4` |\n| Google | `GOOGLE_GENERATIVE_AI_API_KEY` | `google\u002Fgemini-2.5-pro`、`google\u002Fgemini-2.5-flash` |\n| xAI (Grok) | `XAI_API_KEY` | `xai\u002Fgrok-4`、`xai\u002Fgrok-3` |\n| DeepSeek | `DEEPSEEK_API_KEY` | `deepseek\u002Fdeepseek-chat`、`deepseek\u002Fdeepseek-reasoner` |\n\n**示例：使用 Claude 和 AI SDK：**\n\n```bash\nnpx wrangler secret put LLM_PROVIDER      # 设置为 \"ai-sdk\"\nnpx wrangler secret put LLM_MODEL         # 设置为 \"anthropic\u002Fclaude-sonnet-4\"\nnpx wrangler secret put ANTHROPIC_API_KEY # 您的 Anthropic API 密钥\n```\n\n## API 端点\n\n| 端点 | 描述 |\n|----------|-------------|\n| `\u002Fagent\u002Fstatus` | 完整状态（账户、持仓、信号） |\n| `\u002Fagent\u002Fenable` | 启用代理 |\n| `\u002Fagent\u002Fdisable` | 禁用代理 |\n| `\u002Fagent\u002Fconfig` | 获取或更新配置 |\n| `\u002Fagent\u002Flogs` | 获取最近的日志 |\n| `\u002Fagent\u002Ftrigger` | 手动触发（用于测试） |\n| `\u002Fagent\u002Fkill` | 紧急停止开关（使用 `KILL_SWITCH_SECRET`） |\n| `\u002Fmcp` | MCP 服务器，用于工具访问 |\n\n## 安全性\n\n### API 认证（必需）\n\n所有 `\u002Fagent\u002F*` 端点都需要使用 `MAHORAGA_API_TOKEN` 进行 Bearer 令牌认证：\n\n```bash\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fstatus\n```\n\n生成安全令牌的方法：`openssl rand -base64 48`\n\n### 紧急停止开关\n\n`\u002Fagent\u002Fkill` 端点使用单独的 `KILL_SWITCH_SECRET` 进行紧急关闭：\n\n```bash\ncurl -H \"Authorization: Bearer $KILL_SWITCH_SECRET\" https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fkill\n```\n\n这将立即禁用代理，取消所有警报，并清空信号缓存。\n\n### Cloudflare Access（推荐）\n\n为了通过 SSO\u002F电子邮件验证提供额外的安全保障，可以设置 Cloudflare Access：\n\n```bash\n# 1. 创建具有 Access:Edit 权限的 Cloudflare API 令牌\n#    https:\u002F\u002Fdash.cloudflare.com\u002Fprofile\u002Fapi-tokens\n\n# 2. 运行设置脚本\nCLOUDFLARE_API_TOKEN=your-token \\\nCLOUDFLARE_ACCOUNT_ID=your-account-id \\\nMAHORAGA_WORKER_URL=https:\u002F\u002Fmahoraga.your-subdomain.workers.dev \\\nMAHORAGA_ALLOWED_EMAILS=you@example.com \\\nnpm run setup:access\n```\n\n这将创建一个带有电子邮件验证或一次性 PIN 的 Cloudflare Access 应用程序。\n\n## 项目结构\n\n```\nmahoraga\u002F\n├── wrangler.jsonc              # Cloudflare Workers 配置文件\n├── src\u002F\n│   ├── index.ts                # 入口点及路由\n│   ├── core\u002F\n│   │   ├── types.ts            # 共享类型（Signal、AgentState 等）\n│   │   └── policy-broker.ts    # 使用 PolicyEngine 包装的交易执行\n│   ├── durable-objects\u002F\n│   │   └── mahoraga-harness.ts # 核心编排器（轻量级——委托给策略）\n│   ├── strategy\u002F\n│   │   ├── types.ts            # 策略接口契约\n│   │   ├── index.ts            # 活跃策略选择器（只需更改这一行）\n│   │   └── default\u002F            # 默认的“情绪-动量”策略\n│   │       ├── index.ts        # 策略组装\n│   │       ├── config.ts       # 默认配置及数据源权重\n│   │       ├── gatherers\u002F      # StockTwits、Reddit、SEC、加密货币、Twitter\n│   │       ├── prompts\u002F        # LLM 提示模板\n│   │       ├── rules\u002F          # 进出场、过时、期权、加密货币规则\n│   │       └── helpers\u002F        # 股票代码提取、情绪分析\n│   ├── mcp\u002F                    # MCP 服务器及工具\n│   ├── policy\u002F                 # 交易验证与风险引擎\n│   ├── providers\u002F              # Alpaca、LLM 提供商\n│   └── schemas\u002F                # 配置模式（Zod）\n├── dashboard\u002F                  # React 仪表盘\n├── docs\u002F                       # 文档\n└── migrations\u002F                 # D1 数据库迁移\n```\n\n## 安全特性\n\n| 特性 | 描述 |\n|---------|-------------|\n| 模拟交易 | 使用 `ALPACA_PAPER=true` 开始 |\n| 紧急停止开关 | 通过密钥进行紧急停止 |\n| 仓位限制 | 最大仓位数及每个仓位的金额限制 |\n| 日度亏损上限 | 当日亏损超过 2% 时停止交易 |\n| 过时检测 | 自动平掉过时的仓位 |\n| 无保证金 | 仅现金交易 |\n| 无做空 | 仅多头仓位 |\n\n## 社区\n\n加入我们的 Discord 以获取帮助和讨论：\n\n**[Discord 服务器](https:\u002F\u002Fdiscord.gg\u002FvMFnHe2YBh)**\n\n## 免责声明\n\n**⚠️ 重要：使用前请阅读**\n\n本软件仅用于**教育和信息目的**。本仓库中的任何内容均不构成金融、投资、法律或税务建议。\n\n**使用本软件即表示您确认并同意以下事项：**\n\n- 所有的交易和投资决策均由您**自行承担风险**\n- 市场具有高度波动性，您**可能损失部分或全部本金**\n- 不对性能、收益或结果作出任何保证\n- 作者及贡献者对任何财务损失**不承担任何责任**\n- 本软件可能存在漏洞或出现意外行为\n- 过去的业绩并不保证未来的成果\n\n**请务必先进行模拟交易，并且切勿投入您无法承受损失的资金。**\n\n## 许可证\n\nMIT 许可证——可供个人和商业用途免费使用。完整条款请参阅 [LICENSE](LICENSE) 文件。","# MAHORAGA 快速上手指南\n\nMAHORAGA 是一个基于大语言模型（LLM）的自主交易代理，部署在 Cloudflare Workers 上实现 7x24 小时运行。它通过监控 StockTwits 和 Reddit 的社交情绪，利用 AI 分析信号，并通过 Alpaca 执行加密货币或期权交易。\n\n## 环境准备\n\n在开始之前，请确保你拥有以下账户和环境：\n\n*   **运行环境**: Node.js 18+\n*   **云平台**: Cloudflare 账户（免费套餐即可）\n*   **交易接口**: Alpaca 账户（支持免费模拟交易 Paper Trading）\n*   **AI 模型**: 至少一个 LLM API Key（支持 OpenAI, Anthropic, Google, xAI, DeepSeek）或使用 Cloudflare AI Gateway\n*   **网络提示**: 由于涉及 Cloudflare 部署及海外 API 调用，建议配置好网络环境以确保 `npm install` 和 `wrangler` 命令执行顺畅。\n\n## 安装步骤\n\n### 1. 克隆项目并安装依赖\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fygwyg\u002FMAHORAGA.git\ncd mahoraga\nnpm install\n```\n\n### 2. 创建 Cloudflare 资源\n\n使用 Wrangler CLI 创建所需的数据库和键值存储：\n\n```bash\n# 创建 D1 数据库\nnpx wrangler d1 create mahoraga-db\n# 注意：复制输出中的 database_id 填入 wrangler.jsonc\n\n# 创建 KV 命名空间\nnpx wrangler kv namespace create CACHE\n# 注意：复制输出中的 id 填入 wrangler.jsonc\n\n# 应用数据库迁移\nnpx wrangler d1 migrations apply mahoraga-db\n```\n\n### 3. 配置密钥 (Secrets)\n\n请依次运行以下命令设置必要的环境变量。系统会提示你输入具体的 Key 值。\n\n**基础必填项：**\n```bash\n# Alpaca 交易接口密钥\nnpx wrangler secret put ALPACA_API_KEY\nnpx wrangler secret put ALPACA_API_SECRET\n\n# MAHORAGA API 认证令牌 (建议使用 openssl rand -base64 48 生成)\nnpx wrangler secret put MAHORAGA_API_TOKEN\n\n# LLM 提供商模式选择 (\"openai-raw\", \"ai-sdk\", 或 \"cloudflare-gateway\")\nnpx wrangler secret put LLM_PROVIDER\n\n# LLM 模型名称 (例如 \"gpt-4o-mini\" 或 \"anthropic\u002Fclaude-sonnet-4\")\nnpx wrangler secret put LLM_MODEL\n```\n\n**LLM API 密钥 (根据选择的提供商模式二选一)：**\n\n*模式 A: 直接使用 OpenAI (默认)*\n```bash\nnpx wrangler secret put OPENAI_API_KEY\n# 可选：覆盖 Base URL\n# npx wrangler secret put OPENAI_BASE_URL\n```\n\n*模式 B: 使用 AI SDK (支持多模型)*\n```bash\n# 根据你选择的模型提供商设置对应的 Key\n# npx wrangler secret put ANTHROPIC_API_KEY\n# npx wrangler secret put GOOGLE_GENERATIVE_AI_API_KEY\n# npx wrangler secret put XAI_API_KEY\n# npx wrangler secret put DEEPSEEK_API_KEY\n```\n\n*模式 C: 使用 Cloudflare AI Gateway*\n```bash\n# npx wrangler secret put CLOUDFLARE_AI_GATEWAY_ACCOUNT_ID\n# npx wrangler secret put CLOUDFLARE_AI_GATEWAY_ID\n# npx wrangler secret put CLOUDFLARE_AI_GATEWAY_TOKEN\n```\n\n**可选配置：**\n```bash\n# 开启模拟交易 (推荐新手设置为 \"true\")\nnpx wrangler secret put ALPACA_PAPER\n\n# 其他可选功能\n# npx wrangler secret put TWITTER_BEARER_TOKEN\n# npx wrangler secret put DISCORD_WEBHOOK_URL\n# npx wrangler secret put KILL_SWITCH_SECRET\n```\n\n### 4. 部署项目\n\n```bash\nnpx wrangler deploy\n```\n\n## 基本使用\n\n部署完成后，你需要通过 API 启用代理并开始监控。所有请求均需携带 Bearer Token 认证。\n\n### 1. 设置环境变量方便调用\n\n将之前设置的 `MAHORAGA_API_TOKEN` 导出为环境变量（替换为你的实际 Token）：\n\n```bash\nexport MAHORAGA_TOKEN=\"your-api-token\"\n```\n\n*注意：请将 `https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev` 替换为你部署后生成的实际 Worker 域名。*\n\n### 2. 启用交易代理\n\n发送请求启动 Agent：\n\n```bash\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fenable\n```\n\n### 3. 监控运行状态\n\n查看当前账户状态、持仓及信号分析情况：\n\n```bash\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fstatus\n```\n\n查看最近日志：\n\n```bash\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Flogs\n```\n\n### 4. 本地开发模式 (可选)\n\n如果你需要修改策略或调试，可以在本地运行：\n\n```bash\n# 终端 1: 启动 Worker\nnpx wrangler dev\n\n# 终端 2: 启动仪表盘 (Dashboard)\ncd dashboard && npm install && npm run dev\n\n# 终端 3: 在本地启用 Agent\ncurl -H \"Authorization: Bearer $MAHORAGA_TOKEN\" \\\n  http:\u002F\u002Flocalhost:8787\u002Fagent\u002Fenable\n```\n\n### 紧急停止\n\n若需立即停止所有交易并清除缓存，使用独立的紧急密钥：\n\n```bash\nexport KILL_SWITCH_SECRET=\"your-kill-switch-secret\"\ncurl -H \"Authorization: Bearer $KILL_SWITCH_SECRET\" \\\n  https:\u002F\u002Fmahoraga.bernardoalmeida2004.workers.dev\u002Fagent\u002Fkill\n```","一位独立开发者希望利用社交媒体情绪进行加密货币全天候交易，但受限于精力和实时数据分析能力。\n\n### 没有 MAHORAGA 时\n- **错失夜间行情**：人工无法 24 小时盯盘，经常错过美股收盘后或周末爆发的加密市场剧烈波动。\n- **情绪分析滞后**：面对 StockTwits 和 Reddit 上海量的讨论帖，手动筛选有效信号耗时极长，往往等到发现趋势时已高位接盘。\n- **策略执行僵硬**：缺乏自动止损机制，当市场 momentum 消失时，因犹豫不决导致利润回吐甚至亏损。\n- **多模型切换困难**：想对比不同大模型（如 Claude 与 GPT-4）对同一市场信号的看法，需要反复编写脚本调用 API，开发成本极高。\n\n### 使用 MAHORAGA 后\n- **全天候无人值守**：部署在 Cloudflare Workers 上，MAHORAGA 7x24 小时自动监控市场，即便在开发者睡眠时也能捕捉并执行交易机会。\n- **实时情绪洞察**：自动聚合多个社交平台数据，利用 AI 即时分析市场情绪并生成交易信号，通过 Discord 第一时间推送买入提醒。\n- **智能动态风控**：内置“陈旧性检测”功能，一旦检测到持仓失去上涨动能，MAHORAGA 会自动平仓退出，锁定利润。\n- **灵活模型集成**：通过简单配置即可在 OpenAI、Anthropic 或 DeepSeek 等多个主流大模型间无缝切换，快速验证不同 AI 对策略的有效性。\n\nMAHORAGA 将分散的社交情绪数据转化为自动化的交易执行力，让个人投资者拥有了机构级的全天候智能交易助理。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fygwyg_MAHORAGA_317bd13d.png","ygwyg","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fygwyg_a1370fe6.png","you get what you get",null,"burcs","https:\u002F\u002Fgithub.com\u002Fygwyg",[79,83,87],{"name":80,"color":81,"percentage":82},"TypeScript","#3178c6",99.4,{"name":84,"color":85,"percentage":86},"CSS","#663399",0.5,{"name":88,"color":89,"percentage":90},"HTML","#e34c26",0.1,798,165,"2026-04-09T10:45:24","NOASSERTION","Linux, macOS, Windows","不需要本地 GPU（基于 Cloudflare Workers 云端运行）","未说明（取决于本地开发环境，云端由 Cloudflare 管理）",{"notes":99,"python":100,"dependencies":101},"该工具是一个基于 Node.js 的自主交易代理，部署在 Cloudflare Workers 上，无需本地服务器或 GPU。主要依赖包括：Cloudflare 账户、Alpaca 交易账户、以及至少一个大语言模型（LLM）提供商的 API 密钥（如 OpenAI、Anthropic 等）。本地开发需安装 Node.js 18+ 并使用 npm 安装依赖。","不需要 Python（基于 Node.js）",[102,103,104],"Node.js>=18","wrangler","AI SDK",[35,13],"2026-03-27T02:49:30.150509","2026-04-14T20:50:59.439274",[109,114,119,124,129,133],{"id":110,"question_zh":111,"answer_zh":112,"source_url":113},33448,"如何集成恐惧与贪婪指数（Fear & Greed Index）等外部数据源？","该系统的 harness 是完全可定制的，用户可以自行引入外部数据源（包括恐惧与贪婪指数）。您可以参考官方定制指南进行配置：https:\u002F\u002Fmahoraga.dev\u002Fharness。系统本身不默认包含该指数，但支持用户通过自定义代码接入 alternative.me 或 cfgi.io 等 API。","https:\u002F\u002Fgithub.com\u002Fygwyg\u002FMAHORAGA\u002Fissues\u002F4",{"id":115,"question_zh":116,"answer_zh":117,"source_url":118},33449,"为什么外部抓取信号（如 StockTwits）会在 60 秒后消失？","这是一个已修复的问题。此前 `runDataGatherer()` 方法会用新收集的信号完全替换缓存，导致外部信号丢失。修复后的逻辑是：先保留 `this.state.signalCache` 中的现有信号，再将新信号层叠上去。如果您仍遇到此问题，请确保使用的是最新代码版本。注意：目前代码库中没有专门的外部信号摄入端点，数据收集器在内部运行并按周期更新缓存。","https:\u002F\u002Fgithub.com\u002Fygwyg\u002FMAHORAGA\u002Fissues\u002F10",{"id":120,"question_zh":121,"answer_zh":122,"source_url":123},33450,"为什么状态端点（\u002Fagent\u002Fstatus）显示信号数量为 0 或不显示具体信号列表？","这是一个已修复的 Bug。此前 `handleStatus()` 方法只返回了 `signalCount` 而未返回具体的 `signals` 数组。修复后，该方法现在同时返回 `signals: this.state.signalCache` 和 `signalCount`。请检查您的代码中 `src\u002Fdurable-objects\u002Ftrading-agent.ts` 文件的 `handleStatus()` 方法（约第 739 行），确保包含 `signals` 字段的返回。","https:\u002F\u002Fgithub.com\u002Fygwyg\u002FMAHORAGA\u002Fissues\u002F9",{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},33451,"信号缓存（signalCache）是否会无限增长导致内存溢出？","该问题已修复。系统现在实施了以下限制措施以防止缓存无限增长：1. 为每个信号添加了 `timestamp` 字段；2. 设置了 24 小时的生存时间（TTL），自动过滤掉旧信号；3. 将缓存上限 capped 为 200 个信号，并按情感强度排序保留最强的信号。这些更改已在主分支提交中生效。","https:\u002F\u002Fgithub.com\u002Fygwyg\u002FMAHORAGA\u002Fissues\u002F8",{"id":130,"question_zh":131,"answer_zh":132,"source_url":113},33452,"系统是否支持实时接入第三方情感分析 API？","系统架构允许用户自定义数据源。虽然默认不包含特定的实时情感 API（如 cfgi.io），但您可以通过修改 harness 配置来接入任何外部 API。维护者建议查看 https:\u002F\u002Fmahoraga.dev\u002Fharness 了解如何编写自定义数据抓取逻辑并将结果合并到信号缓存中。",{"id":134,"question_zh":135,"answer_zh":136,"source_url":128},33453,"如何确认当前的信号缓存清理策略是否生效？","您可以检查 `src\u002Fdurable-objects\u002Ftrading-agent.ts` 中的 `runDataGatherer()` 方法。确认逻辑包括：信号对象是否包含 `timestamp` 属性，以及是否有过滤逻辑移除超过 24 小时的信号或将缓存数量限制在 200 以内。修复后的代码会按情感强度排序并截断超出限制的信号。",[]]