AI Shell 体系结构

AI Shell 体系结构图。

AIShell.Abstraction

此项目将作为 NuGet 包发布。 它包含用于定义与 AI Shell 交互的代理插件的所有接口。

此抽象层包括:

  • IShell:表示 AI shell 的代理。
  • IHost:表示 shell 主机的代理。
  • IRenderElement:表示用于以表或列表格式呈现对象的 header/valuelabel/value 对。
  • IStreamRender:表示用于呈现流式处理响应的特殊呈现形式。
  • ILLMAgent:表示代理插件。
  • IOrchestrator:派生 ILLMAgent。 表示可将查询路由到最合适的代理的特殊代理。
  • ICodeAnalyzer:派生 ILLMAgent。 表示一个特殊代理,该代理可以分析代码中存在安全问题。
  • CommandBase:表示代理在加载时可以注册到 shell 的命令。

ILLMAgent 中最重要的接口方法是 Task<bool> Chat(string input, IShell shell),当查询来自用户时,shell 将调用此方法。 它为代理的实现提供了极大的灵活性。 代理可以执行任何想要面向任意 AI 后端的任何操作,并使用 IShell提供的实用工具呈现输出。

代理插件负责管理自己的聊天历史记录。

AIShell.Kernel

这是 AI Shell 的实现。 它包含以下组件:

  • ReadLine
  • 呈现(markdown 呈现、流呈现、分页呈现)
  • 插件管理
  • 主机(用于编写输出和交互式提示的一系列实用工具方法)
  • 命令运行程序和内置命令
  • 实用工具(剪贴板、选项卡完成、预测 intellisense)
    • pythonpowershellcmdbash 的代码执行(使代理能够使用 LLM 执行函数调用。尚未启动的
  • Shell 集成(与命令行 shell 的深度集成。尚未启动的
  • 配置(颜色、键绑定等 尚未启动

AIShell.App

这是一个精简包装器,用于创建可执行文件 AIShell.Kernel。 最初的想法是 AIShell.Kernel 库,以便可供其他应用程序使用或托管。 如果这个想法不再有意义,我们可以轻松地将 AIShell.App 合并到 AIShell.Kernel