插件
使用插件扩展 Neovate Code 功能,增强开发工作流程。插件是一种通过丰富的钩子来扩展功能的方式。您可以创建自己的插件来添加自己的功能、工具、模型、提供商、系统提示、输出样式、斜杠命令和其他集成。
创建插件
插件是一个遵循 Plugin 接口的 JavaScript 对象。
import type { Plugin } from '@neovate/code';
export default const plugin: Plugin = {
name: 'my-plugin',
context: () => {
// 添加更多上下文
return {
'Who am I': 'chencheng',
};
},
slashCommand() {
return [
{
type: "prompt",
name: "foo",
description: "foo",
getPromptForCommand: async () => {
return [
{
role: "user",
content: "print the version of @package.json",
},
];
},
},
];
},
}创建您自己的代码代理
您可以使用插件系统创建具有自己的模型、功能、工具和其他集成的代码代理。
import { type Plugin, runNeovate } from '@neovate/code';
const plugin: Plugin = {};
runNeovate({
productName: 'custom-code-agent',
version: '0.0.1',
plugins: [plugin],
});就是这样。现在您可以使用自己的代码代理了。
插件钩子
您可以在插件钩子中使用 this 来访问上下文实例。
插件钩子是扩展 Neovate Code 功能的主要方式。有许多可用的钩子。
config
返回一个部分配置以与配置合并。此钩子在配置初始化时被调用。
- 类型:
SeriesMerge - 参数:
- opts:
- config:
Config - argvConfig:
Record<string, any>
- config:
- opts:
- 返回:
Partial<Config>
destroy
此钩子在上下文被销毁时被调用。
- 类型:
Parallel - 参数:
- 返回:
void
slashCommand
返回要注册的斜杠命令。
- 类型:
SeriesMerge - 参数:
- 返回:
SlashCommand[]
outputStyle
返回要注册的输出样式。
- 类型:
SeriesMerge - 参数:
- 返回:
OutputStyle[]
provider
修改提供商映射。
- 类型:
SeriesLast - 参数:
- providers:
ProvidersMap - opts:
- models:
ModelMap - defaultModelCreator:
(name: string, provider: Provider) => LanguageModelV1 - createOpenAI:
(options: any) => OpenAIProvider
- models:
- providers:
- 返回:
ProvidersMap
modelAlias
修改模型别名。
- 类型:
SeriesLast - 参数:
- modelAlias:
ModelAlias
- modelAlias:
- 返回:
ModelAlias
initialized
初始化插件。
- 类型:
Series - 参数:
- opts:
- cwd:
string - quiet:
boolean
- cwd:
- opts:
- 返回:
void
context
返回要添加到对话中的上下文。
- 类型:
SeriesMerge - 参数:
- opts:
- userPrompt:
string | null - sessionId:
string
- userPrompt:
- opts:
- 返回:
Record<string, string>
env
返回要添加到对话中的环境上下文。
- 类型:
SeriesMerge - 参数:
- opts:
- userPrompt:
string | null - sessionId:
string
- userPrompt:
- opts:
- 返回:
Record<string, string>
userPrompt
修改用户提示。
- 类型:
SeriesLast - 参数:
- userPrompt:
string - opts:
- sessionId:
string
- sessionId:
- userPrompt:
- 返回:
string
systemPrompt
修改系统提示。
- 类型:
SeriesLast - 参数:
- systemPrompt:
string - opts:
- isPlan:
boolean - sessionId:
string
- isPlan:
- systemPrompt:
- 返回:
string
tool
返回要使用的额外工具。这对于向对话中添加您自己的工具很有用。
- 类型:
SeriesMerge - 参数:
- opts:
- isPlan:
boolean - sessionId:
string
- isPlan:
- opts:
- 返回:
Tool[]
toolUse
修改工具使用。
- 类型:
SeriesLast - 参数:
- toolUse:
ToolUse - opts:
- sessionId:
string
- sessionId:
- toolUse:
- 返回:
ToolUse
toolResult
修改工具结果。
- 类型:
SeriesLast - 参数:
- toolResult:
ToolResult - opts:
- toolUse:
ToolUse - approved:
boolean - sessionId:
string
- toolUse:
- toolResult:
- 返回:
ToolResult
query
通知插件已进行了查询。
- 类型:
Series - 参数:
- opts:
- usage:
Usage - startTime:
Date - endTime:
Date - sessionId:
string
- usage:
- opts:
- 返回:
void
conversation
通知插件已进行了对话。
- 类型:
Series - 参数:
- opts:
- userPrompt:
string | null - result:
LoopResult - startTime:
Date - endTime:
Date - sessionId:
string
- userPrompt:
- opts:
- 返回:
void
telemetry
用于收集使用情况分析的遥测钩子。当需要报告遥测事件时调用此钩子。
- 类型:
Series - 参数:
- opts:
- name:
string- 遥测事件的名称 - payload:
Record<string, any>- 遥测数据载荷
- name:
- opts:
- 返回:
Promise<void> | void
status
返回要显示的额外状态。
- 类型:
SeriesMerge - 参数:
- 返回:
Status