mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
deploy: fc0ac96403
This commit is contained in:
@@ -1 +1 @@
|
||||
import{t as p}from"./chunks/theme.DcdcgJt5.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.DEqXEGcv.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.C1FTWL1O.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.DEqXEGcv.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
+1
-1
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 a,c as o,ag as i}from"./chunks/framework.DEqXEGcv.js";const p=JSON.parse('{"title":"Bot","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/bot.md","filePath":"concepts/bot.md","lastUpdated":1771163124000}'),n={name:"concepts/bot.md"};function r(l,e,s,d,c,h){return a(),o("div",null,[...e[0]||(e[0]=[i('<h1 id="bot" tabindex="-1">Bot <a class="header-anchor" href="#bot" aria-label="Permalink to "Bot""></a></h1><p>A <strong>bot</strong> is the primary runtime entity in Memoh.</p><p>Each bot has its own:</p><ul><li>Configuration</li><li>Container lifecycle</li><li>Memory scope</li><li>Channel bindings</li><li>Model assignments</li></ul><h2 id="key-settings" tabindex="-1">Key Settings <a class="header-anchor" href="#key-settings" aria-label="Permalink to "Key Settings""></a></h2><ul><li><strong>max-load-time</strong> (<code>max_context_load_time</code>): how many minutes of recent conversation context are loaded into prompts</li><li><strong>language</strong>: preferred language for interaction (default is <code>auto</code>)</li><li><strong>chat model / memory model / embedding model</strong>: model IDs used by this bot</li></ul><h2 id="why-it-matters" tabindex="-1">Why It Matters <a class="header-anchor" href="#why-it-matters" aria-label="Permalink to "Why It Matters""></a></h2><p>The bot abstraction allows Memoh to isolate behavior and resources per agent, while keeping management centralized in one Web UI.</p><h2 id="web-ui-path" tabindex="-1">Web UI Path <a class="header-anchor" href="#web-ui-path" aria-label="Permalink to "Web UI Path""></a></h2><ul><li><code>Bots > Select a bot > Settings</code></li></ul>',10)])])}const u=t(n,[["render",r]]);export{p as __pageData,u as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o as a,c as o,ag as i}from"./chunks/framework.DEqXEGcv.js";const p=JSON.parse('{"title":"Bot","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/bot.md","filePath":"concepts/bot.md","lastUpdated":1771163124000}'),n={name:"concepts/bot.md"};function r(l,e,s,d,c,h){return a(),o("div",null,[...e[0]||(e[0]=[i("",10)])])}const u=t(n,[["render",r]]);export{p as __pageData,u as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as t,c as n,ag as l}from"./chunks/framework.DEqXEGcv.js";const p=JSON.parse('{"title":"Channel","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/channel.md","filePath":"concepts/channel.md","lastUpdated":1771163124000}'),o={name:"concepts/channel.md"};function r(i,a,s,c,h,d){return t(),n("div",null,[...a[0]||(a[0]=[l('<h1 id="channel" tabindex="-1">Channel <a class="header-anchor" href="#channel" aria-label="Permalink to "Channel""></a></h1><p>A <strong>channel</strong> connects a bot to an external communication platform.</p><p>Examples include:</p><ul><li>Telegram</li><li>Feishu (Lark)</li><li>Web chat</li></ul><h2 id="what-a-channel-configuration-defines" tabindex="-1">What a Channel Configuration Defines <a class="header-anchor" href="#what-a-channel-configuration-defines" aria-label="Permalink to "What a Channel Configuration Defines""></a></h2><ul><li>Platform type and credentials</li><li>Message routing from external users to a target bot</li><li>Reply delivery back to the source platform</li></ul><h2 id="why-it-matters" tabindex="-1">Why It Matters <a class="header-anchor" href="#why-it-matters" aria-label="Permalink to "Why It Matters""></a></h2><p>Channels decouple bot logic from transport, so one bot can serve users across multiple platforms.</p><h2 id="web-ui-path" tabindex="-1">Web UI Path <a class="header-anchor" href="#web-ui-path" aria-label="Permalink to "Web UI Path""></a></h2><ul><li><code>Bots > Select a bot > Channels</code></li></ul>',10)])])}const f=e(o,[["render",r]]);export{p as __pageData,f as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as t,c as n,ag as l}from"./chunks/framework.DEqXEGcv.js";const p=JSON.parse('{"title":"Channel","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/channel.md","filePath":"concepts/channel.md","lastUpdated":1771163124000}'),o={name:"concepts/channel.md"};function r(i,a,s,c,h,d){return t(),n("div",null,[...a[0]||(a[0]=[l("",10)])])}const f=e(o,[["render",r]]);export{p as __pageData,f as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as a,c as o,ag as n}from"./chunks/framework.DEqXEGcv.js";const u=JSON.parse('{"title":"Container","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/container.md","filePath":"concepts/container.md","lastUpdated":1771163124000}'),i={name:"concepts/container.md"};function r(s,t,l,c,h,d){return a(),o("div",null,[...t[0]||(t[0]=[n('<h1 id="container" tabindex="-1">Container <a class="header-anchor" href="#container" aria-label="Permalink to "Container""></a></h1><p>Each bot runs in its own <strong>isolated container</strong>.</p><h2 id="what-isolation-gives-you" tabindex="-1">What Isolation Gives You <a class="header-anchor" href="#what-isolation-gives-you" aria-label="Permalink to "What Isolation Gives You""></a></h2><ul><li>Separate filesystem per bot</li><li>Separate runtime process space</li><li>Controlled lifecycle (create/start/stop/delete)</li></ul><p>This prevents one bot from interfering with another bot's execution environment.</p><h2 id="why-it-matters" tabindex="-1">Why It Matters <a class="header-anchor" href="#why-it-matters" aria-label="Permalink to "Why It Matters""></a></h2><p>Container isolation is the foundation that allows bots to run tools, commands, and file operations safely in parallel.</p><h2 id="web-ui-path" tabindex="-1">Web UI Path <a class="header-anchor" href="#web-ui-path" aria-label="Permalink to "Web UI Path""></a></h2><ul><li><code>Bots > Select a bot > Container</code></li></ul>',9)])])}const m=e(i,[["render",r]]);export{u as __pageData,m as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as a,c as o,ag as n}from"./chunks/framework.DEqXEGcv.js";const u=JSON.parse('{"title":"Container","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/container.md","filePath":"concepts/container.md","lastUpdated":1771163124000}'),i={name:"concepts/container.md"};function r(s,t,l,c,h,d){return a(),o("div",null,[...t[0]||(t[0]=[n("",9)])])}const m=e(i,[["render",r]]);export{u as __pageData,m as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as a,c as o,ag as i}from"./chunks/framework.DEqXEGcv.js";const p=JSON.parse('{"title":"Conversation and History","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/conversation-and-history.md","filePath":"concepts/conversation-and-history.md","lastUpdated":1771163124000}'),n={name:"concepts/conversation-and-history.md"};function s(r,t,l,c,h,d){return a(),o("div",null,[...t[0]||(t[0]=[i('<h1 id="conversation-and-history" tabindex="-1">Conversation and History <a class="header-anchor" href="#conversation-and-history" aria-label="Permalink to "Conversation and History""></a></h1><p>Memoh organizes interactions as <strong>conversations</strong> with preserved <strong>history</strong>.</p><h2 id="what-this-includes" tabindex="-1">What This Includes <a class="header-anchor" href="#what-this-includes" aria-label="Permalink to "What This Includes""></a></h2><ul><li>Ongoing chat context between users and bots</li><li>Message-level timeline and traceability</li><li>Source context for memory extraction and debugging</li></ul><h2 id="why-it-matters" tabindex="-1">Why It Matters <a class="header-anchor" href="#why-it-matters" aria-label="Permalink to "Why It Matters""></a></h2><p>Conversation history powers:</p><ul><li>Better response continuity</li><li>Auditing and troubleshooting</li><li>Post-hoc analysis of bot behavior</li></ul><h2 id="web-ui-path" tabindex="-1">Web UI Path <a class="header-anchor" href="#web-ui-path" aria-label="Permalink to "Web UI Path""></a></h2><ul><li><code>Chat > Select conversation</code></li><li><code>Bots > Select a bot > History</code></li></ul>',9)])])}const _=e(n,[["render",s]]);export{p as __pageData,_ as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as a,c as o,ag as i}from"./chunks/framework.DEqXEGcv.js";const p=JSON.parse('{"title":"Conversation and History","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/conversation-and-history.md","filePath":"concepts/conversation-and-history.md","lastUpdated":1771163124000}'),n={name:"concepts/conversation-and-history.md"};function s(r,t,l,c,h,d){return a(),o("div",null,[...t[0]||(t[0]=[i("",9)])])}const _=e(n,[["render",s]]);export{p as __pageData,_ as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o,c as n,ag as a}from"./chunks/framework.DEqXEGcv.js";const m=JSON.parse('{"title":"Concepts Overview","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/index.md","filePath":"concepts/index.md","lastUpdated":1771163124000}'),r={name:"concepts/index.md"};function i(l,e,s,c,d,h){return o(),n("div",null,[...e[0]||(e[0]=[a('<h1 id="concepts-overview" tabindex="-1">Concepts Overview <a class="header-anchor" href="#concepts-overview" aria-label="Permalink to "Concepts Overview""></a></h1><p>This section explains the core design concepts behind Memoh.</p><p>Use these pages when you want to understand how Memoh is designed, why features exist, and how different parts work together.</p><h2 id="concept-map" tabindex="-1">Concept Map <a class="header-anchor" href="#concept-map" aria-label="Permalink to "Concept Map""></a></h2><ul><li><strong>Bot</strong>: the core runtime unit</li><li><strong>Provider and Model</strong>: how LLM capability is plugged in</li><li><strong>Memory</strong>: how long-term knowledge is stored and retrieved</li><li><strong>Channel</strong>: how external platforms connect to bots</li><li><strong>Schedule</strong>: how tasks are triggered automatically</li><li><strong>Container</strong>: isolated execution environment per bot</li><li><strong>MCP</strong>: external tool and service integration protocol</li><li><strong>Subagents</strong>: specialized delegated agents</li><li><strong>Skills</strong>: reusable capability prompts/instructions</li><li><strong>Conversation and History</strong>: chat context and traceability</li></ul><h2 id="recommended-reading-order" tabindex="-1">Recommended Reading Order <a class="header-anchor" href="#recommended-reading-order" aria-label="Permalink to "Recommended Reading Order""></a></h2><ol><li><a href="/concepts/bot.html">Bot</a></li><li><a href="/concepts/provider-and-model.html">Provider and Model</a></li><li><a href="/concepts/memory.html">Memory</a></li><li><a href="/concepts/channel.html">Channel</a></li><li><a href="/concepts/container.html">Container</a></li><li><a href="/concepts/schedule.html">Schedule</a></li><li><a href="/concepts/mcp.html">MCP</a></li><li><a href="/concepts/subagents.html">Subagents</a></li><li><a href="/concepts/skills.html">Skills</a></li><li><a href="/concepts/conversation-and-history.html">Conversation and History</a></li></ol>',7)])])}const g=t(r,[["render",i]]);export{m as __pageData,g as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o,c as n,ag as a}from"./chunks/framework.DEqXEGcv.js";const m=JSON.parse('{"title":"Concepts Overview","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/index.md","filePath":"concepts/index.md","lastUpdated":1771163124000}'),r={name:"concepts/index.md"};function i(l,e,s,c,d,h){return o(),n("div",null,[...e[0]||(e[0]=[a("",7)])])}const g=t(r,[["render",i]]);export{m as __pageData,g as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as a,o as e,c as o,ag as i}from"./chunks/framework.DEqXEGcv.js";const m=JSON.parse('{"title":"MCP","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/mcp.md","filePath":"concepts/mcp.md","lastUpdated":1771163124000}'),s={name:"concepts/mcp.md"};function n(r,t,c,l,d,h){return e(),o("div",null,[...t[0]||(t[0]=[i('<h1 id="mcp" tabindex="-1">MCP <a class="header-anchor" href="#mcp" aria-label="Permalink to "MCP""></a></h1><p><strong>MCP (Model Context Protocol)</strong> connects Memoh bots to external tool services.</p><h2 id="what-mcp-adds" tabindex="-1">What MCP Adds <a class="header-anchor" href="#what-mcp-adds" aria-label="Permalink to "What MCP Adds""></a></h2><ul><li>Standardized tool discovery and invocation</li><li>Remote capability extension without changing core bot code</li><li>Per-bot integration flexibility</li></ul><p>Memoh supports MCP connections so bots can access external systems through a unified protocol.</p><h2 id="why-it-matters" tabindex="-1">Why It Matters <a class="header-anchor" href="#why-it-matters" aria-label="Permalink to "Why It Matters""></a></h2><p>MCP makes capability extension modular. You can add or swap tool backends with minimal coupling.</p><h2 id="web-ui-path" tabindex="-1">Web UI Path <a class="header-anchor" href="#web-ui-path" aria-label="Permalink to "Web UI Path""></a></h2><ul><li><code>Bots > Select a bot > MCP</code></li></ul>',9)])])}const u=a(s,[["render",n]]);export{m as __pageData,u as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as a,o as e,c as o,ag as i}from"./chunks/framework.DEqXEGcv.js";const m=JSON.parse('{"title":"MCP","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/mcp.md","filePath":"concepts/mcp.md","lastUpdated":1771163124000}'),s={name:"concepts/mcp.md"};function n(r,t,c,l,d,h){return e(),o("div",null,[...t[0]||(t[0]=[i("",9)])])}const u=a(s,[["render",n]]);export{m as __pageData,u as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o as a,c as o,ag as r}from"./chunks/framework.DEqXEGcv.js";const p=JSON.parse('{"title":"Memory","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/memory.md","filePath":"concepts/memory.md","lastUpdated":1771163124000}'),i={name:"concepts/memory.md"};function s(n,e,l,m,c,d){return a(),o("div",null,[...e[0]||(e[0]=[r('<h1 id="memory" tabindex="-1">Memory <a class="header-anchor" href="#memory" aria-label="Permalink to "Memory""></a></h1><p><strong>Memory</strong> is Memoh's long-term knowledge system for each bot.</p><h2 id="how-it-works" tabindex="-1">How It Works <a class="header-anchor" href="#how-it-works" aria-label="Permalink to "How It Works""></a></h2><ul><li>Important facts are extracted from conversations</li><li>Memories are stored and indexed</li><li>Relevant memories are retrieved by semantic similarity when needed</li></ul><p>Memoh combines vector retrieval with keyword-style retrieval for better recall and precision.</p><h2 id="why-it-matters" tabindex="-1">Why It Matters <a class="header-anchor" href="#why-it-matters" aria-label="Permalink to "Why It Matters""></a></h2><p>Memory enables continuity across long timelines, so bots can maintain context beyond short prompt windows.</p><h2 id="web-ui-path" tabindex="-1">Web UI Path <a class="header-anchor" href="#web-ui-path" aria-label="Permalink to "Web UI Path""></a></h2><ul><li><code>Bots > Select a bot > Memory</code></li></ul>',9)])])}const y=t(i,[["render",s]]);export{p as __pageData,y as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as t,o as a,c as o,ag as r}from"./chunks/framework.DEqXEGcv.js";const p=JSON.parse('{"title":"Memory","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/memory.md","filePath":"concepts/memory.md","lastUpdated":1771163124000}'),i={name:"concepts/memory.md"};function s(n,e,l,m,c,d){return a(),o("div",null,[...e[0]||(e[0]=[r("",9)])])}const y=t(i,[["render",s]]);export{p as __pageData,y as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as o,o as t,c as d,ag as a}from"./chunks/framework.DEqXEGcv.js";const h=JSON.parse('{"title":"Provider and Model","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/provider-and-model.md","filePath":"concepts/provider-and-model.md","lastUpdated":1771163124000}'),r={name:"concepts/provider-and-model.md"};function i(n,e,l,s,c,m){return t(),d("div",null,[...e[0]||(e[0]=[a('<h1 id="provider-and-model" tabindex="-1">Provider and Model <a class="header-anchor" href="#provider-and-model" aria-label="Permalink to "Provider and Model""></a></h1><p>In Memoh, <strong>provider</strong> and <strong>model</strong> are separate but connected concepts:</p><ul><li>A <strong>provider</strong> is the LLM service configuration (API endpoint, key, client type)</li><li>A <strong>model</strong> is the concrete chat or embedding model under that provider</li></ul><h2 id="typical-setup" tabindex="-1">Typical Setup <a class="header-anchor" href="#typical-setup" aria-label="Permalink to "Typical Setup""></a></h2><p>At minimum, a production-ready bot usually needs:</p><ul><li>One <strong>chat</strong> model for dialog generation</li><li>One <strong>embedding</strong> model for memory indexing and retrieval</li></ul><h2 id="model-assignment-to-bot" tabindex="-1">Model Assignment to Bot <a class="header-anchor" href="#model-assignment-to-bot" aria-label="Permalink to "Model Assignment to Bot""></a></h2><p>Bots reference model IDs in settings:</p><ul><li><code>chat_model_id</code></li><li><code>memory_model_id</code></li><li><code>embedding_model_id</code></li></ul><p>This enables per-bot customization (for quality, latency, or cost).</p><h2 id="web-ui-path" tabindex="-1">Web UI Path <a class="header-anchor" href="#web-ui-path" aria-label="Permalink to "Web UI Path""></a></h2><ul><li><code>Models > Add Provider > Select Provider > Add Model</code></li><li><code>Bots > Select a bot > Settings > Choose chat/memory/embedding models</code></li></ul>',12)])])}const u=o(r,[["render",i]]);export{h as __pageData,u as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as o,o as t,c as d,ag as a}from"./chunks/framework.DEqXEGcv.js";const h=JSON.parse('{"title":"Provider and Model","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/provider-and-model.md","filePath":"concepts/provider-and-model.md","lastUpdated":1771163124000}'),r={name:"concepts/provider-and-model.md"};function i(n,e,l,s,c,m){return t(),d("div",null,[...e[0]||(e[0]=[a("",12)])])}const u=o(r,[["render",i]]);export{h as __pageData,u as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as a,o as t,c as o,ag as c}from"./chunks/framework.DEqXEGcv.js";const p=JSON.parse('{"title":"Schedule","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/schedule.md","filePath":"concepts/schedule.md","lastUpdated":1771163124000}'),r={name:"concepts/schedule.md"};function l(s,e,d,i,n,u){return t(),o("div",null,[...e[0]||(e[0]=[c('<h1 id="schedule" tabindex="-1">Schedule <a class="header-anchor" href="#schedule" aria-label="Permalink to "Schedule""></a></h1><p>A <strong>schedule</strong> is a cron-based automation rule that runs bot commands at defined times.</p><h2 id="core-fields" tabindex="-1">Core Fields <a class="header-anchor" href="#core-fields" aria-label="Permalink to "Core Fields""></a></h2><ul><li><code>pattern</code>: cron expression</li><li><code>command</code>: command or task to execute</li><li><code>enabled</code>: whether the schedule is active</li><li><code>max_calls</code>: optional execution cap</li><li><code>current_calls</code>: current run count</li></ul><h2 id="why-it-matters" tabindex="-1">Why It Matters <a class="header-anchor" href="#why-it-matters" aria-label="Permalink to "Why It Matters""></a></h2><p>Schedules make bots proactive, not only reactive.<br> You can automate recurring operations like summaries, reminders, checks, and maintenance tasks.</p><h2 id="web-ui-path" tabindex="-1">Web UI Path <a class="header-anchor" href="#web-ui-path" aria-label="Permalink to "Web UI Path""></a></h2><ul><li><code>Not available in current Web UI</code></li></ul><blockquote><p>Schedule is supported by backend and CLI/API, but there is currently no dedicated schedule page in the Web UI.</p></blockquote>',9)])])}const m=a(r,[["render",l]]);export{p as __pageData,m as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as a,o as t,c as o,ag as c}from"./chunks/framework.DEqXEGcv.js";const p=JSON.parse('{"title":"Schedule","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/schedule.md","filePath":"concepts/schedule.md","lastUpdated":1771163124000}'),r={name:"concepts/schedule.md"};function l(s,e,d,i,n,u){return t(),o("div",null,[...e[0]||(e[0]=[c("",9)])])}const m=a(r,[["render",l]]);export{p as __pageData,m as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as a,c as l,ag as i}from"./chunks/framework.DEqXEGcv.js";const d=JSON.parse('{"title":"Skills","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/skills.md","filePath":"concepts/skills.md","lastUpdated":1771163124000}'),s={name:"concepts/skills.md"};function o(n,t,r,c,p,h){return a(),l("div",null,[...t[0]||(t[0]=[i('<h1 id="skills" tabindex="-1">Skills <a class="header-anchor" href="#skills" aria-label="Permalink to "Skills""></a></h1><p><strong>Skills</strong> are reusable capability instructions that guide how a bot (or subagent) solves specific classes of tasks.</p><h2 id="typical-skill-content" tabindex="-1">Typical Skill Content <a class="header-anchor" href="#typical-skill-content" aria-label="Permalink to "Typical Skill Content""></a></h2><ul><li>Scope and purpose</li><li>Input expectations</li><li>Execution steps</li><li>Constraints and output format</li></ul><h2 id="why-it-matters" tabindex="-1">Why It Matters <a class="header-anchor" href="#why-it-matters" aria-label="Permalink to "Why It Matters""></a></h2><p>Skills help keep behavior consistent, reduce prompt duplication, and make complex workflows easier to maintain.</p><h2 id="web-ui-path" tabindex="-1">Web UI Path <a class="header-anchor" href="#web-ui-path" aria-label="Permalink to "Web UI Path""></a></h2><ul><li><code>Bots > Select a bot > Subagents</code></li></ul><blockquote><p>Skills are currently primarily managed through agent/workspace configuration and runtime conventions, while subagent-related behavior is visible from the Subagents area.</p></blockquote>',9)])])}const k=e(s,[["render",o]]);export{d as __pageData,k as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as e,o as a,c as l,ag as i}from"./chunks/framework.DEqXEGcv.js";const d=JSON.parse('{"title":"Skills","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/skills.md","filePath":"concepts/skills.md","lastUpdated":1771163124000}'),s={name:"concepts/skills.md"};function o(n,t,r,c,p,h){return a(),l("div",null,[...t[0]||(t[0]=[i("",9)])])}const k=e(s,[["render",o]]);export{d as __pageData,k as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as a,o as t,c as s,ag as o}from"./chunks/framework.DEqXEGcv.js";const b=JSON.parse('{"title":"Subagents","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/subagents.md","filePath":"concepts/subagents.md","lastUpdated":1771163124000}'),r={name:"concepts/subagents.md"};function i(n,e,l,c,u,d){return t(),s("div",null,[...e[0]||(e[0]=[o('<h1 id="subagents" tabindex="-1">Subagents <a class="header-anchor" href="#subagents" aria-label="Permalink to "Subagents""></a></h1><p><strong>Subagents</strong> are specialized helper agents that a bot can delegate tasks to.</p><h2 id="core-idea" tabindex="-1">Core Idea <a class="header-anchor" href="#core-idea" aria-label="Permalink to "Core Idea""></a></h2><ul><li>The main bot acts as coordinator</li><li>Subagents focus on narrower tasks</li><li>Results are combined back into the main workflow</li></ul><p>This supports decomposition of complex requests into smaller, more reliable execution units.</p><h2 id="why-it-matters" tabindex="-1">Why It Matters <a class="header-anchor" href="#why-it-matters" aria-label="Permalink to "Why It Matters""></a></h2><p>Subagent architecture improves scalability for multi-step tasks and helps separate responsibilities by role.</p><h2 id="web-ui-path" tabindex="-1">Web UI Path <a class="header-anchor" href="#web-ui-path" aria-label="Permalink to "Web UI Path""></a></h2><ul><li><code>Bots > Select a bot > Subagents</code></li></ul>',9)])])}const p=a(r,[["render",i]]);export{b as __pageData,p as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as a,o as t,c as s,ag as o}from"./chunks/framework.DEqXEGcv.js";const b=JSON.parse('{"title":"Subagents","description":"","frontmatter":{},"headers":[],"relativePath":"concepts/subagents.md","filePath":"concepts/subagents.md","lastUpdated":1771163124000}'),r={name:"concepts/subagents.md"};function i(n,e,l,c,u,d){return t(),s("div",null,[...e[0]||(e[0]=[o("",9)])])}const p=a(r,[["render",i]]);export{b as __pageData,p as default};
|
||||
Reference in New Issue
Block a user