中文 · English
“你尽管在多巴胺里逃避,但我永远会在下一个时间戳抓到你。”

Cyberboss 不是另一个平庸的番茄钟,也不是一个只会堆积任务的待办清单。
它是一个把本地 coding runtime 深度接入微信的 Agent Bridge。当前同时支持 Codex 和 Claude Code,但日常使用命令和行为保持一致。它的存在不是为了“提醒你开始”,而是直接化身为那个拥有绝对时间感、盯死进度、在你消失太久时会主动破屏而出的“赛博老板”。
对于 ADHD 或任何需要高强度外部监管的人来说,传统工具最大的 Bug 在于:它们都寄希望于你的“主动性”。但当内在驱动力失灵时,任何需要手动开启的 App 都是摆设。
Cyberboss 的逻辑是管理权的让渡:
绝对时间感 (Omniscient Time) 每一条微信输入在进入 runtime 前,都会被自动打上本地时间戳。模型不再只是处理文本,它在处理“时间流”。它知道你上一秒在信誓旦旦,也知道你接下来的三个小时在人间蒸发。
生活轨迹自动化报表 (The Ledger of Life) 基于已知的消息时间戳,它会像审计员一样持续补全你全天事件的开始、结束和时长,自动将细碎的聊天记录脱水、重构为结构化时间轴,并定期向你输出“处刑报表”。
随机轮询唤醒 (Stochastic Pulse) 系统会在随机频率内主动戳醒模型。它会根据当前上下文自主判断:是该温柔提醒、严厉催促、默默写日记,还是调用工具查看你的状态。这种不可预测的“查岗”感,是杀掉 ADHD 拖延症的良药。
跨时空自我唤醒 (Local Reminder Queue) Reminder 队列不是给用户设的闹钟,而是模型留给未来自己的伏笔。
“约定 10:00 起床,10:05 他若没收到你的消息,将自动调用米家 MCP 强行拉开窗帘并放歌。”
如果你对 Cyberboss 里最感兴趣的是“生活轨迹自动化报表”这一层,那么也可以直接把时间轴能力单独拿出去用:
timeline-for-agent 接进你自己的 agent、bot 或自动化系统里Cyberboss 的时间轴能力本质上也是构建在 timeline-for-agent 之上,只是这里额外把它接进了微信、提醒、日记和随机轮询这整套生活监管链路里。
checkin 就是随机轮询唤醒入口。对于 ADHD 来说,问题从来不是“不懂道理”,而是“意志力断层”。
Cyberboss 假设你是一个完全不可控的个体:你不需要先点开始,不需要先记得回来,甚至不需要先拥有执行意志。你只需要继续活着、继续聊天,剩下的由系统去记录时间、补齐轨迹、主动出现。
>= 22codex 或 claude当前没有发布 npm 包。正确用法是先拉源码,再在仓库目录里安装依赖:
git clone https://github.com/WenXiaoWendy/cyberboss.git
cd cyberboss
npm install
不要把 README 里的命令理解成“全局安装后直接可用”的 npm package 命令。
Cyberboss 会按这个顺序读取环境变量:
.env${HOME}/.cyberboss/.env建议你在第一次运行任何命令前,至少先配置这几项:
CYBERBOSS_USER_NAME=你的名字
CYBERBOSS_USER_GENDER=female
CYBERBOSS_ALLOWED_USER_IDS=你的微信 user id
CYBERBOSS_WORKSPACE_ROOT=/绝对路径/你的项目目录
可选常用项:
CYBERBOSS_RUNTIME=codex
CYBERBOSS_CODEX_ENDPOINT=ws://127.0.0.1:8765
CYBERBOSS_CODEX_COMMAND=
CYBERBOSS_CODEX_MODEL=
CYBERBOSS_CODEX_MODEL_PROVIDER=
CYBERBOSS_CODEX_NATIVE_IMAGE_INPUT=
CYBERBOSS_CLAUDE_COMMAND=claude
CYBERBOSS_CLAUDE_MODEL=
CYBERBOSS_CLAUDE_CONTEXT_WINDOW=
CYBERBOSS_CLAUDE_PERMISSION_MODE=default
CYBERBOSS_CLAUDE_DISABLE_VERBOSE=false
CYBERBOSS_CLAUDE_EXTRA_ARGS=
CLAUDE_CODE_MAX_OUTPUT_TOKENS=
CYBERBOSS_VISION_MODE=auto
CYBERBOSS_VISION_PROVIDER=openai-compatible
CYBERBOSS_VISION_API_BASE_URL=
CYBERBOSS_VISION_API_KEY=
CYBERBOSS_VISION_MODEL=
CYBERBOSS_VISION_TIMEOUT_MS=30000
CYBERBOSS_ACCOUNT_ID=
CYBERBOSS_WEIXIN_MIN_CHUNK_CHARS=20
CYBERBOSS_WEIXIN_BASE_URL=https://ilinkai.weixin.qq.com
CYBERBOSS_WEIXIN_CDN_BASE_URL=https://novac2c.cdn.weixin.qq.com/c2c
CYBERBOSS_WEIXIN_QR_BOT_TYPE=3
CYBERBOSS_ENABLE_LOCATION_SERVER=false
CYBERBOSS_LOCATION_HOST=0.0.0.0
CYBERBOSS_LOCATION_PORT=4318
CYBERBOSS_LOCATION_TOKEN=
CYBERBOSS_LOCATION_HOME_CENTER=
CYBERBOSS_LOCATION_WORK_CENTER=
CYBERBOSS_LOCATION_KNOWN_PLACES=
CYBERBOSS_LOCATION_PLACE_RADIUS_METERS=150
CYBERBOSS_LOCATION_BATTERY_HISTORY_LIMIT=100
这些变量的作用:
CYBERBOSS_RUNTIME
选择 codex 或 claudecode。两种 runtime 使用同一套命令。CYBERBOSS_CODEX_ENDPOINT
复用已有的共享 Codex app-server,而不是新起私有 runtime。CYBERBOSS_CODEX_COMMAND
当 codex 不在 PATH 上时,自定义 Codex 启动命令。CYBERBOSS_CODEX_MODEL
强制 Codex turn 使用指定模型。留空则使用 Codex 默认模型选择。CYBERBOSS_CODEX_MODEL_PROVIDER
强制 Codex turn 使用指定 provider,例如本地模型可填 ollama。留空则使用默认云端 provider。CYBERBOSS_CODEX_NATIVE_IMAGE_INPUT
Codex app-server 直传图片能力的可选覆盖。留空时按 model metadata 判断;设为 true 可直接测试本地多模态模型,设为 false 可强制走 caption fallback。CYBERBOSS_CLAUDE_COMMAND
自定义 Claude 启动命令,默认是 claude。CYBERBOSS_CLAUDE_MODEL
设置 Claude 默认模型。CYBERBOSS_CLAUDE_CONTEXT_WINDOW
设置 Claude 实际上下文窗口,/status 里的 📦 context 近似值会基于它计算。CYBERBOSS_CLAUDE_PERMISSION_MODE
设置 Claude 权限模式。CYBERBOSS_CLAUDE_DISABLE_VERBOSE
关闭 Claude 终端 verbose 输出。CYBERBOSS_CLAUDE_EXTRA_ARGS
以逗号分隔的形式追加 Claude CLI 参数。CLAUDE_CODE_MAX_OUTPUT_TOKENS
为 Claude 回复预留输出 token。/status 会先从 Claude 上下文窗口里减掉这部分预留量。CYBERBOSS_VISION_MODE
设置入站图片处理方式:auto、caption、native 或 off。auto 会在 runtime 支持原生图片输入时直接传图,否则使用 caption。CYBERBOSS_VISION_PROVIDER、CYBERBOSS_VISION_API_BASE_URL、CYBERBOSS_VISION_API_KEY、CYBERBOSS_VISION_MODEL
配置可选的 OpenAI-compatible 识图 caption API,供 DeepSeek 这类文本模型使用。Qwen/DashScope 可从 templates/vision-openai-compatible.env 开始。CYBERBOSS_VISION_TIMEOUT_MS
单张图片 caption 请求超时时间。CYBERBOSS_WEIXIN_MIN_CHUNK_CHARS
设置微信短分片合并阈值默认值。CYBERBOSS_WEIXIN_BASE_URL、CYBERBOSS_WEIXIN_CDN_BASE_URL、CYBERBOSS_WEIXIN_QR_BOT_TYPE
在特殊部署环境下覆盖微信桥接接口地址和二维码 bot 类型。CYBERBOSS_ENABLE_LOCATION_SERVER
是否启动内置 whereabouts HTTP 接收服务。CYBERBOSS_LOCATION_HOST
内置 whereabouts HTTP 服务监听地址,默认 0.0.0.0。CYBERBOSS_LOCATION_PORT
内置 whereabouts HTTP 服务端口,默认 4318。CYBERBOSS_LOCATION_TOKEN
上传定位数据时使用的 Bearer token。CYBERBOSS_LOCATION_HOME_CENTER、CYBERBOSS_LOCATION_WORK_CENTER
家和公司的中心坐标,格式 lat,lng。CYBERBOSS_LOCATION_KNOWN_PLACES
额外地点标签,JSON 数组。CYBERBOSS_LOCATION_PLACE_RADIUS_METERS
地点标签识别半径,默认 150。CYBERBOSS_LOCATION_BATTERY_HISTORY_LIMIT
电量观测保留数量,默认 100。CYBERBOSS_ALLOWED_USER_IDS 支持逗号分隔多个 user id。
原因有两个:
cyberboss 命令时,会自动生成 ~/.cyberboss/weixin-instructions.mdCYBERBOSS_USER_NAME 和 CYBERBOSS_USER_GENDER,生成出来的 instructions 可能不符合真实情况另外,如果你想要更强的“push 感”,建议一开始先不要主动大改 instructions 模板。先让 agent 在真实交流里自己更新行为,再回头只修明显不对的部分。
如果你要跑共享线程,建议也在第一次启动前就把 CYBERBOSS_WORKSPACE_ROOT 配好。这样 shared:open 会优先接到你当前项目对应的那条线程,而不是回退到别的历史绑定。
如果你使用 Ollama 这类本地 Codex provider,推荐用一个很小的 wrapper script,不要直接把 provider flags 塞进 CYBERBOSS_CODEX_COMMAND。把 templates/codex-local-provider.sh 复制到 ${HOME}/.cyberboss/codex-local,给它执行权限,并让 Cyberboss 使用这个 wrapper:
cp ./templates/codex-local-provider.sh "${HOME}/.cyberboss/codex-local"
chmod +x "${HOME}/.cyberboss/codex-local"
CYBERBOSS_CODEX_COMMAND=/绝对路径/.cyberboss/codex-local
CYBERBOSS_CODEX_MODEL_PROVIDER=ollama
CYBERBOSS_CODEX_MODEL=gemma4:26b-32k
这个模板会把云端和本地启动逻辑收敛在同一个 command 里。切回云端 provider 时,清空 CYBERBOSS_CODEX_MODEL_PROVIDER 和 CYBERBOSS_CODEX_MODEL,然后重启共享桥接,让 Codex app-server 用新的 command 环境启动。
本地 Codex 模型还需要 model metadata。如果 CYBERBOSS_CODEX_MODEL 指向的模型不在 Codex 内置 catalog 里,需要在 Codex home 里放一份模型 catalog,并在 ~/.codex/config.toml 里引用:
model_catalog_json = "/绝对路径/.codex/local-models.json"
这份文件应基于你现有的 Codex model catalog 生成,再追加本地模型条目。每个本地模型条目至少要和实际模型 slug 对齐,并写清楚正确的 context_window、max_context_window、input_modalities 和 truncation policy。不要只保留本地模型而删掉云端模型条目。配置后用 codex debug models 验证;本地模型应该能被列出,并且不应再出现 fallback metadata 警告。
当 CYBERBOSS_RUNTIME=claudecode 时,Cyberboss 会在当前工作区自动补写 .mcp.json 里的 cyberboss_tools,并在启动 Claude 时显式挂上这份 MCP 配置。Claude 能发现 Cyberboss project tools,靠的就是这条项目本地配置,而不是全局注册。
npm run login
扫码登录微信,并把 bot 账号保存到本地npm run accounts
查看本地已保存的账号npm run shared:start
默认启动方式。跨平台启动共享 runtime bridge 和共享微信桥接;Windows / macOS / Linux 都优先用这个入口npm run shared:open
默认接管方式。跨平台接入当前微信绑定的那条共享线程npm run shared:status
跨平台查看共享 runtime 进程、共享桥接和 readyz 状态npm run doctor
查看当前配置、channel/runtime 边界和线程状态npm run help
查看可直接执行的命令入口这里的 checkin 指的就是“随机轮询唤醒”能力,不是固定整点提醒。
切换 runtime 只需要改 CYBERBOSS_RUNTIME。不需要为 Claude Code 单独学习另一套命令。
npm run start / npm run start:checkin 可以用于本地最小链路调试,但不适合观察共享桥的真实行为,也不适合作为共享线程问题的默认排查入口。因此 README 只把共享模式作为默认入口。
/bind /绝对路径
绑定当前聊天使用的项目目录/status
查看当前绑定项目、线程、模型和上下文状态/new
切到新线程草稿/reread
让当前线程重新读取最新 instructions,适合刚改完人格模板或操作模板后使用/compact
压缩当前线程上下文。桥会先回一条开始提示,完成后再回一条完成提示。/switch <threadId>
切换到指定线程/stop
停止当前线程里的运行/checkin <min>-<max>
调整当前项目的随机 checkin 区间/chunk <number>
调整微信短回复的最小合并字符数/yes
允许当前待处理授权一次/always
在当前项目内持续允许同类命令/no
拒绝当前待处理授权/model
查看当前模型/model <id>
切换模型/star
在微信里查看 GitHub star 引导/help
查看微信内命令帮助普通文本消息会直接发送到当前绑定线程。如果当前还没绑定项目,先执行:
/bind /绝对路径
如果你想把微信里当前绑定的同一条共享线程同步到本机终端继续看,稳定流程是:
第一个终端:
npm run shared:start
保持这个终端不要退出。第二个终端:
npm run shared:open
辅助诊断:
npm run shared:status如果你想在手机上通过 Termius + tmux 长期查看共享线程,参考:
注意:
npm run shared:start / npm run shared:open 之上CYBERBOSS_RUNTIME=claudecode,本地 Claude 窗口当前更适合作为共享线程的监听窗口node ./bin/cyberboss.js start --checkin,除非已经明确设置 CYBERBOSS_CODEX_ENDPOINT=ws://127.0.0.1:8765spawn 私有 runtime;微信和终端必须连接同一套共享 runtime 会话cyberboss 进程npm run shared:start 放到后台跑;它就是共享桥接主进程.sh 入口;共享启动和接管请统一使用 npm run shared:start / npm run shared:open默认状态目录是:
${HOME}/.cyberboss
常见内容:
accounts/
微信 bot 账号信息sessions.json
工作区、线程、模型和审批状态sync-buffers/
微信长轮询同步缓冲inbox/
保存收到的微信图片和附件stickers/
表情包资产目录,包含:assets/
已入库表情包素材,当前统一规范化为 GIFindex.json
表情包索引,维护 stickerId -> { tags, desc }tags.json
表情包标签表,AI 读取这里,用户也可以手动编辑这里weixin-instructions.md
首次运行自动生成的本地 instructionsreminder-queue.json
reminder 队列system-message-queue.json
system / checkin 队列deferred-system-replies.json
等待下一个可用微信 context token 的补发消息timeline-screenshot-queue.json
截图任务队列diary/
本地日记timeline/
timeline 数据、site、shotslogs/
共享 bridge 和 shared runtime 日志这个目录只是本地状态目录,不是线程工作目录;微信线程和终端线程仍然应该开在你的项目目录里。
仓库本身不包含你的微信账号、context_token、会话文件或其他运行态数据;这些都保存在状态目录里。
whereabouts-mcp,可以直接接收手机上传的定位、电量和触发原因。CYBERBOSS_ENABLE_LOCATION_SERVER=trueCYBERBOSS_LOCATION_TOKEN=<your_token>CYBERBOSS_LOCATION_HOME_CENTER=lat,lngCYBERBOSS_LOCATION_HOSTCYBERBOSS_LOCATION_WORK_CENTERCYBERBOSS_LOCATION_KNOWN_PLACESCYBERBOSS_LOCATION_PLACE_RADIUS_METERSCYBERBOSS_LOCATION_BATTERY_HISTORY_LIMIThttp://0.0.0.0:4318,上传接口是 POST /location/ingest,健康检查是 GET /healthz。~/.cyberboss/locations.json,不是写进项目目录。~/.cyberboss/stickers/tags.json。AI 会从这里读取可用标签,用户也可以直接手动增删改。给 agent 暴露的 Cyberboss 能力是项目内结构化工具。
cyberboss_reminder_createcyberboss_diary_appendcyberboss_timeline_writecyberboss_timeline_buildcyberboss_timeline_servecyberboss_timeline_devcyberboss_timeline_screenshotcyberboss_channel_send_filewhereabouts_current_staywhereabouts_recent_stayswhereabouts_recent_moveswhereabouts_snapshotwhereabouts_summarycyberboss_sticker_tagscyberboss_sticker_pickcyberboss_sticker_sendcyberboss_sticker_deletecyberboss_sticker_save_from_inboxcyberboss_sticker_updatecyberboss_system_sendREADME、--help 和 docs/commands.md 中的生命周期入口npm install cyberboss?因为当前没有发布 npm package。正确方式是 git clone 仓库后,在项目目录里执行 npm install。
checkin 到底是什么?checkin 就是“随机轮询唤醒”能力。系统会在一个随机时间点唤醒模型,让它自己判断现在该不该主动出现。
因为第一次运行任意 cyberboss 命令时,会自动生成 ~/.cyberboss/weixin-instructions.md。先配好 CYBERBOSS_USER_NAME 和 CYBERBOSS_USER_GENDER,可以避免生成明显不符合现实的 instructions。
如果你想要更强的“赛博老板”效果,最好先让 agent 在真实对话里自己长出节奏,再回头修正明显不对的部分。过早手工写死行为,通常会让它更像脚本,不像真的在盯你。
本项目主要面向个人本地部署场景设计。由于它会长期处理微信消息、线程上下文、提醒、生活轨迹和其他高度私密的个
$ claude mcp add cyberboss \
-- python -m otcore.mcp_server <graph>