Chat On Steroids(CoS)安装与安全加固

2026-09-20 部署于 dlc(CachyOS,KDE Wayland)。把 ChatGPT(网页/桌面)通过 MCP 变成本地 Agent:读文件、跑终端、操作 Chrome。第三方独立项目,与 OpenAI 无官方关系。 仓库:https://github.com/totec448-spec/chat-on-steroids (MIT,3.3k stars,Electron)

一、它是什么 / 风险

  • Electron 桌面 App + Chrome companion 扩展 + MCP(loopback + 密钥路径),经隧道暴露给 ChatGPT。
  • 账号风险:扩展会自动化 ChatGPT 网页 UI 并本地录制对话,踩 OpenAI「禁止自动化/程序化提取」灰区,官方 README 自己警告可能被 policy warning / 限制 / 封号。最新版 release 标题甚至写 “Death to Anthropic and OpenAI”。用小号或可承受风险的账号,别用重要主号蛮干。
  • 本机风险:exec_command 不受授权目录约束,以登录用户普通权限跑任意 shell;Desktop 连接器可全局看屏/控键鼠/操作 Chrome。
  • Linux 新装默认:Core 全部能力开、只读关、扩展浏览器控制开;二进制无发布者签名(须核 SHA256)。
  • 会话录制默认开、本地明文(safeStorage 只加密凭据,不加密 session)。

二、安装位置(本机现状)

  • AppImage:~/Applications/Chat-On-Steroids-Linux-x64.AppImage(v2.1.14,161MB,免 root,删除 AppImage 仅移除主程序)
  • 校验文件:~/Applications/SHA256SUMS.txt(x64 AppImage sha256 = eafa5803…f790e)
  • 配置:~/.config/chat-on-steroids/(config.json、app.log、sessions/、state/、extension/)
  • 专用授权目录:~/cos-workspace/
  • 启动器:~/.local/share/applications/com.chatonsteroids.app.desktop + ~/桌面/chat-on-steroids.desktop
  • 图标:~/.local/share/icons/hicolor/1024x1024/apps/chat-on-steroids.png
  • AppImage 自带:resources/tunnel/cloudflared(2026.8.2)+ tunnel-client(0.0.14),无需另装 cloudflared。
  • companion 扩展用 App 投放目录:~/.config/chat-on-steroids/extension/(17 个文件,manifest v3,权限 storage/scripting/alarms/debugger/tabs + 全部 URL + loopback 8765-8769)。加载这个,不要用 /tmp 解压目录(/tmp/.mount 路径每次变)。
  • 凭据存储:KDE kwalletd 已提供 org.freedesktop.secrets,不用装 gnome-keyring(装了反而两个密钥服务抢接口)。
  • AppImage 沙箱正常:本机 kernel.unprivileged_userns_clone=1、FUSE 齐全,无需 --no-sandbox。

三、隧道方式:选 Cloudflare quick tunnel(本机采用)

  • 在 CoS「设置→连接设置」选 Cloudflare quick tunnel;本机网络直连即可建(QUIC 注册成功,UDP/TCP/API 全 PASS,不用代理、不用给 OpenAI 充值)。
  • 点连接后 CoS 显示一条 https://xxxx.trycloudflare.com/<密钥路径>,整条含路径都要复制,视同密码;App/隧道一重启地址就变。
  • ChatGPT 网页:Settings→Apps→Advanced→Developer mode→新建自定义连接器,连接方式必须切到 「服务器 URL」 粘贴该地址,身份验证选「无」。
  • ❌ 不要选「隧道」模式:那是 OpenAI 官方 Secure Tunnel,要去 platform.openai.com 建 tunnel + 受限 API Key ;当时本机曾报 “Something went wrong”,是否由账户 credits 导致未核实。

四、关键坑(都踩过)

  1. “Allow all actions / 允许所有操作” 会把本地权限一键全开:装扩展/连接器时按提示选了 Allow all,CoS 的 readOnly 被改回 false,command/create/edit/delete/screen/control 全 true,roots 还被加了目录,sessions.record=true。连接成功后 ChatGPT 立刻执行了自检 bash(hostname;uname -a;pwd;whoami,记录在 sessions/2026-09-20-4d87b6f1/events.jsonl)。 → 用完若要最小权限,必须退出 App 后改 config.json 再启动(运行中改文件会被内存态回写覆盖,和 KDE plasma 一个道理)。
  2. 运行中界面操作会覆盖手工改的 config.json:曾把 tunnel.kind=cloudflared 冲回 openai 导致报 Enter a tunnel ID that looks like tunnel_…。改配置一律先杀进程。
  3. trycloudflare 公网 URL 只显示在 CoS 界面,不落盘:app.log 只写 quick tunnel connected,cloudflared metrics(${LOCALIP}:20241/metrics)只有计数没有 hostname,stdout 走管道交给 App。换地址只能去界面复制。
  4. quick tunnel 每次 App 重启端口/URL 都变(如 37887→39279),ChatGPT 那边的连接器 URL 要同步更新。
  5. QQ/邮件无关。卸载见下。

五、当前安全加固(最小只读,已生效)

~/.config/chat-on-steroids/config.json:

# 权限意图示意,含伪语法,不是完整 JSON 配置
"readOnly": true,
"roots": [{"name":"cos-workspace","path":"${HOME}/cos-workspace"}],
"capabilities": {browse/search/read/metadata=true;
  create/edit/move/deleteFile/command/screen/control/clipboardRead/clipboardWrite=false},
"tunnel": {"kind":"cloudflared"},
"sessions": {"record": false},
"ui": {"autoContinue": false},
"multiAgent": {"enabled": false}

config 备份:同目录 config.json.bak-*(含一个 .bak-fullopen-* 是全开态)。 注意:只读模式下 ChatGPT 只能读 ~/cos-workspace,写/命令/屏幕都被本地拒绝(扩展侧即使 Allow all 也调不动)。要让 ChatGPT 真干活时,在界面临时放开对应能力,用完再收回。

六、启动 / 日常

  • 启动:桌面「Chat On Steroids」或命令行(需图形环境前缀): env DISPLAY=:0 WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/user/1000 ~/Applications/Chat-On-Steroids-Linux-x64.AppImage
  • 每次开机:CoS 里点连接重建隧道 → 复制新 URL → 更新 ChatGPT 连接器;Chrome 扩展一般自动重连(bridge: browser extension 2.1.14 connected)。
  • 日志:tail -f ~/.config/chat-on-steroids/app.log(看 server started / quick tunnel connected / tool exec_command)。
  • 隧道是否被访问:curl -s ${LOCALIP}:20241/metrics | grep cloudflared_tunnel_total_requests。

七、卸载

# 先在 ChatGPT 网页删掉自定义连接器 + Chrome 移除扩展
~/.local/bin/pskill "Chat-On-Steroids"; ~/.local/bin/pskill "mount_Chat-O"
rm -f ~/Applications/Chat-On-Steroids-Linux-x64.AppImage ~/Applications/SHA256SUMS.txt
rm -rf ~/.config/chat-on-steroids ~/.local/share/chat-on-steroids
rm -f ~/.local/share/applications/com.chatonsteroids.app.desktop ~/桌面/chat-on-steroids.desktop
rm -f ~/.local/share/icons/hicolor/1024x1024/apps/chat-on-steroids.png
update-desktop-database ~/.local/share/applications
# ~/cos-workspace 按需保留

2026-10-09 Codex 审阅说明

安装、权限和隧道成功记录均为 2026-09-20 快照,本次未连接或重验。没有找到支持“OpenAI Secure Tunnel 必须 credits/充值”的官方证据;当时的通用错误不能确定计费因果,已撤回该必然结论。CoS 配置块包含伪语法,已标成示意,不能整段作为 JSON 保存。

SHA256 可核对完整性,但发布者身份还需要可信签名或可信校验来源。KWallet 和 gnome-keyring 并存不必然冲突,需核对实际提供者。quick tunnel 地址变化取决于是否重建隧道,不能保证每次 App 重启必变。删除配置目录会同时删除本地设置、会话等用户资料;卸载步骤只作历史资料,复用前应先备份并获得实际卸载授权。本次未执行。