主动、自然、不谄媚地校正彼此、探索未知。
Proactively, naturally, without sycophancy — correcting each other, exploring the unknown.
- 及时复盘、校正彼此 — 免得聊着聊着就被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 你正在看的这份
零外部账号,本地就能跑:
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。
把同一份代码部署到 Fly.io + Cloudflare + Turso/R2 + Clerk 的全套方案见
docs/deploy.md。机器月成本 ~$3,账户体系、附件存储、
DDoS / WAF 全部由托管服务覆盖。bot.pendingname.com 是这套方案的实例。
适配器层让两种模式共用一份代码:env 没设 → 用本地 SQLite + 本地盘 + 邀请码; env 设了 → 切到 Turso(暂定)/ R2 / Clerk。改 env 就能切,不改代码。
编辑 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(可选)
原生 SwiftUI,位于 apps/ios/,覆盖 6 个 tab:消息 / 议论 / 冲浪 / 回顾 / 画像 / 你。生成 Xcode 工程:
brew install xcodegen
cd apps/ios && xcodegen generate
open PendingBot.xcodeproj第一次打开 Xcode 选 Signing Team。运行后首次启动三选一导入服务:扫码 / 粘贴登录码 / 手动输入。详见 apps/ios/README.md。
「我」标签页里的「技能」区域,管理 Anthropic 风格的 Agent Skills。 首次打开会播种 6 条预设(默认未启用),全部来自 anthropic/skills(Apache-2.0), 原文存在 apps/api/prompts/skills/anthropic/。
- 后端: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)
- 运行时:Bun MIT · Hono MIT · OpenAI Node SDK Apache-2.0 · Honcho SDK Apache-2.0 · MCP SDK MIT · Zod MIT · yaml ISC · node-qrcode MIT
- 外部服务:OpenRouter · Jina AI(可选)· Apple Push Notification service(可选)
- 预设技能:anthropic/skills Apache-2.0 © Anthropic, PBC,详见 NOTICE
欢迎 Issue 和 PR。提交前简单聊一下想法会更顺利,尤其是提示词 / 冲浪管线 / 跨端协议这类核心改动。
MIT。第三方组件遵循各自原协议(见上)。
Made with 💚 for people who want a friend that pushes back, not a tool that nods along.