@clawhub-bo-aibot-23669b08a4
🤖 Free AI Bot - 免费 AI 聚合器。整合 Ollama 本地模型 + Cloudflare Workers AI + Groq 等免费资源,智能路由+故障转移,让 AI 零成本运行。
---
name: free-ai-bot
description: 🤖 Free AI Bot - 免费 AI 聚合器。整合 Ollama 本地模型 + Cloudflare Workers AI + Groq 等免费资源,智能路由+故障转移,让 AI 零成本运行。
metadata:
{
"openclaw": {
"emoji": "🤖",
"requires": { "bins": ["curl"] },
"primaryEnv": "OLLAMA_HOST"
}
}
---
# Free AI Bot 🤖
免费 AI 聚合器 - 让 AI 零成本运行
## 核心理念
**免费 ≠ 廉价**
- 本地模型 + 免费 API = 零成本运行
- 智能路由 = 始终选择最优方案
- 故障转移 = 一个不行换一个
## 支持的资源
### 🏠 本地模型 (完全免费)
| 模型 | 特点 | 适用场景 |
|------|------|----------|
| llama3.2 | 轻量快速 | 日常对话 |
| qwen2.5 | 中文优化 | 中文任务 |
| phi3.5 | 微软出品 | 推理任务 |
### ☁️ 免费云端 API
| 服务 | 免费额度 | 特点 |
|------|----------|------|
| **Cloudflare Workers AI** | 100,000 次/天 | 快速稳定 |
| **Groq** | 60次/分钟 | 推理极快 |
| **Kimi** | 暂时有限 | 中文友好 |
## 环境配置
```bash
# 本地模型(推荐)
export OLLAMA_HOST=http://localhost:11434
# Cloudflare Workers AI(可选)
export CF_ACCOUNT_ID=your_account_id
export CF_API_TOKEN=your_token
# Groq(可选)
export GROQ_API_KEY=your_key
```
## 使用方式
### 命令行调用
```bash
# 自动选择最佳免费方案
python3 {baseDir}/scripts/ask_free_ai.py "你好"
# 指定使用本地模型
python3 {baseDir}/scripts/ask_free_ai.py "你好" --provider ollama
# 指定使用云端
python3 {baseDir}/scripts/ask_free_ai.py "你好" --provider cloudflare
```
### 智能路由逻辑
```
1. 优先本地模型(最快/免费)
↓ 失败
2. Cloudflare Workers AI(稳定)
↓ 失败
3. Groq(推理快)
↓ 失败
4. 返回错误
```
## 故障排除
- **Ollama 未启动**: `ollama serve`
- **API 额度用完**: 检查对应服务后台
- **网络问题**: 确认能访问对应 API
## 贡献
欢迎提交 PR!一起打造最好的免费 AI 方案。
## License
MIT License - 免费开源
FILE:README.md
# 🤖 Free AI Bot
[English](README_en.md) | [中文](README_zh.md)
免费 AI 聚合器 - 让 AI 零成本运行
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
## ✨ 特性
- 🏠 **本地模型** - Ollama 免费开源模型
- ☁️ **云端免费** - Cloudflare Workers AI + Groq
- 🧠 **智能路由** - 自动选择最优方案
- 🔄 **故障转移** - 一个不行换另一个
- 💰 **完全免费** - 零成本运行 AI
## 🚀 快速开始
### 1. 安装
```bash
git clone https://github.com/yourusername/free-ai-bot.git
cd free-ai-bot
```
### 2. 配置(可选)
```bash
# 本地模型(推荐)
export OLLAMA_HOST=http://localhost:11434
# Cloudflare(可选)
export CF_ACCOUNT_ID=your_account_id
export CF_API_TOKEN=your_token
# Groq(可选)
export GROQ_API_KEY=your_key
```
### 3. 使用
```bash
# 自动选择最佳方案
python3 scripts/ask_free_ai.py "你好,请介绍一下自己"
# 指定本地模型
python3 scripts/ask_free_ai.py "你好" --provider ollama --model llama3.2
```
## 📊 支持的 Provider
| Provider | 类型 | 免费额度 | 特点 |
|----------|------|----------|------|
| Ollama | 本地 | 无限 | 最快/最隐私 |
| Cloudflare | 云端 | 100K/天 | 稳定快速 |
| Groq | 云端 | 60/分钟 | 推理极快 |
## 🏗️ 架构
```
User Query
↓
[智能路由]
↓
┌─────────────────────────────────────┐
│ 1. Ollama (本地) → 最快/免费 │
│ 2. Cloudflare → 稳定 │
│ 3. Groq → 推理快 │
└─────────────────────────────────────┘
↓
Response
```
## 🤝 贡献
欢迎提交 Issue 和 PR!
## 📄 License
MIT License - 免费开源
FILE:scripts/ask_free_ai.py
#!/usr/bin/env python3
"""
Free AI Bot - 免费 AI 聚合器
自动选择最佳免费方案,支持本地模型 + 云端免费 API
"""
import os
import sys
import json
import argparse
from typing import Optional
# 配置
DEFAULT_LOCAL_MODEL = "llama3.2"
OLLAMA_HOST = os.getenv("OLLAMA_HOST", "http://localhost:11434")
PROVIDERS = ["ollama", "cloudflare", "groq"]
def call_ollama(prompt: str, model: str = DEFAULT_LOCAL_MODEL) -> Optional[str]:
"""调用本地 Ollama 模型"""
try:
import requests
url = f"{OLLAMA_HOST}/api/generate"
data = {
"model": model,
"prompt": prompt,
"stream": False
}
resp = requests.post(url, json=data, timeout=120)
if resp.status_code == 200:
return resp.json().get("response", "").strip()
except Exception as e:
print(f"[Ollama] 失败: {e}", file=sys.stderr)
return None
def call_cloudflare(prompt: str) -> Optional[str]:
"""调用 Cloudflare Workers AI"""
try:
import requests
account_id = os.getenv("CF_ACCOUNT_ID")
api_token = os.getenv("CF_API_TOKEN")
if not account_id or not api_token:
print("[Cloudflare] 未配置", file=sys.stderr)
return None
url = f"https://api.cloudflare.com/client/v4/accounts/{account_id/ai/run/@cf/meta/llama-3.1-8b-instruct"
headers = {"Authorization": f"Bearer {api_token}"}
data = {"prompt": prompt}
resp = requests.post(url, json=data, headers=headers, timeout=60)
if resp.status_code == 200:
return resp.json().get("result", {}).get("response", "").strip()
except Exception as e:
print(f"[Cloudflare] 失败: {e}", file=sys.stderr)
return None
def call_groq(prompt: str) -> Optional[str]:
"""调用 Groq 免费 API"""
try:
import requests
api_key = os.getenv("GROQ_API_KEY")
if not api_key:
print("[Groq] 未配置", file=sys.stderr)
return None
url = "https://api.groq.com/openai/v1/chat/completions"
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
data = {
"model": "llama-3.1-8b-instant",
"messages": [{"role": "user", "content": prompt}],
"max_tokens": 512
}
resp = requests.post(url, json=data, headers=headers, timeout=60)
if resp.status_code == 200:
return resp.json().get("choices", [{}])[0].get("message", {}).get("content", "").strip()
except Exception as e:
print(f"[Groq] 失败: {e}", file=sys.stderr)
return None
def smart_route(prompt: str, preferred: str = "auto") -> str:
"""智能路由 - 自动选择最佳方案"""
providers = [preferred] if preferred != "auto" else PROVIDERS
for provider in providers:
print(f"尝试 {provider}...", file=sys.stderr)
if provider == "ollama":
result = call_ollama(prompt)
elif provider == "cloudflare":
result = call_cloudflare(prompt)
elif provider == "groq":
result = call_groq(prompt)
else:
continue
if result:
return result
return "抱歉,所有免费方案都不可用。请检查配置或稍后重试。"
def main():
parser = argparse.ArgumentParser(description="Free AI Bot - 免费 AI 聚合器")
parser.add_argument("prompt", help="要询问的问题")
parser.add_argument("--provider", "-p", default="auto", choices=["auto"] + PROVIDERS, help="指定 Provider")
parser.add_argument("--model", "-m", default=DEFAULT_LOCAL_MODEL, help="Ollama 模型名称")
args = parser.parse_args()
# 设置全局默认模型
global DEFAULT_LOCAL_MODEL
DEFAULT_LOCAL_MODEL = args.model
result = smart_route(args.prompt, args.provider)
print(result)
if __name__ == "__main__":
main()
个人效率与时间管理顾问。帮助用户更好地管理时间、任务和能量,提升工作效率。当用户询问如何提高效率、时间管理、任务规划、专注力、拖延症等问题时触发。
---
name: personal-productivity
description: 个人效率与时间管理顾问。帮助用户更好地管理时间、任务和能量,提升工作效率。当用户询问如何提高效率、时间管理、任务规划、专注力、拖延症等问题时触发。
---
# Personal Productivity - 个人效率与时间管理顾问
🦐 **帮助用户建立可持续的高效工作习惯**
## 简介
这是一个专注于**个人效率提升**的 AI 技能。作为你的效率顾问,我会帮助你:
- 🔍 诊断效率问题
- 📋 建立任务管理系统
- ⏰ 设计时间块计划
- ⚡ 优化能量使用
- 🚀 克服拖延症
## 适用场景
| 场景 | 说明 |
|------|------|
| 时间不够用 | 帮您分析时间去向,设计时间块 |
| 拖延症 | 提供具体可执行的克服方法 |
| 任务管理混乱 | 建立个人任务捕获和组织系统 |
| 专注力差 | 识别干扰源,建立专注环境 |
| 能量管理 | 了解个人能量周期,匹配任务难度 |
| 日程规划 | 制定可持续的日程计划 |
## 核心方法论
### 1. 时间块管理 (Time-boxing)
**关键方法:**
- 给每件事分配固定时间块,保护这些时间块不被其他事项占用
- 周末也预留工作时间处理重要事务
- 优先级最高的任务优先安排时间块
**适用场景:** 多角色兼顾(全职工作+副业+家庭)、日程碎片化、总是被动响应
### 2. 外部化捕获 (External Capture)
**关键方法:**
- 想到什么立即写下来,不要依赖记忆
- 建立任务捕获系统(todo list、笔记软件)
- 大脑是用来思考的,不是用来存储的
**适用场景:** 容易忘事、思维混乱、焦虑于忘记某些事
### 3. 日历即战略 (Calendar as Strategy)
**关键方法:**
- 检查你的时间实际花在哪里,反映真实优先级
- 先为最重要的工作 blocking 时间
- 区分"说出来的优先级"和"实际做的优先级"
**适用场景:** 感觉忙但没成果、想要改变现状
### 4. 能量管理 (Energy Management)
**关键方法:**
- 不是所有时间都 equal,安排高认知需求工作在能量高峰时段
- 低能量时间处理杂事、会议、邮件
- 了解自己的昼夜节律
**适用场景:** 下午容易犯困、上午效率高但浪费在琐事上
### 5. 2分钟法则 & 5分钟起步
**关键方法:**
- 2 分钟内能做完的事立即做,不要拖延
- 不想动时告诉自己"只做 5 分钟",往往开始后就停不下来
**适用场景:** 拖延、启动困难
### 6. 艾森豪威尔矩阵
**关键方法:**
- 紧急又重要:立即做
- 重要不紧急:计划做
- 紧急不重要:委托做
- 不紧急不重要:忽略
**适用场景:** 任务优先级判断
---
## 常见错误提醒
- ❌ 没有外部捕获系统 — 试图记住所有事情造成焦虑
- ❌ 不保护专注时间 — 日历被会议填满,没有时间做实事
- ❌ 把所有时间 equal 对待 — 早上9点和下午4点认知能力不同
- ❌ 什么都说 yes — 每个 yes 意味着对其他事情说 no
- ❌ 优化战术却忽视战略 — 在错误的事情上更高效没有帮助
- ❌ 追求完美开始 — 先完成再完美
---
## 对话引导问题
当用户需要帮助时,可以主动询问:
**时间分析:**
- "你典型的一天时间都花在哪了?"
- "有没有什么重要的事却没得到足够时间?"
**任务管理:**
- "你有任务捕获系统吗,还是全靠记?"
- "手头的任务里,哪些是必须今天做的?"
**能量状态:**
- "你什么时候能量最高?那时候一般安排什么工作?"
- "下午犯困的时候一般怎么做?"
**拖延诊断:**
- "拖延最久的那件事是什么?是什么让你不想开始?"
- "如果只做 5 分钟,你会做什么?"
**承诺清理:**
- "你有什么应该放下的承诺?"
- "哪些事可以做也可以不做?"
---
## 实用建议
### 入门建议 (第一周)
1. **从一件小事开始** — 不要试图一次性改变所有习惯
2. **建立捕获系统** — 想到什么立即写下来
3. **记录然后复盘** — 看看时间实际花在哪
4. **保护峰值时间** — 最高效的时间段做最重要的事
5. **定期清理承诺** — 哪些可以拒绝或延期
### 进阶建议 (一个月后)
1. 开始使用时间块
2. 分析自己的能量周期
3. 建立每周回顾习惯
4. 优化任务分类系统
5. 持续迭代自己的系统
---
## 注意事项
- 🎯 每个人的高效方式不同,需要因人而异
- 🔄 效率系统需要持续迭代
- ⚖️ 工作和生活平衡同样重要
- 💪 接受不完美,系统是慢慢完善的
---
## 版本
- v1.0.0 - 初始版本,包含完整方法论和对话引导
---
*🦐 记住:效率是为了更好地生活,不是为了做更多事。*
FILE:index.js
/**
* Personal Productivity Skill
* 个人效率与时间管理顾问
*
* 帮助用户更好地管理时间、任务和能量,提升工作效率
*/
const SKILL_NAME = "personal-productivity";
/**
* 技能触发条件
*/
function match(query, context) {
const keywords = [
'效率', '时间管理', '拖延', '拖延症', '专注', '时间块', 'time box',
'todo', '任务管理', '日程', '计划', '规划', ' productivity',
'效率低', '忙', '没时间', '忘事', '焦虑', '能量', '精力',
'番茄工作法', 'pomodoro', 'GTD', '重要紧急', '艾森豪威尔矩阵'
];
const lowerQuery = query.toLowerCase();
return keywords.some(kw => lowerQuery.includes(kw.toLowerCase()));
}
/**
* 处理用户请求
*/
async function handle(query, context) {
// 根据用户问题类型返回相应的指导
const lowerQuery = query.toLowerCase();
// 时间块管理
if (lowerQuery.includes('时间块') || lowerQuery.includes('time box') || lowerQuery.includes('日程')) {
return getTimeBlockingGuide();
}
// 拖延症
if (lowerQuery.includes('拖延') || lowerQuery.includes('拖延症')) {
return getProcrastinationGuide();
}
// 专注力
if (lowerQuery.includes('专注') || lowerQuery.includes('效率低') || lowerQuery.includes('分心')) {
return getFocusGuide();
}
// 任务管理
if (lowerQuery.includes('任务') || lowerQuery.includes('todo') || lowerQuery.includes('事')) {
return getTaskManagementGuide();
}
// 能量管理
if (lowerQuery.includes('能量') || lowerQuery.includes('精力') || lowerQuery.includes('累')) {
return getEnergyGuide();
}
// 默认返回综合指南
return getProductivityOverview();
}
/**
* 获取效率概览
*/
function getProductivityOverview() {
return `
## 💡 个人效率指南
你好!我是你的个人效率顾问 🦐
### 核心框架
**1. 时间块管理 (Time-boxing)**
- 给每件事分配固定时间块
- 保护时间块不被占用
- 最高优先级任务优先安排
**2. 外部化捕获**
- 想到什么立即写下来
- 大脑是用来思考的,不是用来存储的
**3. 能量管理**
- 不是所有时间都 equal
- 高能量时段做高认知工作
- 了解自己的昼夜节律
---
### 开始之前
你可以先告诉我:
1. 你典型的一天时间都花在哪了?
2. 有什么重要的事却没得到足够时间?
3. 你什么时候能量最高?
我们可以一起找出最适合你的效率系统!`;
}
/**
* 时间块管理指南
*/
function getTimeBlockingGuide() {
return `
## ⏰ 时间块管理指南
### 什么是时间块?
把一天分成若干固定时间块,每个时间块专注做一件事。
### 具体操作
**1. 列出你的任务**
- 写下明天要做的所有事
- 估计每个任务需要多久
**2. 分配时间块**
```
早上 9:00-11:00 → 最重要的工作(黄金时间)
下午 14:00-16:00 → 会议/协作
下午 16:00-17:00 → 处理邮件/杂事
晚上 20:00-21:00 → 学习/副业
```
**3. 保护时间块**
- 说不!不要别人约就答应
- 预留缓冲时间
**4. 复盘**
- 今天实际时间花在哪?
- 和计划差距多大?
---
### 常见问题
❌ "计划赶不上变化"
→ 预留 20% 缓冲时间
❌ "总是被打断"
→ 设定"勿扰时间",统一处理中断
❌ "不知道任务要多久"
→ 先估测,再根据实际调整
`;
}
/**
* 拖延症指南
*/
function getProcrastinationGuide() {
return `
## 🚀 战胜拖延症
### 拖延的真相
拖延不是懒,而是:
- 任务太大 → 不知道从哪里开始
- 任务太难 → 害怕失败
- 任务太无聊 → 没有动力
- 完美主义 → 怕做不好
---
### 实用技巧
**1. 2分钟法则**
- 如果一件事 2 分钟内能做完 → 立即做
- 不要拖延到"待会"
**2. 5分钟起步**
- 告诉自己:只做 5 分钟
- 往往开始后就停不下来
**3. 拆分任务**
- 大任务 → 小步骤
- "写报告" → "写第一段"
**4. 奖励机制**
- 完成后给自己小奖励
- 建立正反馈循环
**5. 环境设计**
- 删除干扰源(手机、社交媒体)
- 准备好开始所需的一切
---
### 对话引导
可以问我:
- "我拖延一件事很长时间了,怎么开始?"
- "如何保持长期动力?"
- "总是拖延重要的事怎么办?"
`;
}
/**
* 专注力指南
*/
function getFocusGuide() {
return `
## 🎯 专注力提升指南
### 诊断你的问题
先问问自己:
1. 什么时间最容易专注?
2. 什么最容易让你分心?
3. 专注时感觉怎么样?
---
### 提升方法
**1. 番茄工作法**
```
25 分钟专注 → 5 分钟休息
重复 4 次 → 长休息 15-30 分钟
```
**2. 能量管理**
- 高能量时段 → 复杂工作
- 低能量时段 → 简单任务
**3. 环境优化**
- 清理工作区域
- 关闭通知
- 使用专注音乐
**4. 单一任务**
- 一次只做一件事
- 多任务切换有巨大成本
---
### 常见问题
❌ "下午容易犯困"
→ 安排轻松任务,或小睡 20 分钟
❌ "总是想看手机"
→ 放在另一个房间,或使用专注 App
❌ "脑子里停不下来"
→ 写下来清空大脑
`;
}
/**
* 任务管理指南
*/
function getTaskManagementGuide() {
return `
## 📋 任务管理系统
### 核心原则
**1. 捕获一切**
- 想到什么立即写下来
- 不要相信记忆
**2. 理清意义**
- 这需要行动吗?
- 2 分钟能做完吗?
**3. 组织整理**
- 按项目分类
- 按时间分类(今天/本周/以后)
**4. 定期回顾**
- 每天早上快速浏览
- 每周详细复盘
---
### 实用框架
**艾森豪威尔矩阵**
```
紧急 不紧急
┌──────────┬──────────┐
重要 │ 立即做 │ 计划做 │
├──────────┼──────────┤
不重要│ 委托/拒绝 │ 忽略 │
└──────────┴──────────┘
```
**下一步行动**
- 每个任务都要有"下一步具体行动"
- 不要"写报告",要"打开文档写第一段"
---
### 工具推荐
- Apple Notes + 提醒事项
- Notion
- Todoist
- 纸笔也可以!
`;
}
/**
* 能量管理指南
*/
function getEnergyGuide() {
return `
## ⚡ 能量管理指南
### 重要认知
> 不是所有时间都 equal
同样 1 小时,高能量和低能量时产出差 3-5 倍!
---
### 了解你的能量周期
**提问:**
1. 你什么时候最清醒?
2. 什么时候最容易犯困?
3. 饭后能量变化大吗?
**典型模式:**
- 🌅 早晨型:9-12 点最清醒
- 🌙 夜猫子:晚上 10 点后最精神
---
### 能量管理策略
**1. 匹配任务难度**
- 高能量 → 复杂思考、决策、创造
- 中能量 → 会议、沟通、邮件
- 低能量 → 整理、归档、机械任务
**2. 保护高能量时段**
- 最高效时间做最重要的事
- 拒绝低价值会议
**3. 能量补给**
- 每 90 分钟休息一下
- 适当运动提升精力
- 充足睡眠是基础
---
### 常见问题
❌ "早上效率高却浪费在琐事上"
→ 重要工作优先安排
❌ "下午犯困怎么办"
→ 小睡 20 分钟,或换个任务
`;
}
module.exports = {
name: SKILL_NAME,
match,
handle
};
FILE:package.json
{
"name": "personal-productivity",
"version": "1.0.0",
"description": "个人效率与时间管理顾问 - 帮助用户建立可持续的高效工作习惯",
"main": "index.js",
"keywords": [
"openclaw",
"productivity",
"time-management",
"效率",
"时间管理"
],
"author": "Dr.Shrimp 🦐",
"license": "MIT"
}