这里主要以CodeShell 的Idea插件分析
主要的AI提示词有下面几个:
package com.codeshell.intellij.constant;
public interface PrefixString {
String EXPLAIN_CODE = "请解释以下%s代码: %s";
String OPTIMIZE_CODE = "请优化以下%s代码: %s";
String CLEAN_CODE = "请清理以下%s代码: %s";
String COMMENT_CODE = "请为以下%s代码的每一行生成注释: %s";
String UNIT_TEST_CODE = "请为以下%s代码生成单元测试: %s";
String PERFORMANCE_CODE = "检查以下%s代码,是否存在性能问题,请给出优化建议: %s";
String STYLE_CODE = "检查以下%s代码的风格样式,请给出优化建议: %s";
String SECURITY_CODE = "检查以下%s代码,是否存在安全性问题,请给出优化建议: %s";
String MARKDOWN_CODE_FIX = "```";
String REQUST_END_TAG = "|<end>|";
String RESPONSE_END_TAG = "<|endoftext|>";
}
代码解释窗口
代码解释窗口是使用JCEF 的框架
public class CodeShellSideWindow {
private final Logger logger = Logger.getInstance(this.getClass());
private JBCefBrowser jbCefBrowser;
private final Project project;
private boolean webLoaded;
public CodeShellSideWindow(Project project) {
super();
this.webLoaded = false;
this.project = project;
}
public synchronized JBCefBrowser jbCefBrowser() {
return !this.webLoaded ? lazyLoad() : this.jbCefBrowser;
}
private JBCefBrowser lazyLoad() {
try {
if (!this.webLoaded) {
boolean isOffScreenRendering = false;
JBCefBrowser browser;
try {
browser = JBCefBrowser.createBuilder().setOffScreenRendering(isOffScreenRendering).build();
} catch (Exception e) {
logger.error("JBCefBrowser# build Browser not supported", e);
browser = new JBCefBrowser();
}
registerLifeSpanHandler(browser);
registerJsCallJavaHandler(browser);
browser.loadURL("http://codeshell/index.html?");
this.jbCefBrowser = browser;
this.webLoaded = true;
}
} catch (Exception e) {
logger.error("JBCefBrowser lazyLoad error", e);
}
return this.jbCefBrowser;
}
静态文件的分布:
总的来说CodeShell的代码,是一个很不错的AI Idea助手的插件参考:
代码的地址是:https://github.com/WisdomShell/codeshell-intellij