Skip to content

syncmeta/PendingBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

173 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

大绿豆 应用图标

大绿豆 · PendingBot

主动、自然、不谄媚地校正彼此、探索未知。
Proactively, naturally, without sycophancy — correcting each other, exploring the unknown.

License Bun TypeScript Platform

中文 · English

两大目标

  • 及时复盘、校正彼此 — 免得聊着聊着就被AI带偏、被骗了、不清醒了
  • 探索未知 做信息的 VC — 缓解一下我们局限的视野和信息茧房

不是助手,不是又一个什么 Agent 什么虾——助手类应用大把人做,我才不重复造轮子。

也不是标准的 AI 陪伴——它不是个听话的宝宝。它是给你带来新视角、新发现的朋友。

下面的内容暂时由 Claude 撰写

🚀 核心特性

🧠 主动对话 微信式语气、防抖打断、自我反思(每 N 轮反观一次最近聊天)
🌊 网络冲浪 主动搜索 + 深挖 + 漫游 + curator 筛选,把真正有价值的东西讲给你听
👥 多 Bot 共存 每个 Bot 有自己的性格 / 模型 / 访问权限,可一人一养也可几人共养
🌐 跨端 Web(响应式)+ 原生 iOS(SwiftUI)
🎯 OpenRouter 模型路由 任意模型组合:主对话 / 防抖 / 反思 / 冲浪 / 标题各自独立配置
🛠️ Agent Skills 内置 Anthropic skill-creator 等预设,亦可自写 Markdown 技能
🧩 热重载提示词 apps/api/prompts/ 下任意 .md 改完即生效
🔐 BYOK 用户可填自己的 OpenRouter Key,不吃服务方额度
🪪 Clerk 鉴权(可选) hosted 模式 Sign in with Apple / Google / Email Code;自部署仍走邀请码

📂 仓库结构

PendingBot/                  bun workspaces 单仓
├── apps/
│   ├── api/                 Bun + Hono 后端(核心代码)
│   ├── web/                 React + Vite + TS 前端(重写中,骨架)
│   └── ios/                 SwiftUI 原生 iOS app
                             (品牌官网 pendingname.com 在另一个仓库
                              syncmeta/PendingName-web,不在这里)
├── packages/
│   └── shared-types/        前后端共用类型 / zod schema
├── docs/
│   ├── self-hosting.md      自部署指引
│   └── deploy.md            托管部署指引
└── README.md                你正在看的这份

🚀 自部署 quickstart

零外部账号,本地就能跑:

git clone https://github.com/syncmeta/PendingBot.git
cd PendingBot
bun install                                  # 整仓一次性装好
cp apps/api/.env.example apps/api/.env       # 只需填 OPENROUTER_API_KEY
bun run dev:api                              # 启动后端

打开控制台打印的 http://localhost:3456/i/... 链接 → 创建 admin 账号 → 开始聊。 完整选项见 docs/self-hosting.md

☁️ 托管部署(hosted)

把同一份代码部署到 Fly.io + Cloudflare + Turso/R2 + Clerk 的全套方案见 docs/deploy.md。机器月成本 ~$3,账户体系、附件存储、 DDoS / WAF 全部由托管服务覆盖。bot.pendingname.com 是这套方案的实例。

适配器层让两种模式共用一份代码:env 没设 → 用本地 SQLite + 本地盘 + 邀请码; env 设了 → 切到 Turso(暂定)/ R2 / Clerk。改 env 就能切,不改代码。

⚙️ 配置 Bot

编辑 apps/api/config.yaml

server:
  port: 3456
  host: "0.0.0.0"
  publicURL: "https://bot.pendingname.com"   # hosted 模式填这里

openrouter:
  models:
    chat: "x-ai/grok-4.20"
    humanAnalysis: "anthropic/claude-opus-4.7"
    agentDecision: "z-ai/glm-5.1"
    skim: "deepseek/deepseek-v4-pro"
    vision: "anthropic/claude-opus-4.7"

defaults:
  accessMode: "open"
  review:   { enabled: true,  roundInterval: 8 }
  surfing:  { enabled: true,  autoTrigger: false }
  debounce: { enabled: true }

bots:
  my_bot:
    displayName: "起个名字"
    promptFile: "my_bot.md"
    accessMode: "private"
    creators: ["user_id_1"]
    review:  { roundInterval: 4 }
    surfing: { autoTrigger: true }

完整 schema:apps/api/src/config/schema.ts

🎭 编写性格

apps/api/prompts/bots/ 下创建 .md,写你想让 Bot 成为什么样的存在。 随便写,没固定格式。仓库自带 default.md 作为示例。所有提示词热重载, 不用重启。

apps/api/prompts/
├── system.md              核心规则:微信风格(默认)
├── system-normal.md       核心规则:标准 AI 风格
├── bots/                  Bot 性格
├── review.md              自我反思
├── surfing-*.md           冲浪管线各阶段
├── debate.md              多 Bot 议论
├── portrait/              用户画像
└── title.md               对话标题生成

💬 使用

  • 聊天:打开网页选一个 Bot 开始
  • 冲浪:发 /surf 触发;config 里开 autoTrigger 后自动定期跑
  • token 用量:左下角「使用统计」
  • 配额 / BYOK:「你」→ 设置 → 自带 OpenRouter Key(可选)

📱 接入 iOS

原生 SwiftUI,位于 apps/ios/,覆盖 6 个 tab:消息 / 议论 / 冲浪 / 回顾 / 画像 / 你。生成 Xcode 工程:

brew install xcodegen
cd apps/ios && xcodegen generate
open PendingBot.xcodeproj

第一次打开 Xcode 选 Signing Team。运行后首次启动三选一导入服务:扫码 / 粘贴登录码 / 手动输入。详见 apps/ios/README.md

🛠️ 技能(Skills)

「我」标签页里的「技能」区域,管理 Anthropic 风格的 Agent Skills。 首次打开会播种 6 条预设(默认未启用),全部来自 anthropic/skills(Apache-2.0), 原文存在 apps/api/prompts/skills/anthropic/

🧱 技术栈

Bun Hono SQLite TypeScript React Swift

  • 后端:Bun + Hono + SQLite + OpenRouter + WebSocket
  • Web:React + Vite + Tailwind + shadcn/ui + TanStack Query
  • iOS:Swift + SwiftUI + XcodeGen
  • 托管侧:Fly.io(API) + Cloudflare(DNS/WAF/Pages/R2) + Clerk(Auth)

🙏 致谢

🤝 贡献

欢迎 Issue 和 PR。提交前简单聊一下想法会更顺利,尤其是提示词 / 冲浪管线 / 跨端协议这类核心改动。

📄 License

MIT。第三方组件遵循各自原协议(见上)。


Made with 💚 for people who want a friend that pushes back, not a tool that nods along.

About

Proactive, natural, non-sycophantic AIs that help you reflect on yourself and explore the unknown

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors