luozhiya / fittencode.nvim

Fitten Code AI Programming Assistant for Neovim
49 stars 8 forks source link

长代码解释异常,没有上下文 #96

Open Kaiser-Yang opened 1 week ago

Kaiser-Yang commented 1 week ago

对一个较长代码(500 lines)进行解释时,会出现如下情况:

image

没有上下问的支持,例如我先询问:Could you please give me a brief introduction of vim and nvim? 在他回答完成之后我接着询问Could you please give me more information about them, and answer it with Chinese?会出现第二次问题无法回答的情况,结果如下图:

image

luozhiya commented 1 week ago

官方现在没有公开 ChatAPI (包括Explain/Document等Actions), 所以现在的对话是通过构造特殊的 prompt 调用代码补全的 API 来模拟实现的。

可能存在的限制

Kaiser-Yang commented 1 week ago

官方现在没有公开 ChatAPI (包括Explain/Document等Actions), 所以现在的对话是通过构造特殊的 prompt 调用代码补全的 API 来模拟实现的。

可能存在的限制

  • 不支持多轮对话
  • 不支持中文?
  • 结果和VSCode的 Chat 有差异

好的,中文是支持的,你得问问题的时候让他用中文回答他就能回答。也就是现在对于内容的长度等也有限制?

Kaiser-Yang commented 1 week ago

官方现在没有公开 ChatAPI (包括Explain/Document等Actions), 所以现在的对话是通过构造特殊的 prompt 调用代码补全的 API 来模拟实现的。

可能存在的限制

  • 不支持多轮对话
  • 不支持中文?
  • 结果和VSCode的 Chat 有差异

最后有没有可能吧这个输入框在chat打开的时候直接放在chat这个窗口里面,感觉这样更合理一点。

luozhiya commented 1 week ago

也就是现在对于内容的长度等也有限制?

嗯,在VSCode中测试过,对于解释或者注释代码,限定在一个函数的范围效果比较好。

直接放在chat这个窗口里面

确实这样更符合在Vscode中的风格,但chat本身是只读的,放开编辑的话容易打乱排版,从而失去结构化(跳转、高亮、复制等操作就无法实现了)

可能的实现方法:

如果您有更好的想法也欢迎交流。

Kaiser-Yang commented 1 week ago
  • 通过添加一个子窗口绑定在chat上来实现?

对于绑定两个窗口可能需要考虑这两个窗口能不能真正的看成一个整体,例如resize会不会同时resize两个窗口,如果是竖着堆叠的两个窗口,那么我不管光标在哪里执行:resize +5都应该将整体resize然后按照之前 的比例计算新的大小(同时需要提供可以设置chat部分占窗口整体的比例参数)

  • 通过某种hack让chat部分可编辑?

这个方法我感觉不是很合理,因为不管是看哪一种chat都应该输出的部分是不能编辑的,而且不能编辑也保证了内容不会乱掉。

如果真的能实现的话,应该提供在回答窗口能够快速进入chat部分的接口设计,toggle隐藏的话也是整体隐藏比较好。

如果问我有什么想法我感觉,floating window也是不错的选择,这样也可以提供floating窗口的位置,例如chat输出窗口的正下方,或者这个屏幕的中间这种。这样的好处是不需要考虑resize对整体的影响。

希望官方能够开放更多的api,让支持上下文成为可能,因为我在网页用fittencode我感觉给的代码和解释的质量不低(前提你得结合上下文对他进行提示)。

Kaiser-Yang commented 1 week ago

我体验了一下copilotchatnvim,他们是把chat窗口变成一个可编辑的, 体验下来还不错(我把i绑定成了Gi): image