[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-TinyAGI--tinyagi":3,"tool-TinyAGI--tinyagi":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 真正成长为懂上",148568,2,"2026-04-09T23:34:24",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108111,"2026-04-08T11:23:26",[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":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":75,"owner_location":75,"owner_email":75,"owner_twitter":75,"owner_website":75,"owner_url":76,"languages":77,"stars":101,"forks":102,"last_commit_at":103,"license":104,"difficulty_score":32,"env_os":105,"env_gpu":106,"env_ram":106,"env_deps":107,"category_tags":113,"github_topics":75,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":114,"updated_at":115,"faqs":116,"releases":147},6058,"TinyAGI\u002Ftinyagi","tinyagi","TinyAGI is the agent teams orchestrator for One Person Company. (fka TinyClaw)","TinyAGI 是一款专为“一人公司”设计的智能体团队编排系统，旨在让单个用户也能像管理真实团队一样，调度多个 AI 智能体协同工作。它解决了传统单一大模型在处理复杂任务时缺乏分工、上下文易丢失以及难以全天候运行的痛点。通过模拟真实公司的架构，TinyAGI 允许用户创建具有不同专属角色的智能体，并将它们编入独立的工作空间进行协作。任务可以在智能体之间自动流转（链式执行）或分发给多个成员并行处理（扇出模式），从而实现高效的多线程作业。\n\n这款工具特别适合独立开发者、创业者、研究人员以及希望利用 AI 自动化工作流的普通用户。无论是需要 24\u002F7 不间断的客户支持，还是复杂的代码开发与数据分析任务，TinyAGI 都能胜任。其技术亮点包括支持 Discord、WhatsApp 等多渠道接入，提供名为\"TinyOffice\"的可视化网页仪表盘和实时终端界面，方便用户监控团队状态与聊天记录。此外，它内置了基于 SQLite 的任务队列以确保数据原子性与重试机制，支持插件扩展，并能无缝对接 Anthropic Claude、OpenAI Codex 等多种主流大模型提供商。安装过程极简，无需繁","TinyAGI 是一款专为“一人公司”设计的智能体团队编排系统，旨在让单个用户也能像管理真实团队一样，调度多个 AI 智能体协同工作。它解决了传统单一大模型在处理复杂任务时缺乏分工、上下文易丢失以及难以全天候运行的痛点。通过模拟真实公司的架构，TinyAGI 允许用户创建具有不同专属角色的智能体，并将它们编入独立的工作空间进行协作。任务可以在智能体之间自动流转（链式执行）或分发给多个成员并行处理（扇出模式），从而实现高效的多线程作业。\n\n这款工具特别适合独立开发者、创业者、研究人员以及希望利用 AI 自动化工作流的普通用户。无论是需要 24\u002F7 不间断的客户支持，还是复杂的代码开发与数据分析任务，TinyAGI 都能胜任。其技术亮点包括支持 Discord、WhatsApp 等多渠道接入，提供名为\"TinyOffice\"的可视化网页仪表盘和实时终端界面，方便用户监控团队状态与聊天记录。此外，它内置了基于 SQLite 的任务队列以确保数据原子性与重试机制，支持插件扩展，并能无缝对接 Anthropic Claude、OpenAI Codex 等多种主流大模型提供商。安装过程极简，无需繁琐配置即可快速启动一个属于你自己的全天候 AI 员工团队。","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTinyAGI_tinyagi_readme_e23cd6d631d1.png\" alt=\"TinyAGI\" width=\"600\" \u002F>\n  \u003Ch1>TinyAGI 🦞\u003C\u002Fh1>\n  \u003Cp>\u003Cstrong>Multi-agent, Multi-team, Multi-channel, 24\u002F7 AI assistant\u003C\u002Fstrong>\u003C\u002Fp>\n  \u003Cp>Run multiple teams of AI agents that collaborate with each other simultaneously with isolated workspaces.\u003C\u002Fp>\n  \u003Cp>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstability-experimental-orange.svg\" alt=\"Experimental\" \u002F>\n    \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg\" alt=\"MIT License\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FjH6AcEChuD\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1353722981163208785?logo=discord&logoColor=white&label=Discord&color=7289DA\" alt=\"Discord\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Freleases\u002Flatest\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FTinyAGI\u002Ftinyagi?label=Latest&color=green\" alt=\"Latest Release\" \u002F>\n    \u003C\u002Fa>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n  \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fc5ef5d3c-d9cf-4a00-b619-c31e4380df2e\" width=\"600\" controls>\u003C\u002Fvideo>\n\u003C\u002Fdiv>\n\n## ✨ Features\n\n- ✅ **Multi-agent** - Run multiple isolated AI agents with specialized roles\n- ✅ **Multi-team collaboration** - Agents hand off work to teammates via chain execution and fan-out\n- ✅ **Multi-channel** - Discord, WhatsApp, and Telegram\n- ✅ **Web portal (TinyOffice)** - Browser-based dashboard for chat, agents, teams, tasks, logs, and settings\n- ✅ **Team chat rooms** - Persistent async chat rooms per team with real-time CLI viewer\n- ✅ **Multiple AI providers** - Anthropic Claude, OpenAI Codex, and custom providers (any OpenAI\u002FAnthropic-compatible endpoint)\n- ✅ **Auth token management** - Store API keys per provider, no separate CLI auth needed\n- ✅ **Parallel processing** - Agents process messages concurrently\n- ✅ **Live TUI dashboard** - Real-time team visualizer and chatroom viewer\n- ✅ **Persistent sessions** - Conversation context maintained across restarts\n- ✅ **SQLite queue** - Atomic transactions, retry logic, dead-letter management\n- ✅ **Plugin system** - Extend TinyAGI with custom plugins for message hooks and event listeners\n- ✅ **24\u002F7 operation** - Runs as a background process or Docker container\n\n## Community\n\n[Discord](https:\u002F\u002Fdiscord.com\u002Finvite\u002FjH6AcEChuD)\n\nWe are actively looking for contributors. Please reach out.\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- macOS, Linux and Windows (WSL2)\n- Node.js v18+\n- [Claude Code CLI](https:\u002F\u002Fclaude.com\u002Fclaude-code) (for Anthropic provider)\n- [Codex CLI](https:\u002F\u002Fdocs.openai.com\u002Fcodex) (for OpenAI provider)\n\n### Installation & First Run\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FTinyAGI\u002Ftinyagi\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n```\n\nThis downloads and installs the `tinyagi` command globally. Then just run:\n\n```bash\ntinyagi\n```\n\nThat's it. TinyAGI auto-creates default settings, starts the daemon, and opens TinyOffice in your browser. No wizard, no configuration needed.\n\n- **Default workspace:** `~\u002Ftinyagi-workspace`\n- **Default agent:** `tinyagi` (Anthropic\u002FOpus)\n- **Channels:** none initially — add later with `tinyagi channel setup`\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Development (run from source repo)\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi.git\ncd tinyagi && npm install && npm run build\nnpx tinyagi start\nnpx tinyagi agent list\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Other installation methods\u003C\u002Fb>\u003C\u002Fsummary>\n\n**From Source:**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi.git\ncd tinyagi && npm install && .\u002Fscripts\u002Finstall.sh\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🐳 Docker\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\ndocker compose up -d\n```\n\nSet your API key in a `.env` file or pass it directly:\n\n```bash\nANTHROPIC_API_KEY=sk-ant-... docker compose up -d\n```\n\nThe API runs on `http:\u002F\u002Flocalhost:3777`. Data is persisted in a `tinyagi-data` Docker volume.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>📱 Channel Setup Guides\u003C\u002Fb>\u003C\u002Fsummary>\n\n### Discord Setup\n\n1. Go to [Discord Developer Portal](https:\u002F\u002Fdiscord.com\u002Fdevelopers\u002Fapplications)\n2. Create application → Bot section → Create bot\n3. Copy bot token\n4. Enable \"Message Content Intent\"\n5. Invite bot using OAuth2 URL Generator\n\n### Telegram Setup\n\n1. Open Telegram → Search `@BotFather`\n2. Send `\u002Fnewbot` → Follow prompts\n3. Copy bot token\n4. Start chat with your bot\n\n### WhatsApp Setup\n\nAfter starting TinyAGI, scan the QR code:\n\n```text\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n     WhatsApp QR Code\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n[QR CODE HERE]\n\n📱 Settings → Linked Devices → Link a Device\n```\n\n\u003C\u002Fdetails>\n\n---\n\n## 🌐 TinyOffice Web Portal\n\nTinyAGI includes a web portal for managing your agents, teams, tasks, and chat — all from the browser.\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTinyAGI_tinyagi_readme_32784543e14d.png\" alt=\"TinyOffice Office View\" width=\"700\" \u002F>\n\u003C\u002Fdiv>\n\nOnce you start running TinyAGI locally, you can control it by visiting **[office.tinyagicompany.com](https:\u002F\u002Foffice.tinyagicompany.com\u002F)**. It connects to your local TinyAGI API at `localhost:3777` — no account or sign-up needed.\n\nAlternatively, you can run TinyOffice locally:\n\n```bash\ntinyagi office  # Builds and starts on http:\u002F\u002Flocalhost:3000\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>TinyOffice Features & Setup\u003C\u002Fb>\u003C\u002Fsummary>\n\n- **Dashboard** - Real-time queue\u002Fsystem overview and live event feed\n- **Chat Console** - Send messages to default agent, `@agent`, or `@team`\n- **Agents & Teams** - Create, edit, and remove agents\u002Fteams\n- **Tasks (Kanban)** - Create tasks, drag across stages, assign to agent\u002Fteam\n- **Logs & Events** - Inspect queue logs and streaming events\n- **Settings** - Edit TinyAGI configuration (`settings.json`) via UI\n- **Office View** - Visual simulation of agent interactions\n- **Org Chart** - Hierarchical visualization of teams and agents\n- **Chat Rooms** - Slack-style persistent chat rooms per team\n- **Projects** - Project-level task management with filtered kanban boards\n\n### Running Locally\n\nStart TinyAGI first (API default: `http:\u002F\u002Flocalhost:3777`), then:\n\n```bash\ntinyagi office\n```\n\nThis auto-detects when dependencies or builds are needed (e.g. after `tinyagi update`) and starts the production server on `http:\u002F\u002Flocalhost:3000`.\n\nFor development with hot-reload:\n\n```bash\ncd tinyoffice\nnpm install\nnpm run dev\n```\n\nIf TinyAGI API is on a different host\u002Fport, set:\n\n```bash\ncd tinyoffice\necho 'NEXT_PUBLIC_API_URL=http:\u002F\u002Flocalhost:3777' > .env.local\n```\n\n\u003C\u002Fdetails>\n\n## 📋 Commands\n\nCommands work with the `tinyagi` CLI.\n\n### Core Commands\n\n| Command       | Description                                               | Example               |\n| ------------- | --------------------------------------------------------- | --------------------- |\n| *(no command)* | Install, configure defaults, start, and open TinyOffice  | `tinyagi`            |\n| `start`       | Start TinyAGI daemon                                     | `tinyagi start`      |\n| `stop`        | Stop all processes                                        | `tinyagi stop`       |\n| `restart`     | Restart TinyAGI                                          | `tinyagi restart`    |\n| `status`      | Show current status and activity                          | `tinyagi status`     |\n| `channel setup` | Configure channels interactively                        | `tinyagi channel setup` |\n| `logs [type]` | View logs (discord\u002Ftelegram\u002Fwhatsapp\u002Fqueue\u002Fheartbeat\u002Fall) | `tinyagi logs queue` |\n\n### Agent Commands\n\n| Command                               | Description                     | Example                                                      |\n| ------------------------------------- | ------------------------------- | ------------------------------------------------------------ |\n| `agent list`                          | List all configured agents      | `tinyagi agent list`                                        |\n| `agent add`                           | Add new agent (interactive)     | `tinyagi agent add`                                         |\n| `agent show \u003Cid>`                     | Show agent configuration        | `tinyagi agent show coder`                                  |\n| `agent remove \u003Cid>`                   | Remove an agent                 | `tinyagi agent remove coder`                                |\n| `agent reset \u003Cid>`                    | Reset agent conversation        | `tinyagi agent reset coder`                                 |\n| `agent provider \u003Cid> [provider]`      | Show or set agent's AI provider | `tinyagi agent provider coder anthropic`                    |\n| `agent provider \u003Cid> \u003Cp> --model \u003Cm>` | Set agent's provider and model  | `tinyagi agent provider coder openai --model gpt-5.3-codex` |\n\n### Team Commands\n\n| Command                     | Description                        | Example                                   |\n| --------------------------- | ---------------------------------- | ----------------------------------------- |\n| `team list`                 | List all configured teams          | `tinyagi team list`                      |\n| `team add`                  | Add new team (interactive)         | `tinyagi team add`                       |\n| `team show \u003Cid>`            | Show team configuration            | `tinyagi team show dev`                  |\n| `team remove \u003Cid>`          | Remove a team                      | `tinyagi team remove dev`                |\n| `team add-agent \u003Ct> \u003Ca>`    | Add an existing agent to a team    | `tinyagi team add-agent dev reviewer`    |\n| `team remove-agent \u003Ct> \u003Ca>` | Remove an agent from a team        | `tinyagi team remove-agent dev reviewer` |\n| `team visualize [id]`       | Live TUI dashboard for team chains | `tinyagi team visualize dev`             |\n\n### Chatroom Commands\n\n| Command             | Description                                   | Example                    |\n| ------------------- | --------------------------------------------- | -------------------------- |\n| `chatroom \u003Cteam>`   | Real-time TUI viewer with type-to-send        | `tinyagi chatroom dev`    |\n| `office`            | Start TinyOffice web portal on port 3000      | `tinyagi office`          |\n\nEvery team has a persistent chat room. Agents post to it using `[#team_id: message]` tags, and messages are broadcast to all teammates. The chatroom viewer polls for new messages in real time — type a message and press Enter to post, or press `q`\u002FEsc to quit.\n\n**API endpoints:**\n\n```\nGET  \u002Fapi\u002Fchatroom\u002F:teamId          # Get messages (?limit=100&since=0)\nPOST \u002Fapi\u002Fchatroom\u002F:teamId          # Post a message (body: { \"message\": \"...\" })\n```\n\n### Provider & Custom Provider Commands\n\n| Command                                       | Description                                              | Example                                          |\n| --------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------ |\n| `provider [name]`                             | Show or switch global AI provider                        | `tinyagi provider anthropic`                    |\n| `provider \u003Cname> --model \u003Cmodel>`             | Switch provider and model; propagates to matching agents | `tinyagi provider openai --model gpt-5.3-codex` |\n| `provider \u003Cname> --oauth-token \u003Ctoken>`        | Store OAuth token for a built-in provider                | `tinyagi provider anthropic --oauth-token sk-ant-oat01-...` |\n| `provider list`                               | List all custom providers                                | `tinyagi provider list`                         |\n| `provider add`                                | Add a new custom provider (interactive)                  | `tinyagi provider add`                          |\n| `provider remove \u003Cid>`                        | Remove a custom provider                                 | `tinyagi provider remove proxy`                 |\n| `model [name]`                                | Show or switch AI model                                  | `tinyagi model opus`                            |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Custom provider details\u003C\u002Fb>\u003C\u002Fsummary>\n\nCustom providers let you use any OpenAI or Anthropic-compatible API endpoint (e.g., OpenRouter, proxy servers, self-hosted models).\n\n**Define a custom provider in `settings.json`:**\n\n```json\n{\n  \"custom_providers\": {\n    \"my-proxy\": {\n      \"name\": \"My Proxy\",\n      \"harness\": \"claude\",\n      \"base_url\": \"https:\u002F\u002Fproxy.example.com\u002Fv1\",\n      \"api_key\": \"sk-...\",\n      \"model\": \"claude-sonnet-4-6\"\n    }\n  }\n}\n```\n\n| Field      | Required | Description                          |\n| ---------- | -------- | ------------------------------------ |\n| `name`     | Yes      | Human-readable display name          |\n| `harness`  | Yes      | CLI to use: `claude` or `codex`      |\n| `base_url` | Yes      | API endpoint URL                     |\n| `api_key`  | Yes      | API key for authentication           |\n| `model`    | No       | Default model name for CLI           |\n\n**Assign a custom provider to an agent:**\n\n```bash\ntinyagi agent provider coder custom:my-proxy\ntinyagi agent provider coder custom:my-proxy --model gpt-4o\n```\n\n**Auth token storage** — store credentials for built-in providers so you don't need separate CLI auth:\n\n```bash\ntinyagi provider anthropic --oauth-token sk-ant-oat01-...\ntinyagi provider anthropic --api-key sk-ant-...\ntinyagi provider openai --api-key sk-...\n```\n\nAnthropic supports both `oauth_token` (exported as `CLAUDE_CODE_OAUTH_TOKEN`) and `api_key` (exported as `ANTHROPIC_API_KEY`). OAuth takes priority if both are set. OpenAI keys are saved as `models.openai.api_key` and exported as `OPENAI_API_KEY`. If nothing is configured, the process inherits environment variables directly.\n\n**API endpoints:**\n\n```\nGET    \u002Fapi\u002Fcustom-providers              # List custom providers\nPUT    \u002Fapi\u002Fcustom-providers\u002F:id          # Create or update\nDELETE \u002Fapi\u002Fcustom-providers\u002F:id          # Delete\n```\n\nSee [docs\u002FAGENTS.md](docs\u002FAGENTS.md#custom-providers) for more details.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Pairing commands\u003C\u002Fb>\u003C\u002Fsummary>\n\nUse sender pairing to control who can message your agents.\n\n| Command                                | Description                                        | Example                                    |\n| -------------------------------------- | -------------------------------------------------- | ------------------------------------------ |\n| `pairing pending`                      | Show pending sender approvals (with pairing codes) | `tinyagi pairing pending`                 |\n| `pairing approved`                     | Show approved senders                              | `tinyagi pairing approved`                |\n| `pairing list`                         | Show both pending and approved senders             | `tinyagi pairing list`                    |\n| `pairing approve \u003Ccode>`               | Move a sender from pending to approved by code     | `tinyagi pairing approve ABCD1234`        |\n| `pairing unpair \u003Cchannel> \u003Csender_id>` | Remove an approved sender from the allowlist       | `tinyagi pairing unpair telegram 1234567` |\n\nPairing behavior:\n\n- First message from unknown sender: TinyAGI generates a code and sends approval instructions.\n- Additional messages while still pending: TinyAGI blocks silently (no repeated pairing message).\n- After approval: messages from that sender are processed normally.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Messaging & in-chat commands\u003C\u002Fb>\u003C\u002Fsummary>\n\n| Command          | Description                 | Example                          |\n| ---------------- | --------------------------- | -------------------------------- |\n| `send \u003Cmessage>` | Send message to AI manually | `tinyagi send \"Hello!\"`         |\n| `send \u003Cmessage>` | Route to specific agent     | `tinyagi send \"@coder fix bug\"` |\n\nThese commands work in Discord, Telegram, and WhatsApp:\n\n| Command             | Description                          | Example                 |\n| ------------------- | ------------------------------------ | ----------------------- |\n| `@agent_id message` | Route message to specific agent      | `@coder fix the bug`    |\n| `@team_id message`  | Route message to team leader         | `@dev fix the auth bug` |\n| `\u002Fagent`            | List all available agents            | `\u002Fagent`                |\n| `\u002Fteam`             | List all available teams             | `\u002Fteam`                 |\n| `@agent_id \u002Freset`  | Reset specific agent conversation    | `@coder \u002Freset`         |\n| `\u002Freset`            | Reset conversation (WhatsApp\u002Fglobal) | `\u002Freset` or `!reset`    |\n| `\u002Frestart`          | Restart TinyAGI process             | `\u002Frestart`              |\n| `message`           | Send to default agent (no prefix)    | `help me with this`     |\n\n**Note:** The `@agent_id` routing prefix requires a space after it (e.g., `@coder fix` not `@coderfix`).\n\n**Access control note:** before routing, channel clients apply sender pairing allowlist checks.\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Update commands\u003C\u002Fb>\u003C\u002Fsummary>\n\n| Command  | Description                       | Example           |\n| -------- | --------------------------------- | ----------------- |\n| `update` | Update TinyAGI to latest version | `tinyagi update` |\n\n> **Note:** If you are on v0.0.1 or v0.0.2, the update script was broken. Please re-install instead:\n>\n> ```bash\n> curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FTinyAGI\u002Ftinyagi\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n> ```\n>\n> Your settings and user data will be preserved.\n\n**Auto-detection:** TinyAGI checks for updates on startup (once per hour).\n\n**Disable update checks:**\n\n```bash\nexport TINYAGI_SKIP_UPDATE_CHECK=1\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Configuration commands\u003C\u002Fb>\u003C\u002Fsummary>\n\n| Command                  | Description                  | Example                          |\n| ------------------------ | ---------------------------- | -------------------------------- |\n| `reset`                  | Reset all conversations      | `tinyagi reset`                 |\n| `channels reset \u003Cchan>`  | Reset channel authentication | `tinyagi channels reset whatsapp` |\n\n\u003C\u002Fdetails>\n\n## 🤖 Using Agents\n\nUse `@agent_id` prefix to route messages to specific agents:\n\n```text\n@coder fix the authentication bug\n@writer document the API endpoints\nhelp me with this  ← goes to tinyagi agent (no prefix needed)\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Agent configuration\u003C\u002Fb>\u003C\u002Fsummary>\n\nAgents are configured in `.tinyagi\u002Fsettings.json`:\n\n```json\n{\n  \"agents\": {\n    \"coder\": {\n      \"name\": \"Code Assistant\",\n      \"provider\": \"anthropic\",\n      \"model\": \"sonnet\",\n      \"working_directory\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\u002Fcoder\"\n    },\n    \"writer\": {\n      \"name\": \"Technical Writer\",\n      \"provider\": \"custom:my-proxy\",\n      \"model\": \"gpt-5.3-codex\",\n      \"working_directory\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\u002Fwriter\"\n    }\n  }\n}\n```\n\nEach agent operates in isolation:\n\n- **Separate workspace directory** - `~\u002Ftinyagi-workspace\u002F{agent_id}\u002F`\n- **Own conversation history** - Maintained by CLI\n- **Custom configuration** - `.claude\u002F`, `heartbeat.md` (root), `AGENTS.md`\n- **Independent resets** - Reset individual agent conversations\n\nSee [docs\u002FAGENTS.md](docs\u002FAGENTS.md) for full details on architecture, use cases, and advanced features.\n\n\u003C\u002Fdetails>\n\n## 📐 Architecture\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Message flow diagram\u003C\u002Fb>\u003C\u002Fsummary>\n\n```text\n┌─────────────────────────────────────────────────────────────┐\n│                     Message Channels                         │\n│         (Discord, Telegram, WhatsApp, Web, API)             │\n└────────────────────┬────────────────────────────────────────┘\n                     │ enqueueMessage()\n                     ↓\n┌─────────────────────────────────────────────────────────────┐\n│               ~\u002F.tinyagi\u002Ftinyagi.db (SQLite)               │\n│                                                              │\n│  messages: pending → processing → completed \u002F dead          │\n│  responses: pending → acked                                  │\n│                                                              │\n└────────────────────┬────────────────────────────────────────┘\n                     │ Queue Processor\n                     ↓\n┌─────────────────────────────────────────────────────────────┐\n│              Parallel Processing by Agent                    │\n│                                                              │\n│  Agent: coder        Agent: writer       Agent: assistant   │\n│  ┌──────────┐       ┌──────────┐        ┌──────────┐       │\n│  │ Message 1│       │ Message 1│        │ Message 1│       │\n│  │ Message 2│ ...   │ Message 2│  ...   │ Message 2│ ...   │\n│  │ Message 3│       │          │        │          │       │\n│  └────┬─────┘       └────┬─────┘        └────┬─────┘       │\n│       │                  │                     │            │\n└───────┼──────────────────┼─────────────────────┼────────────┘\n        ↓                  ↓                     ↓\n   claude CLI         claude CLI             claude CLI\n  (workspace\u002Fcoder)  (workspace\u002Fwriter)  (workspace\u002Fassistant)\n```\n\n\u003C\u002Fdetails>\n\n**Key features:**\n\n- **SQLite queue** - Atomic transactions via WAL mode, no race conditions\n- **Parallel agents** - Different agents process messages concurrently\n- **Sequential per agent** - Preserves conversation order within each agent\n- **Retry & dead-letter** - Failed messages retry up to 5 times, then enter dead-letter queue\n- **Isolated workspaces** - Each agent has its own directory and context\n\nSee [docs\u002FQUEUE.md](docs\u002FQUEUE.md) for detailed queue system documentation.\n\n## ⚙️ Configuration\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Settings file reference\u003C\u002Fb>\u003C\u002Fsummary>\n\nLocated at `.tinyagi\u002Fsettings.json`:\n\n```json\n{\n  \"channels\": {\n    \"enabled\": [\"discord\", \"telegram\", \"whatsapp\"],\n    \"discord\": { \"bot_token\": \"...\" },\n    \"telegram\": { \"bot_token\": \"...\" },\n    \"whatsapp\": {}\n  },\n  \"workspace\": {\n    \"path\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\",\n    \"name\": \"tinyagi-workspace\"\n  },\n  \"agents\": {\n    \"tinyagi\": {\n      \"name\": \"TinyAGI Agent\",\n      \"provider\": \"anthropic\",\n      \"model\": \"opus\",\n      \"working_directory\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\u002Ftinyagi\"\n    }\n  },\n  \"teams\": {\n    \"dev\": {\n      \"name\": \"Development Team\",\n      \"agents\": [\"coder\", \"reviewer\"],\n      \"leader_agent\": \"coder\"\n    }\n  },\n  \"custom_providers\": {\n    \"my-proxy\": {\n      \"name\": \"My Proxy\",\n      \"harness\": \"claude\",\n      \"base_url\": \"https:\u002F\u002Fproxy.example.com\u002Fv1\",\n      \"api_key\": \"sk-...\",\n      \"model\": \"claude-sonnet-4-6\"\n    }\n  },\n  \"models\": {\n    \"anthropic\": { \"api_key\": \"sk-ant-...\", \"oauth_token\": \"sk-ant-oat01-...\" },\n    \"openai\": { \"api_key\": \"sk-...\" }\n  },\n  \"monitoring\": {\n    \"heartbeat_interval\": 3600\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Heartbeat configuration\u003C\u002Fb>\u003C\u002Fsummary>\n\nEdit agent-specific heartbeat prompts:\n\n```bash\nnano ~\u002Ftinyagi-workspace\u002Fcoder\u002Fheartbeat.md\n```\n\nDefault heartbeat prompt:\n\n```markdown\nCheck for:\n\n1. Pending tasks\n2. Errors\n3. Unread messages\n\nTake action if needed.\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Directory structure\u003C\u002Fb>\u003C\u002Fsummary>\n\n```text\ntinyagi\u002F\n├── packages\u002F                # Monorepo packages\n│   ├── core\u002F                #   Shared types, config, queue, agent invocation\n│   ├── main\u002F                #   Queue processor entry point\n│   ├── teams\u002F               #   Team conversation orchestration\n│   ├── server\u002F              #   API server (REST + SSE)\n│   ├── channels\u002F            #   Channel clients (Discord, Telegram, WhatsApp)\n│   ├── cli\u002F                 #   CLI commands\n│   └── visualizer\u002F          #   TUI dashboard and chatroom viewer\n├── tinyoffice\u002F              # TinyOffice web portal (Next.js)\n├── .tinyagi\u002F               # TinyAGI data (created at runtime)\n│   ├── settings.json        #   Configuration\n│   ├── tinyagi.db          #   SQLite queue database\n│   ├── logs\u002F                #   All logs\n│   ├── channels\u002F            #   Channel state\n│   ├── files\u002F               #   Uploaded files\n│   ├── pairing.json         #   Sender allowlist state\n│   ├── chats\u002F               #   Team conversation history\n│   │   └── {team_id}\u002F       #     Per-team chat logs\n│   ├── .claude\u002F             #   Template for agents\n│   ├── heartbeat.md         #   Template for agents\n│   └── AGENTS.md            #   Template for agents\n├── ~\u002Ftinyagi-workspace\u002F    # Agent workspaces\n│   ├── tinyagi\u002F            #   Default agent\n│   ├── coder\u002F\n│   └── writer\u002F\n└── scripts\u002F                 # Installation scripts\n```\n\n\u003C\u002Fdetails>\n\n## 🎯 Use Cases\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Examples\u003C\u002Fb>\u003C\u002Fsummary>\n\n### Personal AI Assistant\n\n```text\nYou: \"Remind me to call mom\"\nClaude: \"I'll remind you!\"\n[1 hour later via heartbeat]\nClaude: \"Don't forget to call mom!\"\n```\n\n### Multi-Agent Workflow\n\n```text\n@coder Review and fix bugs in auth.ts\n@writer Document the changes\n@reviewer Check the documentation quality\n```\n\n### Team Collaboration\n\n```text\n@dev fix the auth bug\n# → Routes to team leader (@coder)\n# → Coder fixes bug, mentions @reviewer in response\n# → Reviewer automatically invoked, reviews changes\n# → Combined response sent back to user\n```\n\nTeams support sequential chains (single handoff) and parallel fan-out (multiple teammate mentions). See [docs\u002FTEAMS.md](docs\u002FTEAMS.md) for details.\n\n### Cross-Device Access\n\n- WhatsApp on phone, Discord on desktop, Telegram anywhere, CLI for automation\n- All channels share agent conversations!\n\n\u003C\u002Fdetails>\n\n## 📚 Documentation\n\n- [AGENTS.md](docs\u002FAGENTS.md) - Agent management, routing, and custom providers\n- [TEAMS.md](docs\u002FTEAMS.md) - Team collaboration, chain execution, chat rooms, and visualizer\n- [QUEUE.md](docs\u002FQUEUE.md) - Queue system and message flow\n- [tinyoffice\u002FREADME.md](tinyoffice\u002FREADME.md) - TinyOffice web portal\n- [PLUGINS.md](docs\u002FPLUGINS.md) - Plugin development guide\n- [TROUBLESHOOTING.md](docs\u002FTROUBLESHOOTING.md) - Common issues and solutions\n\n## 🐛 Troubleshooting\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Quick fixes & common issues\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\n# Reset everything (preserves settings)\ntinyagi stop && rm -rf .tinyagi\u002Fqueue\u002F* && tinyagi start\n\n# Reset WhatsApp\ntinyagi channels reset whatsapp\n\n# Check status\ntinyagi status\n\n# View logs\ntinyagi logs all\n```\n\n**Common issues:**\n\n- WhatsApp not connecting → Reset auth: `tinyagi channels reset whatsapp`\n- Messages stuck → Clear queue: `rm -rf .tinyagi\u002Fqueue\u002Fprocessing\u002F*`\n- Agent not found → Check: `tinyagi agent list`\n- Corrupted settings.json → TinyAGI auto-repairs invalid JSON (trailing commas, comments, BOM) and creates a `.bak` backup\n\n\u003C\u002Fdetails>\n\n**Need help?** [GitHub Issues](https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Fissues) · `tinyagi logs all`\n\n## 🙏 Credits\n\n- Inspired by [OpenClaw](https:\u002F\u002Fopenclaw.ai\u002F) by Peter Steinberger\n- Built on [Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code) and [Codex CLI](https:\u002F\u002Fdocs.openai.com\u002Fcodex)\n- Uses [discord.js](https:\u002F\u002Fdiscord.js.org\u002F), [whatsapp-web.js](https:\u002F\u002Fgithub.com\u002Fpedroslopez\u002Fwhatsapp-web.js), [node-telegram-bot-api](https:\u002F\u002Fgithub.com\u002Fyagop\u002Fnode-telegram-bot-api)\n\n## 📄 License\n\nMIT\n\n---\n\n**TinyAGI - Tiny but mighty!** 🦞✨\n\n[![Star History Chart](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTinyAGI_tinyagi_readme_5335dabfdcf1.png)](https:\u002F\u002Fwww.star-history.com\u002F?repos=TinyAGI%2Ftinyagi&type=date&legend=top-left)","\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTinyAGI_tinyagi_readme_e23cd6d631d1.png\" alt=\"TinyAGI\" width=\"600\" \u002F>\n  \u003Ch1>TinyAGI 🦞\u003C\u002Fh1>\n  \u003Cp>\u003Cstrong>多智能体、多团队、多渠道、全天候AI助手\u003C\u002Fstrong>\u003C\u002Fp>\n  \u003Cp>在隔离的工作空间中同时运行多个相互协作的AI智能体团队。\u003C\u002Fp>\n  \u003Cp>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstability-experimental-orange.svg\" alt=\"实验性\" \u002F>\n    \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg\" alt=\"MIT许可证\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FjH6AcEChuD\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1353722981163208785?logo=discord&logoColor=white&label=Discord&color=7289DA\" alt=\"Discord\" \u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Freleases\u002Flatest\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FTinyAGI\u002Ftinyagi?label=最新版&color=green\" alt=\"最新版本\" \u002F>\n    \u003C\u002Fa>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n  \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fc5ef5d3c-d9cf-4a00-b619-c31e4380df2e\" width=\"600\" controls>\u003C\u002Fvideo>\n\u003C\u002Fdiv>\n\n## ✨ 功能\n\n- ✅ **多智能体** - 运行多个具有专业角色的隔离式AI智能体\n- ✅ **多团队协作** - 智能体通过链式执行和扇出方式将工作交接给队友\n- ✅ **多渠道** - Discord、WhatsApp和Telegram\n- ✅ **Web门户（TinyOffice）** - 基于浏览器的仪表板，用于聊天、智能体、团队、任务、日志和设置\n- ✅ **团队聊天室** - 每个团队拥有持久化的异步聊天室，并配备实时CLI查看器\n- ✅ **多种AI提供商** - Anthropic Claude、OpenAI Codex以及自定义提供商（任何兼容OpenAI\u002FAnthropic的API端点）\n- ✅ **认证令牌管理** - 为每个提供商存储API密钥，无需单独的CLI认证\n- ✅ **并行处理** - 智能体可并发处理消息\n- ✅ **实时TUI仪表板** - 实时团队可视化工具和聊天室查看器\n- ✅ **持久化会话** - 对话上下文可在重启后保持\n- ✅ **SQLite队列** - 原子事务、重试逻辑、死信管理\n- ✅ **插件系统** - 可通过自定义插件扩展TinyAGI的功能，实现消息钩子和事件监听\n- ✅ **全天候运行** - 可作为后台进程或Docker容器运行\n\n## 社区\n\n[Discord](https:\u002F\u002Fdiscord.com\u002Finvite\u002FjH6AcEChuD)\n\n我们正在积极寻找贡献者。欢迎联系我们。\n\n## 🚀 快速入门\n\n### 先决条件\n\n- macOS、Linux和Windows（WSL2）\n- Node.js v18+\n- [Claude Code CLI](https:\u002F\u002Fclaude.com\u002Fclaude-code)（用于Anthropic提供商）\n- [Codex CLI](https:\u002F\u002Fdocs.openai.com\u002Fcodex)（用于OpenAI提供商）\n\n### 安装与首次运行\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FTinyAGI\u002Ftinyagi\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n```\n\n此命令会全局下载并安装`tinyagi`命令行工具。随后只需运行：\n\n```bash\ntinyagi\n```\n\n如此即可。TinyAGI会自动创建默认配置，启动守护进程，并在您的浏览器中打开TinyOffice。无需向导，也无需任何配置。\n\n- **默认工作空间：** `~\u002Ftinyagi-workspace`\n- **默认智能体：** `tinyagi`（Anthropic\u002FOpus）\n- **渠道：** 初始无——后续可通过`tinyagi channel setup`添加。\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>开发模式（从源代码仓库运行）\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi.git\ncd tinyagi && npm install && npm run build\nnpx tinyagi start\nnpx tinyagi agent list\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>其他安装方法\u003C\u002Fb>\u003C\u002Fsummary>\n\n**从源码安装：**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi.git\ncd tinyagi && npm install && .\u002Fscripts\u002Finstall.sh\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>🐳 Docker\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\ndocker compose up -d\n```\n\n您可以在`.env`文件中设置API密钥，或直接传递：\n\n```bash\nANTHROPIC_API_KEY=sk-ant-... docker compose up -d\n```\n\nAPI将在`http:\u002F\u002Flocalhost:3777`上运行。数据将持久化存储在名为`tinyagi-data`的Docker卷中。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>📱 渠道设置指南\u003C\u002Fb>\u003C\u002Fsummary>\n\n### Discord设置\n\n1. 访问[Discord开发者门户](https:\u002F\u002Fdiscord.com\u002Fdevelopers\u002Fapplications)\n2. 创建应用 → 机器人部分 → 创建机器人\n3. 复制机器人令牌\n4. 启用“消息内容意图”\n5. 使用OAuth2 URL生成器邀请机器人\n\n### Telegram设置\n\n1. 打开Telegram → 搜索`@BotFather`\n2. 发送`\u002Fnewbot` → 按照提示操作\n3. 复制机器人令牌\n4. 开始与您的机器人聊天\n\n### WhatsApp设置\n\n在启动TinyAGI后，请扫描二维码：\n\n```text\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n     WhatsApp QR Code\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n[QR CODE HERE]\n\n📱 设置 → 已链接设备 → 链接设备\n```\n\n\u003C\u002Fdetails>\n\n---\n\n## 🌐 TinyOffice Web门户\n\nTinyAGI内置了一个Web门户，用于在浏览器中管理您的智能体、团队、任务和聊天。\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTinyAGI_tinyagi_readme_32784543e14d.png\" alt=\"TinyOffice办公视图\" width=\"700\" \u002F>\n\u003C\u002Fdiv>\n\n一旦您在本地运行了TinyAGI，就可以访问**[office.tinyagicompany.com](https:\u002F\u002Foffice.tinyagicompany.com\u002F)**来控制它。该门户会连接到您本地的TinyAGI API，地址为`localhost:3777`——无需账号或注册。\n\n您也可以在本地运行TinyOffice：\n\n```bash\ntinyagi office  # 构建并在http:\u002F\u002Flocalhost:3000启动\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>TinyOffice功能与设置\u003C\u002Fb>\u003C\u002Fsummary>\n\n- **仪表板** - 实时队列\u002F系统概览和实时事件流\n- **聊天控制台** - 向默认智能体、`@agent`或`@team`发送消息\n- **智能体与团队** - 创建、编辑和删除智能体\u002F团队\n- **任务（看板）** - 创建任务，在不同阶段间拖动，分配给智能体\u002F团队\n- **日志与事件** - 查看队列日志和流式事件\n- **设置** - 通过UI编辑TinyAGI配置文件（`settings.json`）\n- **办公视图** - 智能体交互的可视化模拟\n- **组织架构图** - 团队和智能体的层级可视化\n- **聊天室** - 类似Slack的团队持久化聊天室\n- **项目** - 基于项目的任务管理，配有筛选后的看板\n\n### 本地运行\n\n首先启动TinyAGI（API默认地址：`http:\u002F\u002Flocalhost:3777`），然后：\n\n```bash\ntinyagi office\n```\n\n该命令会自动检测是否需要依赖项或构建（例如在`tinyagi update`之后），并在`http:\u002F\u002Flocalhost:3000`上启动生产服务器。\n\n若需开发并启用热重载：\n\n```bash\ncd tinyoffice\nnpm install\nnpm run dev\n```\n\n如果TinyAGI API位于不同的主机或端口，请设置：\n\n```bash\ncd tinyoffice\necho 'NEXT_PUBLIC_API_URL=http:\u002F\u002Flocalhost:3777' > .env.local\n```\n\n\u003C\u002Fdetails>\n\n## 📋 命令\n\n命令通过`tinyagi`命令行工具执行。\n\n### 核心命令\n\n| 命令       | 描述                                               | 示例               |\n| ------------- | --------------------------------------------------------- | --------------------- |\n| *(无命令)* | 安装、配置默认设置、启动并打开 TinyOffice  | `tinyagi`            |\n| `start`       | 启动 TinyAGI 守护进程                                     | `tinyagi start`      |\n| `stop`        | 停止所有进程                                        | `tinyagi stop`       |\n| `restart`     | 重启 TinyAGI                                          | `tinyagi restart`    |\n| `status`      | 显示当前状态和活动                          | `tinyagi status`     |\n| `channel setup` | 以交互方式配置频道                        | `tinyagi channel setup` |\n| `logs [type]` | 查看日志（discord\u002Ftelegram\u002Fwhatsapp\u002Fqueue\u002Fheartbeat\u002Fall） | `tinyagi logs queue` |\n\n### 代理命令\n\n| 命令                               | 描述                     | 示例                                                      |\n| ------------------------------------- | ------------------------------- | ------------------------------------------------------------ |\n| `agent list`                          | 列出所有已配置的代理      | `tinyagi agent list`                                        |\n| `agent add`                           | 添加新代理（交互式）     | `tinyagi agent add`                                         |\n| `agent show \u003Cid>`                     | 显示代理配置        | `tinyagi agent show coder`                                  |\n| `agent remove \u003Cid>`                   | 移除一个代理                 | `tinyagi agent remove coder`                                |\n| `agent reset \u003Cid>`                    | 重置代理对话        | `tinyagi agent reset coder`                                 |\n| `agent provider \u003Cid> [provider]`      | 显示或设置代理的 AI 提供商 | `tinyagi agent provider coder anthropic`                    |\n| `agent provider \u003Cid> \u003Cp> --model \u003Cm>` | 设置代理的提供商和模型  | `tinyagi agent provider coder openai --model gpt-5.3-codex` |\n\n### 团队命令\n\n| 命令                     | 描述                        | 示例                                   |\n| --------------------------- | -------------------------- | ----------------------------------------- |\n| `team list`                 | 列出所有已配置的团队          | `tinyagi team list`                      |\n| `team add`                  | 添加新团队（交互式）         | `tinyagi team add`                       |\n| `team show \u003Cid>`            | 显示团队配置            | `tinyagi team show dev`                  |\n| `team remove \u003Cid>`          | 移除一个团队                      | `tinyagi team remove dev`                |\n| `team add-agent \u003Ct> \u003Ca>`    | 将现有代理加入团队    | `tinyagi team add-agent dev reviewer`    |\n| `team remove-agent \u003Ct> \u003Ca>` | 从团队中移除代理        | `tinyagi team remove-agent dev reviewer` |\n| `team visualize [id]`       | 团队链路的实时 TUI 仪表板 | `tinyagi team visualize dev`             |\n\n### 聊天室命令\n\n| 命令             | 描述                                   | 示例                    |\n| ------------------- | --------------------------------------------- | -------------------------- |\n| `chatroom \u003Cteam>`   | 实时 TUI 查看器，支持键入发送消息        | `tinyagi chatroom dev`    |\n| `office`            | 在端口 3000 上启动 TinyOffice Web 门户      | `tinyagi office`          |\n\n每个团队都有一个持久化的聊天室。代理会使用 `[#team_id: message]` 标签向其中发布消息，这些消息会被广播给所有队友。聊天室查看器会实时轮询新消息——输入消息并按 Enter 键即可发送，或按 `q`\u002FEsc 键退出。\n\n**API 端点：**\n\n```\nGET  \u002Fapi\u002Fchatroom\u002F:teamId          # 获取消息（?limit=100&since=0）\nPOST \u002Fapi\u002Fchatroom\u002F:teamId          # 发布消息（body: { \"message\": \"...\" })\n```\n\n### 提供商及自定义提供商命令\n\n| 命令                                       | 描述                                              | 示例                                          |\n| --------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------ |\n| `provider [name]`                             | 显示或切换全局 AI 提供商                        | `tinyagi provider anthropic`                    |\n| `provider \u003Cname> --model \u003Cmodel>`             | 切换提供商和模型；更改会同步到匹配的代理        | `tinyagi provider openai --model gpt-5.3-codex` |\n| `provider \u003Cname> --oauth-token \u003Ctoken>`        | 存储内置提供商的 OAuth 令牌                | `tinyagi provider anthropic --oauth-token sk-ant-oat01-...` |\n| `provider list`                               | 列出所有自定义提供商                                | `tinyagi provider list`                         |\n| `provider add`                                | 添加新的自定义提供商（交互式）                  | `tinyagi provider add`                          |\n| `provider remove \u003Cid>`                        | 移除自定义提供商                                 | `tinyagi provider remove proxy`                 |\n| `model [name]`                                | 显示或切换 AI 模型                                  | `tinyagi model opus`                            |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>自定义提供商详情\u003C\u002Fb>\u003C\u002Fsummary>\n\n自定义提供商允许您使用任何与 OpenAI 或 Anthropic 兼容的 API 端点（例如 OpenRouter、代理服务器、自托管模型）。\n\n**在 `settings.json` 中定义自定义提供商：**\n\n```json\n{\n  \"custom_providers\": {\n    \"my-proxy\": {\n      \"name\": \"My Proxy\",\n      \"harness\": \"claude\",\n      \"base_url\": \"https:\u002F\u002Fproxy.example.com\u002Fv1\",\n      \"api_key\": \"sk-...\",\n      \"model\": \"claude-sonnet-4-6\"\n    }\n  }\n}\n```\n\n| 字段      | 必需 | 描述                          |\n| ---------- | -------- | ------------------------------------ |\n| `name`     | 是      | 人类可读的显示名称          |\n| `harness`  | 是      | 需要使用的 CLI：`claude` 或 `codex`      |\n| `base_url` | 是      | API 端点 URL                     |\n| `api_key`  | 是      | 用于身份验证的 API 密钥           |\n| `model`    | 否       | CLI 的默认模型名称           |\n\n**为代理分配自定义提供商：**\n\n```bash\ntinyagi agent provider coder custom:my-proxy\ntinyagi agent provider coder custom:my-proxy --model gpt-4o\n```\n\n**认证令牌存储** — 存储内置提供商的凭据，这样就不需要单独的 CLI 认证了：\n\n```bash\ntinyagi provider anthropic --oauth-token sk-ant-oat01-...\ntinyagi provider anthropic --api-key sk-ant-...\ntinyagi provider openai --api-key sk-...\n```\n\nAnthropic 同时支持 `oauth_token`（导出为 `CLAUDE_CODE_OAUTH_TOKEN`）和 `api_key`（导出为 `ANTHROPIC_API_KEY`）。如果两者都已设置，OAuth 会优先使用。OpenAI 的密钥则保存为 `models.openai.api_key`，并导出为 `OPENAI_API_KEY`。若未进行任何配置，程序将直接继承环境变量。\n\n**API 端点：**\n\n```\nGET    \u002Fapi\u002Fcustom-providers              # 列出自定义提供商\nPUT    \u002Fapi\u002Fcustom-providers\u002F:id          # 创建或更新\nDELETE \u002Fapi\u002Fcustom-providers\u002F:id          # 删除\n```\n\n更多详情请参阅 [docs\u002FAGENTS.md](docs\u002FAGENTS.md#custom-providers)。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>配对命令\u003C\u002Fb>\u003C\u002Fsummary>\n\n使用发送者配对功能来控制哪些用户可以向你的代理发送消息。\n\n| 命令                                | 描述                                        | 示例                                    |\n| -------------------------------------- | -------------------------------------------------- | ------------------------------------------ |\n| `pairing pending`                      | 显示待处理的发送者批准请求（附带配对码） | `tinyagi pairing pending`                 |\n| `pairing approved`                     | 显示已批准的发送者                              | `tinyagi pairing approved`                |\n| `pairing list`                         | 显示待处理和已批准的发送者             | `tinyagi pairing list`                    |\n| `pairing approve \u003Ccode>`               | 通过代码将发送者从待处理状态移至已批准状态     | `tinyagi pairing approve ABCD1234`        |\n| `pairing unpair \u003Cchannel> \u003Csender_id>` | 从白名单中移除已批准的发送者       | `tinyagi pairing unpair telegram 1234567` |\n\n配对行为：\n\n- 来自未知发送者的首次消息：TinyAGI 会生成一个代码，并发送批准说明。\n- 在待处理期间的后续消息：TinyAGI 会静默拦截（不会重复发送配对消息）。\n- 批准后：该发送者的消息将被正常处理。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>消息与聊天内命令\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 命令          | 描述                 | 示例                          |\n| ---------------- | --------------------------- | -------------------------------- |\n| `send \u003Cmessage>` | 手动向 AI 发送消息 | `tinyagi send \"Hello!\"`         |\n| `send \u003Cmessage>` | 路由到特定代理     | `tinyagi send \"@coder fix bug\"` |\n\n这些命令在 Discord、Telegram 和 WhatsApp 中均可使用：\n\n| 命令             | 描述                          | 示例                 |\n| ------------------- | ------------------------------------ | ----------------------- |\n| `@agent_id message` | 将消息路由到特定代理      | `@coder fix the bug`    |\n| `@team_id message`  | 将消息路由到团队负责人         | `@dev fix the auth bug` |\n| `\u002Fagent`            | 列出所有可用的代理            | `\u002Fagent`                |\n| `\u002Fteam`             | 列出所有可用的团队             | `\u002Fteam`                 |\n| `@agent_id \u002Freset`  | 重置特定代理的对话    | `@coder \u002Freset`         |\n| `\u002Freset`            | 重置对话（WhatsApp\u002F全局） | `\u002Freset` 或 `!reset`    |\n| `\u002Frestart`          | 重启 TinyAGI 进程             | `\u002Frestart`              |\n| `message`           | 发送至默认代理（无需前缀）    | `help me with this`     |\n\n**注意：** `@agent_id` 路由前缀后需要空格（例如，`@coder fix` 而不是 `@coderfix`）。\n\n**访问控制说明：** 在路由之前，频道客户端会先检查发送者的配对白名单。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>更新命令\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 命令  | 描述                       | 示例           |\n| -------- | --------------------------------- | ----------------- |\n| `update` | 将 TinyAGI 更新至最新版本 | `tinyagi update` |\n\n> **注意：** 如果您使用的是 v0.0.1 或 v0.0.2 版本，更新脚本可能存在故障。请重新安装：\n>\n> ```bash\n> curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FTinyAGI\u002Ftinyagi\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n> ```\n>\n> 您的设置和用户数据将会保留。\n\n**自动检测：** TinyAGI 会在启动时检查更新（每小时一次）。\n\n**禁用更新检查：**\n\n```bash\nexport TINYAGI_SKIP_UPDATE_CHECK=1\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>配置命令\u003C\u002Fb>\u003C\u002Fsummary>\n\n| 命令                  | 描述                  | 示例                          |\n| ------------------------ | ---------------------------- | -------------------------------- |\n| `reset`                  | 重置所有对话      | `tinyagi reset`                 |\n| `channels reset \u003Cchan>`  | 重置通道认证 | `tinyagi channels reset whatsapp` |\n\n\u003C\u002Fdetails>\n\n\n\n## 🤖 使用代理\n\n使用 `@agent_id` 前缀可将消息路由到特定代理：\n\n```text\n@coder fix the authentication bug\n@writer document the API endpoints\nhelp me with this  ← 发送到 tinyagi 代理（无需前缀）\n```\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>代理配置\u003C\u002Fb>\u003C\u002Fsummary>\n\n代理配置位于 `.tinyagi\u002Fsettings.json` 文件中：\n\n```json\n{\n  \"agents\": {\n    \"coder\": {\n      \"name\": \"代码助手\",\n      \"provider\": \"anthropic\",\n      \"model\": \"sonnet\",\n      \"working_directory\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\u002Fcoder\"\n    },\n    \"writer\": {\n      \"name\": \"技术文档撰写员\",\n      \"provider\": \"custom:my-proxy\",\n      \"model\": \"gpt-5.3-codex\",\n      \"working_directory\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\u002Fwriter\"\n    }\n  }\n}\n```\n\n每个代理独立运行：\n\n- **独立的工作目录** - `~\u002Ftinyagi-workspace\u002F{agent_id}\u002F`\n- **独立的对话历史** - 由 CLI 维护\n- **自定义配置** - `.claude\u002F`、`heartbeat.md`（根目录）、`AGENTS.md`\n- **独立重置** - 可单独重置每个代理的对话\n\n有关架构、使用场景及高级功能的完整详情，请参阅 [docs\u002FAGENTS.md](docs\u002FAGENTS.md)。\n\n\u003C\u002Fdetails>\n\n## 📐 架构\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>消息流图\u003C\u002Fb>\u003C\u002Fsummary>\n\n```text\n┌─────────────────────────────────────────────────────────────┐\n│                     消息通道                         │\n│         (Discord, Telegram, WhatsApp, Web, API)             │\n└────────────────────┬────────────────────────────────────────┘\n                     │ enqueueMessage()\n                     ↓\n┌─────────────────────────────────────────────────────────────┐\n│               ~\u002F.tinyagi\u002Ftinyagi.db (SQLite)               │\n│                                                              │\n│  messages: 待处理 → 处理中 → 完成 \u002F 死信          │\n│  responses: 待确认 → 已确认                                  │\n│                                                              │\n└────────────────────┬────────────────────────────────────────┘\n                     │ 队列处理器\n                     ↓\n┌─────────────────────────────────────────────────────────────┐\n│              并行代理处理                    │\n│                                                              │\n│  代码员代理        写作代理       助理代理   │\n│  ┌──────────┐       ┌──────────┐        ┌──────────┐       │\n│  │ 消息 1│       │ 消息 1│        │ 消息 1│       │\n│  │ 消息 2│ ...   │ 消息 2│  ...   │ 消息 2│ ...   │\n│  │ 消息 3│       │          │        │          │       │\n│  └────┬─────┘       └────┬─────┘        └────┬─────┘       │\n│       │                  │                     │            │\n└───────┼──────────────────┼─────────────────────┼────────────┘\n        ↓                  ↓                     ↓\n   claude CLI         claude CLI             claude CLI\n  (workspace\u002Fcoder)  (workspace\u002Fwriter)  (workspace\u002Fassistant)\n```\n\n\u003C\u002Fdetails>\n\n**关键特性：**\n\n- **SQLite 队列** - 通过 WAL 模式实现原子事务，无竞态条件\n- **并行代理** - 不同代理可同时处理消息\n- **单个代理内的顺序处理** - 保持每个代理内部的对话顺序\n- **重试与死信队列** - 失败的消息最多重试 5 次，随后进入死信队列\n- **隔离的工作空间** - 每个代理拥有独立的目录和上下文\n\n详细队列系统文档请参阅 [docs\u002FQUEUE.md](docs\u002FQUEUE.md)。\n\n## ⚙️ 配置\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>设置文件参考\u003C\u002Fb>\u003C\u002Fsummary>\n\n位于 `.tinyagi\u002Fsettings.json`：\n\n```json\n{\n  \"channels\": {\n    \"enabled\": [\"discord\", \"telegram\", \"whatsapp\"],\n    \"discord\": { \"bot_token\": \"...\" },\n    \"telegram\": { \"bot_token\": \"...\" },\n    \"whatsapp\": {}\n  },\n  \"workspace\": {\n    \"path\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\",\n    \"name\": \"tinyagi-workspace\"\n  },\n  \"agents\": {\n    \"tinyagi\": {\n      \"name\": \"TinyAGI 代理\",\n      \"provider\": \"anthropic\",\n      \"model\": \"opus\",\n      \"working_directory\": \"\u002FUsers\u002Fme\u002Ftinyagi-workspace\u002Ftinyagi\"\n    }\n  },\n  \"teams\": {\n    \"dev\": {\n      \"name\": \"开发团队\",\n      \"agents\": [\"coder\", \"reviewer\"],\n      \"leader_agent\": \"coder\"\n    }\n  },\n  \"custom_providers\": {\n    \"my-proxy\": {\n      \"name\": \"我的代理\",\n      \"harness\": \"claude\",\n      \"base_url\": \"https:\u002F\u002Fproxy.example.com\u002Fv1\",\n      \"api_key\": \"sk-...\",\n      \"model\": \"claude-sonnet-4-6\"\n    }\n  },\n  \"models\": {\n    \"anthropic\": { \"api_key\": \"sk-ant-...\", \"oauth_token\": \"sk-ant-oat01-...\" },\n    \"openai\": { \"api_key\": \"sk-...\" }\n  },\n  \"monitoring\": {\n    \"heartbeat_interval\": 3600\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>心跳配置\u003C\u002Fb>\u003C\u002Fsummary>\n\n编辑代理特定的心跳提示：\n\n```bash\nnano ~\u002Ftinyagi-workspace\u002Fcoder\u002Fheartbeat.md\n```\n\n默认心跳提示：\n\n```markdown\n检查以下内容：\n\n1. 待处理的任务\n2. 错误\n3. 未读消息\n\n如有需要，请采取行动。\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>目录结构\u003C\u002Fb>\u003C\u002Fsummary>\n\n```text\ntinyagi\u002F\n├── packages\u002F                # 单体仓库包\n│   ├── core\u002F                #   共享类型、配置、队列、代理调用\n│   ├── main\u002F                #   队列处理器入口点\n│   ├── teams\u002F               #   团队对话编排\n│   ├── server\u002F              #   API 服务器 (REST + SSE)\n│   ├── channels\u002F            #   通道客户端 (Discord、Telegram、WhatsApp)\n│   ├── cli\u002F                 #   CLI 命令\n│   └── visualizer\u002F          #   TUI 仪表盘和聊天室查看器\n├── tinyoffice\u002F              # TinyOffice 网页门户 (Next.js)\n├── .tinyagi\u002F               # TinyAGI 数据 (运行时创建)\n│   ├── settings.json        #   配置\n│   ├── tinyagi.db          #   SQLite 队列数据库\n│   ├── logs\u002F                #   所有日志\n│   ├── channels\u002F            #   通道状态\n│   ├── files\u002F               #   上传的文件\n│   ├── pairing.json         #   发送者白名单状态\n│   ├── chats\u002F               #   团队对话历史\n│   │   └── {team_id}\u002F       #     每个团队的聊天记录\n│   ├── .claude\u002F             #   代理模板\n│   ├── heartbeat.md         #   代理模板\n│   └── AGENTS.md            #   代理模板\n├── ~\u002Ftinyagi-workspace\u002F    # 代理工作空间\n│   ├── tinyagi\u002F            #   默认代理\n│   ├── coder\u002F\n│   └── writer\u002F\n└── scripts\u002F                 # 安装脚本\n```\n\n\u003C\u002Fdetails>\n\n## 🎯 使用场景\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>示例\u003C\u002Fb>\u003C\u002Fsummary>\n\n### 个人 AI 助手\n\n```text\n你: “提醒我给妈妈打电话”\nClaude: “好的，我会提醒你的！”\n[1 小时后通过心跳]\nClaude: “别忘了给妈妈打电话哦！”\n```\n\n### 多代理工作流\n\n```text\n@coder 审查并修复 auth.ts 中的错误\n@writer 记录更改内容\n@reviewer 检查文档质量\n```\n\n### 团队协作\n\n```text\n@dev 修复认证漏洞\n# → 路由到团队负责人 (@coder)\n# → 代码员修复漏洞，并在回复中提及 @reviewer\n# → 审核员自动被调用，审核更改内容\n# → 综合回复发送回用户\n```\n\n团队支持顺序链（单次交接）和并行扇出（多次提及队友）。详情请参阅 [docs\u002FTEAMS.md](docs\u002FTEAMS.md)。\n\n### 跨设备访问\n\n- 手机上使用 WhatsApp，桌面端使用 Discord，任何地方都可以使用 Telegram，CLI 用于自动化\n- 所有通道共享代理对话！\n\n\u003C\u002Fdetails>\n\n## 📚 文档\n\n- [AGENTS.md](docs\u002FAGENTS.md) - 代理管理、路由和自定义提供商\n- [TEAMS.md](docs\u002FTEAMS.md) - 团队协作、链式执行、聊天室和可视化工具\n- [QUEUE.md](docs\u002FQUEUE.md) - 队列系统和消息流\n- [tinyoffice\u002FREADME.md](tinyoffice\u002FREADME.md) - TinyOffice 网页门户\n- [PLUGINS.md](docs\u002FPLUGINS.md) - 插件开发指南\n- [TROUBLESHOOTING.md](docs\u002FTROUBLESHOOTING.md) - 常见问题及解决方案\n\n## 🐛 故障排除\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>快速修复与常见问题\u003C\u002Fb>\u003C\u002Fsummary>\n\n```bash\n# 重置所有内容（保留设置）\ntinyagi stop && rm -rf .tinyagi\u002Fqueue\u002F* && tinyagi start\n\n# 重置 WhatsApp\ntinyagi channels reset whatsapp\n\n# 检查状态\ntinyagi status\n\n# 查看日志\ntinyagi logs all\n```\n\n**常见问题：**\n\n- WhatsApp 无法连接 → 重置认证：`tinyagi channels reset whatsapp`\n- 消息卡住 → 清空队列：`rm -rf .tinyagi\u002Fqueue\u002Fprocessing\u002F*`\n- 未找到代理 → 检查：`tinyagi agent list`\n- `settings.json` 文件损坏 → TinyAGI 会自动修复无效的 JSON（如尾部逗号、注释、BOM），并创建一个 `.bak` 备份文件\n\n\u003C\u002Fdetails>\n\n**需要帮助？** [GitHub Issues](https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Fissues) · `tinyagi logs all`\n\n## 🙏 致谢\n\n- 灵感来源于 Peter Steinberger 的 [OpenClaw](https:\u002F\u002Fopenclaw.ai\u002F)\n- 基于 [Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code) 和 [Codex CLI](https:\u002F\u002Fdocs.openai.com\u002Fcodex) 构建\n- 使用了 [discord.js](https:\u002F\u002Fdiscord.js.org\u002F)、[whatsapp-web.js](https:\u002F\u002Fgithub.com\u002Fpedroslopez\u002Fwhatsapp-web.js)、[node-telegram-bot-api](https:\u002F\u002Fgithub.com\u002Fyagop\u002Fnode-telegram-bot-api)\n\n## 📄 许可证\n\nMIT\n\n---\n\n**TinyAGI - 虽小但强大！** 🦞✨\n\n[![星标历史图表](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTinyAGI_tinyagi_readme_5335dabfdcf1.png)](https:\u002F\u002Fwww.star-history.com\u002F?repos=TinyAGI%2Ftinyagi&type=date&legend=top-left)","# TinyAGI 快速上手指南\n\nTinyAGI 是一个支持多智能体、多团队协作的 24\u002F7 AI 助手系统。它允许你在隔离的工作空间中运行多个 AI 智能体团队，并通过 Discord、WhatsApp、Telegram 或 Web 门户进行交互。\n\n## 环境准备\n\n在开始之前，请确保你的系统满足以下要求：\n\n*   **操作系统**：macOS、Linux 或 Windows (需安装 WSL2)\n*   **Node.js**：版本 v18 或更高\n*   **AI 命令行工具**（根据选择的提供商二选一或全选）：\n    *   [Claude Code CLI](https:\u002F\u002Fclaude.com\u002Fclaude-code) (适用于 Anthropic 提供商)\n    *   [Codex CLI](https:\u002F\u002Fdocs.openai.com\u002Fcodex) (适用于 OpenAI 提供商)\n\n> **提示**：国内用户若下载 Node.js 或相关 CLI 工具较慢，建议使用国内镜像源（如淘宝镜像 `npmmirror.com`）或代理加速。\n\n## 安装步骤\n\n### 方法一：一键安装（推荐）\n\n运行以下命令自动下载并全局安装 `tinyagi`：\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FTinyAGI\u002Ftinyagi\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n```\n\n### 方法二：Docker 部署\n\n如果你偏好容器化部署，可以使用 Docker Compose：\n\n```bash\n# 克隆仓库（如果尚未克隆）\ngit clone https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi.git\ncd tinyagi\n\n# 设置 API Key 并启动 (将 sk-ant-... 替换为你的实际密钥)\nANTHROPIC_API_KEY=sk-ant-... docker compose up -d\n```\n*服务将在 `http:\u002F\u002Flocalhost:3777` 运行，数据持久化在 `tinyagi-data` 卷中。*\n\n### 方法三：源码安装（开发模式）\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi.git\ncd tinyagi\nnpm install\nnpm run build\n# 链接到全局以便使用 tinyagi 命令\nnpm link\n```\n\n## 基本使用\n\n### 1. 启动服务\n\n安装完成后，直接在终端输入以下命令即可启动。系统会自动创建默认配置、启动后台守护进程，并在浏览器中打开 **TinyOffice** 管理面板。\n\n```bash\ntinyagi\n```\n\n*   **默认工作空间**：`~\u002Ftinyagi-workspace`\n*   **默认智能体**：`tinyagi` (基于 Anthropic\u002FOpus)\n*   **无需额外配置**：首次运行无需向导，开箱即用。\n\n### 2. 使用 Web 管理面板 (TinyOffice)\n\n启动后，访问浏览器中的管理面板进行可视化操作：\n\n*   **在线版**：访问 [office.tinyagicompany.com](https:\u002F\u002Foffice.tinyagicompany.com\u002F) (自动连接本地 `localhost:3777` 接口，无需登录)。\n*   **本地版**：如果未自动打开，可手动运行：\n    ```bash\n    tinyagi office\n    ```\n    访问 `http:\u002F\u002Flocalhost:3000`。\n\n**主要功能**：\n*   **Dashboard**：实时查看队列状态和事件流。\n*   **Chat Console**：向默认智能体、特定智能体 (`@agent`) 或团队 (`@team`) 发送消息。\n*   **Tasks (Kanban)**：创建任务并拖拽分配给智能体或团队。\n*   **Settings**：在界面中编辑 `settings.json` 配置。\n\n### 3. 常用命令行操作\n\n你可以使用 `tinyagi` CLI 直接管理智能体和团队：\n\n**查看状态与日志**\n```bash\ntinyagi status          # 查看当前运行状态\ntinyagi logs queue      # 查看队列日志\n```\n\n**管理智能体 (Agents)**\n```bash\ntinyagi agent list                 # 列出所有智能体\ntinyagi agent add                  # 交互式添加新智能体\ntinyagi agent provider coder openai --model gpt-5.3-codex  # 修改智能体提供商和模型\n```\n\n**管理团队 (Teams)**\n```bash\ntinyagi team list                  # 列出所有团队\ntinyagi team add                   # 交互式创建新团队\ntinyagi team add-agent dev reviewer # 将名为 'reviewer' 的智能体加入 'dev' 团队\ntinyagi team visualize dev         # 启动团队的实时 TUI 可视化看板\n```\n\n**配置通信渠道 (Channels)**\n初始安装不包含通信渠道，需手动设置：\n```bash\ntinyagi channel setup\n```\n支持配置 Discord、Telegram 或 WhatsApp（扫码连接）。\n\n### 4. 停止与重启\n\n```bash\ntinyagi stop     # 停止所有进程\ntinyagi restart  # 重启服务\n```","独立开发者李明运营着一家一人公司，需要同时处理客户咨询、代码开发和社交媒体运营，但分身乏术导致响应延迟。\n\n### 没有 tinyagi 时\n- **多任务切换混乱**：李明需在 Discord 回复客户、在本地写代码、在 Telegram 发推文间频繁切换，上下文断裂严重。\n- **协作流程断层**：遇到复杂需求（如“修复 Bug 并通知用户”）时，无法自动将任务从客服流转给开发，全靠人工记忆和手动复制粘贴。\n- **服务时间受限**：作为单人团队，无法做到 24\u002F7 在线，夜间或周末的紧急咨询往往被遗漏，影响客户满意度。\n- **状态监控缺失**：缺乏统一看板，难以实时查看各个待办任务的进度，经常忘记跟进某些长期任务。\n\n### 使用 tinyagi 后\n- **多团队并行作业**：tinyagi 组建了“客服”、“开发”和“运营”三个专属 Agent 团队，分别在隔离空间中通过 Discord、WhatsApp 等渠道同时工作，互不干扰。\n- **自动化任务流转**：当客服 Agent 收到技术故障报告，tinyagi 自动通过链式执行将工单派发给开发 Agent，修复完成后自动回调通知用户，无需人工干预。\n- **全天候无人值守**：部署为后台守护进程后，tinyagi 实现 24\u002F7 自动响应，即使李明在睡觉，也能通过预设逻辑处理常规请求并记录日志。\n- **可视化统一管控**：通过 TinyOffice 网页仪表盘，李明可实时查看所有团队的聊天记录、任务队列和执行日志，随时掌握公司运转全貌。\n\ntinyagi 将一人公司升级为拥有多个专职员工的虚拟组织，让独立开发者真正实现业务自动化与全天候运营。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FTinyAGI_tinyagi_32784543.png","TinyAGI","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FTinyAGI_67cd94ef.png",null,"https:\u002F\u002Fgithub.com\u002FTinyAGI",[78,82,86,90,93,97],{"name":79,"color":80,"percentage":81},"TypeScript","#3178c6",85.9,{"name":83,"color":84,"percentage":85},"JavaScript","#f1e05a",5.9,{"name":87,"color":88,"percentage":89},"Shell","#89e051",4.4,{"name":91,"color":92,"percentage":10},"Python","#3572A5",{"name":94,"color":95,"percentage":96},"CSS","#663399",0.4,{"name":98,"color":99,"percentage":100},"Dockerfile","#384d54",0.2,3493,498,"2026-04-09T20:27:24","MIT","macOS, Linux, Windows (WSL2)","未说明",{"notes":108,"python":106,"dependencies":109},"该工具基于 Node.js 运行，而非 Python。核心依赖为 Node.js v18 及以上版本。若使用 Anthropic 或 OpenAI 提供商，需分别安装 Claude Code CLI 和 Codex CLI。支持通过 Docker 部署，数据持久化在 Docker 卷中。默认工作空间位于 ~\u002Ftinyagi-workspace。",[110,111,112],"Node.js v18+","Claude Code CLI","Codex CLI",[13,52],"2026-03-27T02:49:30.150509","2026-04-10T10:32:09.890972",[117,122,127,132,137,142],{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},27428,"TinyOffice 无法显示代理（Agents）和房间（Rooms），或者连接失败怎么办？","TinyOffice 默认仅连接到 localhost:3777。如果您在不同网络或远程运行，需要设置相应的环境变量来指定连接地址。例如，如果在局域网 IP（如 172.31.95.x）上运行，需配置环境变量指向该地址，否则界面可能无法加载数据。","https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Fissues\u002F193",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},27429,"如何可视化查看团队（Team）的结构和关系？","可以使用命令行工具运行 `tinyclaw team visualize` 命令来可视化当前的团队结构。这有助于理解代理之间的层级和协作关系。","https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Fissues\u002F14",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},27430,"如何在 Telegram、WhatsApp 或 Discord 等频道中限制只有特定用户才能触发机器人？","系统支持发送者 ID 过滤功能。您需要先与机器人进行“配对”（pairing），配对成功后机器人才会回复该用户的消息。此外，可以在聊天中使用 `\u002Funpair` 命令来移除配对关系，从而取消授权。","https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Fissues\u002F29",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},27431,"Telegram 机器人在 Fly.io 等平台休眠唤醒后无法自动重连或报错 ECONNRESET 怎么办？","这可能是由于默认的 `node-telegram-bot-api` 库依赖已停止维护的 `request-promise` 导致的。解决方案是绕过该库，直接调用 Telegram Bot API 端点，或者替换为更轻量级的自定义实现。直接调用端点通常能解决在服务器休眠唤醒后的连接重置问题。","https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Fissues\u002F126",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},27432,"如何配置 OpenRouter 或其他非原生支持的 AI 提供商（如 Z.ai, Kimi 等）？","可以通过自定义提供商字符串来实现。特别是在使用 OpenCode 连接 OpenRouter 时，提供商名称必须包含完整路径，格式应为 `opencode\u002Fopenrouter\u002F...\u002F...`。如果只写 `opencode` 会导致生成响应失败。系统已通过“自定义提供商”功能解决了此类扩展需求。","https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Fissues\u002F124",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},27433,"是否支持类似 Claude Trace 或 Azure Phoenix 的任务控制和代理追踪功能？","可以通过安装 `claude-mem` 插件并访问 Worker API 来获取相关数据。您可以让代理协助构建所需的追踪界面，或者直接利用现有的 Worker 服务接口（文档参考：https:\u002F\u002Fdocs.claude-mem.ai\u002Farchitecture\u002Fworker-service）来提取代理对话、工具使用和记忆池等信息。","https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Fissues\u002F66",[148,153,158,163,168,173,178,183,188,193,198,203,208,213,218,223,228,233,238,243],{"id":149,"version":150,"summary_zh":151,"released_at":152},180590,"v0.0.20","## TinyAGI v0.0.20\n\n### 亮点\n- **办公控制平面** — 办公 Web UI 现已包含完整的控制平面，用于管理守护进程（重启）、频道（启动\u002F停止）以及设备配对；同时新增整合的服务选项卡，将提供商管理统一到一个视图中。(#267, #268)\n- **CLI 使用 TypeScript 重写** — 将 Shell 脚本入口点替换为模块化的 Node.js\u002FTypeScript CLI，提升了可维护性，并在整个代码中添加了完善的类型注解。(#260, #263, #264)\n- **标准化认证凭据** — 提供商凭据现采用一致的 `api_key` \u002F `oauth_token` 模式，统一了系统中密钥的存储与传递方式。(#261)\n\n### 新特性\n- 办公控制平面，支持守护进程重启、频道管理和设备配对界面 (664749f)\n- 标准化提供商凭据，包含 `api_key` 和 `oauth_token` 字段 (5d6d745)\n\n### 改进\n- 将提供商合并至“服务”选项卡，并移除办公 UI 中独立的 `\u002Flogs` 页面 (788a80d)\n- CLI 入口点由 Shell 脚本重写为基于 Node.js 的入口，采用模块化的 TypeScript 模块 (39d0e18, 602f9f9)\n- 在 CLI 中添加类型注解，以修复 TS18046 未知类型错误 (8f9f2b9)\n- 沙盒模式现会将 `IS_SANDBOX=1` 环境变量传递给 Claude 的调用 (bdf703f)\n\n### Bug 修复\n- 修复 Docker 构建问题，并将 Docker 相关说明移至 README 中的可折叠章节 (363e2cf)\n- 修正 Docker 容器以 root 用户身份运行，以便 Codex 可读取 `auth.json` 文件 (9ccd691)\n- 将持久化数据移动至 Docker 中 tinyagi 用户的主目录下 (e78dde3)\n\n### 数据统计\n- **共更改 38 个文件**，新增 2,879 行，删除 2,581 行\n- 共 10 次提交\n\n### 更改日志（自 v0.0.19 以来）\n- 788a80d refactor(office): 将提供商合并至服务选项卡，移除 \u002Flogs 页面 (#268)\n- 664749f feat(office): 添加控制平面，支持守护进程重启、频道管理和配对 (#267)\n- bdf703f fix(core): 向 Claude 调用传递 IS_SANDBOX=1 环境变量\n- 9ccd691 fix(docker): 以 root 用户身份运行，使 Codex 能读取 auth.json 文件 (#266)\n- e78dde3 fix(docker): 将持久化数据移至 tinyagi 用户的主目录下 (#265)\n- 8f9f2b9 fix(cli): 添加类型注解，修复 TS18046 未知类型错误 (#264)\n- 602f9f9 refactor(cli): 将 tinyagi.mjs 提取为模块化的 TypeScript 模块 (#263)\n- 363e2cf fix(docker): 修复 Docker 构建问题，并将 Docker 相关内容移至 README 的可折叠部分 (#262)\n- 39d0e18 refactor(cli): 用 Node.js 入口点替换 Shell 脚本 (#260)\n- 5d6d745 feat(auth): 标准化提供商凭据，使用 api_key 和 oauth_token (#261)","2026-03-26T17:23:07",{"id":154,"version":155,"summary_zh":156,"released_at":157},180591,"v0.0.19","## TinyAGI v0.0.19\n\n### 错误修复\n- 修复了计划消息未能持久化到 `agent_messages` 表的问题，确保计划内容能够正确存储并被检索 (#259)\n- 解决了调用流程中 `signalDone` 宽限期的竞态条件问题，该问题可能导致流程过早完成 (#258)\n- 修复了主动消息无法通过发出 SSE 事件立即送达的问题，从而让通道无需轮询即可及时接收这些消息 (#257)\n\n### 更改日志（自 v0.0.18 以来）\n- 05c722b 修复(计划任务)：将计划消息持久化到 `agent_messages` 表 (#259)\n- afd2730 修复(调用)：解决 `signalDone` 宽限期的竞态条件 (#258)\n- fb29830 修复(通道)：为主动消息发出 SSE 事件，使通道能够立即送达 (#257)","2026-03-24T19:37:21",{"id":159,"version":160,"summary_zh":161,"released_at":162},180592,"v0.0.18","## TinyAGI v0.0.18\n\n### 错误修复\n- 修复了 `handleTeamResponse` 中重复的响应流问题，该问题导致在处理团队消息时出现冗余输出（8dd7f42）\n\n### 更改日志（自 v0.0.17 起）\n- 8dd7f42 修复(团队)：从 handleTeamResponse 中移除重复的响应流","2026-03-24T13:12:34",{"id":164,"version":165,"summary_zh":166,"released_at":167},180593,"v0.0.17","## TinyAGI v0.0.17\n\n### 亮点\n- **技能管理器** — 新增技能管理器技能，允许代理从注册表中搜索并安装技能，从而动态扩展系统功能。（#254）\n- **Telegram 重写（grammY）** — 将 Telegram 频道从 `node-telegram-bot-api` 迁移到 grammY，移除了约 2,400 行遗留代码，并引入了一个现代化、持续维护的机器人框架，内置重试机制、消息限流控制以及更简洁的中间件支持。（#248）\n- **子进程生命周期管理** — 队列工作进程现在能够正确跟踪和管理子进程的生命周期，并提供手动终止会话的 API，用于处理卡住或孤立的代理进程。（#251）\n\n### 新特性\n- 技能管理器技能：支持从注册表中搜索和安装技能（83b9374）\n- 用户消息在接收到后会立即被加入到 `agent_messages` 队列中，提升了系统的响应感知度（94df8c7）\n\n### 改进\n- 代理路由现在在入队时即被确定，而非在处理时才决定，从而避免了路由决策过时的问题（d7fe0c3）\n- 设置和系统提示配置已移至工作空间级别的 `AGENTS.md` 文件，简化了每个代理的相关文档（fb0a449）\n- 在根目录的 `package.json` 中添加了 `bin` 入口，支持直接通过 CLI 调用（9ca9e0d）\n\n### Bug 修复\n- 修复了子进程生命周期跟踪问题：工作进程现在能够妥善管理子进程并进行清理，同时提供了用于终止卡住会话的手动 API（786b7fa）\n- 修复了 Telegram 监控定时器的 bug，该 bug 导致连接断开后轮询无法重启（51e40c7）\n- 修复了代理路由逻辑，使其在入队时就完成解析，避免了在入队与处理之间代理配置发生变化时导致的消息路由错误（d7fe0c3）\n\n### 数据统计\n- **共修改 20 个文件**，新增 687 行，删除 2,516 行\n- 共 9 次提交\n\n### 更改日志（自 v0.0.16 以来）\n- 83b9374 功能（技能）：新增技能管理器技能，用于搜索和安装技能（#254）\n- 94df8c7 功能（队列）：用户消息接收到后立即入队至 `agent_messages`（#250）\n- 786b7fa 修复（队列）：增加子进程生命周期管理和手动会话终止 API（#251）\n- fb0a449 文档（代理）：将设置和系统提示配置移至工作空间级别的 AGENTS.md 文件（#253）\n- 3d20d8f 重构（Telegram）：从 node-telegram-bot-api 迁移到 grammY（#248）\n- d7fe0c3 修复（API）：在入队时即确定代理路由（#247）\n- 51e40c7 修复（Telegram）：修复监控定时器的 bug，该 bug 曾导致轮询无法重启（#246）\n- 4cf62d8 杂项：更新 README\n- 9ca9e0d 杂项：在 package.json 中添加 bin 入口，更新 README 和办公室截图","2026-03-24T03:59:24",{"id":169,"version":170,"summary_zh":171,"released_at":172},180594,"v0.0.16","## TinyAGI v0.0.16\n\n### 亮点\n- **零配置入门** — 完全简化了首次运行体验。现在运行 `tinyagi` 即会自动创建默认设置、初始化代理工作区目录、检查依赖项并启动守护进程——无需设置向导。用户稍后可通过 Web 界面或 `tinyagi channel setup` 添加渠道。（8e5a1b9）\n- **Live Office 工作空间重新设计** — 打造了一个沉浸式的像素风办公室场景，包含动画代理角色、家具布局和休息区。代理会在办公桌前或休息区中显示，并叠加实时活动状态。对话面板现支持 Markdown 渲染，显示头像首字母，并采用与 TinyOffice 其他部分一致的聊天视图样式。（55a30ad）\n- **CLI 适配器模式** — 将特定于提供商的 CLI 逻辑（Claude、Codex、OpenCode）提取到独立的适配器模块中，实现标准化的 `AgentAdapter` 接口。将 `invoke.ts` 从约 400 行缩减至约 190 行，并使新增 CLI 后端变得简单明了。（e60adb4）\n- **SSE 事件系统重新设计** — 将 `chain_*` 事件命名替换为更清晰的语义化事件：`message:incoming`、`agent:invoke`、`agent:progress`、`agent:response`、`agent:mention`、`message:done`。并将办公室页面拆分为可组合的钩子（`use-office-data`、`use-office-sse`、`use-scene-layout`）和模块化组件。（d5e0bb7）\n\n### 新特性\n- 像素风办公室场景，包含 6 个角色精灵、25+ 种家具（办公桌、电脑、沙发、书架、绿植、白板），可配置的地砖和墙面纹理。（55a30ad）\n- 对话面板支持 Markdown 渲染、代理头像首字母显示，以及带有向上箭头\u002F方形按钮布局的 PromptInput 输入框。（55a30ad）\n- 归档面板，用于查看过往的办公室对话记录。（55a30ad）\n- 覆盖在办公室场景上的实时气泡提示，展示代理的即时活动状态。（55a30ad）\n- 新增 `tinyagi channel setup` 命令，用于交互式渠道令牌配置，取代已移除的设置向导。（8e5a1b9）\n- 启动时自动检查依赖项：验证 `tmux` 和 `jq` 是否可用；若未安装 `claude` 或 `codex` CLI，则发出轻量级警告。（8e5a1b9）\n- 在执行 `tinyagi`、`tinyagi start` 和 `tinyagi restart` 时，自动打开办公室 Web 界面。（8e5a1b9）\n- 代理工作区初始化：首次运行时自动创建 `.claude\u002F` 目录、`heartbeat.md` 和 `SOUL.md` 模板文件。（8e5a1b9）\n\n### 改进\n- 默认代理名称由 `default` 统一修改为 `tinyagi`，覆盖所有路由、配置及回退逻辑。（8e5a1b9）\n- 渠道现为可选——即使未配置任何渠道，守护进程也能成功启动。（8e5a1b9）\n- 重写了 SSE 事件文档（`SSE-EVENTS.md`），更新了事件设计、实际触发点及可视化要求。（d5e0bb7）\n- 办公室页面被拆分为可组合的钩子：`use-office-data`（服务器状态同步）、`use-office-sse`（SSE 事件处理）、`use-scene-layout`（场景管理）。（d5e0bb7）\n- 代理团队信息现包括团队 ID、按团队分组的成员，以及团队负责人标识。","2026-03-20T19:59:47",{"id":174,"version":175,"summary_zh":176,"released_at":177},180595,"v0.0.15","## TinyAGI v0.0.15\n\n### 安装\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FTinyAGI\u002Ftinyagi\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n```\n\n### 变更内容\n\n#### 新特性\n- **一行式 `curl` 安装** — 现默认使用 `curl -fsSL ...\u002Finstall.sh | bash` 进行安装\n- **自动从 tinyclaw 迁移** — 在安装和启动时，无缝将 `~\u002F.tinyclaw` 迁移到 `~\u002F.tinyagi`\n\n#### 重构\n- **合并 `packages\u002Ftinyagi` 到 `packages\u002Fcli`** — 简化了包结构，减少了一层间接引用\n- **将 `tinyagi.sh` 移至 `lib\u002Ftinyagi.sh`** — 运行时脚本现与其它库脚本放在一起\n- **重命名 `docs\u002Fimages\u002Ftinyclaw.png` 为 `tinyagi.png`**\n\n#### Bug 修复\n- 修复了重复的 `chmod +x` 和缺少 `tinyclaw` 后向兼容性的符号链接条目\n- 修复了安装脚本中 `TMPDIR` 环境变量被遮蔽的问题\n- 移除了发布工作流中对不存在的 `uninstall.sh` 和 `remote-install.sh` 的引用\n- 修正了卸载说明（原为 `npm uninstall -g`，现改为正确的 `rm` 命令）\n- 在安装后添加了 `npm rebuild better-sqlite3`，以解决 macOS 上的原生模块错误\n- 移除了冗余的 `scripts\u002Fmigrate.sh`（迁移工作现由 `install.sh` 处理）\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002FTinyAGI\u002Ftinyagi\u002Fcompare\u002Fv0.0.14...v0.0.15","2026-03-18T17:58:47",{"id":179,"version":180,"summary_zh":181,"released_at":182},180596,"v0.0.14","## TinyClaw v0.0.14\n\n### 亮点\n- **调度管理系统** — 从系统 crontab 迁移到基于 croner 的进程内调度。新增 REST API、CLI 命令，以及 TinyOffice 中用于管理周期性（cron）和一次性（runAt）代理调度的全屏日历 UI。调度信息会持久化到 `~\u002F.tinyclaw\u002Fschedules.json` 中。（99392f8）\n- **创建时自定义代理系统提示** — 现在可以通过 CLI 或 API 使用自定义系统提示初始化代理。该提示会被写入代理工作区的 `AGENTS.md` 文件中，作为唯一可信来源，从而避免 `settings.json` 中出现过时值。（24988a7）\n- **UI 组件重构** — 对 TinyOffice 的代理和任务页面进行了重大重构，拆分为模块化组件：SystemPromptTab、HeartbeatTab、MemoryTab、SkillsTab、ScheduleTab，以及完整的任务组件库（task-card、task-form、create\u002Fedit-task-modal）。同时新增了共享的 ChatContainer、PromptInput 和 Markdown 渲染基础组件。（8c8059a）\n- **心跳覆盖持久化** — 每个代理的心跳启用状态及间隔设置现在能够正确持久化到 `settings.agents[id].heartbeat` 覆盖配置中，修复了之前 cron 脚本无法读取代理级配置的 bug。（bdc602a）\n\n### 新特性\n- 调度管理：提供针对调度的 CRUD 操作 REST API 端点（99392f8）\n- 调度管理：新增 CLI 命令 `tinyclaw schedule list|create|delete`（99392f8）\n- 调度管理：在代理详情页中添加带日期单元格点击弹出层的全屏日历 UI（99392f8）\n- 代理创建：CLI 和 API 中均支持可选的 `system_prompt` 参数（24988a7）\n- 在 CLI 帮助、守护进程启动\u002F状态以及交互式命令中显示 TINYAGI ASCII 横幅（e461107）\n- 在侧边栏、代理详情页头部和聊天视图中使用稳定哈希算法为每个代理统一头像颜色（8c8059a）\n- 新增 UI 组件：DatePicker、TimePicker、Switch、DropdownMenu、Popover、Tooltip、Separator、Label、CodeBlock、FullscreenCalendar（8c8059a）\n\n### 改进\n- 将侧边栏和元数据重新命名为 TinyOffice，并添加自定义 Logo 图标（bd97ff8）\n- 将 SaveButton 从顶部栏移至各个标签页（系统提示、心跳），以提升用户体验清晰度（8c8059a）\n- 简化 Memory Tab：移除对话历史部分及 manage-memory 技能引用（8c8059a）\n- 应用 `@tailwindcss\u002Ftypography` 插件，用于排版风格的 Markdown 样式化（8c8059a）\n- 更新 Schedule Skill，使其使用 REST API 而非直接操作 crontab（99392f8）\n- `AGENTS.md` 现在成为系统提示的唯一可信来源（24988a7）\n\n### Bug 修复\n- Heartbeat API 的 GET 端点现在会返回来自代理设置中的启用状态和间隔时间（bdc602a）\n- Heartbeat API 的 PUT 端点能够正确持久化代理级别的覆盖配置（bdc602a）\n- 修复闭包 stale 问题：将 `heartbeatEnabled` 添加到 `handleSaveHeartbeat` 的依赖数组中（8c8059a）\n- 移除聊天室视图中每次渲染都会重新创建的无效 `lastIdRef` 普通对象（8c8059a）\n- 使用 `useMemo` 包裹 `cronNextOccurrences` 日历数据计算逻辑，避免每次渲染时进行昂贵的重新计算（8c8059a）\n- R","2026-03-16T22:02:57",{"id":184,"version":185,"summary_zh":186,"released_at":187},180597,"v0.0.13","## TinyClaw v0.0.13\n\n### 亮点\n- 增加了包含技能、系统提示、记忆和心跳选项卡的代理配置 UI。(74c3e91)\n- 重构了代理部署流程，整合了工作空间的创建，并使用符号链接来管理技能。(44ad272)\n- 为代理引入了层次化记忆系统。(aaca334)\n- AGENTS.md 现在会作为内存中的系统提示传递给 CLI。(b66d6d8)\n\n### 改进\n- 更新了 README，将 office.tinyagicompany.com 设置为访问 TinyOffice 的主要 URL。(95ea27b)\n- 加强了发布工作流，以更可靠地提取带注释的标签说明。(2e796fd, edf9fa7, 2752e94)\n\n### 更改记录（自 v0.0.12 以来）\n- 74c3e91 功能(agents): 添加包含技能、提示和心跳的代理配置页面 (#207)\n- 44ad272 重构: 整合代理目录的部署流程，并使用符号链接管理技能 (#211)\n- aaca334 为代理添加层次化记忆系统 (#209)\n- b66d6d8 功能(core): 将 AGENTS.md 作为内存中的系统提示传递给 CLI (#208)\n- 95ea27b 文档: 更新 README，将 office.tinyagicompany.com 设为访问 TinyOffice 的主要入口\n- 2e796fd 杂项(ci): 清理发布说明的调试输出\n- edf9fa7 修复(ci): 调试并重新获取标签对象，用于提取发布说明\n- 2752e94 修复(ci): 使用 git cat-file 可靠地提取标签消息","2026-03-13T23:03:18",{"id":189,"version":190,"summary_zh":191,"released_at":192},180598,"v0.0.12","## TinyClaw v0.0.12\n\n### 功能特性\n\n- **代理消息持久化与事件流** (#202) — 新增 `agent_messages` SQLite 表，用于持久化所有代理聊天记录。新增简化的 `agent_message` SSE 事件，每次代理回复时触发一次，取代了监听完整 `chain_step` 生命周期的必要性。同时新增 REST API 端点：`GET \u002Fapi\u002Fagent-messages` 和 `GET \u002Fapi\u002Fagents\u002F:id\u002Fmessages`。包含代理聊天视图，支持乐观发送和时间戳对齐。\n\n- **交互式设置向导** (#204) — 将 CLI 设置流程迁移至 TinyOffice 的 `\u002Fsetup` 页面，以分步网页向导形式呈现。依次引导用户配置渠道、提供商\u002F模型、工作空间及代理，随后通过 `POST \u002Fapi\u002Fsetup` 写入 `settings.json` 文件并创建相关目录。\n\n- **组织架构图可视化** (#201) — 在 `\u002Foffice` 页面新增“组织架构”选项卡，利用 ReactFlow 以层级布局展示团队和代理。团队作为父节点，其成员代理显示在其下方；团队领导者以皇冠图标突出显示，并配有动画边线。点击节点可直接跳转至聊天视图。\n\n- **聊天室与项目管理** (#199) — 替换侧边栏中的“团队”部分为类似 Slack 风格的聊天室，展示代理消息历史记录。新增“项目”概念，作为更高层次的任务抽象——每个项目配备一个筛选后的看板。任务现支持可选的 `projectId` 字段，用于关联项目。\n\n### 错误修复\n\n- **CLI ESM 转换** (#206) — 将 CLI 包从 CommonJS 转换为 ESM，以解决使用 `@clack\u002Fprompts` v1.x 时出现的 `ERR_REQUIRE_ESM` 错误。更新 tsconfig 配置，采用 Node16 模块解析方式，并启用 `rewriteRelativeImportExtensions`。\n\n- **Telegram 长轮询稳定性** (#200) — 添加 30 秒客户端请求超时机制，用于检测并恢复因笔记本休眠\u002F唤醒或网络变化导致的长轮询连接失效问题。优化守护进程，在无消息 10 分钟后强制重启轮询。修复了网络断开后机器人无法继续接收消息的问题。\n\n- **TinyOffice 构建修复** — 修复设置页面中 `asChild` 属性的构建错误。在执行 `tinyclaw update` 后，自动检测是否需要运行 `npm install` 和 `npm run build`。\n\n- **发布说明提取** — 修复 CI 工作流，使其能够可靠地使用 `git cat-file` 提取带注释标签的消息。\n\n- **TinyOffice 样式调整** — 对 TinyOffice UI 进行了细微的 CSS 和布局修复。","2026-03-12T23:30:14",{"id":194,"version":195,"summary_zh":196,"released_at":197},180599,"v0.0.11","修复：修复来自旧版设置向导 Shell 脚本的导入中断问题\n\n共同作者：克劳德·奥普斯 4.6 \u003Cnoreply@anthropic.com>","2026-03-12T13:21:16",{"id":199,"version":200,"summary_zh":201,"released_at":202},180600,"v0.0.10","fix: remove logs pane, simplify heartbeat home, bump telegram watchdog, localize task types\n\n- Remove dedicated logs pane from tmux session (daemon.sh)\n- Simplify TINYCLAW_HOME detection in heartbeat-cron.sh\n- Increase telegram polling watchdog timeout from 2m to 5m\n- Move Task\u002FTaskStatus types from core to server\u002Froutes\u002Ftasks.ts\n- Update README with tinyclaw office command\n\nCo-Authored-By: Claude Opus 4.6 \u003Cnoreply@anthropic.com>\n","2026-03-11T16:46:22",{"id":204,"version":205,"summary_zh":206,"released_at":207},180601,"v0.0.9","fix: prevent telegram polling restart loop after laptop sleep\n\nThe polling error handler and watchdog had two issues causing infinite\n409 loops after wifi reconnection:\n\n1. stopPolling() was not awaited, so old polling loops survived restarts\n   and competed with new ones, causing cascading 409 conflicts\n2. The watchdog falsely triggered on idle bots (no messages ≠ dead polling),\n   now pings getMe() to verify connectivity before restarting\n3. Added guard flag to prevent multiple concurrent restart attempts\n\nCo-Authored-By: Claude Opus 4.6 \u003Cnoreply@anthropic.com>\n","2026-03-03T15:29:13",{"id":209,"version":210,"summary_zh":211,"released_at":212},180602,"v0.0.8","## TinyClaw v0.0.8\r\n\r\n### feat: add \u002Frestart in-chat command and tinyclaw-admin skill and fix: add polling watchdog and recovery to Telegram client\r\n\r\n- Add \u002Frestart command to Discord, Telegram, and WhatsApp channel clients\r\n  so users can restart TinyClaw from any chat channel\r\n- Register \u002Frestart in Telegram's bot command menu\r\n- Add tinyclaw-admin skill for agents to self-administer TinyClaw\r\n  (manage agents, teams, settings, queue, tasks via REST API)\r\n- Include tc-api.sh helper script wrapping common API operations\r\n- Update README with \u002Frestart in-chat command documentation\\\r\n- Watchdog timer restarts polling after 2 min of inactivity\r\n- Auto-restart polling on fatal errors (EFATAL, 409)\r\n- Track last polling activity timestamp\r\n- Add unhandledRejection\u002FuncaughtException handlers for visibility","2026-03-03T08:09:43",{"id":214,"version":215,"summary_zh":216,"released_at":217},180603,"v0.0.7","chore: bump version to 0.0.7 (#148)\n","2026-02-28T08:51:19",{"id":219,"version":220,"summary_zh":221,"released_at":222},180604,"v0.0.6","feat: added tinyoffice\n","2026-02-23T15:07:56",{"id":224,"version":225,"summary_zh":226,"released_at":227},180605,"v0.0.5","Add `agent provider` command to set per-agent provider and model (#76)\n\nAdds a new `tinyclaw agent provider \u003Cid> [provider] [--model MODEL]`\nsubcommand that allows setting an individual agent's AI provider and\nmodel without going through the interactive `agent add` flow.\n\nhttps:\u002F\u002Fclaude.ai\u002Fcode\u002Fsession_01FkQ7d2jzWfi2zVj3yadDmZ\n\nCo-authored-by: Claude \u003Cnoreply@anthropic.com>\n","2026-02-15T22:15:21",{"id":229,"version":230,"summary_zh":231,"released_at":232},180606,"v0.0.4","## TinyClaw v0.0.4\n\n### Installation\n\n#### Quick Install (Recommended)\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fjlia0\u002Ftinyclaw\u002Fmain\u002Fscripts\u002Fremote-install.sh | bash\n```\n\n#### Manual Install\n\n1. Download `tinyclaw-bundle.tar.gz`\n2. Extract: `tar -xzf tinyclaw-bundle.tar.gz`\n3. Install: `cd tinyclaw && .\u002Fscripts\u002Finstall.sh`\n\n---\n\n### New Features\n\n#### Actor Model Message Passing (#61)\nReplaced the chain\u002Fscatter-gather architecture with an actor model for team conversations. Each `[@teammate: message]` mention becomes a new queue message processed by existing per-agent promise chains. Adds conversation tracking, pending response indicators, comma-separated multi-agent mentions (`[@agent1,agent2: message]`), and automatic file attachment for long responses (>4000 chars).\n\n#### Send User Message Skill (#59)\nNew agent skill that lets agents proactively send messages to paired users via the outgoing queue. Agents can list approved targets from pairing.json and send to specific channel\u002Fsender combinations.\n\n#### Schedule Skill (#69)\nNew cron-based scheduling skill that lets agents create, list, and delete recurring tasks. Uses system crontab to send messages to the incoming queue with agent routing on a schedule.\n\n#### Sender Pairing Allowlist (#43)\nSecurity feature that gates inbound messages behind a sender approval flow. First message from an unknown sender generates a pairing code; messages are blocked until approved via `tinyclaw pairing approve \u003Ccode>`. Includes `pairing pending`, `pairing approved`, `pairing list`, and `pairing unpair` commands.\n\n#### Per-Agent Reset (#75)\nReplaced the global `tinyclaw reset` with `tinyclaw reset \u003Cagent_id> [agent_id2 ...]` for targeted conversation resets. In-chat `\u002Freset` now requires an agent ID.\n\n#### Skill Creator & Browser Automation (#38)\nAdded agent folder structure with `.agent\u002Fskills\u002F`, browser automation skill, and skill creator skill. Agents now get `.claude\u002FCLAUDE.md` and skills symlinked on setup.\n\n### Bug Fixes\n\n- **Auto-configure PATH** (#68): Installer now automatically adds `~\u002F.local\u002Fbin` to PATH in the user's shell profile when `\u002Fusr\u002Flocal\u002Fbin` isn't writable\n- **Queue processor deadlock** (#46): Fixed duplicate file queueing from the 1-second timer re-reading incoming files already in a promise chain; added orphan file recovery on startup\n- **Missing FILES_DIR import**: Added missing import in queue-processor that broke the build\n- **Non-interactive installs**: Auto-accept prompts when stdin is not a terminal (curl | bash)\n- **Suppressed install output**: Prevent overlapping headers during remote install\n- **Update preserves user data**: `update.sh` copies all bundle files generically; `remote-install.sh` preserves settings.json on re-install\n- **Bundle completeness**: Include AGENTS.md, SOUL.md, .agents\u002F, and docs\u002F in update and bundle scripts\n\n### Documentation & Chores\n\n- Added MIT LICENSE and CONTRIBUTING.md\n- Added demo video to README\n- Updated README with centered header, badges, and multi-team collaboration details\n- Replaced `.\u002Ftinyclaw.sh` with `tinyclaw` in all user-facing docs\n- Added MESSAGE-PATTERNS.md documenting actor model message flows\n- Updated AGENTS.md and TEAMS.md for new architecture\n\n### Requirements\n\n- Node.js v14+\n- tmux\n- Claude Code CLI\n- Linux or macOS","2026-02-15T00:45:00",{"id":234,"version":235,"summary_zh":236,"released_at":237},180607,"v0.0.3","## TinyClaw v0.0.3\n\n### Installation\n\n#### Quick Install (Recommended)\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fjlia0\u002Ftinyclaw\u002Fmain\u002Fscripts\u002Fremote-install.sh | bash\n```\n\nThis will automatically download and install TinyClaw with all dependencies.\n\n#### Manual Install\n\n1. Download `tinyclaw-bundle.tar.gz`\n2. Extract: `tar -xzf tinyclaw-bundle.tar.gz`\n3. Install: `cd tinyclaw && .\u002Fscripts\u002Finstall.sh`\n\n### What's Changed\n\nSee commits since last release for detailed changes.\n\n### Requirements\n\n- Node.js v14+\n- tmux\n- Claude Code CLI\n- Linux or macOS\n","2026-02-13T22:11:59",{"id":239,"version":240,"summary_zh":241,"released_at":242},180608,"v0.0.2","## TinyClaw v0.0.2\n\n### Installation\n\n#### Quick Install (Recommended)\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fjlia0\u002Ftinyclaw\u002Fmain\u002Fscripts\u002Fremote-install.sh | bash\n```\n\nThis will automatically download and install TinyClaw with all dependencies.\n\n#### Manual Install\n\n1. Download `tinyclaw-bundle.tar.gz`\n2. Extract: `tar -xzf tinyclaw-bundle.tar.gz`\n3. Install: `cd tinyclaw && .\u002Fscripts\u002Finstall.sh`\n\n### What's Changed\n\nSee commits since last release for detailed changes.\n\n### Requirements\n\n- Node.js v14+\n- tmux\n- Claude Code CLI\n- Linux or macOS\n","2026-02-12T22:25:47",{"id":244,"version":245,"summary_zh":246,"released_at":247},180609,"v0.0.1","## TinyClaw v0.0.1\n\n### Installation\n\n#### Quick Install (Recommended)\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fjlia0\u002Ftinyclaw\u002Fmain\u002Fscripts\u002Fremote-install.sh | bash\n```\n\nThis will automatically download and install TinyClaw with all dependencies.\n\n#### Manual Install\n\n1. Download `tinyclaw-bundle.tar.gz`\n2. Extract: `tar -xzf tinyclaw-bundle.tar.gz`\n3. Install: `cd tinyclaw && .\u002Fscripts\u002Finstall.sh`\n\n### What's Changed\n\nSee commits since last release for detailed changes.\n\n### Requirements\n\n- Node.js v14+\n- tmux\n- Claude Code CLI\n- Linux or macOS\n","2026-02-12T05:40:21"]