搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

AsamK/signal-cli

效率与系统工具

为 Signal 提供命令行、JSON-RPC 和 D-Bus 接口,用于注册、收发消息和服务器自动化。

5,039
475
Java
GPL-3.0
创建于 11 年前

项目介绍

signal-cli 是 Signal 的非官方命令行客户端,支持注册号码、验证、关联已有账号、发送和接收消息,也能以守护进程方式提供 JSON-RPC 和 D-Bus 接口。它基于从 Signal-Android 源码中提取并修补过的 libsignal-service-java 客户端库。文档说明的主要场景是服务器上通知管理员重要事件,同时也适合希望不在智能手机上使用 Signal 的用户。

除单次命令外,守护进程提供 JSON-RPC 接口(附一个 Rust 编写的简单示例客户端)和 D-Bus 接口。协议要求定期接收消息;文档指出这样才能保证加密高效工作,并及时获得群组、阅后即焚计时器等更新。

快速使用

需要至少 JRE 25 和自带的 libsignal-client 原生库;预编译包已为 x86_64 Linux(glibc 足够新)、Windows 和 macOS 打包,也可用 Gradle 自行构建。其他系统或架构的原生库方案见 wiki。README 给出了 Linux 全系统安装脚本:自动解析最新版本号并解压到 /opt;仅在你的机器适合这种目录布局时执行。

把可执行文件加入 PATH 后,基本流程如下:

  1. 关联已有账号:signal-cli link;或注册新号码:signal-cli -a ACCOUNT register,其中 ACCOUNT 是带 + 和国际区号的电话号码。注册会注销该号码上已有的客户端。
  2. 用短信或语音收到的验证码验证:signal-cli -a ACCOUNT verify CODE(账号设有 PIN 时加 --pin PIN_CODE)。
  3. 发送:signal-cli -a ACCOUNT send -m "This is a message" RECIPIENT;用户名需加 u: 前缀,也可通过 --message-from-stdin 从标准输入读取消息内容。
  4. 接收:signal-cli -a ACCOUNT receive,或运行守护进程持续接收。

座机无法接收短信;README 描述了先尝试短信失败后用 --voice 走语音验证的流程,并给出需要验证码时的注册说明入口。

使用约束

这是非官方客户端;项目说明必须保持更新,因为官方客户端三个月后过期,服务端可能随后做不兼容变更,超过三个月的版本可能无法正常工作。注册依赖能接收短信或电话的号码,从 signal-cli 注册会挤掉该号码上的其他客户端。密码和加密密钥在注册时生成,存放在用户主目录下的 $XDG_DATA_HOME/signal-cli/data/(或 $HOME/.local/share/signal-cli/data/)。项目采用 GPL-3.0 许可,并包含源自 Open Whisper Systems libsignal-service-java 的代码。

HN 讨论中有用户质疑非官方客户端连接 Signal 服务器是否被允许。有评论认为这是对网络服务的使用条款限制而非许可证限制,并指出 signal-cli 使用了 Android 客户端库的分支。这属于讨论观点,应结合 Signal 当前条款核实,不应视为项目方声明。

HotRepo 点评

在 2026-11-09 的 Java 日榜上,signal-cli 记录到第 7 的最佳名次,当日新增 3 个 Star,说明这个长期存在的工具仍能进入语言榜。较早的 HN 讨论(2017 年和 2021 年)围绕「为以手机为中心的即时通讯提供命令行客户端」这一特殊定位展开,2021 年有评论者称已用五年在不用智能手机的情况下保持 Signal。这些记录反映的是持续的小众需求,而非近期爆发;单次快照不足以判断趋势。

项目源码与说明

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。

Hacker News 讨论

Command Line Interface for Signal
▲ 164 · 71 条评论 · 2021年6月29日
Signal-cli: command-line and dbus interface to Signal
▲ 120 · 25 条评论 · 2017年2月11日
Command line interface for Signal messenger
▲ 3 · 0 条评论 · 2016年8月30日