Blog

Blog

PHODAL

Shire 0.5 发布:构建数据安全 RAG,充分整合研发资产

最近,我们发布了新版本的 Shire,在这个新的发布(Shire 0.5)里,你可以更好地融合本地研发资产,同时构建数据安全 RAG。在这次版本中,我们增加了:

  • 对 SonarQube 的 issue 支持。可以直接获取到当前文件的 SonarQube 问题列表等。
  • 增强了 ShireQL 的能力。增加了对 Git 的支持,可以直接对 Git 进行查询与分析。
  • 自定义 RAG 能力增强。增加了 reranking 函数,用于对检索到的信息进行重新排序。
  • 新增了 AI 数据安全保护函数:redact。可以对数据进行脱敏处理。
  • 自定义 .shireSecretPattern.yaml。用于定义自定义的敏感数据规则。

有了这些新能力,你可以快速、安全地构建自己的 AI 编码智能体。

开始之前,再让我们回顾一下 Shire 的基本能力:

Shire 是一个基于 IDE 的开源 AI 编码智能体语言,你可以用 Shire 创建轻量级编码任务、编码智能体。其 Prompt 即代码的实践方式,可以让你与团队 成员共享这些编排好的 AI 任务。

整合研发生态,融合数据资产

Shire 的核心能力在于通过 Shire 语言来抽象 IDE 的 API,同时利用 IDE 的生态(插件、工具等)来提供更多的能力。IDE 本身提供了大量的数据资产,如代码 、版本管理等,而其生成(如插件)则提供了更多的能力,如代码质量检查、代码生成等。

作为 AI 辅助研发的非常重要的一部分,我们需要整合这些生态资产、组织内部研发资产,以提供更好的 AI 能力,提升开发人员的效率。

结合 SonarQube 的代码质量检查与修复

在先前版本中,你可以通过 $codeSmell 变量来获取当前文件的代码坏味道问题。在 0.5 版本中,我们增加了对 SonarQube 的支持, 你可以直接获取到当前文件的 SonarQube 问题列表等。

新功能要求你的 IDE 安装了 SonarQube 插件时,你就可以通过 Shire 与 SonarQube 进行交互。当前,Shire 支持两个变量:

  • sonarIssues,当前文件的 SonarQube 中的问题列表。
  • sonarResults,当前文件的 SonarQube 中的结果,含有问题的详细信息。

你就可以直接使用这两个变量,来进行代码质量检查与修复。示例如下:

修复如下的 Sonar 问题:

$sonarResults

输出示例如下:

修复如下的 Sonar 问题:

File: file:///Users/phodal/IdeaProjects/shire-demo/src/main/java/com/phodal/shire/demo/service/BlogService.java
  - MAJOR, (293,303): Remove this field injection and use constructor injection instead.
  - []

ShireQL 增强:Git 支持

ShireQL 是一个基于 IDE 的数据查询语言,它允许你查询当前文件的 AST(抽象语法树)、Git、依赖信息等。它在 Shire 中用于定义当前文件的上下文以及可以在当前文件上执行的操作。

在上一个版本中,ShireQL 原来只针对的是代码文件(PsiClass、 PsiMethod 等)。而在在这个版本中,我们增加了对 Git 的支持,并将其重新命名为 ShireQL。 如下是一个简单的示例:

---
variables:
  "phodalCommits": {
    from {
        GitCommit commit, Date date
    }
    where {
        commit.authorName == "Phodal Huang" and commit.authorDate <= date.now()
    }
    select {
        commit.authorName, commit.authorEmail, commit.message
    }
  }
---

根据如下的信息,总结这个人的提交:

$phodalCommits

更详细的文档见:https://shire.phodal.com/shireql

构建数据安全的 RAG

由于 Shire 的用户都是使用公开的模型,因此在处理数据时,我们需要保护数据的隐私。在这个版本中,我们增加了一些新的功能,用于保护数据的隐私。

使用 sed 函数保护数据

在新的版本中,我们优化了 sed 函数,增加了对正则表达式的支持。如下是一个简单的示例:

---
variables:
  "var2": /.*ple.shire/ { cat | sed("(?i)\b(sk-[a-zA-Z0-9]{20}T3BlbkFJ[a-zA-Z0-9]{20})(?:['|\"|\n|\r|\s|\x60|;]|${'$'})", "sk-***") }
---

Summary webpage: $var2

在这个例子中,我们定义了一个变量 var2,它的值是从所有 *.shire 文件中检索 openai key 的内容,并对其进行脱敏处理。而考虑到,有大量的类似 场景,所以我们添加了新的函数 redact

AI 数据安全保护函数:redact

数据安全保护函数(Data Guarding Functions)是用于进行对与模型交互的数据进行数据保护、去敏感化等操作的一种机制。

在 redact 函数中, 我们使用 db/pii-stable.yml 作为敏感数据的配置文件, 用于对数据进行脱敏处理。

普通变量使用示例:

---
variables:
  "var2": /.*ple.shire/ { cat | redact }
---

在这里,代码中类似于 086-1234567890 这样的手机吰信息,将会被脱敏为 "****"

详细见:https://shire.phodal.com/data-privacy/guarding-functions

自定义 .shireSecretPattern.yaml

除此,我们还在 Shire 中支持与 Secrets Patterns DB 相似的配置文件,用于对数据进行脱敏处理。 你可以在项目中新建一个 .shireSecretPattern.yaml结尾的文件,用于定义自定义的敏感数据规则,如:Phodal.shireSecretPattern.yaml

在该文件中,你可以定义一些敏感数据的规则,如:

patterns:
  - pattern:
      name: Slack Token
      regex: "(xox[pborsa]-[0-9]{12}-[0-9]{12}-[0-9]{12}-[a-z0-9]{32})"
      confidence: high

随后,Shire 将会在处理数据时,自动对匹配到的数据进行脱敏处理。

其它更新

除了上述的更新外,我们还增加了一些其它的一些功能。

自定义 RAG 能力增强:reranking

在 RAG 函数中, 我们增加了 reranking 函数,用于对检索到的信息进行重新排序。不过,当前仅支持 lostInTheMiddle 模式,未来我们将添加更多的 适合于编码场景的 reranker

.shire 文件 支持

当你在项目中创建一个 .shire 文件时,IDE 会判断是否存在 Shire 插件,如果没有则会提示你安装。

这样一来,你就拥有了一种更加简单的方式来与 IDE 进行交互。

总结

构建自定义 AI 编码智能体,是一个非常有趣的事情。通过 Shire,你可以更好地整合研发资产,构建数据安全的 RAG,以及更好地保护数据隐私。如果你有 任何问题,欢迎在 GitHub 上进行反馈与交流。


或许您还需要下面的文章:

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签