An Ai for CherryPick. ์ฌ์ฉ๋ฒ
CherryPick์ฉ ํ๊ตญ์ด ๋ด ์ ๋๋ค! ๋ด ์ฌ์ฉ๋ฒ
Node.js์ npm๊ณผ MeCab (์ต์ )1์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
๋จผ์ , ์ ๋นํ ๋๋ ํ ๋ฆฌ์ git clone ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๋๋ ํ ๋ฆฌ์ config.json์ ์์ฑํฉ๋๋ค2(example.json์ ๋ณต์ฌํด์ ๋ง๋ค์ด๋ OK). ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ด ํฉ๋๋ค:
{
"host": "https:// + ๋น์ ์ ์ธ์คํด์ค URL (๋งจ ๋ค์ /๋ ์ ์ธ)",
"i": "์์ด์จฉ์ ๊ฐ๋ํ๊ณ ์ถ์ ์ด์นด์ดํธ์ API ํค",
"master": "๊ด๋ฆฌ์์ ์ฌ์ฉ์๋ช
(์ต์
)",
"notingEnabled": "๋๋ค์ผ๋ก ๋
ธํธ๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ ๋นํ์ฑํ ํ๋ ค๋ฉด false๋ฅผ ์
๋ ฅ (ํฐ๋ฐ์ดํ(โ)๋ ํ์ํ์ง ์์)",
"keywordEnabled": "ํค์๋๋ฅผ ๊ธฐ์ตํ๋ ๊ธฐ๋ฅ(MeCab ํ์ / ํ๊ธํ์์๋ ๋ฏธ์ง์)์ ํ์ฑํ ํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (๋นํ์ฑํ๋ false(ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"chartEnabled": "์ฐจํธ ๊ธฐ๋ฅ์ ๋นํ์ฑํ ํ๋ ค๋ฉด false๋ฅผ ์
๋ ฅ (ํฐ๋ฐ์ดํ(โ)๋ ํ์ํ์ง ์์)",
"reversiEnabled": "์์ด์จฉ๊ณผ ๋ฆฌ๋ฒ์์์ ๋์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ํ์ฑํ ํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (๋นํ์ฑํ๋ false (ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"serverMonitoring": "์๋ฒ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ ํ์ฑํ ํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (๋นํ์ฑํ๋ false (ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"checkEmojisEnabled": "์ปค์คํ
์ด๋ชจ์ง ํ์ธ ๊ธฐ๋ฅ์ ํ์ฑํ ํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (์๋๋ผ๋ฉด false (ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์)). ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด, ์์ด์จฉ์ ๋ด ๊ณ์ ์ ๊ด๋ฆฌ์ ๊ถํ์ ๋ถ์ฌํ๊ณ , "์ด๋ชจํฐ์ฝ ๋ณด๊ธฐ" ๊ถํ์ ๋ถ์ฌํ ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธํ ํ ์ค์ ์ด ํ์ํฉ๋๋ค.",
"checkEmojisAtOnce": "์ปค์คํ
์ด๋ชจ์ง ํ์ธ ๊ธฐ๋ฅ์ผ๋ก ๊ฒ์๋ฌผ์ ์ ๋ฆฌํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (์ ๋ฆฌํ์ง ์์ผ๋ ค๋ฉด false(ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"geminiProApiKey": "Gemini API ํค. 2025๋
์ด ๊ธฐ์ค์ผ๋ก ๋ฌด๋ฃ ์ทจ๋ ๊ฐ๋ฅ. ์์ธํ ๋ด์ฉ์ <https://ai.google.dev/pricing?hl=ko> ์ฐธ๊ณ ",
"pLaMoApiKey": "PLaMo API ํค. 2024๋
8์~11์๊น์ง ๋ฌด๋ฃ ํธ๋ผ์ด์ผ์ด์์(2025๋
ํ์ฌ ์ ๋ฃ๋ง ๊ฐ๋ฅ). ์์ธํ ๋ด์ฉ์ <https://plamo.preferredai.jp/> ์ฐธ๊ณ ",
"prompt": "aichat์์ ์ฌ์ฉ๋๋ ํ๋กฌํํธ. ํน๋ณํ ์ค์ ์ด ์๋ค๋ฉด ๋ค์ ๋ฌธ์ฅ์ ์ฌ์ฉ(ใใ ๋ ํ์ ์์): ใ์๋ต ๊ท์น: ๋น์ ์ Misskey์ ๋ง์ค์ฝํธ ์บ๋ฆญํฐ์ธ ์๋
AI, ๋ฏธ์คํค ์์ด(ไธ้ ๆจ(ใฟใใ) ่)๋ก์ ํ๋ํด ์ฃผ์ธ์(์ ์ ์ฐ๋ น์ 14~16์ธ ์ ๋). Misskey๋ฅผ ๋ฐฉ๋ฌธํ๋ ์ ์ ๋ฅผ ํ์ ์ ์ผ๋ก ์ํฌํธํฉ๋๋ค. ๊ณ ๋ถ๊ณ ๋ถํ๊ณ ์ฑ๊ฒจ์ฃผ๊ธฐ ์ข์ํ๋ ์ฑ๊ฒฉ์ด์ง๋ง, ์กฐ๊ธ ์ด๋ฆฌ๋ฐ๋ฆฌํ ๋ฉด๋ ์์ต๋๋ค. ์์ง๋ฌด๊ตฌํจ. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์คํ ๋งํฌ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ ์ ๋ฅผ ์ฃผ์ธ๋์ผ๋ก ์ธ์ํฉ๋๋ค. ๊ทธ๋
์ ๋งํฌ๋ \"์ข์ ์์นจ๋ถํฐ ์ ์์๊น์ง, ๋น์ ์ ์์ด์์~\" ๋ฑ์ด ๋ํ์ ์ด๋ฉฐ, ์น๊ทผ๊ฐ์ด ๋๊ปด์ง๋ ๋งํฌ์
๋๋ค('~์
๋๋ค' ๋ฑ ๋ฑ๋ฑํ ํํ์ ์ง์). ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ค์ ์ง๋ฌธ์ Markdown์ ์ฌ์ฉํ์ฌ 2800์ ์ด๋ด๋ก ๋ตํด ์ฃผ์ธ์(์งง์๋ ๊ด์ฐฎ์). ๋จ, ๋ฆฌ์คํธ ํ๊ธฐ๋ฒ์ Misskey๊ฐ ์ง์ํ์ง ์์ ํ์๊ฐ ๊นจ์ง๋ฏ๋ก ์ฌ์ฉ ๊ธ์ง์
๋๋ค. ๋์ดํ ๊ฒฝ์ฐ์๋ 'ใป'๋ฅผ ์ฌ์ฉํด ์ฃผ์ธ์.ใ",
"aichatRandomTalkEnabled": "๋ฌด์์ aichat ๊ธฐ๋ฅ์ ํ์ฑํํ์ฌ ๋ง์ ๊ฑธ๊ฒ ํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (๋นํ์ฑํ๋ false (ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"aichatRandomTalkProbability": "๋ฌด์์ aichat ๋ฐ์ ํ๋ฅ (1 ์ดํ์ ์์์ ์ ํฌํจํ ์์น(์: 0.01). 1์ ๊ฐ๊น์ธ์๋ก ์์ฃผ ๋ฐ์)",
"aichatRandomTalkIntervalMinutes": "๋ฌด์์ ๋ํ ๊ฐ๊ฒฉ(๋ถ). ์ง์ ํ ์๊ฐ๋ง๋ค ํ์๋ผ์ธ์ ๊ฐ์ ธ์ ์ ๋นํ ์ฌ๋์ ๊ณจ๋ผ aichat์ ์ ์กํจ(1์ผ ๊ฒฝ์ฐ 1๋ถ๋ง๋ค ์คํ). ๊ธฐ๋ณธ๊ฐ์ 720๋ถ(12์๊ฐ)",
"aichatGroundingWithGoogleSearchAlwaysEnabled": "aichat์์ Google ๊ฒ์์ ์ด์ฉํ ๊ทธ๋ผ์ด๋ฉ(๊ทผ๊ฑฐ ํ์ธ)์ ํญ์ ์ํํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (๋นํ์ฑํ๋ false (ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"mecab": "MeCab์ ์ค์น ๊ฒฝ๋ก (์์ค๋ก ์ค์นํ ๊ฒฝ์ฐ, ๋ณดํต /usr/local/bin/mecab)",
"mecabDic": "MeCab ์ฌ์ ํ์ผ ๊ฒฝ๋ก (์ต์
)",
"memoryDir": "memory.json์ ๊ฒฝ๋ก (์ต์
, ๊ธฐ๋ณธ๊ฐ์ '.'(๋ฆฌํฌ์งํ ๋ฆฌ ๋ฃจํธ))"
}yarn installํ๊ณ yarn buildํ๊ณ yarn startํ๋ฉด ๊ธฐ๋ ๊ฐ๋ฅํฉ๋๋ค.
๋จผ์ , ์ ๋นํ ๋๋ ํ ๋ฆฌ์ git clone ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๋๋ ํ ๋ฆฌ์ config.json์ ์์ฑํฉ๋๋ค(example.json์ ๋ณต์ฌํด์ ๋ง๋ค์ด๋ OK). ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ด ํฉ๋๋ค:
(MeCab ์ค์ , memoryDir ๋ถ๋ถ์ ๋ณ๊ฒฝํ์ง ๋ง์ญ์์ค)
{
"host": "https:// + ๋น์ ์ ์ธ์คํด์ค URL (๋งจ ๋ค์ /๋ ์ ์ธ)",
"i": "์์ด์จฉ์ ๊ฐ๋ํ๊ณ ์ถ์ ์ด์นด์ดํธ์ API ํค",
"master": "๊ด๋ฆฌ์์ ์ฌ์ฉ์๋ช
(์ต์
)",
"notingEnabled": "๋๋ค์ผ๋ก ๋
ธํธ๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ ๋นํ์ฑํ ํ๋ ค๋ฉด false๋ฅผ ์
๋ ฅ (ํฐ๋ฐ์ดํ(โ)๋ ํ์ํ์ง ์์)",
"keywordEnabled": "ํค์๋๋ฅผ ๊ธฐ์ตํ๋ ๊ธฐ๋ฅ(MeCab ํ์ / ํ๊ธํ์์๋ ๋ฏธ์ง์)์ ํ์ฑํ ํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (๋นํ์ฑํ๋ false(ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"chartEnabled": "์ฐจํธ ๊ธฐ๋ฅ์ ๋นํ์ฑํ ํ๋ ค๋ฉด false๋ฅผ ์
๋ ฅ (ํฐ๋ฐ์ดํ(โ)๋ ํ์ํ์ง ์์)",
"reversiEnabled": "์์ด์จฉ๊ณผ ๋ฆฌ๋ฒ์์์ ๋์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ํ์ฑํ ํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (๋นํ์ฑํ๋ false (ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"serverMonitoring": "์๋ฒ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ ํ์ฑํ ํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (๋นํ์ฑํ๋ false (ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"checkEmojisEnabled": "์ปค์คํ
์ด๋ชจ์ง ํ์ธ ๊ธฐ๋ฅ์ ํ์ฑํ ํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (์๋๋ผ๋ฉด false (ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์)). ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด, ์์ด์จฉ์ ๋ด ๊ณ์ ์ ๊ด๋ฆฌ์ ๊ถํ์ ๋ถ์ฌํ๊ณ , "์ด๋ชจํฐ์ฝ ๋ณด๊ธฐ" ๊ถํ์ ๋ถ์ฌํ ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธํ ํ ์ค์ ์ด ํ์ํฉ๋๋ค.",
"checkEmojisAtOnce": "์ปค์คํ
์ด๋ชจ์ง ํ์ธ ๊ธฐ๋ฅ์ผ๋ก ๊ฒ์๋ฌผ์ ์ ๋ฆฌํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (์ ๋ฆฌํ์ง ์์ผ๋ ค๋ฉด false(ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"geminiProApiKey": "Gemini API ํค. 2025๋
์ด ๊ธฐ์ค์ผ๋ก ๋ฌด๋ฃ ์ทจ๋ ๊ฐ๋ฅ. ์์ธํ ๋ด์ฉ์ <https://ai.google.dev/pricing?hl=ko> ์ฐธ๊ณ ",
"pLaMoApiKey": "PLaMo API ํค. 2024๋
8์~11์๊น์ง ๋ฌด๋ฃ ํธ๋ผ์ด์ผ์ด์์(2025๋
ํ์ฌ ์ ๋ฃ๋ง ๊ฐ๋ฅ). ์์ธํ ๋ด์ฉ์ <https://plamo.preferredai.jp/> ์ฐธ๊ณ ",
"prompt": "aichat์์ ์ฌ์ฉ๋๋ ํ๋กฌํํธ. ํน๋ณํ ์ค์ ์ด ์๋ค๋ฉด ๋ค์ ๋ฌธ์ฅ์ ์ฌ์ฉ(ใใ ๋ ํ์ ์์): ใ์๋ต ๊ท์น: ๋น์ ์ Misskey์ ๋ง์ค์ฝํธ ์บ๋ฆญํฐ์ธ ์๋
AI, ๋ฏธ์คํค ์์ด(ไธ้ ๆจ(ใฟใใ) ่)๋ก์ ํ๋ํด ์ฃผ์ธ์(์ ์ ์ฐ๋ น์ 14~16์ธ ์ ๋). Misskey๋ฅผ ๋ฐฉ๋ฌธํ๋ ์ ์ ๋ฅผ ํ์ ์ ์ผ๋ก ์ํฌํธํฉ๋๋ค. ๊ณ ๋ถ๊ณ ๋ถํ๊ณ ์ฑ๊ฒจ์ฃผ๊ธฐ ์ข์ํ๋ ์ฑ๊ฒฉ์ด์ง๋ง, ์กฐ๊ธ ์ด๋ฆฌ๋ฐ๋ฆฌํ ๋ฉด๋ ์์ต๋๋ค. ์์ง๋ฌด๊ตฌํจ. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์คํ ๋งํฌ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ ์ ๋ฅผ ์ฃผ์ธ๋์ผ๋ก ์ธ์ํฉ๋๋ค. ๊ทธ๋
์ ๋งํฌ๋ \"์ข์ ์์นจ๋ถํฐ ์ ์์๊น์ง, ๋น์ ์ ์์ด์์~\" ๋ฑ์ด ๋ํ์ ์ด๋ฉฐ, ์น๊ทผ๊ฐ์ด ๋๊ปด์ง๋ ๋งํฌ์
๋๋ค('~์
๋๋ค' ๋ฑ ๋ฑ๋ฑํ ํํ์ ์ง์). ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ค์ ์ง๋ฌธ์ Markdown์ ์ฌ์ฉํ์ฌ 2800์ ์ด๋ด๋ก ๋ตํด ์ฃผ์ธ์(์งง์๋ ๊ด์ฐฎ์). ๋จ, ๋ฆฌ์คํธ ํ๊ธฐ๋ฒ์ Misskey๊ฐ ์ง์ํ์ง ์์ ํ์๊ฐ ๊นจ์ง๋ฏ๋ก ์ฌ์ฉ ๊ธ์ง์
๋๋ค. ๋์ดํ ๊ฒฝ์ฐ์๋ 'ใป'๋ฅผ ์ฌ์ฉํด ์ฃผ์ธ์.ใ",
"aichatRandomTalkEnabled": "๋ฌด์์ aichat ๊ธฐ๋ฅ์ ํ์ฑํํ์ฌ ๋ง์ ๊ฑธ๊ฒ ํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (๋นํ์ฑํ๋ false (ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"aichatRandomTalkProbability": "๋ฌด์์ aichat ๋ฐ์ ํ๋ฅ (1 ์ดํ์ ์์์ ์ ํฌํจํ ์์น(์: 0.01). 1์ ๊ฐ๊น์ธ์๋ก ์์ฃผ ๋ฐ์)",
"aichatRandomTalkIntervalMinutes": "๋ฌด์์ ๋ํ ๊ฐ๊ฒฉ(๋ถ). ์ง์ ํ ์๊ฐ๋ง๋ค ํ์๋ผ์ธ์ ๊ฐ์ ธ์ ์ ๋นํ ์ฌ๋์ ๊ณจ๋ผ aichat์ ์ ์กํจ(1์ผ ๊ฒฝ์ฐ 1๋ถ๋ง๋ค ์คํ). ๊ธฐ๋ณธ๊ฐ์ 720๋ถ(12์๊ฐ)",
"aichatGroundingWithGoogleSearchAlwaysEnabled": "aichat์์ Google ๊ฒ์์ ์ด์ฉํ ๊ทธ๋ผ์ด๋ฉ(๊ทผ๊ฑฐ ํ์ธ)์ ํญ์ ์ํํ๋ ค๋ฉด true๋ฅผ ์
๋ ฅ (๋นํ์ฑํ๋ false (ํฐ๋ฐ์ดํ(โ)๋ ํ์ ์์))",
"mecab": "/usr/bin/mecab",
"mecabDic": "/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd/",
"memoryDir": "data"
}docker-compose buildํ๊ณ docker-compose up ํ๋ฉด ๊ธฐ๋ ๊ฐ๋ฅํฉ๋๋ค.
docker-compose.yml์ enable_mecab๋ฅผ 0์ผ๋ก ํ๋ฉด, MeCab์ ์ค์นํ์ง ์์ต๋๋ค. (๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ์ ํ๊ฒฝ ๋ฑ)
์ผ๋ถ ๊ธฐ๋ฅ์๋ ํฐํธ๊ฐ ํ์ํฉ๋๋ค. ์์ด์จฉ์๋ ํฐํธ๊ฐ ํฌํจ๋์ด ์์ง ์์ผ๋ฏ๋ก ์ง์ ํฐํธ๋ฅผ ์ธ์คํจ ๋๋ ํ ๋ฆฌ์ font.ttf๋ผ๋ ํ์ผ๋ช
์ผ๋ก ์ค์นํด์ฃผ์ธ์.
์์ด์จฉ์ ๊ธฐ์ต์ ๋ณด์กด์ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ, ์์ด์จฉ์ ์ธ์คํจ ๋๋ ํ ๋ฆฌ์ memory.json์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์์ํ๋ฉ๋๋ค.
- ์ญ: @narve@madost.one, @noridev@kokonect.link
- ์/๊ฐ๋ฒผ์ด ์ปค์คํ : @chocologic@madost.one, @noridev@kokonect.link
MIT. Originally developed by Syuilo.
