Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在stream模式下让用户选择显示模式 #21

Closed
xiaoxx970 opened this issue Apr 11, 2023 · 5 comments
Closed

在stream模式下让用户选择显示模式 #21

xiaoxx970 opened this issue Apr 11, 2023 · 5 comments

Comments

@xiaoxx970
Copy link
Owner

xiaoxx970 commented Apr 11, 2023

https://rich.readthedocs.io/en/latest/live.html#vertical-overflow

当前是使用默认的ellipsis模式,当生成内容超出屏幕的时候,会在最下方显示三个小点,等所有内容生成完成的时候会一次性显示出剩余内容。这个模式在内容少的时候还好,如果内容很多,那内容超出屏幕后用户又只剩下了等待,内容越长等待越久。

当时考虑使用另一种模式:visible,这个模式能持续的flow输出答案,内容超过窗口高度的时候就向下滚动输出。这个模式能很好的解决用户的等待问题,但是缺点就是,不能在这个时候滚动屏幕,否则屏幕将快速刷新,导致屏幕外的内容彻底失控,最后只能正确显示当前屏幕的内容。

但是现在我实际使用下来,发现如果内容太长,我还是愿意不滚动屏幕,然后选择visible模式,看着所有回答慢慢出现。所以稍后打算把这个模式的选择做成/stream的子命令

@Ace-Radom
Copy link
Collaborator

Ace-Radom commented Apr 11, 2023

感觉为了稳定应该将ellipsis设为默认比较好 但开放改为visible模式的命令感觉倒是个挺不错的更新
个人觉得有三种设计:

  1. 全部集成进 /stream 中 后设 on off ellipsis visible 四个二级控制命令 单 /stream 输出目前状态
  2. 同样全部集成 后设 ellipsis visible 二级命令 单 /stream 开关
  3. 拆成两个命令

我是觉得要有一个输出目前stream状态的命令最好 不知道你怎么看

@xiaoxx970
Copy link
Owner Author

闲来无事来填坑了,我觉得用2.很好,马上弄一个

@xiaoxx970
Copy link
Owner Author

噢实测我就是不滚动屏幕,在'visible'模式下,超出屏幕的部分它还是乱成一团。结果就是往上滚只能看到完整的最后一个回答,再往上就是各种最后一个回答的未完成版本。总之还是把这个功能写进去吧,如果就是只需要看最后一个回答并且不想等超出部分的话,还是用得到的

@Ace-Radom
Copy link
Collaborator

hm我不知道python的rich live是怎么实现的 没看过源码 但我自己在写的md渲染器的live就是靠ANSI擦除+覆写实现伪流式输出的 我估计python里的库优化肯定更多但应该大差不差
但这种……覆写就不可避免造成在文字坐标改变时候写错位:joy: 就看用户怎么用了

@xiaoxx970
Copy link
Owner Author

是的估计终端下rich只能做到这样了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants