CLI 参考
本地工作流有三个一级命令:syndroo connect、syndroo publish 和 syndroo status。可选的 syndroo server 命令族用于部署和操作由用户自己拥有的 Cloudflare Worker。重试是 syndroo publish 的一种模式,而 syndroo status 中的查询是只读的。站点发布时,本页的每条命令和每个参数都会对照已构建的 CLI 检查。
全局参数
这些参数会在命令之前解析,因此放在命令行任意位置都可以,并且绝不会传给命令。
| 参数 | 含义 |
|---|---|
--config | 选择本地配置文件。路径必须为绝对路径。Server 命令改用 server --project <directory>。 |
--json | 输出一个 JSON 信封,并且从不提示。 |
--verbose | 加入完整标识符和经过审查的安全诊断信息。诊断写入 stderr,因此 stdout 仍只包含一个 JSON 文档。 |
--no-color | 禁用人类可读输出中的颜色。NO_COLOR 具有相同效果。 |
--help | 显示整个 CLI 或单个命令的用法。 |
--version | 输出已安装版本和运行它的 Node.js 版本。 |
重复一个全局参数属于用法错误,而不会静默采用最后一个值。单独运行 syndroo 会输出相同用法,以退出码 0 结束,并且不读取配置、不创建任何状态。
syndroo connect
syndroo connect [options] [provider]启动、继续或维护一个连接。每次运行只能使用一种模式:位置参数提供商会启动连接;--update 和 --disconnect 维护现有连接;--input 读取完整请求文档。
| 参数 | 含义 |
|---|---|
--label | 为连接命名。 |
--connection | 重新连接或刷新现有连接 ID。 |
--from-env | 从 SYNDROO_CREDENTIALS 读取凭证。 |
--credential-file | 从一个私有 JSON 文件读取凭证。 |
--update | 修改连接的标签或默认标记。 |
--disconnect | 删除一个已保存的连接。绝不会撤销平台凭证。 |
--input | 读取机器请求文档;- 从标准输入读取。 |
--redirect-uri <uri> | 选择 CLI 自行绑定的 OAuth 重定向地址。默认值是预先可注册的回环 URI;CLI 在该主机、端口和路径上提供服务并接收一次重定向,这需要控制终端。 |
--callback-url <url> | 使用浏览器最终到达的 URL 完成重定向。- 从标准输入读取;包含 code 或 state 的 URL 会在命令行上被拒绝。 |
--default | 将连接标记为默认目标。 |
--no-default | 清除默认标记。 |
--from-env 与 --credential-file 互斥,继续请求只能从标准输入接受。仍需输入的连接步骤会报告待处理动作并以退出码 0 结束,不会阻塞;在终端中,同一次运行会提示输入提供商声明的字段。对于 OAuth 提供商(linkedin、threads 和 mastodon),--redirect-uri 指定 CLI 自行绑定的回环回调,--callback-url - 从标准输入接收重定向 URL;这条本地回调路径只针对本地服务器做了模拟测试。
syndroo publish
syndroo publish [options]准备、执行或重试一次发布。必须且只能提供一个输入来源;type 为 execute 的请求只能从标准输入传入。
| 参数 | 含义 |
|---|---|
--input | 从文件读取请求文档;- 从标准输入读取。 |
--data | 内联提供请求文档。绝不能在此放置凭证。 |
--retry | 重试较早操作中符合条件的目标。 |
--to | 指定要重试的连接。可重复,每个目标一次。 |
--request-id | 为本次逻辑调用提供稳定身份。 |
--dry-run | 仅预览:不写状态、不解析凭证、不发起网络请求。 |
--yes | 自动确认当前进程刚刚准备的冻结意图,不再提示。 |
--to 需要配合 --retry,而 --dry-run 会拒绝重试。重试目标必须符合条件:结果为 unknown 的投递绝不会重试。
syndroo publish --retry <operationId> --to <connectionId> --yes --json在终端中,已准备的文档会显示冻结预览并询问 Publish to N accounts? [y/N/v]。接受的回答是 y 或 yes、n 或 no,以及 v 或 view:只有明确的 y 会执行当前进程刚刚签发的令牌;n、no、空行或输入结束会取消且不发送;其他回答不构成授权,会再次询问。v 或 view 会展开完整冻结预览并再次询问;它从不重新读取或重新准备输入,也从不延长确认窗口,窗口期限在第一次提示前已固定,并在之后每次回答时重新计算。准备后编辑输入文件不会改变将发送的内容。审批过期、连接绑定变化或提供商变化时,旧令牌会被拒绝,绝不会复用于它未被冻结覆盖的内容或账号。--yes 跳过提示,但不跳过冻结意图检查:它不会重新签发凭证,不会绕过身份绑定、过期、提供商验证或幂等规则,也不会进行第二次准备。配合 --dry-run 时它保持离线。显式 execute 请求已经携带自己的授权,因此 --yes 不会增加任何作用;重试会准备所选符合条件的子集,--yes 会确认并执行同一份冻结重试。
执行会报告真实进度,而不是猜测。每次观察都是已保存操作在提交后的一次投影,并在其描述的写入之后回读,所以进度行绝不会显示尚未持久记录的状态。目标按顺序串行运行:第一个目标正在发布时,排在后面的目标仍显示等待;每个目标只会在自己的持久写入落地后改变状态。
终端能够安全重绘时,进度块会隐藏光标并原地重绘;其他情况下,它会变成追加日志,只追加实际发生变化的行,最后以完整结果和摘要结束。正常结束和中断都会恢复光标,并移除尺寸变化与中止监听器,因此无论哪种方式都不会破坏终端可用性。
使用 --json 时完全没有实时进度块:stdout 不会收到进度、提示或转义序列,从而只保留一个信封。冻结预览和确认提示写入控制终端,而不是 stdout,因此重定向后的 stdout 永远不会成为输入答案的位置;--json 从不提示,--yes 自动确认,而不带 --yes 的人工准备需要可写控制终端。没有控制终端时会报告待处理结果并以退出码 0 结束,而不是阻塞在无人可回答的读取上,或根据无人看到的答案发送。
默认的人类可读视图对每个目标最多显示三行内容和两行原因,并给出一条建议的下一步;它会隐藏内部 ID 和确认窗口。--verbose 会加入这些内容,并且仅在已记录过期时间时输出过期行。失败、只发送了一部分、结果为 unknown 或尚未完成的目标,每个操作只需一条查询命令,而不是每个目标一条:syndroo status --operation <operationId> --verbose。unknown 与 not_started 不同:未知写入可能已到达平台,绝不会自动重试;从未开始的目标则显示为未发送。
syndroo status
syndroo status [options]只读。它从不创建状态根目录、不获取写入锁、不读取机密,也不联系平台。未提供选择器时返回概览。
| 参数 | 含义 |
|---|---|
--provider | 查询一个提供商;也可以筛选 --connections。 |
--connections | 列出已保存的连接。 |
--operation | 按 ID 读取一个操作。 |
--operations | 分页读取最近的操作摘要。 |
--limit | --operations 的分页大小,范围为 1 到 100。 |
--cursor | 用于下一页 --operations 的不透明游标。 |
--connections、--operation 和 --operations 互斥,--provider 不能与任一操作选择器组合,而未使用 --operations 却传入 --limit 或 --cursor 属于用法错误。
syndroo server
server init 会固定 @syndroo/[email protected] 和 @syndroo/[email protected],并安装项目本地 Wrangler。该工作流只在模拟环境中测试过,尚未进行真实 Cloudflare、GitHub、Meta 或 Threads 验收。npm 发布和产品部署是彼此独立的发布操作。
从项目运行,或使用 syndroo server --project <directory> <command> 明确选择项目。部署会复用现有 Wrangler 登录,不会启动登录流程。部署服务器指南涵盖前提条件、授权和完整的首次运行步骤。
| 命令 | 作用 |
|---|---|
syndroo server init [directory] | 创建受版本跟踪的配置、固定包清单和锁文件、示例帖子及首次本地 Git 提交。--github OWNER/REPO 还会创建并推送仓库;默认私有,只有明确选择时才公开。 |
syndroo server doctor | 运行只读的项目、工具和部署检查。它不修复项目,也不证明 OAuth 或发布已就绪。 |
syndroo server deploy --yes | 在用户授权目标后,创建缺失的自有资源并部署 Worker。 |
syndroo server connect threads --app-id APP_ID | 完成 Threads OAuth 并保存经过验证的连接引用。App Secret 使用隐藏输入、THREADS_APP_SECRET 或 --app-secret-stdin。 |
syndroo server ci setup github --repo OWNER/REPO --yes | 安装手动 Publish to Threads 工作流并配置限定范围的 GitHub 环境,但不提交、不推送、也不发布。 |
syndroo server publish threads --input FILE --request-id REQUEST_ID --yes --json | 使用限定范围的 CI 令牌发布一个严格 { "text": string } 文档。复用请求 ID 可恢复同一逻辑发布。 |
退出码
退出码描述本地调用,而不是平台。退出码 0 仍可能表示等待授权或预览尚未执行。
| 代码 | 含义 |
|---|---|
0 | 已按文档处理。结果仍可能需要确认或授权。 |
1 | 内部或持久化故障。副作用未知。 |
2 | 用法、配置、认证或预检拒绝。未发送任何内容。 |
4 | 写入可能已到达提供商,但结果未知。 |
5 | 用户在确认步骤中明确拒绝。未发送任何内容。 |
6 | 执行已经结束,并确认没有完全成功。 |
130 | 本地进程因信号终止。服务器端工作未取消。 |