This commit is contained in:
sheepbox8646
2026-03-14 15:12:26 +00:00
parent 73bf24fa8f
commit c2949f28b2
75 changed files with 303 additions and 153 deletions
+2 -2
View File
@@ -9,7 +9,7 @@
<link rel="preload stylesheet" href="/assets/style.B5ESegsT.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.vRX7s8uv.js"></script>
<script type="module" src="/assets/app.CPkm3PJ3.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="icon" href="/logo.png">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -17,7 +17,7 @@
</head>
<body>
<div id="app"></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"about.md\":\"Dtv0dtOs\",\"blogs_2026-02-16.md\":\"cjgZmunL\",\"blogs_index.md\":\"B2P01evP\",\"channels_discord.md\":\"WNpdGj29\",\"channels_feishu.md\":\"BBJ8KQPd\",\"channels_index.md\":\"T_VHXXZf\",\"channels_qq.md\":\"B_4bodh-\",\"channels_telegram.md\":\"B9i-uoiX\",\"getting-started_bot.md\":\"AR4RHnpe\",\"getting-started_browser.md\":\"B8YEEooM\",\"getting-started_channels.md\":\"C0YPWL-y\",\"getting-started_container.md\":\"D49M0dHe\",\"getting-started_email.md\":\"BRkUZLh2\",\"getting-started_files.md\":\"CczR71or\",\"getting-started_heartbeat.md\":\"B-SMiJUD\",\"getting-started_mcp.md\":\"Bb2toM2o\",\"getting-started_memory.md\":\"Dt7Ez9Lk\",\"getting-started_provider-and-model.md\":\"BquaPnJe\",\"getting-started_schedule.md\":\"CNDu3SiN\",\"getting-started_search-provider.md\":\"R9B5DkBj\",\"getting-started_skills.md\":\"DzSZ-qiC\",\"getting-started_subagents.md\":\"6oBLlW8a\",\"index.md\":\"D1yGsPie\",\"installation_docker.md\":\"CO5FeqPE\",\"memory-providers_builtin.md\":\"BDxazTz6\",\"memory-providers_index.md\":\"DNPBOVmb\",\"zh_concepts_identity-and-binding.md\":\"7e9GdoK6\",\"zh_concepts_index.md\":\"Brd21jcS\",\"zh_index.md\":\"CZQRt_rQ\",\"zh_style_terminology.md\":\"DLv5QofI\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Memoh Documentation\",\"description\":\"Multi-Member, Structured Long-Memory, Containerized AI Agent System.\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Memoh\",\"sidebar\":{\"/blogs/\":[{\"text\":\"Blogs\",\"link\":\"/blogs/index.md\",\"items\":[{\"text\":\"Introduction (Feb 2026)\",\"link\":\"/blogs/2026-02-16.md\"}]}],\"/\":[{\"text\":\"Overview\",\"link\":\"/index.md\"},{\"text\":\"About Memoh\",\"link\":\"/about.md\"},{\"text\":\"Installation\",\"items\":[{\"text\":\"Docker\",\"link\":\"/installation/docker.md\"}]},{\"text\":\"Getting Started\",\"items\":[{\"text\":\"LLM Provider and Model\",\"link\":\"/getting-started/provider-and-model.md\"},{\"text\":\"Bot Management\",\"link\":\"/getting-started/bot.md\"},{\"text\":\"Container Management\",\"link\":\"/getting-started/container.md\"},{\"text\":\"Files Management\",\"link\":\"/getting-started/files.md\"},{\"text\":\"Bot Skills\",\"link\":\"/getting-started/skills.md\"},{\"text\":\"MCP Connections\",\"link\":\"/getting-started/mcp.md\"},{\"text\":\"Bot Channels\",\"link\":\"/getting-started/channels.md\"},{\"text\":\"Browser Contexts\",\"link\":\"/getting-started/browser.md\"},{\"text\":\"Memory Management\",\"link\":\"/getting-started/memory.md\"},{\"text\":\"Subagents\",\"link\":\"/getting-started/subagents.md\"},{\"text\":\"Heartbeat\",\"link\":\"/getting-started/heartbeat.md\"},{\"text\":\"Scheduled Tasks\",\"link\":\"/getting-started/schedule.md\"},{\"text\":\"Search Providers\",\"link\":\"/getting-started/search-provider.md\"},{\"text\":\"Email Providers\",\"link\":\"/getting-started/email.md\"}]},{\"text\":\"Memory Providers\",\"items\":[{\"text\":\"Overview\",\"link\":\"/memory-providers/index.md\"},{\"text\":\"Built-in\",\"link\":\"/memory-providers/builtin.md\"}]},{\"text\":\"Channels\",\"items\":[{\"text\":\"Overview\",\"link\":\"/channels/index.md\"},{\"text\":\"Telegram\",\"link\":\"/channels/telegram.md\"},{\"text\":\"Feishu (Lark)\",\"link\":\"/channels/feishu.md\"},{\"text\":\"Discord\",\"link\":\"/channels/discord.md\"},{\"text\":\"QQ\",\"link\":\"/channels/qq.md\"}]}],\"/zh/\":[{\"text\":\"文档总览\",\"link\":\"/zh/index.md\"}]},\"nav\":[{\"text\":\"Guides\",\"link\":\"/\"},{\"text\":\"Blogs\",\"link\":\"/blogs/\"}],\"logo\":{\"src\":\"/logo.png\",\"alt\":\"Memoh\"},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/memohai/Memoh\"}],\"footer\":{\"message\":\"Published under AGPLv3\",\"copyright\":\"Copyright © 2024 Memoh\"},\"search\":{\"provider\":\"local\"},\"editLink\":{\"pattern\":\"https://github.com/memohai/Memoh/edit/main/docs/docs/:path\",\"text\":\"Edit on GitHub\"},\"lastUpdated\":{\"text\":\"Last Updated\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"medium\"}}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en\"},\"zh\":{\"label\":\"简体中文\",\"lang\":\"zh\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"about.md\":\"BA4ADbiz\",\"blogs_2026-02-16.md\":\"cjgZmunL\",\"blogs_index.md\":\"B2P01evP\",\"channels_discord.md\":\"WNpdGj29\",\"channels_feishu.md\":\"BBJ8KQPd\",\"channels_index.md\":\"T_VHXXZf\",\"channels_qq.md\":\"B_4bodh-\",\"channels_telegram.md\":\"B9i-uoiX\",\"getting-started_access.md\":\"Ci3R9wdO\",\"getting-started_bot.md\":\"AR4RHnpe\",\"getting-started_browser.md\":\"B-tRWxYY\",\"getting-started_channels.md\":\"C0YPWL-y\",\"getting-started_container.md\":\"D49M0dHe\",\"getting-started_email.md\":\"BRkUZLh2\",\"getting-started_files.md\":\"CczR71or\",\"getting-started_heartbeat.md\":\"B-SMiJUD\",\"getting-started_mcp.md\":\"Bb2toM2o\",\"getting-started_memory.md\":\"2LaCipf1\",\"getting-started_provider-and-model.md\":\"BquaPnJe\",\"getting-started_schedule.md\":\"CNDu3SiN\",\"getting-started_search-provider.md\":\"R9B5DkBj\",\"getting-started_skills.md\":\"DzSZ-qiC\",\"getting-started_subagents.md\":\"6oBLlW8a\",\"index.md\":\"D1yGsPie\",\"installation_docker.md\":\"BYtBZBwq\",\"memory-providers_builtin.md\":\"D5BGaMgs\",\"memory-providers_index.md\":\"CTmbFtvS\",\"memory-providers_mem0.md\":\"DYavcIID\",\"memory-providers_openviking.md\":\"DRJRcuFd\",\"tts-providers_edge.md\":\"Uf8Yzj2Y\",\"tts-providers_index.md\":\"vUh5rqaG\",\"zh_concepts_identity-and-binding.md\":\"7e9GdoK6\",\"zh_concepts_index.md\":\"Brd21jcS\",\"zh_index.md\":\"CZQRt_rQ\",\"zh_style_terminology.md\":\"DLv5QofI\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Memoh Documentation\",\"description\":\"Multi-Member, Structured Long-Memory, Containerized AI Agent System.\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Memoh\",\"sidebar\":{\"/blogs/\":[{\"text\":\"Blogs\",\"link\":\"/blogs/index.md\",\"items\":[{\"text\":\"Introduction (Feb 2026)\",\"link\":\"/blogs/2026-02-16.md\"}]}],\"/\":[{\"text\":\"Overview\",\"link\":\"/index.md\"},{\"text\":\"About Memoh\",\"link\":\"/about.md\"},{\"text\":\"Installation\",\"items\":[{\"text\":\"Docker\",\"link\":\"/installation/docker.md\"}]},{\"text\":\"Getting Started\",\"items\":[{\"text\":\"LLM Provider and Model\",\"link\":\"/getting-started/provider-and-model.md\"},{\"text\":\"Bot Management\",\"link\":\"/getting-started/bot.md\"},{\"text\":\"Bot Access Control\",\"link\":\"/getting-started/access.md\"},{\"text\":\"Container Management\",\"link\":\"/getting-started/container.md\"},{\"text\":\"Files Management\",\"link\":\"/getting-started/files.md\"},{\"text\":\"Bot Skills\",\"link\":\"/getting-started/skills.md\"},{\"text\":\"MCP Connections\",\"link\":\"/getting-started/mcp.md\"},{\"text\":\"Bot Channels\",\"link\":\"/getting-started/channels.md\"},{\"text\":\"Browser Contexts\",\"link\":\"/getting-started/browser.md\"},{\"text\":\"Memory Management\",\"link\":\"/getting-started/memory.md\"},{\"text\":\"Subagents\",\"link\":\"/getting-started/subagents.md\"},{\"text\":\"Heartbeat\",\"link\":\"/getting-started/heartbeat.md\"},{\"text\":\"Scheduled Tasks\",\"link\":\"/getting-started/schedule.md\"},{\"text\":\"Search Providers\",\"link\":\"/getting-started/search-provider.md\"},{\"text\":\"Email Providers\",\"link\":\"/getting-started/email.md\"}]},{\"text\":\"Memory Providers\",\"items\":[{\"text\":\"Overview\",\"link\":\"/memory-providers/index.md\"},{\"text\":\"Built-in\",\"link\":\"/memory-providers/builtin.md\"},{\"text\":\"Mem0\",\"link\":\"/memory-providers/mem0.md\"},{\"text\":\"OpenViking\",\"link\":\"/memory-providers/openviking.md\"}]},{\"text\":\"TTS Providers\",\"items\":[{\"text\":\"Overview\",\"link\":\"/tts-providers/index.md\"},{\"text\":\"Edge TTS\",\"link\":\"/tts-providers/edge.md\"}]},{\"text\":\"Channels\",\"items\":[{\"text\":\"Overview\",\"link\":\"/channels/index.md\"},{\"text\":\"Telegram\",\"link\":\"/channels/telegram.md\"},{\"text\":\"Feishu (Lark)\",\"link\":\"/channels/feishu.md\"},{\"text\":\"Discord\",\"link\":\"/channels/discord.md\"},{\"text\":\"QQ\",\"link\":\"/channels/qq.md\"}]}],\"/zh/\":[{\"text\":\"文档总览\",\"link\":\"/zh/index.md\"}]},\"nav\":[{\"text\":\"Guides\",\"link\":\"/\"},{\"text\":\"Blogs\",\"link\":\"/blogs/\"}],\"logo\":{\"src\":\"/logo.png\",\"alt\":\"Memoh\"},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/memohai/Memoh\"}],\"footer\":{\"message\":\"Published under AGPLv3\",\"copyright\":\"Copyright © 2024 Memoh\"},\"search\":{\"provider\":\"local\"},\"editLink\":{\"pattern\":\"https://github.com/memohai/Memoh/edit/main/docs/docs/:path\",\"text\":\"Edit on GitHub\"},\"lastUpdated\":{\"text\":\"Last Updated\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"medium\"}}},\"locales\":{\"root\":{\"label\":\"English\",\"lang\":\"en\"},\"zh\":{\"label\":\"简体中文\",\"lang\":\"zh\"}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
</body>
</html>
+5 -5
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
import{_ as a,o as t,c as o,ag as i}from"./chunks/framework.BZohXCq9.js";const m=JSON.parse('{"title":"About Memoh","description":"","frontmatter":{},"headers":[],"relativePath":"about.md","filePath":"about.md","lastUpdated":1773501089000}'),n={name:"about.md"};function r(s,e,l,c,d,h){return t(),o("div",null,[...e[0]||(e[0]=[i("",36)])])}const p=a(n,[["render",r]]);export{m as __pageData,p as default};
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
import{_ as a,o as t,c as o,ag as i}from"./chunks/framework.BZohXCq9.js";const h=JSON.parse('{"title":"About Memoh","description":"","frontmatter":{},"headers":[],"relativePath":"about.md","filePath":"about.md","lastUpdated":1772873936000}'),n={name:"about.md"};function r(s,e,l,c,d,m){return t(),o("div",null,[...e[0]||(e[0]=[i("",36)])])}const p=a(n,[["render",r]]);export{h as __pageData,p as default};
@@ -1 +1 @@
import{t as p}from"./chunks/theme.CWUcoPue.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.BZohXCq9.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};
import{t as p}from"./chunks/theme.CR2Gxc1V.js";import{R as s,a2 as i,a3 as u,a4 as c,a5 as l,a6 as f,a7 as d,a8 as m,a9 as h,aa as g,ab as A,d as v,u as y,v as C,s as P,ac as b,ad as w,ae as R,af as E}from"./chunks/framework.BZohXCq9.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),S=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{P(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),R(),n.setup&&n.setup(),()=>E(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(S)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
import{_ as t,o as s,c as a,ag as o}from"./chunks/framework.BZohXCq9.js";const g=JSON.parse('{"title":"Bot Access Control","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/access.md","filePath":"getting-started/access.md","lastUpdated":1773501089000}'),n={name:"getting-started/access.md"};function i(r,e,l,c,h,d){return s(),a("div",null,[...e[0]||(e[0]=[o("",41)])])}const b=t(n,[["render",i]]);export{g as __pageData,b as default};
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
import{_ as e,o,c as r,ag as s}from"./chunks/framework.BZohXCq9.js";const p=JSON.parse('{"title":"Browser Contexts","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/browser.md","filePath":"getting-started/browser.md","lastUpdated":1773501089000}'),a={name:"getting-started/browser.md"};function i(n,t,l,d,c,h){return o(),r("div",null,[...t[0]||(t[0]=[s("",36)])])}const b=e(a,[["render",i]]);export{p as __pageData,b as default};
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
import{_ as e,o,c as r,ag as a}from"./chunks/framework.BZohXCq9.js";const b=JSON.parse('{"title":"Browser Contexts","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/browser.md","filePath":"getting-started/browser.md","lastUpdated":1772873936000}'),n={name:"getting-started/browser.md"};function s(i,t,l,d,c,g){return o(),r("div",null,[...t[0]||(t[0]=[a("",30)])])}const p=e(n,[["render",s]]);export{b as __pageData,p as default};
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{_ as t,o,c as r,ag as a}from"./chunks/framework.BZohXCq9.js";const u=JSON.parse('{"title":"Bot Memory Management","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/memory.md","filePath":"getting-started/memory.md","lastUpdated":1772873936000}'),i={name:"getting-started/memory.md"};function n(s,e,m,l,c,h){return o(),r("div",null,[...e[0]||(e[0]=[a("",30)])])}const g=t(i,[["render",n]]);export{u as __pageData,g as default};
import{_ as t,o,c as r,ag as a}from"./chunks/framework.BZohXCq9.js";const u=JSON.parse('{"title":"Bot Memory Management","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started/memory.md","filePath":"getting-started/memory.md","lastUpdated":1773501089000}'),i={name:"getting-started/memory.md"};function n(s,e,m,l,d,c){return o(),r("div",null,[...e[0]||(e[0]=[a("",30)])])}const g=t(i,[["render",n]]);export{u as __pageData,g as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
import{_ as i,o as e,c as a,ag as t}from"./chunks/framework.BZohXCq9.js";const k=JSON.parse('{"title":"Docker Installation","description":"","frontmatter":{},"headers":[],"relativePath":"installation/docker.md","filePath":"installation/docker.md","lastUpdated":1773501089000}'),n={name:"installation/docker.md"};function o(l,s,r,h,d,p){return e(),a("div",null,[...s[0]||(s[0]=[t("",65)])])}const g=i(n,[["render",o]]);export{k as __pageData,g as default};
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
import{_ as i,o as a,c as e,ag as t}from"./chunks/framework.BZohXCq9.js";const c=JSON.parse('{"title":"Docker Installation","description":"","frontmatter":{},"headers":[],"relativePath":"installation/docker.md","filePath":"installation/docker.md","lastUpdated":1773439453000}'),n={name:"installation/docker.md"};function l(h,s,o,r,d,p){return a(),e("div",null,[...s[0]||(s[0]=[t("",50)])])}const g=i(n,[["render",l]]);export{c as __pageData,g as default};
@@ -1 +0,0 @@
import{_ as r,o as i,c as t,ag as o}from"./chunks/framework.BZohXCq9.js";const h=JSON.parse('{"title":"Built-in Memory Provider","description":"","frontmatter":{},"headers":[],"relativePath":"memory-providers/builtin.md","filePath":"memory-providers/builtin.md","lastUpdated":1772873936000}'),a={name:"memory-providers/builtin.md"};function n(l,e,d,s,m,g){return i(),t("div",null,[...e[0]||(e[0]=[o('<h1 id="built-in-memory-provider" tabindex="-1">Built-in Memory Provider <a class="header-anchor" href="#built-in-memory-provider" aria-label="Permalink to &quot;Built-in Memory Provider&quot;"></a></h1><p>The built-in memory provider is the standard memory backend shipped with Memoh. It works with Memoh&#39;s memory pipeline and supports:</p><ul><li>Automatic memory extraction from conversations</li><li>Semantic memory retrieval during chat</li><li>Manual memory creation and editing</li><li>Memory compaction and rebuild workflows</li></ul><p>To configure it well, you usually assign:</p><ul><li><strong>Memory Model</strong>: The LLM used for memory extraction and decision making</li><li><strong>Embedding Model</strong>: The embedding model used for dense vector search</li></ul><hr><h2 id="creating-a-built-in-provider" tabindex="-1">Creating a Built-in Provider <a class="header-anchor" href="#creating-a-built-in-provider" aria-label="Permalink to &quot;Creating a Built-in Provider&quot;"></a></h2><p>Manage providers from the <strong>Memory Providers</strong> page in the sidebar.</p><ol><li>Navigate to the <strong>Memory Providers</strong> page.</li><li>Click <strong>Add Memory Provider</strong>.</li><li>Fill in the following fields: <ul><li><strong>Name</strong>: A display name for this provider.</li><li><strong>Provider Type</strong>: Select <code>builtin</code>.</li></ul></li><li>Click <strong>Create</strong>.</li></ol><hr><h2 id="configuring-a-built-in-provider" tabindex="-1">Configuring a Built-in Provider <a class="header-anchor" href="#configuring-a-built-in-provider" aria-label="Permalink to &quot;Configuring a Built-in Provider&quot;"></a></h2><p>After creating a provider, select it from the sidebar and configure its settings.</p><table tabindex="0"><thead><tr><th>Field</th><th>Description</th></tr></thead><tbody><tr><td><strong>Name</strong></td><td>The display name shown in the UI.</td></tr><tr><td><strong>Provider Type</strong></td><td>The provider implementation. Currently this is <code>builtin</code> only.</td></tr><tr><td><strong>Memory Model</strong></td><td>Optional chat model used for memory extraction and memory-related decisions.</td></tr><tr><td><strong>Embedding Model</strong></td><td>Optional embedding model used for semantic vector search.</td></tr></tbody></table><h3 id="managing-providers" tabindex="-1">Managing Providers <a class="header-anchor" href="#managing-providers" aria-label="Permalink to &quot;Managing Providers&quot;"></a></h3><ul><li><strong>Edit</strong>: Select a provider and update its name or model bindings.</li><li><strong>Delete</strong>: Remove a provider you no longer use.</li></ul><hr><h2 id="assigning-a-memory-provider-to-a-bot" tabindex="-1">Assigning a Memory Provider to a Bot <a class="header-anchor" href="#assigning-a-memory-provider-to-a-bot" aria-label="Permalink to &quot;Assigning a Memory Provider to a Bot&quot;"></a></h2><ol><li>Navigate to the <strong>Bots</strong> page and open your bot.</li><li>Go to the <strong>Settings</strong> tab.</li><li>Find the <strong>Memory Provider</strong> dropdown.</li><li>Select the provider you created.</li><li>Click <strong>Save</strong>.</li></ol><p>If no memory provider is selected, the bot will not use that provider configuration in its runtime settings.</p><hr><h2 id="using-memory-after-setup" tabindex="-1">Using Memory After Setup <a class="header-anchor" href="#using-memory-after-setup" aria-label="Permalink to &quot;Using Memory After Setup&quot;"></a></h2><p>Once a memory provider is assigned to the bot, you can manage actual memories from the bot&#39;s <strong>Memory</strong> tab:</p><ul><li>Create memories manually</li><li>Extract memories from conversations</li><li>Search, edit, and delete memories</li><li>Compact or rebuild the memory store</li></ul><p>For day-to-day memory operations, continue with <a href="/getting-started/memory.html">Bot Memory Management</a>.</p>',24)])])}const p=r(a,[["render",n]]);export{h as __pageData,p as default};
@@ -1 +0,0 @@
import{_ as r,o as i,c as t,ag as o}from"./chunks/framework.BZohXCq9.js";const h=JSON.parse('{"title":"Built-in Memory Provider","description":"","frontmatter":{},"headers":[],"relativePath":"memory-providers/builtin.md","filePath":"memory-providers/builtin.md","lastUpdated":1772873936000}'),a={name:"memory-providers/builtin.md"};function n(l,e,d,s,m,g){return i(),t("div",null,[...e[0]||(e[0]=[o("",24)])])}const p=r(a,[["render",n]]);export{h as __pageData,p as default};
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
import{_ as t,o as i,c as a,ag as s}from"./chunks/framework.BZohXCq9.js";const g=JSON.parse('{"title":"Built-in Memory Provider","description":"","frontmatter":{},"headers":[],"relativePath":"memory-providers/builtin.md","filePath":"memory-providers/builtin.md","lastUpdated":1773501089000}'),r={name:"memory-providers/builtin.md"};function o(n,e,d,l,h,p){return i(),a("div",null,[...e[0]||(e[0]=[s("",41)])])}const m=t(r,[["render",o]]);export{g as __pageData,m as default};
@@ -0,0 +1 @@
import{_ as r,o,c as a,ag as i}from"./chunks/framework.BZohXCq9.js";const v=JSON.parse('{"title":"Memory Providers","description":"","frontmatter":{},"headers":[],"relativePath":"memory-providers/index.md","filePath":"memory-providers/index.md","lastUpdated":1773501089000}'),t={name:"memory-providers/index.md"};function s(m,e,n,l,d,h){return o(),a("div",null,[...e[0]||(e[0]=[i('<h1 id="memory-providers" tabindex="-1">Memory Providers <a class="header-anchor" href="#memory-providers" aria-label="Permalink to &quot;Memory Providers&quot;"></a></h1><p>Memoh uses a <strong>Memory Provider</strong> to define how a bot stores, retrieves, and manages long-term memory. A bot can bind one memory provider in its <strong>Settings</strong> tab, and that provider becomes the backend for memory extraction and memory search.</p><h2 id="available-providers" tabindex="-1">Available Providers <a class="header-anchor" href="#available-providers" aria-label="Permalink to &quot;Available Providers&quot;"></a></h2><p>Memoh supports the following memory providers:</p><ul><li><a href="/memory-providers/builtin.html">Built-in</a>: The default memory system included with Memoh. Supports three modes — off (file-based), sparse (neural sparse vectors), and dense (embedding-based semantic search). Fully self-hosted.</li><li><a href="/memory-providers/mem0.html">Mem0</a>: SaaS memory provider via the Mem0 API. Requires an API key.</li><li><a href="/memory-providers/openviking.html">OpenViking</a>: Self-hosted or SaaS memory provider with its own API.</li></ul><hr><h2 id="basic-flow" tabindex="-1">Basic Flow <a class="header-anchor" href="#basic-flow" aria-label="Permalink to &quot;Basic Flow&quot;"></a></h2><ol><li>Open the <strong>Memory Providers</strong> page from the sidebar.</li><li>Create a provider instance using one of the supported provider types.</li><li>Configure the provider settings.</li><li>Open a bot&#39;s <strong>Settings</strong> tab and assign that provider in <strong>Memory Provider</strong>.</li><li>Manage actual memories from the bot&#39;s <strong>Memory</strong> tab.</li></ol><hr><h2 id="next-steps" tabindex="-1">Next Steps <a class="header-anchor" href="#next-steps" aria-label="Permalink to &quot;Next Steps&quot;"></a></h2><ul><li><a href="/memory-providers/builtin.html">Built-in Memory Provider</a> — Default, self-hosted with three memory modes.</li><li><a href="/memory-providers/mem0.html">Mem0 Memory Provider</a> — SaaS via Mem0 API.</li><li><a href="/memory-providers/openviking.html">OpenViking Memory Provider</a> — Self-hosted or SaaS.</li><li><a href="/getting-started/memory.html">Bot Memory Management</a> — Manage memory entries after the provider is assigned.</li></ul>',11)])])}const f=r(t,[["render",s]]);export{v as __pageData,f as default};
@@ -0,0 +1 @@
import{_ as r,o,c as a,ag as i}from"./chunks/framework.BZohXCq9.js";const v=JSON.parse('{"title":"Memory Providers","description":"","frontmatter":{},"headers":[],"relativePath":"memory-providers/index.md","filePath":"memory-providers/index.md","lastUpdated":1773501089000}'),t={name:"memory-providers/index.md"};function s(m,e,n,l,d,h){return o(),a("div",null,[...e[0]||(e[0]=[i("",11)])])}const f=r(t,[["render",s]]);export{v as __pageData,f as default};
@@ -1 +0,0 @@
import{_ as r,o,c as t,ag as i}from"./chunks/framework.BZohXCq9.js";const c=JSON.parse('{"title":"Memory Providers","description":"","frontmatter":{},"headers":[],"relativePath":"memory-providers/index.md","filePath":"memory-providers/index.md","lastUpdated":1772873936000}'),a={name:"memory-providers/index.md"};function s(n,e,d,l,m,p){return o(),t("div",null,[...e[0]||(e[0]=[i('<h1 id="memory-providers" tabindex="-1">Memory Providers <a class="header-anchor" href="#memory-providers" aria-label="Permalink to &quot;Memory Providers&quot;"></a></h1><p>Memoh uses a <strong>Memory Provider</strong> to define how a bot stores, retrieves, and manages long-term memory. A bot can bind one memory provider in its <strong>Settings</strong> tab, and that provider becomes the backend for memory extraction and memory search.</p><h2 id="available-providers" tabindex="-1">Available Providers <a class="header-anchor" href="#available-providers" aria-label="Permalink to &quot;Available Providers&quot;"></a></h2><p>Memoh currently includes the following memory provider:</p><ul><li><a href="/memory-providers/builtin.html">Built-in</a>: The default memory system included with Memoh.</li></ul><p>More provider types may be added in future versions, but right now <code>builtin</code> is the only supported provider type in the product and web UI.</p><hr><h2 id="basic-flow" tabindex="-1">Basic Flow <a class="header-anchor" href="#basic-flow" aria-label="Permalink to &quot;Basic Flow&quot;"></a></h2><ol><li>Open the <strong>Memory Providers</strong> page from the sidebar.</li><li>Create a provider instance using one of the supported provider types.</li><li>Configure the provider settings.</li><li>Open a bot&#39;s <strong>Settings</strong> tab and assign that provider in <strong>Memory Provider</strong>.</li><li>Manage actual memories from the bot&#39;s <strong>Memory</strong> tab.</li></ol><hr><h2 id="next-steps" tabindex="-1">Next Steps <a class="header-anchor" href="#next-steps" aria-label="Permalink to &quot;Next Steps&quot;"></a></h2><ul><li>To configure the currently supported provider, continue with <a href="/memory-providers/builtin.html">Built-in Memory Provider</a>.</li><li>To manage memory entries after the provider is assigned, see <a href="/getting-started/memory.html">Bot Memory Management</a>.</li></ul>',12)])])}const u=r(a,[["render",s]]);export{c as __pageData,u as default};
@@ -1 +0,0 @@
import{_ as r,o,c as t,ag as i}from"./chunks/framework.BZohXCq9.js";const c=JSON.parse('{"title":"Memory Providers","description":"","frontmatter":{},"headers":[],"relativePath":"memory-providers/index.md","filePath":"memory-providers/index.md","lastUpdated":1772873936000}'),a={name:"memory-providers/index.md"};function s(n,e,d,l,m,p){return o(),t("div",null,[...e[0]||(e[0]=[i("",12)])])}const u=r(a,[["render",s]]);export{c as __pageData,u as default};
@@ -0,0 +1 @@
import{_ as t,o as r,c as o,ag as a}from"./chunks/framework.BZohXCq9.js";const c=JSON.parse('{"title":"Mem0 Memory Provider","description":"","frontmatter":{},"headers":[],"relativePath":"memory-providers/mem0.md","filePath":"memory-providers/mem0.md","lastUpdated":1773501089000}'),i={name:"memory-providers/mem0.md"};function n(d,e,s,m,l,g){return r(),o("div",null,[...e[0]||(e[0]=[a('<h1 id="mem0-memory-provider" tabindex="-1">Mem0 Memory Provider <a class="header-anchor" href="#mem0-memory-provider" aria-label="Permalink to &quot;Mem0 Memory Provider&quot;"></a></h1><p>Mem0 is a SaaS memory provider that connects your bot to the <a href="https://mem0.ai" target="_blank" rel="noreferrer">Mem0</a> platform. Instead of managing memory infrastructure yourself, Mem0 handles storage, retrieval, and indexing through its cloud API.</p><hr><h2 id="creating-a-mem0-provider" tabindex="-1">Creating a Mem0 Provider <a class="header-anchor" href="#creating-a-mem0-provider" aria-label="Permalink to &quot;Creating a Mem0 Provider&quot;"></a></h2><ol><li>Navigate to the <strong>Memory Providers</strong> page.</li><li>Click <strong>Add Memory Provider</strong>.</li><li>Fill in the following fields: <ul><li><strong>Name</strong>: A display name for this provider.</li><li><strong>Provider Type</strong>: Select <code>mem0</code>.</li></ul></li><li>Click <strong>Create</strong>.</li></ol><hr><h2 id="configuring-a-mem0-provider" tabindex="-1">Configuring a Mem0 Provider <a class="header-anchor" href="#configuring-a-mem0-provider" aria-label="Permalink to &quot;Configuring a Mem0 Provider&quot;"></a></h2><p>After creating a provider, select it from the list and configure its settings.</p><table tabindex="0"><thead><tr><th>Field</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td><strong>Base URL</strong></td><td>No</td><td>Mem0 API base URL. Defaults to <code>https://api.mem0.ai</code> when empty.</td></tr><tr><td><strong>API Key</strong></td><td>Yes</td><td>API key for Mem0 authentication (stored as a secret).</td></tr><tr><td><strong>Organization ID</strong></td><td>No</td><td>Organization ID for workspace scoping.</td></tr><tr><td><strong>Project ID</strong></td><td>No</td><td>Project ID for workspace scoping.</td></tr></tbody></table><hr><h2 id="assigning-a-mem0-provider-to-a-bot" tabindex="-1">Assigning a Mem0 Provider to a Bot <a class="header-anchor" href="#assigning-a-mem0-provider-to-a-bot" aria-label="Permalink to &quot;Assigning a Mem0 Provider to a Bot&quot;"></a></h2><ol><li>Navigate to the <strong>Bots</strong> page and open your bot.</li><li>Go to the <strong>Settings</strong> tab.</li><li>Find the <strong>Memory Provider</strong> dropdown.</li><li>Select the Mem0 provider you created.</li><li>Click <strong>Save</strong>.</li></ol><hr><h2 id="usage" tabindex="-1">Usage <a class="header-anchor" href="#usage" aria-label="Permalink to &quot;Usage&quot;"></a></h2><p>Once assigned, the bot will use Mem0 as its memory backend. Memory extraction, search, and management operations are routed through the Mem0 API.</p><p>For day-to-day memory operations, see <a href="/getting-started/memory.html">Bot Memory Management</a>.</p>',16)])])}const p=t(i,[["render",n]]);export{c as __pageData,p as default};
@@ -0,0 +1 @@
import{_ as t,o as r,c as o,ag as a}from"./chunks/framework.BZohXCq9.js";const c=JSON.parse('{"title":"Mem0 Memory Provider","description":"","frontmatter":{},"headers":[],"relativePath":"memory-providers/mem0.md","filePath":"memory-providers/mem0.md","lastUpdated":1773501089000}'),i={name:"memory-providers/mem0.md"};function n(d,e,s,m,l,g){return r(),o("div",null,[...e[0]||(e[0]=[a("",16)])])}const p=t(i,[["render",n]]);export{c as __pageData,p as default};
@@ -0,0 +1 @@
import{_ as i,o as r,c as t,ag as o}from"./chunks/framework.BZohXCq9.js";const c=JSON.parse('{"title":"OpenViking Memory Provider","description":"","frontmatter":{},"headers":[],"relativePath":"memory-providers/openviking.md","filePath":"memory-providers/openviking.md","lastUpdated":1773501089000}'),n={name:"memory-providers/openviking.md"};function a(d,e,s,g,l,p){return r(),t("div",null,[...e[0]||(e[0]=[o('<h1 id="openviking-memory-provider" tabindex="-1">OpenViking Memory Provider <a class="header-anchor" href="#openviking-memory-provider" aria-label="Permalink to &quot;OpenViking Memory Provider&quot;"></a></h1><p>OpenViking is a memory provider that can be self-hosted or used as a SaaS service. It provides an alternative memory backend for bots that need a dedicated memory API.</p><hr><h2 id="creating-an-openviking-provider" tabindex="-1">Creating an OpenViking Provider <a class="header-anchor" href="#creating-an-openviking-provider" aria-label="Permalink to &quot;Creating an OpenViking Provider&quot;"></a></h2><ol><li>Navigate to the <strong>Memory Providers</strong> page.</li><li>Click <strong>Add Memory Provider</strong>.</li><li>Fill in the following fields: <ul><li><strong>Name</strong>: A display name for this provider.</li><li><strong>Provider Type</strong>: Select <code>openviking</code>.</li></ul></li><li>Click <strong>Create</strong>.</li></ol><hr><h2 id="configuring-an-openviking-provider" tabindex="-1">Configuring an OpenViking Provider <a class="header-anchor" href="#configuring-an-openviking-provider" aria-label="Permalink to &quot;Configuring an OpenViking Provider&quot;"></a></h2><p>After creating a provider, select it from the list and configure its settings.</p><table tabindex="0"><thead><tr><th>Field</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td><strong>Base URL</strong></td><td>Yes</td><td>OpenViking API endpoint (e.g. <code>http://openviking:8088</code>).</td></tr><tr><td><strong>API Key</strong></td><td>No</td><td>API key for authentication (stored as a secret).</td></tr></tbody></table><hr><h2 id="assigning-an-openviking-provider-to-a-bot" tabindex="-1">Assigning an OpenViking Provider to a Bot <a class="header-anchor" href="#assigning-an-openviking-provider-to-a-bot" aria-label="Permalink to &quot;Assigning an OpenViking Provider to a Bot&quot;"></a></h2><ol><li>Navigate to the <strong>Bots</strong> page and open your bot.</li><li>Go to the <strong>Settings</strong> tab.</li><li>Find the <strong>Memory Provider</strong> dropdown.</li><li>Select the OpenViking provider you created.</li><li>Click <strong>Save</strong>.</li></ol><hr><h2 id="usage" tabindex="-1">Usage <a class="header-anchor" href="#usage" aria-label="Permalink to &quot;Usage&quot;"></a></h2><p>Once assigned, the bot will use OpenViking as its memory backend. Memory extraction, search, and management operations are routed through the OpenViking API.</p><p>For day-to-day memory operations, see <a href="/getting-started/memory.html">Bot Memory Management</a>.</p>',16)])])}const m=i(n,[["render",a]]);export{c as __pageData,m as default};
@@ -0,0 +1 @@
import{_ as i,o as r,c as t,ag as o}from"./chunks/framework.BZohXCq9.js";const c=JSON.parse('{"title":"OpenViking Memory Provider","description":"","frontmatter":{},"headers":[],"relativePath":"memory-providers/openviking.md","filePath":"memory-providers/openviking.md","lastUpdated":1773501089000}'),n={name:"memory-providers/openviking.md"};function a(d,e,s,g,l,p){return r(),t("div",null,[...e[0]||(e[0]=[o("",16)])])}const m=i(n,[["render",a]]);export{c as __pageData,m as default};
+1
View File
@@ -0,0 +1 @@
import{_ as t,o,c as a,ag as d}from"./chunks/framework.BZohXCq9.js";const p=JSON.parse('{"title":"Edge TTS","description":"","frontmatter":{},"headers":[],"relativePath":"tts-providers/edge.md","filePath":"tts-providers/edge.md","lastUpdated":1773501089000}'),i={name:"tts-providers/edge.md"};function r(s,e,n,l,c,g){return o(),a("div",null,[...e[0]||(e[0]=[d('<h1 id="edge-tts" tabindex="-1">Edge TTS <a class="header-anchor" href="#edge-tts" aria-label="Permalink to &quot;Edge TTS&quot;"></a></h1><p>Edge TTS uses Microsoft Edge&#39;s public read-aloud API for speech synthesis. It is free, requires no API key, and supports 256+ voices across 50+ languages.</p><hr><h2 id="creating-an-edge-tts-provider" tabindex="-1">Creating an Edge TTS Provider <a class="header-anchor" href="#creating-an-edge-tts-provider" aria-label="Permalink to &quot;Creating an Edge TTS Provider&quot;"></a></h2><ol><li>Navigate to the <strong>TTS Providers</strong> page.</li><li>Click <strong>Add</strong>.</li><li>Select <code>edge</code> as the provider type.</li><li>Click <strong>Create</strong>.</li></ol><p>The default model <code>edge-read-aloud</code> is automatically imported when the provider is created.</p><hr><h2 id="configuring-the-model" tabindex="-1">Configuring the Model <a class="header-anchor" href="#configuring-the-model" aria-label="Permalink to &quot;Configuring the Model&quot;"></a></h2><p>Click the <code>edge-read-aloud</code> model to configure its settings.</p><table tabindex="0"><thead><tr><th>Field</th><th>Description</th></tr></thead><tbody><tr><td><strong>Voice</strong></td><td>Language + voice ID. Default: <code>en-US-EmmaMultilingualNeural</code>. Over 256 voices available across 50+ languages.</td></tr><tr><td><strong>Format</strong></td><td>Audio output format. Options: <code>audio-24khz-48kbitrate-mono-mp3</code> (default), <code>audio-24khz-96kbitrate-mono-mp3</code>, <code>webm-24khz-16bit-mono-opus</code>.</td></tr><tr><td><strong>Speed</strong></td><td>Playback speed. Options: <code>0.5</code>, <code>1.0</code> (default), <code>2.0</code>, <code>3.0</code>.</td></tr><tr><td><strong>Pitch</strong></td><td>Voice pitch adjustment. Range: <code>-100</code> to <code>+100</code>, default <code>0</code>.</td></tr></tbody></table><hr><h2 id="assigning-to-a-bot" tabindex="-1">Assigning to a Bot <a class="header-anchor" href="#assigning-to-a-bot" aria-label="Permalink to &quot;Assigning to a Bot&quot;"></a></h2><ol><li>Open a bot&#39;s <strong>Settings</strong> tab.</li><li>Find the <strong>TTS Model</strong> dropdown.</li><li>Select the configured Edge TTS model.</li><li>Click <strong>Save</strong>.</li></ol><p>The bot can now synthesize speech using Edge TTS.</p><hr><h2 id="testing" tabindex="-1">Testing <a class="header-anchor" href="#testing" aria-label="Permalink to &quot;Testing&quot;"></a></h2><p>Use the built-in synthesis test button on the model configuration page to preview how the selected voice, format, speed, and pitch sound before assigning to a bot.</p>',17)])])}const u=t(i,[["render",r]]);export{p as __pageData,u as default};
@@ -0,0 +1 @@
import{_ as t,o,c as a,ag as d}from"./chunks/framework.BZohXCq9.js";const p=JSON.parse('{"title":"Edge TTS","description":"","frontmatter":{},"headers":[],"relativePath":"tts-providers/edge.md","filePath":"tts-providers/edge.md","lastUpdated":1773501089000}'),i={name:"tts-providers/edge.md"};function r(s,e,n,l,c,g){return o(),a("div",null,[...e[0]||(e[0]=[d("",17)])])}const u=t(i,[["render",r]]);export{p as __pageData,u as default};
@@ -0,0 +1 @@
import{_ as t,o as r,c as o,ag as a}from"./chunks/framework.BZohXCq9.js";const g=JSON.parse('{"title":"TTS Providers","description":"","frontmatter":{},"headers":[],"relativePath":"tts-providers/index.md","filePath":"tts-providers/index.md","lastUpdated":1773501089000}'),i={name:"tts-providers/index.md"};function s(d,e,l,n,c,h){return r(),o("div",null,[...e[0]||(e[0]=[a('<h1 id="tts-providers" tabindex="-1">TTS Providers <a class="header-anchor" href="#tts-providers" aria-label="Permalink to &quot;TTS Providers&quot;"></a></h1><p>Memoh supports <strong>Text-to-Speech (TTS)</strong> so bots can synthesize spoken audio from text. The TTS system is organized into three layers:</p><ul><li><strong>TTS Provider</strong>: A service type (e.g. Edge TTS). You create named provider instances from the TTS Providers page.</li><li><strong>TTS Model</strong>: A specific voice/model under a provider (e.g. <code>edge-read-aloud</code>). Models have configurable voice, format, speed, and pitch settings.</li><li><strong>Bot Assignment</strong>: In Bot Settings, select a TTS Model. The bot can then synthesize speech in conversations.</li></ul><hr><h2 id="basic-flow" tabindex="-1">Basic Flow <a class="header-anchor" href="#basic-flow" aria-label="Permalink to &quot;Basic Flow&quot;"></a></h2><ol><li>Navigate to the <strong>TTS Providers</strong> page from the sidebar.</li><li>Click <strong>Add</strong> and select a provider type (e.g. <code>edge</code>).</li><li>Click <strong>Create</strong> — the provider&#39;s default model is auto-imported.</li><li>Click the model to configure voice, format, speed, and pitch.</li><li>Test synthesis with the built-in test button.</li><li>Open a bot&#39;s <strong>Settings</strong> tab and select the TTS Model.</li><li>Save — the bot can now synthesize speech.</li></ol><hr><h2 id="available-providers" tabindex="-1">Available Providers <a class="header-anchor" href="#available-providers" aria-label="Permalink to &quot;Available Providers&quot;"></a></h2><table tabindex="0"><thead><tr><th>Provider</th><th>Description</th></tr></thead><tbody><tr><td><a href="/tts-providers/edge.html">Edge TTS</a></td><td>Free, uses Microsoft Edge&#39;s public read-aloud API. 256+ voices across 50+ languages. No API key required.</td></tr></tbody></table><hr><h2 id="next-steps" tabindex="-1">Next Steps <a class="header-anchor" href="#next-steps" aria-label="Permalink to &quot;Next Steps&quot;"></a></h2><ul><li>To set up the currently available provider, continue with <a href="/tts-providers/edge.html">Edge TTS</a>.</li></ul>',12)])])}const v=t(i,[["render",s]]);export{g as __pageData,v as default};
@@ -0,0 +1 @@
import{_ as t,o as r,c as o,ag as a}from"./chunks/framework.BZohXCq9.js";const g=JSON.parse('{"title":"TTS Providers","description":"","frontmatter":{},"headers":[],"relativePath":"tts-providers/index.md","filePath":"tts-providers/index.md","lastUpdated":1773501089000}'),i={name:"tts-providers/index.md"};function s(d,e,l,n,c,h){return r(),o("div",null,[...e[0]||(e[0]=[a("",12)])])}const v=t(i,[["render",s]]);export{g as __pageData,v as default};
File diff suppressed because one or more lines are too long
+3 -3
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
+4 -4
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
{"about.md":"Dtv0dtOs","blogs_2026-02-16.md":"cjgZmunL","blogs_index.md":"B2P01evP","channels_discord.md":"WNpdGj29","channels_feishu.md":"BBJ8KQPd","channels_index.md":"T_VHXXZf","channels_qq.md":"B_4bodh-","channels_telegram.md":"B9i-uoiX","getting-started_bot.md":"AR4RHnpe","getting-started_browser.md":"B8YEEooM","getting-started_channels.md":"C0YPWL-y","getting-started_container.md":"D49M0dHe","getting-started_email.md":"BRkUZLh2","getting-started_files.md":"CczR71or","getting-started_heartbeat.md":"B-SMiJUD","getting-started_mcp.md":"Bb2toM2o","getting-started_memory.md":"Dt7Ez9Lk","getting-started_provider-and-model.md":"BquaPnJe","getting-started_schedule.md":"CNDu3SiN","getting-started_search-provider.md":"R9B5DkBj","getting-started_skills.md":"DzSZ-qiC","getting-started_subagents.md":"6oBLlW8a","index.md":"D1yGsPie","installation_docker.md":"CO5FeqPE","memory-providers_builtin.md":"BDxazTz6","memory-providers_index.md":"DNPBOVmb","zh_concepts_identity-and-binding.md":"7e9GdoK6","zh_concepts_index.md":"Brd21jcS","zh_index.md":"CZQRt_rQ","zh_style_terminology.md":"DLv5QofI"}
{"about.md":"BA4ADbiz","blogs_2026-02-16.md":"cjgZmunL","blogs_index.md":"B2P01evP","channels_discord.md":"WNpdGj29","channels_feishu.md":"BBJ8KQPd","channels_index.md":"T_VHXXZf","channels_qq.md":"B_4bodh-","channels_telegram.md":"B9i-uoiX","getting-started_access.md":"Ci3R9wdO","getting-started_bot.md":"AR4RHnpe","getting-started_browser.md":"B-tRWxYY","getting-started_channels.md":"C0YPWL-y","getting-started_container.md":"D49M0dHe","getting-started_email.md":"BRkUZLh2","getting-started_files.md":"CczR71or","getting-started_heartbeat.md":"B-SMiJUD","getting-started_mcp.md":"Bb2toM2o","getting-started_memory.md":"2LaCipf1","getting-started_provider-and-model.md":"BquaPnJe","getting-started_schedule.md":"CNDu3SiN","getting-started_search-provider.md":"R9B5DkBj","getting-started_skills.md":"DzSZ-qiC","getting-started_subagents.md":"6oBLlW8a","index.md":"D1yGsPie","installation_docker.md":"BYtBZBwq","memory-providers_builtin.md":"D5BGaMgs","memory-providers_index.md":"CTmbFtvS","memory-providers_mem0.md":"DYavcIID","memory-providers_openviking.md":"DRJRcuFd","tts-providers_edge.md":"Uf8Yzj2Y","tts-providers_index.md":"vUh5rqaG","zh_concepts_identity-and-binding.md":"7e9GdoK6","zh_concepts_index.md":"Brd21jcS","zh_index.md":"CZQRt_rQ","zh_style_terminology.md":"DLv5QofI"}
+4 -4
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3 -3
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long