0%

obsidian smart connection 客制化.md

中文支持

  • 目前的插件Smart Chat中不支持中文和亚洲等等语言,插件需要用正则表达判断第一视角的input,然后再进行操作,而问题就出在,他正则表达式这不支持中文。要改成:
1
2
3
4
5
6
7
8
9
10
// Language that separates words without spaces.(Asian language)
if (this.settings.language == "zh")
{
this.self_ref_kw_regex = new RegExp(`(${SMART_TRANSLATION[this.settings.language].pronous.join("|")})`, "gi");
}
// Language that separates words with spaces.
else
{
this.self_ref_kw_regex = new RegExp(`\\b(${SMART_TRANSLATION[this.settings.language].pronous.join("|")})\\b`, "gi");
}

单独拿一个if来判断是不是亚洲语言,英语等语言是基于空格区分单词,而汉语没有空格,问题就出在这。

  • 之后,在这部分,加入中文就好,下面所有的都可以按自己喜欢来。
1
2
3
4
5
6
var SMART_TRANSLATION = {
"zh":{
"pronous": ["我", "咱", "鄙人", "本人", "俺", "寡人", "本公主", "本王子", "在下", "本宫", "本座", "老夫", "贫道"],
"prompt": "基于你的笔记",
"initial_message": "哈喽,我是Obsia,是你的私人助手。我能访问你所有的笔记,并且基于这些笔记与你交流哦。快随便问我个问题试试看。"
},

Smart Chat 角色扮演

  • 找到initialize_response(user_input)这部分,thread里的第一部分,就可以加入你想要的prompt,用来设置你的AI。
1
2
3
4
5
6
7
8
async initialize_response(user_input) {
this.set_streaming_ux();
await this.render_message(user_input, "user");
// 第一次把input传给openai
this.chat.new_message_in_thread({
role: "user",
content: "The replies should be natural and colloquial. Call yourself Obsia and Call user 'GAIVR' in English context and '盖尔' in Chinses context. You need to ask user a question based on the coversation to elicit new user response. Converse in the language of the user." + user_input
});

Smart Chat UI 设置

  • 这里是吧原来的蓝色和灰色背景透明,原来的太丑了。
1
2
3
4
5
6
7
8
9
10
11
12
.sc-message.assistant {
/*background-color: #007bff;*/
background-color: transparent; /* 背景透明 */

color: #fff; /* 字体颜色为白色 */
}
.sc-message.user {
/*background-color: #333;*/
background-color: transparent; /* 背景透明 */
color: #fff; /* 字体颜色为白色 */
align-self: flex-end; /* 自身右对齐 */
}

左边是原版,右边是改正后。

image-20231223225547443