Skip to content

Commit

Permalink
feat(core): better wipe command
Browse files Browse the repository at this point in the history
  • Loading branch information
dingyi222666 committed Sep 9, 2023
1 parent b83a79a commit 9903ea8
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 28 deletions.
50 changes: 26 additions & 24 deletions packages/core/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,16 @@ export interface Config {
export const Config: Schema<Config> = Schema.intersect([
Schema.object({
botName: Schema.string().description('bot 姓名').default('香草'),
isNickname: Schema.boolean().description('是否允许 bot 配置中的昵称引发回复').default(true)
isNickname: Schema.boolean().description('允许 bot 配置中的昵称引发回复').default(true)
}).description('bot 配置'),

Schema.object({
allowPrivate: Schema.boolean().description('是否允许私聊').default(true),
allowAtReply: Schema.boolean().description('是否允许 at 回复').default(true),
isReplyWithAt: Schema.boolean().description('是否在回复时引用原消息').default(false),
isForwardMsg: Schema.boolean().description('是否将消息以转发消息的形式发送').default(false),
allowPrivate: Schema.boolean().description('允许私聊触发').default(true),
allowAtReply: Schema.boolean().description('允许 at 回复').default(true),
isReplyWithAt: Schema.boolean().description('回复时引用原消息').default(false),
isForwardMsg: Schema.boolean().description('让消息以转发消息的形式发送').default(false),
privateChatWithoutCommand: Schema.boolean()
.description('是否允许私聊不调用命令直接和 bot 聊天')
.description('私聊可不调用命令直接和 bot 聊天')
.default(false),
msgCooldown: Schema.number()
.description('全局消息冷却时间,单位为秒,防止适配器调用过于频繁')
Expand All @@ -60,7 +60,7 @@ export const Config: Schema<Config> = Schema.intersect([
outputMode: Schema.union([
Schema.const('raw').description('原始(直接输出,不做任何处理)'),
Schema.const('text').description('文本(把回复当成 markdown 渲染)'),
Schema.const('image').description('图片(需要 puppeteer服务)'),
Schema.const('image').description('图片(需要 Puppeteer服务)'),
Schema.const('voice').description('语音(需要 vits 服务)'),
Schema.const('mixed-image').description('混合(图片和文本)'),
Schema.const('mixed-voice').description('混合(语音和文本)')
Expand All @@ -70,22 +70,22 @@ export const Config: Schema<Config> = Schema.intersect([

splitMessage: Schema.boolean()
.description(
'是否分割消息发送(看起来更像普通水友(并且会不支持引用消息,不支持原始模式和图片模式。开启流式响应后启用该项会进行更加进阶的分割消息)'
'分割消息发送(看起来更像普通水友(并且会不支持引用消息,不支持原始模式和图片模式。开启流式响应后启用该项会进行更加进阶的分割消息)'
)
.default(false),

censor: Schema.boolean()
.description('是否开启文本审核服务(需要安装censor服务')
.default(false),
censor: Schema.boolean().description('文本审核服务(需要安装censor服务').default(false),

sendThinkingMessage: Schema.boolean().description('是否发送思考中的消息').default(true),
sendThinkingMessage: Schema.boolean()
.description('发送等待消息,在请求时会发送这条消息')
.default(true),

sendThinkingMessageTimeout: Schema.number()
.description('当请求多少毫秒后未响应时发送思考中的消息')
.description('请求多少毫秒后未响应时发送等待消息')
.default(15000),

thinkingMessage: Schema.string()
.description('思考中的消息内容')
.description('等待消息内容')
.default('我还在思考中,前面还有 {count} 条消息等着我回复呢,稍等一下哦~'),

randomReplyFrequency: Schema.percent()
Expand All @@ -97,16 +97,18 @@ export const Config: Schema<Config> = Schema.intersect([
}).description('回复选项'),
Schema.object({
longMemory: Schema.boolean()
.description('是否开启长期记忆(需要提供向量数据库和 Embeddings 服务的支持)')
.description(
'长期记忆(让模型能记住久远对话内容,需要提供向量数据库和 Embeddings 服务)'
)
.default(false),
blackList: Schema.union([Schema.boolean(), Schema.any().hidden()])
.role('computed')
.description(
'黑名单列表 (请只对需要拉黑的用户或群开启,其他(如默认)请不要打开,否则会导致全部聊天都会被拉黑无法回复'
'黑名单列表 (请只对需要拉黑的用户或群开启,其他(如默认)请不要打开,否则会导致全部聊天都会被拉黑无法响应))'
)
.default(false),
blockText: Schema.string()
.description('黑名单回复内容')
.description('被拉黑用户的固定回复内容')
.default('哎呀(キ`゚Д゚´)!!,你怎么被拉入黑名单了呢?要不你去问问我的主人吧。'),

messageCount: Schema.number()
Expand All @@ -121,22 +123,22 @@ export const Config: Schema<Config> = Schema.intersect([

streamResponse: Schema.boolean()
.description(
'是否启用流式响应(会在响应时就开始发送消息,而不是等待完全响应后再发送。开启后渲染输出模式选项将无效)'
'流式响应(会在响应时就开始发送消息,而不是等待完全响应后再发送。开启后渲染输出模式选项可能会无效)'
)
.default(false),

historyMode: Schema.union([
Schema.const('default').description('保存最近几轮的对话'),
Schema.const('default').description('保存最近的对话'),
Schema.const('summary').description('保存对话的摘要')
])
.default('default')
.description('聊天历史模式')
}).description('对话选项'),

Schema.object({
defaultEmbeddings: Schema.dynamic('embeddings').description('默认使用的的嵌入模型'),
defaultEmbeddings: Schema.dynamic('embeddings').description('默认使用的嵌入模型'),

defaultVectorStore: Schema.dynamic('vector-store').description('默认使用的的向量数据库')
defaultVectorStore: Schema.dynamic('vector-store').description('默认使用的向量数据库')
}).description('模型选项'),

Schema.object({
Expand All @@ -147,18 +149,18 @@ export const Config: Schema<Config> = Schema.intersect([

Schema.object({
isProxy: Schema.boolean()
.description('是否使用代理,开启后会为相关插件的网络服务使用代理')
.description('代理网络连接,开启后会为相关插件的网络服务使用代理')
.default(false),

isLog: Schema.boolean().description('是否开始调试模式输出Log,调试用').default(false)
isLog: Schema.boolean().description('调试模式').default(false)
}).description('杂项'),

Schema.union([
Schema.object({
isProxy: Schema.const(true).required(),
proxyAddress: Schema.string()
.description(
'插件网络请求的代理地址,填写后 chathub 相关插件的网络服务都将使用该代理地址。如不填写会尝试使用 koishi 的全局配置里的代理设置'
'网络请求的代理地址,填写后 ChatHub 相关插件的网络服务都将使用该代理地址。如不填写会尝试使用 Koishi 的全局配置里的代理设置'
)
.default('')
}).description('代理设置'),
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { middleware } from './middleware'
import { command } from './command'
import { defaultFactory } from './llm-core/chat/default'

export * from "./config"
export * from './config'
export const name = '@dingyi222666/chathub'
export const using = ['cache', 'database']

Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/llm-core/chat/default.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { ChatHubBrowsingChain } from '../chain/browsing_chat_chain'
import { ChatHubChatChain } from '../chain/chat_chain'
import { ChatHubFunctionCallBrowsingChain } from '../chain/function_calling_browsing_chain'
import { ChatHubPluginChain } from '../chain/plugin_chat_chain'
import { Context, Schema, sleep } from 'koishi'
import { Context, Schema } from 'koishi'
import { PlatformService } from '../platform/service'
import { CreateToolParams, ModelType } from '../platform/types'

Expand Down
5 changes: 3 additions & 2 deletions packages/core/src/middlewares/wipe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ export function apply(ctx: Context, config: Config, chain: ChatChain) {
if (command !== 'wipe') return ChainMiddlewareRunStatus.SKIPPED

const buffer = [
'您接下来将要操作的是清除 chathub 的全部相关数据!这些数据包括',
'\n1. 所有的会话数据',
'您接下来将要操作的是清除 ChatHub 的全部相关数据!这些数据包括',
'\n1. 所有会话数据',
'2. 其他缓存在数据库的数据',
'3. 本地向量数据库的相关数据'
]
Expand Down Expand Up @@ -51,6 +51,7 @@ export function apply(ctx: Context, config: Config, chain: ChatChain) {

await ctx.cache.clear('chathub/chat_limit')
await ctx.cache.clear('chathub/keys')
await ctx.cache.clear('chathub/client_config')

// delete local database and tmps

Expand Down

0 comments on commit 9903ea8

Please sign in to comment.