SignalDesk v0.6.1 是一个可自行修改的原生 macOS X 运营工作台。它把“IP / 运营身份”与真实 X 账号分开:前者是本地内容策划档案,后者通过 X 官方 OAuth 2.0 逐账号授权。
当前主流程是“发现热门内容 → 生成/编辑跟帖或发帖草稿 → 人工审批 → 逐条最终确认 → X 官方 API 发布”。仍保留复制草稿的人工交接入口。它不把规避平台规则、反检测或所谓“防封”当成产品能力。
当前仓库提供源码和本机构建说明,尚未提供经过 Developer ID 签名、Apple 公证并附带 SHA-256 的公开下载包。不要从第三方下载来历不明的 SignalDesk 二进制文件。
- 原生 SwiftUI / AppKit 界面,支持 macOS 14 及以上版本。
- 创建任意数量的 IP / 运营身份;身份、草稿与审计记录会原子写入
~/Library/Application Support/SignalDesk/workspace.json。 - 只需在 App 中输入 X Developer App 的 Client ID,通过官方 OAuth 2.0 + PKCE 逐个授权 X 账号。
- OAuth 回调固定为
http://127.0.0.1:53682/oauth/callback,必须在 X Developer Portal 中逐字一致地登记。 - OAuth access/refresh token 只存入 macOS Keychain;工作区 JSON 只保存公开账号信息和授权范围。
- 设置页可配置“X 应用级 Bearer”,用于官方项目 Usage API,并作为只读热帖搜索的备用凭据;它不是 X 账号登录状态。
- “X 用量与费用”页展示近 7 天 Post 用量、项目累计与上限、按 App 汇总、本机调用账本和费用估算;官方精确余额仍通过 Developer Console 查看。
- 设置页优先连接 Grok / SuperGrok 订阅:SignalDesk 调用 xAI 官方 Grok Build CLI 的 grok.com OAuth,不把订阅伪装成 API Key,也不读取密码或 Cookie。
- 设置页通过 Grok Build 官方 ACP 扩展
x.ai/billing只读刷新共享额度百分比、周期类型和下次重置时间;该操作不运行模型,也不读取浏览器会话。 - 订阅热帖发现只开放 Grok Build 的
WebSearch/WebFetch,且只接纳 handle、数字 Post ID 与规范x.com/<handle>/status/<id>链接互相一致的候选;它不冒充单独计费的 xAIx_searchAPI。 - xAI API Key 改为明确标注的可选付费备用;只有用户主动配置后才可能调用 Responses API 的
x_search或推理。 - 跟帖草稿优先使用 Grok 订阅;失败时依次回退用户主动配置的 xAI API Key、OpenAI-compatible 备用服务和明确标注的本地模板。
- 审批与草稿修订号绑定;审批后再修改会使旧审批自动失效。
- 对已审批草稿提供单条发帖或回复;每次写入前必须明确选择默认 X 账号并完成最终确认。
- 不提供批量发布队列、后台自动跟帖、失败时切换账号或绕过平台限流。
- 发布成功后只保存公开 Post ID、链接、时间和账号连接 ID;审计事件不含 token 或响应正文。
- 在 X Developer Portal 创建应用,将 App 类型设为 Native App / Public Client。
- 登记回调 URL:
http://127.0.0.1:53682/oauth/callback。 - 在 SignalDesk 的“X 账号连接”页只粘贴 Client ID。Native App 不应把 Client Secret 编译进客户端。
- 点击连接,在 X 官方授权页选择对应账号并确认。每个运营账号都要独立授权一次。
如果账号是用 v0.2 或更早版本连接的,它只有只读范围。升级后请使用同一个 Client ID 再连接一次该账号,并在 X 官方页面重新授权;旧 token 不会被 App 暗中升权。
macOS 上首次 OAuth 会短暂打开系统默认浏览器;X 授权完成后自动回到 SignalDesk。SignalDesk 不会用 WKWebView 或无头浏览器承接登录,因为嵌入式授权会让 App 有机会读取密码、键盘输入和 Cookie,也可能被授权服务拦截。后续 token 刷新和 API 操作不需要再次启动浏览器,除非授权失效或权限范围改变。
SignalDesk 不接受、不解析、不验证以下内容:X 用户名/密码、邮箱/密码、Cookie、TOTP/2FA 秘钥、备份码、session token,以及售号商提供的任何“一行登录包”。如果这些凭据曾发送给他人或第三方,应立即更换密码、重置 2FA,并撤销已有会话与应用授权。
- 安装 xAI 官方 Grok Build CLI。SignalDesk 会依次检查
~/.grok/bin/grok、~/.local/bin/grok、Homebrew 常用路径,不调用 shell 别名。 - 在“设置 → 服务连接”点击“连接 Grok 订阅”,只在 xAI 官方 OAuth 页面登录你的 grok.com / SuperGrok 账号。
- SignalDesk 通过
grok version和grok models检查本机安装、登录状态与可见模型;随后通过grok agent stdio的官方 ACPx.ai/billing扩展刷新共享额度与下次重置时间。两项检测都不运行模型推理。 - 若登录错账号,可在设置中确认“切换订阅账号”。这会先清除 Grok Build 的本机 OAuth 缓存,再打开官方登录页。
xAI 的 Grok FAQ 说明符合条件的 SuperGrok 方案可使用 Grok Build,并共享订阅周用量池;这不等于获得 xAI API 余额。SignalDesk 会显示 ACP 返回的真实百分比和周期结束时间,并保留 官方 Usage 页面作为核对入口。订阅搜索依赖 Grok Build 当时开放的 WebSearch 能力,专用实时 X Search 是否可用必须以实际结果为准。所有结果仍需人工审核。
如需单独计费的 xAI x_search API,可在“可选备用:xAI API Key”中自行配置。Key 只存 macOS Keychain,连接校验只调用官方 GET /v1/models,不运行推理或搜索。Grok Responses 请求使用 store: false。SuperGrok 订阅与 xAI API 额度、账单相互独立。
- v0.6 默认申请
tweet.read tweet.write users.read offline.access,用于识别账号、读取数据、逐条发帖/回复和刷新授权。 - 发现顺序为 Grok 订阅 WebSearch → 用户主动配置的 xAI API
x_search→ X OAuth Recent Search → X 应用级 Bearer。订阅候选必须通过规范 URL 字段核对;xAI API 候选还必须通过服务端引用中的 Post ID 核对。 - 热门帖评论可以在 SignalDesk 内生成、审核并回复。普通发现帖仍标记为
manualOnly,代表不可进入自动队列;当前修订审批通过并逐条最终确认后,才会调用官方 API。 - 只实现新帖与回复;不实现自动点赞、转帖、关注或私信。
- 写入客户端调用官方
POST /2/tweets;回复目标使用明确的原帖 Post ID,不从正文或链接中猜测。 - 不提供密码自动登录、无人值守跟帖、浏览器指纹伪装、验证码绕过、代理轮换或反检测功能。
X API 与普通 X 账号订阅分开。搜索、读取、发帖或回复能否调用,取决于 Developer App 的当前权限、额度和 X 的计费规则。配置凭据不会自动产生请求;点击真实搜索,或在发布确认框中确认发送时,才可能消耗 API 额度/积分。上线前应以 X Developer Portal 当时显示的价格和用量为准。
SignalDesk 通过官方 GET /2/usage/tweets 读取 Post 用量统计,并每 5 分钟最多刷新一次。该接口不返回预付美元余额或逐笔账单;本地费用数字只用于预算预警,不应视为 X 发票。
Grok Build 使用符合条件的 Grok / SuperGrok 订阅共享用量池,不走 xAI API Key,但也不能承诺“无限免费”。SignalDesk 的额度刷新只调用官方 ACP billing 扩展,不产生模型推理;当订阅额度不可用时,SignalDesk 会明确提示,并只在用户已经主动配置其他凭据时回退。
xAI API 与 SuperGrok 会员分账。按 2026-08-03 的官方公开价格,API x_search 工具费为 US$5 / 1,000 次成功工具调用(即每次 US$0.005),并另计模型输入、推理和输出 Token;一次代理请求可能调用工具多次。SignalDesk 会在 API 结果页显示服务端报告的工具次数及工具费估算,但精确账单仍以 xAI Console 为准。
需要 macOS 14+ 与 Xcode Command Line Tools,无需安装额外依赖:
cd SignalDesk
chmod +x build.sh
./build.sh
open build/SignalDesk.app开发期可以构建调试包:
./build.sh debug
open build/SignalDesk.app运行不访问真实 X 或第三方服务的离线自检:
./build.sh selftest自检覆盖 Codable、临时目录 JSON 存储、账号字段归一化、发现评分、审批版本生命周期、互动资格边界、PKCE/OAuth 参数、官方发帖/回复 JSON、Grok Build OAuth 状态解析、订阅命令权限边界、ACP 周额度与重置时间解码、规范 X 链接核对、Grok API Key 校验、API X Search 引用核对、Grok 草稿与确定性本地草稿。凭据测试使用注入的假后端,所有测试请求由内存协议或假命令执行器截获。
build.sh 使用项目自己的模块缓存,不依赖用户目录缓存。默认使用 ad-hoc 本地签名,适合本机运行;对外分发仍需 Developer ID 签名和 Apple 公证。
- 本地最低门禁:
swift test --disable-sandbox、./build.sh selftest、./build.sh release、plutil -lint与codesign --verify --strict。 - GitHub CI 覆盖 macOS 14 arm64 和 macOS 15 Intel;macOS 14 runner 已进入 GitHub 的弃用周期,仓库会在其停止服务前调整最低系统验证方式。
- SignalDesk 只支持官方 OAuth/API 与人工确认流程。Cookie、密码包、验证码绕过、无头登录、批量自动跟帖和规避平台限制不在支持范围内。
- 不要把 API Key、Client Secret、OAuth Token、Cookie、账号密码或 TOTP 秘钥写进源码、JSON 工作区、日志或截图。
- X OAuth token、备用 X Bearer、xAI API Key 和备用 AI API Key 通过 macOS Keychain 保存;Grok 订阅授权由官方 Grok Build 自行管理;界面不回显原文。
- Client ID、AI Endpoint 和 Model 属于非秘密设置;普通运营数据保存在工作区 JSON。
- 审计日志只记录动作类型、时间和必要的运营上下文,不记录请求头、Token、第三方错误正文或完整接口响应。
- 工作区先完整编码再原子替换;现有文件损坏时会报错并保留原文件,不静默覆盖成空数据。
Sources/SignalDesk:原生 macOS App 界面与本机 OAuth 回调Sources/SignalDeskCore:领域模型、OAuth/PKCE、评分、存储与安全边界Sources/SignalDeskSelfTest:不访问真实外部服务的可执行自检Resources/Info.plist:App Bundle 元数据Tools/IconGenerator.swift:程序化生成独立品牌图标build.sh:编译、组装与本地签名.app
源码以 MIT License 发布。外部服务、CLI 与平台框架的归属和分发边界见 第三方说明。
SignalDesk 是独立项目,不隶属于 X Corp.;“X”及其相关标识归各自权利人所有。