Shire 提供了一种简便 AI 编码智能体语言,能够让大型语言模型(LLM)与控制集成开发环境(IDE)之间自由对话,以实现自动化编程。
其主要架构设计原则为:
集成开发环境(IDE)不仅仅是一个文本编辑器或编程环境,它更是一个能够理解、处理和操作代码的高级工具。这种设计理念下,IDE 的作用远不止于代码编辑,它还包括了代码的语法分析、语义理解以及操作执行等功能。 在 Shire 中,我们采纳了一系列的设计原则,以支持 IDE 的智能化和自动化:
解释如下代码片段。
项目相关的技术栈上下文: $frameworkContext
$selection
在此示例中,我们展示了如何利用 Shire 的设计原则和功能来解析代码和上下文信息。通过定义变量和执行特定的模式-动作操作,IDE 可以根据条件筛选和处理代码文件,并通过 PSI 查询语言进行高级的代码结构分析和提取。这样的能力不仅提升了开发者的效率,还使得 AI 能够更智能地参与到代码开发和分析过程中。
语言接口是一种使用自然语言作为领域特定语言(DSL)或与系统进行交互的接口。它通过解析、处理和分析自然语言,指导系统的设计、开发和执行。 其设计目的是提高开发效率、准确性和用户体验,使用户能够使用自然语言描述系统需求、执行任务并获取系统生成的结果。
在 Shire 中,我们采纳了一种语言接口设计原则,将自然语言作为领域特定语言(DSL)或与系统进行交互的接口。这种设计原则涵盖以下几个方面:
---
name: "AutoTest"
description: "AutoTest"
interaction: AppendCursor
actionLocation: ContextMenu
---
为以下的 ${context.language} 代码编写单元测试。
...
通过上述配置,我们定义了一个名为 "AutoTest" 的 HobbitHole,用于生成自动化测试代码。通过这种 DSL + 自然语言的结合,我们可以定义 IDE 中的交互类型、操作位置和其他属性,进而实现代码生成任务的自动化和智能化。
原子功能单元(Atomic Functional Units, AFUs)是一种设计方法,旨在将复杂系统分解为独立且功能明确的最小操作单元。这种设计原则受到 Linux 设计思想的启发,强调模块化、独立性和简洁性。
以下是一个示例,展示如何对Java文件进行Embedding,以提供模板中的变量,作为LLM(大型语言模型)的上下文:
---
variables:
"searchResult": /*.docx/ { splitting | embedding | searching("API 设计范式") }
---
根据如下的内容,总结一下 API 如何设计:
$searchResult
在这个示例中:
通过这种方式,我们可以将复杂的任务分解为独立的原子功能单元,每个单元都是独立的,可以自由组合和重用,从而提高系统的灵活性和可维护性。
围观我的Github Idea墙, 也许,你会遇到心仪的项目