Home Artists Posts Import Register
Patreon importer is back online! Tell your friends ✅

Content

Version history - Download latest version

1.3.1

Mobile:

  • The "Get cai+" button on the chat page has been hidden to avoid interference.
  • The memory manager button should now appear without having to reload the page. (under testing)

General:

  • With the presence of multiple memories, the top bar of the memory manager will now remain visible, allowing for manual injection without scrolling back up.
  • The general delete memory button has been removed.
  • Now each memory box has its own button for deletion.



1.3.0 - Mobile View (Android)

  • Fixed an issue that prevented inserting all memories using the manual button if recurrent injection was not enabled.
  • Added mobile support for Android (mobile view in portrait mode). For tablets, it is recommended to use mobile view in portrait mode or desktop view in landscape mode. Please note that the mobile version may not be displayed correctly on every device. It is the first version, so feedback will be necessary to adapt it to more devices.

For more information, see the Android installation guide.

1.2.4

  • Fixed bug in individual injections that injected data as plain text (without the configured formatting)

1.2.3

  • Now, when clicking on a title of a memory box, the text is automatically selected for easier replacement.
  • If you set the title text of a memory box as empty, the previous text will be restored.
  • The checkbox for compressing memories has been removed. Now, they will always be compressed by default (in the blue asterisk).
  • Fixed a bug that kept injecting memories from deleted memory boxes in certain circumstances.
  • Now, all buttons explain what they do when you hover the cursor over them.
  • Added buttons to manually inject all memories or individual memories.

Manual injection of all memories will eliminate any previous injection to avoid unwanted redundancy.

Individual injection performs cumulative injections, so it is your responsibility to control what you inject.

The individual injections will be nested as follows: (don't worry if you inject after writing your message. The individual injection will be properly nested in its place).

1.2.2

  • When using both recurring injection and keyword injection simultaneously, the keyword injection is disabled when a recurring injection occurs. (To avoid redundant injections that don't make sense if everything is already injected)
  • Limited the height of the character.ai message text box. Now there will be scrolling if the message or injection is too long.

1.2.1

  • The extension name in the browser changes from CharacterAI Tools to Rinine CharacterAI Tools (to avoid confusion with the public extension Cai tools).
  • Fixed the issue that prevented activating the keyword injection checkbox unless you unchecked and checked the compress injections checkbox again. (due to caching you may need to refresh the page with CTRL+F5 first)
  • The configuration window now adapts its size to be properly visible on screens with a vertical resolution lower than 850px.

1.2.0 (major update)

  • Modified how OOC injection is performed. The format is now (('memory1', 'memory2')).
  • Added a new option to automatically regenerate a censored response (Clicks "Try again" automatically in the censorship popup).
  • Now it's possible to set the number of messages to pass before an injection.
  • New memory injection system using keywords.
  • Now you can use {{char}} and {{chr}} as access to the bot's full name or its initial name in case of a compound name. (Works in both keywords and memory boxes).
  • Removed the warning message in options. Now a confirmation popup will appear.
  • Fixed a bug that caused an additional injection in the second message the first time we loaded a memory file.
  • Significantly optimized the extension's code.
  • You can check the keyword injection guide here.

1.1.0

  • Option to prevent character.ai from constantly reminding us that the bot's responses are made up. (enabled by default)
  • Fixed issue that displayed overlapped text when reporting a response pretending to send feedback when the option for large avatars is enabled.
  • Added warning in the extension's settings menu to prevent loss of unsaved memories.
  • Typing in a text box of the memory manager now allows the use of left and right arrows without moving the bot's last response.

1.0.9

  • Fixed profile page display.
  • Adjusted the width of the bot editing screen.
  • New injection configuration system. Injection configuration is now done in a new section with more options.

(Older version information is removed so as not to keep the changelog too long)

Comments

Sam Fachin

Hi! May I ask, what's the difference between Narration, OOC and Tags?

rinineaitools

Narration uses arterisks, which means narration of events in the third person. OOC means that you notify the content of the memories to the AI and not to the character that the AI plays. Tags is a new system that works a bit hybrid (The information is not out of context, they are like notes that the bot takes into account). The bot reacts slightly differently depending on the method used. None of the 3 produce drastically different results. I personally use the custom mode with the same format as Tags with the keyword "Notes:" at the beginning.

Myrkkeijanuan

Thanks for the update! Can you please reconsider injections via keywords? I know we discussed about it before, but I just can't play without these anymore. Please try the implementations from Silly Tavern or NovelAI before completely dismissing the idea. - Here's NovelAI's documentation: https://docs.novelai.net/text/lorebook.html - Here's SillyTavern guidebook: https://docs.sillytavern.app/usage/guidebook/#world-info

Loony

Thanks for the update, do you think the "Save" button can enable a popup or would that be too complicated for a script? A popup like "Did you saved your Memories?" Maybe also... name the buttons: "Save settings" "Save Memories" https://i.imgur.com/gKHFVpc.jpeg .config_popup button { padding: 1px 16px; from padding 8px to 1px changed. (to move the font inside the box) https://i.imgur.com/tp8tmtk.jpeg better color, changed "*" to ¹ (this allow you in future updates to add ²,³ and more notes.) Just some suggestions, in the end is it your script, I could try to edit it on my own, but I used only my F12 console :)

goten will

thaaank youuuuuu for the update!! i got the email <3

rinineaitools

I have skimmed through the NovelAI documentation, and it seems "more manual" than I expected. I could do it by using the names of each memory box as triggers. What we would do as a user would be to create short words as titles for memory blocks, so that the AI can understand the word naturally, but it would only trigger the "self-injection" of that specific block (or blocks). However, this poses the risk of focusing too much on talking about a topic that uses those keywords, while the bot forgets the information from other memory boxes that haven't been injected for a while. Is your idea to only inject memories with the keywords? Or would it be a combination of both systems? (Injecting in every message where the keyword exists, while also retaining the global injection every 4 messages? Or even having a checkbox (on each memory box) to exclude memory boxes from the global injection if you use them frequently?) I will think a bit more about it to see what would be the most useful approach. Actually, I was thinking of something similar, although not based on keywords. I was planning to modify the current "tags" type in the advanced settings to inject memories like this: [Memory Box 1 Title: content] [Memory Box 2 Title: content] etc. (but that wouldn't change the fact that they would be injected together every 4 messages). Of course, implementing both features is another option.

Myrkkeijanuan

I think the user should be able to choose for themselves whether they want "contextual" injections (keyword-based or similar), "non-contextual" injections (current system), or both, via checkboxes, like you said. As for the current system, it would be nice if we had the control over how many messages should pass before the memories are re-injected.

rinineaitools

Yes, there would certainly be an option to choose between the new system and the current one with a checkbox in the settings, similar to the current options. That's not what I was referring to. I meant that if you activate the new tag-based system, you write a lot but don't use certain tags, the bot will forget that information because it's not being used in the tags. That's why I was wondering if the tag mode should be only tags or if both systems should be used simultaneously (injection when a tag is detected, as well as regular injection every X messages). But I suppose it's simpler to create two new options: "Recurrent Injection" and "Tag-based Injection." Let the user decide whether to activate one, the other, or both. And yes, indeed, I had pending the ability for the user to choose how often the recurrent injection is performed (in addition to making it apply to all responses, not just user responses, since in the current state in multi-bot rooms, if you are a spectator, the memory manager won't work).

Myrkkeijanuan

Ah, I understand now. The current system is indeed great for general memories that the bot must not forget, such as overarching storyline, etc. Honestly I think that context-specific injections shouldn't be injected along the regular ones. That would cost too many tokens. So the best solution would be to allow both options, like you said. How would the tag system work? Could I, for example, add all the synonyms for "outfit" to make sure that anytime this topic is mentioned, the memory is injected?

rinineaitools

Yes, I'm doing it like this: https://i.imgur.com/kNSBOx0.gif In the end, it won't be based on the memory box title but rather on a direct match for any of its keywords. Although I see some usage issues. For example, if you define two outfits, one for your character and one for the bot (let's imagine they went shopping and both changed clothes), talking about your outfit or the bot's outfit will inject both memory blocks if they have common synonyms/keywords. However, depending on how you look at it, that could be good. Alternatively, you could specify both outfits in a "general physical appearance" box that encompasses everything related to clothing and physical characteristics of all the characters. Anyway, the system will be ready soon, and then it will depend on how each person uses it.

Myrkkeijanuan

Maybe there could be a warning when a tag is mentioned in multiple blocks. Also, how about case-sensitive tags? Users could then simply separate "my outfit" from "their outfit" or "{{char}}'s outfit". Anyway, I think that's a very, very minor issue. Thank you for the integration of this feature!

rinineaitools

Having the same keyword in several blocks can be useful. Especially if there are "partial relations". Maybe two blocks have 5 keywords each, but share a single keyword, because it is a more synonym oriented to both meanings. Using that word and injecting both boxes would be natural and powerful. The keyword checking doesn't distinguish between uppercase and lowercase letters, accents and punctuation marks are ignored, so, for example, "Outfit?" will match "outfit". You can use keywords with or without spaces. Your list of keywords, for example, can be "my house, my home, my residence, where I live". To avoid false positives, such as writing a word that contains another word, injections will only be performed after adding a space after typing a keyword. For example, if your keyword is "Car", but you want to say "in the carpet", if it wasn't injected with a space afterwards, while you're typing, at the moment you've written "in the car" it would have injected the content about a car when you meant to say "in the carpet". So, nothing is injected until it's validated as a complete word, creating a space after typing. Also, there's no problem with punctuation marks. "in the car?" "in the car!" in the car." all options would work after adding a space after the punctuation mark. You can use {{char}} and {{chr}} both as keywords and in the text of memories. {{char}} will be replaced by the full bot name (or detected as such if it is keyword), while {{chr}} does the same but using the first part of the name if it is a compound name. For example, with Ruby Hoshino {{char}} = Ruby Hoshino {{chr}} = Ruby The update should be ready in a few hours Along with the update, I will publish a guide on how to use the keyword injection system. EDIT: The guide is already published: https://www.patreon.com/posts/84212307

Loony

I really wish the Cai Team would have your Motivation.can they not hire you and you work for them? (Cant press shift+ enter on phone to make a line break, nice patreon...) Edit: @Rinine did you know, that they have a website for jobs, maybe you can contact them and work for them official?

Loony

https://jobs.lever.co/character but right now say it "no jobs", but last time I checked, they searched for like 20 people. Ah here: https://jobs.ashbyhq.com/character. They use 2 pages for jobs ¯⁠\⁠_⁠(⁠ツ⁠)⁠_⁠/⁠¯

rinineaitools

They are a large company affiliated with Google. Their way of working and their interests are very different. Even though they have jobs, they are coding jobs following very specific orders, without any voice or say in the functions of character.ai. Likewise, I couldn't accept it either, even though it may seem like I dedicate a lot of time to this, I am incredibly busy on a daily basis. I am the head of programming at a biotechnology company, I continue to develop and update my game "Neko Loop" on Steam, I maintain this extension project, and I am also an artist and play the guitar. Every day, I have to sacrifice something because there are not enough hours in my days, hahaha.

Anonymous

https://imgur.com/a/p7l254g it gives me an error while loading extension in the browser (there were no errors in 1.2.1 so it's something new

rinineaitools

Can you try downloading it again to verify that there were no download errors? I downloaded the extension from the post, and it works fine for me in Chrome. Which browser are you using? EDIT: Okay, then I'm glad there are no errors.

Loony

"Now there will be scrolling if the message or injection is too long." I always hated it, that you could not read your message if it got too long. I wanted to write a website with the programming ai but after pasting an html code in the text, you could not see anything.

Loony

Yeah, thats true. And if you work for them you wouldn't be allowed to create scripts for us from outside, they wouldn't allow that.

rinineaitools

I will add a checkbox in the next version to choose whether or not to block the height of the message box.

Loony

I like the function! So I don't need a checkbox 😁 i am happy, that you added it.

Loony

I really love how you listen to your fans and that you try your best to improve it!

Anonymous

nawww this is crazy. thank you for what you do man, no longer will i have to stare blankly into space as i mindlessly click try again.

Loony

I love your great work!

Loony

(being on kiwi mobile) when I click the inject all, it does just make a line break nothing else. Only if I click on the inject button of memory 1 does it work. Error in the script or kiwi?

Loony

Oh also starting a chat does not start adding the memory. Its on 1/4 but didn't injected it. Only with the memory 1 button.

rinineaitools

It's strange because "inject all" should work exactly the same as injecting everything every 4 messages. But if you say it's not working either... I'll make a note of it for when I start working on mobile support.

Loony

Yeah its weird. I have to inject every note on my own.