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)
| File | Size | Uploaded | |
|---|---|---|---|
| sermo-0.8.0.tar.gz | 34.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|