Skip to main content

FRIENDEN 友间 CLI

FRIENDEN 友间的命令行客户端。朋友之间,自有一间。它直接接入现有 sermo-backend API,适合在终端里快速查看会话、发送文字消息和检查好友信息。

当前版本覆盖日常终端使用:

  • 支持进入空间并保存登录状态。
  • 支持查看当前账户、空间成员、聊天列表、好友列表、好友申请。
  • 支持查看聊天记录、发送文字消息、持续刷新新消息、监听全局新消息。
  • 默认提供不清屏的局部窗口选择器,会话、好友、成员和申请列表只展示光标附近 5 项。
  • 保留 sermo tui 全屏终端聊天界面,会话列表、消息流和输入框集中展示。
  • 支持好友申请处理、好友邀请链接、私聊打开、群聊创建和成员管理。
  • 支持账号资料、联系方式绑定、通知偏好、空间创建和管理员基础操作。
  • 图片、视频、语音、文件等多媒体消息在终端中展示为 [图片]、[视频]、[语音]、[文件];也支持上传发送图片、视频和语音文件。
  • 暂不展示头像。

安装

开发环境下可以直接运行:

python -m sermo_cli --help

也可以安装为本地命令:

pip install -e .
sermo --help

从 PyPI 安装:

pip install sermo
sermo --help

API 地址

默认 API 地址是:

https://api.sermo.jyonn.space

可以用环境变量或参数覆盖:

SERMO_API_BASE=http://localhost:8000 python -m sermo_cli chats
python -m sermo_cli --api http://localhost:8000 chats

常用命令

登录 / 进入空间:

sermo login --space yuanmeng --name 软糖大啾咪

如果昵称需要访问密码,CLI 会自动提示输入密码。

查看当前账户:

sermo me

查看聊天列表:

sermo chats

终端中会显示光标附近 5 个会话。使用 ↑/↓ 选择、Enter 打开、Esc 返回;也支持 j/k 和 Ctrl+N/Ctrl+P。

直接输出完整列表,适合管道和脚本:

sermo chats --list

调整局部窗口行数:

sermo chats --window 7

打开 TUI:

sermo tui

在 TUI 里:

  • Tab/Shift+Tab 在会话、消息和输入框之间切换焦点。
  • 会话焦点下使用 ↑/↓ 或 j/k 切换会话。
  • 消息焦点下使用 ↑/↓ 滚动,PageUp/PageDown 翻页,滑到顶部自动加载历史。
  • 查看历史时不会强制跳到底部;标题会提示新消息数量,End 回到最新消息。
  • 输入框支持左右移动、Home/End、退格与 Delete,并按会话保存草稿。
  • 发送消息会立即展示“发送中”;失败后保留消息,在消息焦点按 r 重试。
  • Enter 发送,F5 手动刷新,Ctrl+U 清空输入。
  • Esc 或 F10 退出。

会话焦点还支持:

  • / 按会话名称或最后一条消息搜索。
  • u 只看未读会话,x 清除全部筛选。
  • i 查看当前会话资料。
  • 连续五分钟内同一用户的消息自动合并显示昵称与时间。
  • 终端宽度不足 86 列时自动切换为单栏布局。

消息与输入增强:

  • Ctrl+K 打开可搜索的命令面板。
  • 消息焦点按 v 进入选择模式,使用 ↑/↓ 选择消息。
  • 选择消息后按 q 引用、c 复制、d 删除,删除前会二次确认。
  • 引用摘要会显示在输入框上方,按 Esc 取消引用。
  • 输入框按 Ctrl+O 插入换行,最多展示 4 行;Enter 仍用于发送。

打开聊天:

sermo chat 1

在聊天界面里:

  • 直接输入文字并回车即可发送。
  • 输入 /refresh 刷新新消息。
  • 输入 /quit 退出。

只发送一条消息:

sermo send 1 你好

持续刷新聊天:

sermo chat 1 --follow

查看好友:

sermo friends

好友、空间成员、好友申请和群聊邀请使用同一套局部窗口交互:

sermo friends
sermo users
sermo requests
sermo group invites

这些命令也都支持 --list 和 --window。

查看好友申请:

sermo requests

接受/忽略好友申请:

sermo friend accept <user_id_or_name>
sermo friend ignore <user_id_or_name>

打开私聊:

sermo direct <user_id_or_name> --open

监听所有新消息:

sermo watch

加载更早消息:

sermo chat 1 --before <message_id>

群聊:

sermo group create 12 34 --title 周末计划
sermo group add 1 56
sermo group rename 1 新群名
sermo group leave 1

发送媒体消息:

sermo message media 1 ./photo.jpg
sermo message media 1 ./voice.m4a --kind audio --duration 8

好友邀请链接:

sermo invite token --permanent
sermo invite redeem <token>

账号与通知:

sermo account password
sermo account name 新昵称
sermo account welcome "欢迎来找我聊天"
sermo contact code email you@example.com
sermo contact bind email you@example.com 123456
sermo notify list
sermo notify set bark --enabled on --threshold 1 --hide-content on

空间与管理员:

sermo space email-code --slug yuanmeng
sermo space admin-login --space yuanmeng --email admin@example.com --code 123456
sermo admin dashboard
sermo admin users
sermo admin settings --square off --member-limit 100
sermo admin official-ticket

退出:

sermo logout

登录状态

登录状态默认保存到:

~/.sermo-cli/config.json

可以用 SERMO_CLI_CONFIG 指定其他路径,便于测试或多账号切换。

Metadata

Release files for sermo 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sermo 0.8.0
File Size Uploaded
sermo-0.8.0.tar.gz 34.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sermo 0.8.0
File Interpreter ABI Platform
sermo-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 68.3 kB

Release files / sermo-0.8.0.tar.gz

Download URL sermo-0.8.0.tar.gz
Size 34.1 kB
Tags Source
SHA-256 checksum
How to use checksums
803ce860dba97be1120e7a819dc6ed6eabfe2e3d5404a5bc5d16d5f242df7993
BLAKE2b-256 checksum
How to use checksums
f94d653e6ad934966c65bafaa1111c4642a29f37f98f66a79d844dc31ce95774
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / sermo-0.8.0-py3-none-any.whl

Download URL sermo-0.8.0-py3-none-any.whl
Size 34.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
134edf38fcf67fcaf88c087c7258dcd36b1c108640deda59557be39023a30403
BLAKE2b-256 checksum
How to use checksums
8bb1a2a018e0b978613986ba5f377aa9cadb2f5c4f6db76439e36e12d9f1fbe6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

0.9.0

2 release files

This release

0.8.0 This release

2 release files

0.7.0

2 release files

0.5.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page