ITADN
susam/tzero
susam/tzero · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

Tzero

Tzero 是一个用于 IRC 频道的 timeboxing 管理器。 该工具作为客户端连接到 IRC 网络,并作为 IRC 机器人运行。 频道 用户可发送诸如 ,begin,list,mine,running 等机器人命令来管理和查看他们的 timebox。

Timeboxing 是一种时间管理技术,被认为通过限制任务 应完成的时间来提升生产力。 Timebox 是为任务 或活动分配的固定时间段。 该工具允许 IRC 频道的用户启动并管理 他们的 timebox,同时为高效工作 预留一段专注时间。

有一种非常流行的时间管理技术,称为 Pomodoro Technique,与 timeboxing 技术密切相关。 Pomodoro Technique 规定了具体的指导原则,例如 25 分钟的 timebox、每个 timebox 后 5 分钟的休息、每 4 个 timebox 后更长的休息 等。 然而,该工具支持通用的 timeboxing, 没有任何具体的指导原则。 但如果你希望 使用此工具练习 Pomodoro Technique,这绝对是 可行的,因为该工具毕竟是一个用于 IRC 的简单计时器机器人。

要立即试用 Tzero,请前往 Try It Now 部分。

目录

立即体验

要查看 Tzero 的实际运行效果,请加入以下两个频道中的任意一个:

您只需加入其中一个链接,无需同时加入两者。 发布到 IRC 频道的消息会自动转发到 Matrix 房间,反之亦然。

如果您不是活跃的 IRC 用户,建议加入 Matrix 桥接, 因为对于不熟悉 IRC 的人来说,它更方便。 例如,您可以 关闭网页浏览器或客户端,您的 Matrix 聊天会话仍会在服务器上保持活跃。 您可以稍后重新连接, 并阅读您离开期间发送到房间的消息。 在 IRC 上这样做需要稍多的工作,例如设置 IRC 中继器等。

连接到上述 IRC 频道(或 Matrix 房间)后,向频道发送 消息 ,help。 Tzero 的一个实例以昵称 t0 连接到该频道,它会在读取到 您的消息后立即做出响应。

示例会话

20:07 <susam> ,begin Read "Galois Theory" by Stewart (2015)
20:07 <t0> Started timebox in #bitwise: susam [Sun 20:07 GMT] (30 min) Read "Galois Theory" by Stewart (2015)
20:37 <t0> Completed timebox in #bitwise: susam [Sun 20:07 GMT] (30 min) Read "Galois Theory" by Stewart (2015)
20:39 <susam> ,list
20:39 <t0> Completed timeboxes in #bitwise:
20:39 <t0> susam [Sun 20:07 GMT] (30 min) Read "Galois Theory" by Stewart (2015)
20:39 <t0> susam [Sun 19:27 GMT] (30 min) Read "Introduction to Analytic Number Theory" by Apostol (1976)
20:39 <t0> gigo [Sun 18:51 GMT] (30 min) Add Vertico to my Emacs setup
20:39 <t0> gigo [Sun 16:09 GMT] (30 min) Read https://go.dev/tour/concurrency/1
20:39 <t0> drwiz [Sun 16:09 GMT] (30 min) Solve the N Queens Problem in C++
20:40 <susam> ,summary
20:40 <t0> I have run 15 timeboxes across all channels, totalling 900 minutes.  The average length of each timebox is 30 minutes.

功能

  • 基础时间盒:Tzero 支持诸如 begincancel 的命令, 分别用于启动时间盒和在时间盒完成前取消时间盒(例如, 如果你改变了主意)。list 命令 允许你列出当前频道中所有已完成的时间盒。 mine 命令允许你列出你在当前频道中 自己已完成的时间盒。

  • 多频道:Tzero 可以同时登录多个频道, 并分别跟踪每个频道用户启动的时间盒。

  • 频道隔离:时间盒的作用范围限定在启动该时间盒的频道内。 连接到一个频道的用户无法查看或列出 另一个频道上正在运行或已完成的时间盒。

  • 私有时间盒:用户可以通过向 Tzero 发送带有 /msg/query 命令的 私信来私有地运行时间盒。 私信会话被视为一个虚拟私有频道, 因此它也受益于频道隔离功能。

  • 持久化状态:与正在运行和已完成时间盒相关的数据 会保存到一个可配置的状态文件中。因此,如果该工具 因任何原因停止,在重启后,它会继续跟踪时间盒, 就好像什么都没发生过一样。

  • 有限的保留策略:在每个频道或私聊会话中, 状态文件中仅保留在特定时间段内启动的最近若干个 timebox。 较早的 timebox 会从状态中永久删除。 保留的最近 timebox 数量以及保留时长均可配置。

  • 每个用户每个频道同时只能有一个 timebox:在一个频道内, 用户一次最多只能运行一个 timebox。 但是,只要位于不同的频道, 同一用户可以同时运行多个 timebox。

Commands

Tzero 支持诸如 beginlistsummary 等命令。 命令必须以特定的前缀字符串开头。 在 Example Session 一节中给出的示例里, 前缀字符串是 , (逗号)。 前缀字符串需要在配置文件中进行配置。 详见 Configuration 一节。

命令名称可以截断为任意正长度。 例如, begin 命令也可以写作 bbebegbegi

以下各节列出了 Tzero 支持的完整命令列表。

begin

用法:begin [MINUTES] SUMMARY

为指定的 MINUTES 数量启动一个新的 timebox。 MINUTES 必须是 15 到 60 之间(含两端)且为 5 的倍数的值。 如果未指定 MINUTES, 则默认为 30 分钟。

示例:

  • ,begin Read SICP
  • ,begin 45 Review article
  • ,beg Read Galois Theory
  • ,b Write blog post

cancel

用法:cancel

取消当前频道中正在运行的 timebox。 不会在内部维护的 timeboxing 历史记录中保留已取消的 timebox 记录。

在私信会话中,此命令将取消您在私信会话中正在运行的 timebox。

delete

用法:delete

删除当前频道中您最近完成的 timebox。 这会从 timeboxing 历史记录中 移除您最近完成的 timebox 的记录。 已删除的 timebox 无法通过 下一节中描述的 listmine 命令列出。

在私信会话中,此命令将删除您在私信会话中运行的最近完成的 timebox。

list

用法:list

列出当前频道中已完成的 timebox。

在私信会话中,此命令将列出您在私信会话中运行的已完成的 timebox。

mine

用法:mine

仅列出当前频道中您已完成的 timebox。

在私信会话中,此命令将列出您在私信会话中运行的已完成的 timebox。 请注意,在私信会话中,listmine 命令显示 相同的 timebox 列表。

running

用法:running

列出该频道所有正在运行的 timebox。

在私信会话中,此命令仅列出您在私信会话中正在运行的 timebox。

summary

用法:summary

显示所有频道中已完成的所有 timebox 的摘要。

摘要信息仅显示已完成的时间盒总数以及在这些时间盒中完成的总分钟数。 每个时间盒的平均长度也会显示。 此命令不公开其他数据。 摘要数据包括 在私信会话中完成的时间盒。

time

用法:time

显示当前 UTC 时间。

help

用法:help [COMMAND]

显示关于指定 COMMAND 的用法信息。

指定的 COMMAND 可能包含也可能不包含 Tzero 前缀 字符串。 无前缀形式的命令也被 help 命令作为 COMMAND 接受,即当前缀为 , 时,,help ,begin,help begin 都是有效命令。

此外,命令名称可以截断为任意正长度, 即当前缀为 , 时,,help ,b,help b,help 等是有效命令。

示例:

  • ,help
  • ,help ,begin
  • ,help begin
  • ,help ,b
  • ,help b

version

用法:version

显示版本、版权和许可证详情。

设置

执行以下步骤以配置 Tzero 用于您的 IRC 频道:

  1. 克隆此仓库。 例如,

    git clone https://github.org/susam/tzero.git
  2. 创建配置文件:

    cd tzero
    cp etc/tzero.json tzero.json

然后编辑名为 tzero.json 的新配置文件,以包含 用于连接到 IRC 网络的 IRC 昵称的连接详细信息。 此文件中已预填了一些示例值,以帮助您入门。

  1. 运行 Tzero:

    python3 tzero.py

请注意,Tzero 不依赖任何外部 Python 库或 包。 它仅依赖 Python 3 的较新版本及其 标准库。

配置

Tzero 从当前工作目录中名为 tzero.json 的文件 读取其配置。 请参阅 etc/tzero.json 以获取 一个简单的配置示例。 以下是该文件中每个 配置字段的简要说明:

  • host (类型 string):用于连接到 IRC 网络的主机名。

  • port (类型 number):用于连接到 IRC 网络的 TCP 端口号。

  • tls (类型 boolean):是否使用 TLS 连接到 IRC 网络。

  • nick (类型 string):连接到 IRC 网络时使用的昵称。

  • password (类型 string):连接到 IRC 网络时使用的密码。

  • channels (类型 arraystring):要连接的 IRC 频道列表。

  • state (类型 str):Tzero 应保存其 状态的文件路径。

  • keep_timeboxes (类型 number):每个用户每个频道保留在状态中的最近 timebox 的最大数量。 较旧的 timebox 将从状态中 永久删除。

  • keep_duration_seconds (类型 number):最近 timebox 保留在状态中的最大持续时间(以 秒为单位)。 较旧的 timebox 将从状态中永久删除。

  • max_print_channel (类型 number):响应 listmine 命令时,频道中列出的 timebox 的最大数量。

  • max_print_private (类型 number):响应 listmine 命令时,私聊中列出的 timebox 的最大数量。

  • default_duration_minutes (type number): 当用户在发送的 begin 命令中未指定持续时间时,timebox 的持续时间。

  • duration_multiple_minutes (type number): 在 begin 命令中指定的持续时间必须是此数字的倍数,否则 begin 命令将被拒绝并返回错误。

  • min_duration_minutes (type number): timebox 允许的最小持续时间。

  • max_duration_minutes (type number): timebox 允许的最大持续时间。

  • prefix (type str): 所有 Tzero 命令的前缀字符串。

  • nimb (type str): 频道中存在的任何 NIMB 客户端的昵称。如果没有 NIMB 客户端存在,请将其设置为空字符串。有关此功能的更多详细信息,请参阅下文 NIMB Support 部分。

  • block (type array of string): 要阻止的字符串列表。如果 IRC 用户发送的 Tzero 命令包含此列表中提到的任何字符串,则 Tzero 将拒绝该命令。

NIMB 支持

NIMB 是一个中继桥接客户端,可以在 IRC 频道和 Matrix 房间之间转发消息。 如果 Tzero 连接到一个通过 NIMB 桥接到 Matrix 房间的 IRC 频道,那么可以配置 Tzero 以接受通过 NIMB 从 Matrix 用户到达的命令。 为此,必须按照上一节中的说明配置 nimb 配置选项。

不过在启用 NIMB 支持时,有一件事需要注意。 在 NIMB 配置中,Matrix 房间的 infix 必须设置为空字符串。 Tzero 无法支持在 NIMB 配置中具有非空 infix 的通过 NIMB 桥接的 Matrix 房间。

许可证

这是自由和开源软件。 您可以使用、复制、修改、 合并、发布、分发、再许可和/或出售其副本, 在 MIT 许可证的条款下。 详见 LICENSE.md

本软件按“原样”提供,不提供任何形式的保证, 无论是明示还是暗示。 详见 LICENSE.md

支持

要报告错误、建议改进或提出问题,请在 http://github.com/susam/tzero/issues 创建一个新的 issue。

渠道

本项目的作者经常在以下线上场所活动:

欢迎订阅、关注或加入上述一个或多个渠道,以接收来自作者的更新或询问关于本项目的问题。

更多

参见 NIMB,一个用于在 IRC 频道和 Matrix 房间之间转发消息的 relay bridge。

参见 Clog,一个极其简单的 IRC 聊天日志记录器。

参见 Timebox,用于 Unix/Linux/macOS/Windows 的 timeboxing 脚本。