mirror of
https://github.com/mudler/LocalAI.git
synced 2026-11-06 04:23:15 -05:00
feat(ui): call the collections page Knowledge, not Memory
The word "Memory" named collections of documents, notes about the person, and RAM in the same navigation. Collections are now Knowledge: the sidebar item, the page title and text, the Home action, the agent form section and the chat tool group. The tool group "Memory and profile changes" is now "Suggested changes", since it is the generic ask-first mechanism for notes, rules, skills, pages and the dashboard. The Settings section "Memory and models" is now "Models in memory". Only display strings change. Ids, routes, locale keys, group ids, grants and stored data stay as they are. All nine locales are updated; the docs name the Knowledge page and say which search the default engine does. Assisted-by: Claude:claude-sonnet-5-5
This commit is contained in:
76 files changed
+225
-219
No files matched your search
@@ -209,7 +209,7 @@ test.describe('Agent form', () => {
|
||||
const rows = panel.getByTestId('agent-tools-item')
|
||||
await expect(rows).toHaveCount(22)
|
||||
for (const row of await rows.all()) await expect(row.getByTestId('agent-tools-blurb')).not.toBeEmpty()
|
||||
await expect(panel.getByRole('switch', { name: 'Memory and profile changes' })).toBeChecked()
|
||||
await expect(panel.getByRole('switch', { name: 'Suggested changes' })).toBeChecked()
|
||||
await expect(panel.getByRole('switch', { name: 'Office' })).toBeChecked()
|
||||
await expect(panel).toContainText('Read and write documents and spreadsheets.')
|
||||
await expect(panel.getByRole('switch', { name: 'Saved agents' })).not.toBeChecked()
|
||||
|
||||
+1
-1
@@ -122,7 +122,7 @@ export const DRAFT_TOOLS = {
|
||||
{ group: 'web', tools: ['web_search', 'web_fetch'], off: false, usable: true, provider: 'builtin', providers: { web_search: 'builtin', web_fetch: 'builtin' }, title: 'Look things up online', description: 'The model can search the web and read a public page by its address.', when_off: 'The model cannot look anything up online.' },
|
||||
{ group: 'saved_agents', tools: ['list_agents'], off: true, opt_in: true, usable: true, provider: 'builtin', providers: { list_agents: 'builtin' }, title: 'Saved agents', description: 'The model can list your saved agents and start one as a sub-agent.', when_off: 'The model cannot see or start your saved agents.' },
|
||||
{ group: 'triggers', tools: ['propose_trigger'], off: false, usable: true, provider: 'builtin', providers: { propose_trigger: 'builtin' }, title: 'Triggers', description: 'The model can propose, list, change and delete triggers; a new one waits for your confirmation.', when_off: 'The model cannot create or manage triggers.' },
|
||||
{ group: 'changes', tools: ['propose_change'], off: false, usable: true, provider: 'builtin', providers: { propose_change: 'builtin' }, title: 'Memory and profile changes', description: 'The model can propose an edit to your memory notes; nothing changes until you confirm.', when_off: 'The model cannot propose edits to your memory.' },
|
||||
{ group: 'changes', tools: ['propose_change'], off: false, usable: true, provider: 'builtin', providers: { propose_change: 'builtin' }, title: 'Suggested changes', description: 'The model can propose an edit to your memory notes; nothing changes until you confirm.', when_off: 'The model cannot propose edits to your memory.' },
|
||||
],
|
||||
addons: [{ id: 'office', tools: 2, off: false, title: 'Office', description: 'Read and write documents and spreadsheets.' }],
|
||||
}
|
||||
|
||||
@@ -765,25 +765,25 @@ test.describe('Chat tools menu: every group of built-in tools', () => {
|
||||
await stubGroups(page)
|
||||
await open(page)
|
||||
const names = await page.getByTestId('chat-tools-group-builtins').locator('.swl-row__name').allTextContents()
|
||||
expect(names).toEqual(['Run commands', 'Your files', 'Look things up online', 'Images and audio', 'Collections', 'Sub-agents', 'Create and manage triggers'])
|
||||
expect(names).toEqual(['Run commands', 'Your files', 'Look things up online', 'Images and audio', 'Knowledge', 'Sub-agents', 'Create and manage triggers'])
|
||||
await expect(row(page, 'Run commands').getByTestId('chat-tools-note')).toHaveText(['Served by add-on sandbox', 'Commands run isolated'])
|
||||
await expect(row(page, 'Your files')).toHaveAttribute('title', 'list_files, read_file, write_file · built-in')
|
||||
await expect(sw(page, 'Collections')).toBeDisabled()
|
||||
await expect(sw(page, 'Collections')).toHaveAccessibleDescription('collections are not enabled for this account')
|
||||
await expect(sw(page, 'Knowledge')).toBeDisabled()
|
||||
await expect(sw(page, 'Knowledge')).toHaveAccessibleDescription('collections are not enabled for this account')
|
||||
await shot(page, 'groups-all')
|
||||
})
|
||||
|
||||
test('every group has a title and a description, also one the interface has no words for, and an add-on shows its declared title', async ({ page }) => {
|
||||
const state = await stubGroups(page)
|
||||
state.builtins.push({ group: 'changes', tools: ['propose_change'], off: false, usable: true, provider: 'builtin', providers: {},
|
||||
title: 'Memory and profile changes', description: 'The model can propose an edit; nothing changes until you confirm.', when_off: 'The model cannot propose edits.' })
|
||||
title: 'Suggested changes', description: 'The model can propose an edit; nothing changes until you confirm.', when_off: 'The model cannot propose edits.' })
|
||||
state.builtins.push({ group: 'newgroup', tools: ['x_tool'], off: false, usable: true, provider: 'builtin', providers: {},
|
||||
title: 'A new group', description: 'The model can use a tool the interface has no words for yet.' })
|
||||
await page.route('**/api/chats/c1/addons', route => route.fulfill({ json: {
|
||||
addons: [{ id: 'sandbox', tools: 2, off: false, title: 'Isolated runner', description: 'Runs code in a box.' }], commands: 'available', commands_provider: 'sandbox' } }))
|
||||
await open(page)
|
||||
// The ninth built-in group reads as a title, not as its id.
|
||||
await expect(sw(page, 'Memory and profile changes')).toBeVisible()
|
||||
await expect(sw(page, 'Suggested changes')).toBeVisible()
|
||||
await expect(sw(page, 'A new group')).toBeVisible()
|
||||
await expect(sw(page, 'Isolated runner')).toBeVisible()
|
||||
await expect(page.getByTestId('chat-tools-menu')).toContainText('Runs code in a box.')
|
||||
@@ -820,7 +820,7 @@ test.describe('Chat tools menu: every group of built-in tools', () => {
|
||||
await page.getByTestId('chat-tools-all').click()
|
||||
await expect.poll(() => state.puts.at(-1)).toEqual({ off: [] })
|
||||
await expect(sw(page, 'Run commands')).toHaveAttribute('aria-checked', 'true')
|
||||
await expect(sw(page, 'Collections')).toHaveAttribute('aria-checked', 'false')
|
||||
await expect(sw(page, 'Knowledge')).toHaveAttribute('aria-checked', 'false')
|
||||
})
|
||||
|
||||
test('the shell row says commands run on this machine, with the warning', async ({ page }) => {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { test, expect } from './coverage-fixtures.js'
|
||||
|
||||
// Memory page (src/pages/Collections.jsx) on the real test server. The memory
|
||||
// Knowledge page (src/pages/Collections.jsx) on the real test server. The collections
|
||||
// service of the test server never finishes starting, so the list answers 503;
|
||||
// the empty-state cases stub an empty list, and one case checks that a 503 is
|
||||
// shown as "starting", not as an empty library.
|
||||
@@ -12,18 +12,18 @@ test.describe('Collections page', () => {
|
||||
await page.goto('/app/collections')
|
||||
})
|
||||
|
||||
test('a memory service that is still starting is not shown as an empty library', async ({ page }) => {
|
||||
test('a knowledge service that is still starting is not shown as an empty library', async ({ page }) => {
|
||||
await page.route(/\/api\/collections(\?.*)?$/, route => route.fulfill({ status: 503, contentType: 'application/json', body: JSON.stringify({ error: 'collections are starting, please retry shortly' }) }))
|
||||
await page.goto('/app/collections')
|
||||
await expect(page.getByTestId('memory-starting')).toContainText('Memory is starting.')
|
||||
await expect(page.getByTestId('memory-starting')).toContainText('Knowledge is starting.')
|
||||
await expect(page.getByTestId('memory-empty')).toHaveCount(0)
|
||||
await expect(page.getByTestId('memory-starting').getByRole('button', { name: 'Try again' })).toBeVisible()
|
||||
})
|
||||
|
||||
test('renders memory with an empty state and create control', async ({ page }) => {
|
||||
test('renders knowledge with an empty state and create control', async ({ page }) => {
|
||||
await expect(page).toHaveURL(/\/app\/collections$/)
|
||||
await expect(page.getByRole('heading', { name: 'Memory', exact: true })).toBeVisible()
|
||||
await expect(page.getByText(/Memory holds documents an agent can search/i)).toBeVisible()
|
||||
await expect(page.getByRole('heading', { name: 'Knowledge', exact: true })).toBeVisible()
|
||||
await expect(page.getByText(/Knowledge holds documents an agent can search/i)).toBeVisible()
|
||||
await expect(page.getByRole('button', { name: 'New collection' }).first()).toBeVisible()
|
||||
})
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ test.describe('Hub tabs: gating', () => {
|
||||
await expect(page.locator('.sidebar-nav a.nav-item[href="/app/agents"]')).toBeVisible()
|
||||
})
|
||||
|
||||
test('a user without admin sees Memory with the collections permission and no Import', async ({ page }) => {
|
||||
test('a user without admin sees Knowledge with the collections permission and no Import', async ({ page }) => {
|
||||
await mockFeatures(page, { collections: true, mcp: true, fine_tuning: true, quantization: true })
|
||||
await mockAuth(page, { id: 'u1', name: 'Sam', role: 'user', permissions: { collections: true } })
|
||||
await page.goto('/app')
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { test, expect } from './coverage-fixtures.js'
|
||||
import { mockLibrary } from './library-fixtures.js'
|
||||
|
||||
// Memory library: collections, who uses each one, a question box that works
|
||||
// Knowledge library: collections, who uses each one, a question box that works
|
||||
// on the collection alone, and what the API reports about sources and files.
|
||||
|
||||
test.describe('Memory library', () => {
|
||||
test.describe('Knowledge library', () => {
|
||||
test('a collection is used by the agents that list it, and otherwise by nobody', async ({ page }) => {
|
||||
await mockLibrary(page)
|
||||
await page.goto('/app/collections')
|
||||
@@ -212,11 +212,11 @@ test.describe('Memory library', () => {
|
||||
await expect(page).toHaveURL(/\/app\/collections\/field-notes$/)
|
||||
})
|
||||
|
||||
test('an empty library teaches what memory is', async ({ page }) => {
|
||||
test('an empty library teaches what knowledge is', async ({ page }) => {
|
||||
await mockLibrary(page, { collections: [] })
|
||||
await page.goto('/app/collections')
|
||||
const empty = page.getByTestId('memory-empty')
|
||||
await expect(empty.getByRole('heading', { name: 'Memory holds documents an agent can search' })).toBeVisible()
|
||||
await expect(empty.getByRole('heading', { name: 'Knowledge holds documents an agent can search' })).toBeVisible()
|
||||
await empty.getByRole('button', { name: 'New collection' }).click()
|
||||
await expect(page.getByLabel('New collection name')).toBeVisible()
|
||||
})
|
||||
|
||||
@@ -21,7 +21,7 @@ test.describe('Navigation', () => {
|
||||
await expect(models.locator('.nav-label')).toHaveText('Models')
|
||||
})
|
||||
|
||||
test('the sidebar has Files, Agents, MCP connectors, Memory, Skills, Models and Add-ons, then the recent chats; no Chats entry, no Settings and no Create tier', async ({ page }) => {
|
||||
test('the sidebar has Files, Agents, MCP connectors, Knowledge, Skills, Models and Add-ons, then the recent chats; no Chats entry, no Settings and no Create tier', async ({ page }) => {
|
||||
await stubAddonRoutes(page)
|
||||
await page.goto('/app')
|
||||
await expect(page.locator('.sidebar-section-title', { hasText: 'Create' })).toHaveCount(0)
|
||||
@@ -73,7 +73,7 @@ test.describe('Navigation', () => {
|
||||
await expect(page).toHaveURL(/\/app\/import-model$/)
|
||||
})
|
||||
|
||||
test('Agents, MCP connectors and Memory are sidebar items, and their pages light them up', async ({ page }) => {
|
||||
test('Agents, MCP connectors and Knowledge are sidebar items, and their pages light them up', async ({ page }) => {
|
||||
await page.goto('/app')
|
||||
const item = (href) => page.locator(`.sidebar-nav a.nav-item[href="${href}"]`)
|
||||
await item('/app/agents').click()
|
||||
@@ -91,7 +91,7 @@ test.describe('Navigation', () => {
|
||||
await item('/app/collections').click()
|
||||
await expect(page).toHaveURL(/\/app\/collections$/)
|
||||
await expect(item('/app/collections')).toHaveClass(/active/)
|
||||
// Memory is a page of its own now, not a tab of a hub.
|
||||
// Knowledge is a page of its own now, not a tab of a hub.
|
||||
await expect(page.locator('.dk-hubtabs')).toHaveCount(0)
|
||||
})
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ test.describe('404', () => {
|
||||
await expect(nf).toContainText('/app/no-such-page')
|
||||
await expect(nf.getByRole('link', { name: 'Go home' })).toHaveAttribute('href', '/app')
|
||||
const places = nf.getByRole('navigation', { name: 'Where to go' })
|
||||
for (const name of ['Home', 'Models', 'Chat', 'Agents', 'MCP connectors', 'Memory', 'Add-ons', 'Administration']) {
|
||||
for (const name of ['Home', 'Models', 'Chat', 'Agents', 'MCP connectors', 'Knowledge', 'Add-ons', 'Administration']) {
|
||||
await expect(places.getByRole('link', { name })).toBeVisible()
|
||||
}
|
||||
// The Build hub is gone.
|
||||
|
||||
@@ -4,7 +4,7 @@ import { test, expect } from './coverage-fixtures.js'
|
||||
// not repeated above the title as a small crumb: the sidebar and the hub tab
|
||||
// bar already say where the page lives.
|
||||
const PAGES = [
|
||||
['/app/collections', 'Memory'],
|
||||
['/app/collections', 'Knowledge'],
|
||||
['/app/activity', 'Activity'],
|
||||
]
|
||||
|
||||
|
||||
@@ -135,16 +135,16 @@ test('a user whose chats feature is off loses All chats, the recent chats, the F
|
||||
await context.close()
|
||||
})
|
||||
|
||||
test('a user whose collections feature is off cannot open Memory or call the collections API', async ({ browser, request }) => {
|
||||
test('a user whose collections feature is off cannot open Knowledge or call the collections API', async ({ browser, request }) => {
|
||||
await setPerms(request, { collections: false })
|
||||
const { context, page } = await carolPage(browser)
|
||||
expect([403, 404]).toContain((await page.request.get(`${server.url}/api/collections`)).status())
|
||||
await page.goto(`${server.url}/app/collections`)
|
||||
await expect(page.getByRole('heading', { name: 'Memory' })).toHaveCount(0)
|
||||
await expect(page.getByRole('heading', { name: 'Knowledge' })).toHaveCount(0)
|
||||
// The same page opens once the feature is back, so the absence above is the permission.
|
||||
await setPerms(request, { collections: true })
|
||||
await page.goto(`${server.url}/app/collections`)
|
||||
await expect(page.getByRole('heading', { name: 'Memory' }).first()).toBeVisible()
|
||||
await expect(page.getByRole('heading', { name: 'Knowledge' }).first()).toBeVisible()
|
||||
await context.close()
|
||||
})
|
||||
|
||||
|
||||
@@ -18,11 +18,11 @@ test.describe('Settings: groups and search', () => {
|
||||
test('shows nine groups by intent and opens on memory and models', async ({ page }) => {
|
||||
const names = await page.locator('.st-group .st-group__label').allTextContents()
|
||||
expect(names).toEqual([
|
||||
'Memory and models', 'Speed and defaults', 'Backends and galleries', 'Access and security',
|
||||
'Models in memory', 'Speed and defaults', 'Backends and galleries', 'Access and security',
|
||||
'Debugging and traces', 'Chats and collections', 'Tools', 'Swarm and sharing', 'Look and feel',
|
||||
])
|
||||
await expect(page.locator('.st-group[aria-current="true"]')).toHaveText(/Memory and models/)
|
||||
await expect(page.getByRole('heading', { level: 2, name: /Memory and models/ })).toBeVisible()
|
||||
await expect(page.locator('.st-group[aria-current="true"]')).toHaveText(/Models in memory/)
|
||||
await expect(page.getByRole('heading', { level: 2, name: /Models in memory/ })).toBeVisible()
|
||||
await expect(row(page, 'watchdog_idle_timeout')).toBeVisible()
|
||||
await expect(row(page, 'debug')).toHaveCount(0)
|
||||
})
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import { test, expect } from './coverage-fixtures.js'
|
||||
|
||||
// The Skills page has an item of its own in the sidebar, right after Memory.
|
||||
// The Skills page has an item of its own in the sidebar, right after Knowledge.
|
||||
// Skills work in every chat, so Agents does not light up on the page.
|
||||
|
||||
const item = (page, href) => page.locator(`.sidebar-nav a.nav-item[href="${href}"]`)
|
||||
|
||||
test.describe('Skills in the sidebar', () => {
|
||||
test('the item follows Memory, opens the page and is the only one lit up', async ({ page }) => {
|
||||
test('the item follows Knowledge, opens the page and is the only one lit up', async ({ page }) => {
|
||||
await page.goto('/app')
|
||||
await expect(item(page, '/app/skills')).toBeVisible()
|
||||
const hrefs = await page.locator('.sidebar-nav a.nav-item').evaluateAll(els => els.map(e => e.getAttribute('href')))
|
||||
@@ -46,7 +46,7 @@ test.describe('Skills in the sidebar', () => {
|
||||
test.describe('Skills in the sidebar on a phone', () => {
|
||||
test.use({ viewport: { width: 390, height: 844 } })
|
||||
|
||||
test('the menu lists Skills after Memory and opens the page', async ({ page }) => {
|
||||
test('the menu lists Skills after Knowledge and opens the page', async ({ page }) => {
|
||||
await page.goto('/app')
|
||||
await page.getByRole('button', { name: 'Open menu' }).click()
|
||||
await expect(item(page, '/app/skills')).toBeVisible()
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
"BasicInfo": "Basic info",
|
||||
"ModelSettings": "Model",
|
||||
"PromptsGoals": "Instructions",
|
||||
"MemorySettings": "Memory",
|
||||
"MemorySettings": "Wissen",
|
||||
"Skills": "Skills",
|
||||
"Addons": "Add-ons",
|
||||
"MCP": "MCP servers",
|
||||
@@ -94,7 +94,7 @@
|
||||
"instructionsHelp": "What the agent always follows. Every chat with it starts from this text.",
|
||||
"collections": "Collections",
|
||||
"collectionsHint": "Collection name",
|
||||
"collectionsHelp": "The memory collections a chat with this agent may search. The list is exact: an empty list grants none.",
|
||||
"collectionsHelp": "Die Sammlungen, in denen ein Chat mit diesem Agenten suchen darf. Die Liste ist genau: Eine leere Liste erlaubt keine.",
|
||||
"skillsHelp": "The skills a chat with this agent may read. The list is exact: an empty list grants none.",
|
||||
"noSkills": "No skills yet.",
|
||||
"manageSkills": "Write or manage skills",
|
||||
|
||||
@@ -326,9 +326,9 @@
|
||||
"shell": "Befehle ausführen",
|
||||
"files": "Deine Dateien",
|
||||
"media": "Bilder und Audio",
|
||||
"collections": "Sammlungen",
|
||||
"collections": "Wissen",
|
||||
"subagents": "Sub-Agenten",
|
||||
"changes": "Änderungen an Gedächtnis und Profil"
|
||||
"changes": "Vorgeschlagene Änderungen"
|
||||
},
|
||||
"builtinBy": "{{tools}} · eingebaut",
|
||||
"builtinByAddon": "{{tools}} · bedient von {{provider}}",
|
||||
@@ -350,7 +350,7 @@
|
||||
"subagents": "Das Modell kann für eine Aufgabe einen Sub-Agenten starten und dessen Bericht erhalten.",
|
||||
"saved_agents": "Das Modell kann einen deiner gespeicherten Agenten als Sub-Agenten starten.",
|
||||
"triggers": "Das Modell kann Trigger vorschlagen, auflisten, ändern und löschen. Du bestätigst jeden neuen Trigger und jede Änderung.",
|
||||
"changes": "Das Modell kann Änderungen an deinem Gedächtnis und an den Dateien eines Agenten vorschlagen. Du bestätigst jede einzelne."
|
||||
"changes": "Das Modell kann Änderungen an deinen Notizen, seinen Regeln, Skills, Seiten und am Dashboard vorschlagen. Du bestätigst jede einzelne."
|
||||
},
|
||||
"whenOff": {
|
||||
"shell": "Das Modell kann Dateien schreiben, aber nichts ausführen.",
|
||||
@@ -361,7 +361,7 @@
|
||||
"subagents": "Das Modell arbeitet allein.",
|
||||
"saved_agents": "Das Modell kann deine gespeicherten Agenten weder sehen noch starten.",
|
||||
"triggers": "Das Modell kann keine Trigger vorschlagen oder verwalten.",
|
||||
"changes": "Das Modell kann keine Änderungen an deinem Gedächtnis oder an den Regeln eines Agenten vorschlagen."
|
||||
"changes": "Das Modell kann keine Änderungen an deinen Notizen, seinen Regeln, Skills, Seiten oder am Dashboard vorschlagen."
|
||||
},
|
||||
"addonDescribe_one": "Gibt dem Modell {{count}} Werkzeug dieses Add-ons.",
|
||||
"addonDescribe_other": "Gibt dem Modell {{count}} Werkzeuge dieses Add-ons.",
|
||||
@@ -783,7 +783,7 @@
|
||||
"title": "Vorschläge",
|
||||
"supporting": "Änderungen, die Modelle vorgeschlagen haben und die auf deine Antwort warten.",
|
||||
"emptyTitle": "Nichts wartet",
|
||||
"emptyBody": "Wenn ein Modell eine Änderung an deinem Gedächtnis oder einem Agentenprofil vorschlägt, erscheint sie hier, bis du antwortest.",
|
||||
"emptyBody": "Wenn ein Modell eine Änderung an deinen Notizen, einem Agentenprofil, einem Skill, einer Seite oder am Dashboard vorschlägt, erscheint sie hier, bis du antwortest.",
|
||||
"loadError": "Die Vorschläge konnten nicht geladen werden."
|
||||
},
|
||||
"memoryPage": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"title": "Wissensdatenbank",
|
||||
"subtitle": "Verwalten Sie Dokumentensammlungen für RAG der Agenten",
|
||||
"title": "Wissen",
|
||||
"subtitle": "Dokumentsammlungen, die Agenten durchsuchen können. Durchsuchen Sie sie hier oder fügen Sie eine einem Agenten hinzu, wenn er sie nutzen soll.",
|
||||
"newPlaceholder": "Name der neuen Sammlung...",
|
||||
"actions": {
|
||||
"create": "Erstellen",
|
||||
@@ -20,7 +20,7 @@
|
||||
"title": "Noch keine Sammlungen",
|
||||
"text": "Mit Sammlungen organisieren Sie Dokumente in Wissensdatenbanken, die Agenten mit RAG (Retrieval-Augmented Generation) durchsuchen können. Erstellen Sie oben eine Sammlung, um zu beginnen.",
|
||||
"noPersonal": "Sie haben noch keine Sammlungen.",
|
||||
"learn": "So funktioniert der Speicher"
|
||||
"learn": "So funktioniert der Bereich Wissen"
|
||||
},
|
||||
"deleteDialog": {
|
||||
"title": "Sammlung löschen",
|
||||
@@ -48,8 +48,8 @@
|
||||
"loadFailed": "Die Dateien konnten nicht geladen werden."
|
||||
},
|
||||
"starting": {
|
||||
"title": "Der Speicher startet.",
|
||||
"text": "Der Server bereitet den Speicherdienst noch vor. Diese Seite fragt von selbst erneut."
|
||||
"title": "Wissen startet.",
|
||||
"text": "Der Server bereitet den Wissensdienst noch vor. Diese Seite fragt von selbst erneut."
|
||||
},
|
||||
"embedding": {
|
||||
"missingTitle": "Kein Embedding-Modell installiert.",
|
||||
|
||||
@@ -130,8 +130,8 @@
|
||||
"desc": "MCP-Server, die deine Chats nutzen können"
|
||||
},
|
||||
"memory": {
|
||||
"label": "Gedächtnis",
|
||||
"desc": "Sammlungen, in denen deine Chats suchen können"
|
||||
"label": "Wissen",
|
||||
"desc": "Wissen, das deine Chats durchsuchen können"
|
||||
},
|
||||
"complete": "ergänzen"
|
||||
},
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"budgetNote": "Schätzungen: Zeichen geteilt durch vier. Das Kontextfenster des Modells ist hier nicht bekannt, daher gibt es keinen Anteil an einem Limit.",
|
||||
"instructions": "Anweisungen",
|
||||
"skills": "Skills",
|
||||
"memory": "Speicher",
|
||||
"memory": "Wissen",
|
||||
"skillsTitle": "Skills, die dieser Kontext lädt",
|
||||
"skillsNone": "Für diesen Agenten sind keine Skills aktiv.",
|
||||
"skillsPrompt": "Im Prompt jeder Nachricht.",
|
||||
@@ -87,7 +87,7 @@
|
||||
"skillMissing": "{{name}} steht auf der Liste, aber kein Skill hat diesen Namen.",
|
||||
"skillTokens": "{{count}} Token",
|
||||
"skillTokensTools": "0 vorab",
|
||||
"memoryTitle": "Speicher, der gesendet würde",
|
||||
"memoryTitle": "Wissen, das gesendet würde",
|
||||
"memoryNone": "Auf der Liste dieses Agenten steht keine Sammlung. Fügen Sie eine hinzu, um sie zu nutzen.",
|
||||
"memoryNoCollection": "Die Wissensbasis dieses Agenten ist aktiv, aber es gibt noch keine Sammlung namens {{name}}.",
|
||||
"memoryTools": "Dieser Agent sucht nur, wenn das Modell es anfordert. Vorab wird nichts zur Nachricht hinzugefügt.",
|
||||
@@ -108,7 +108,7 @@
|
||||
"agentBudget": "Die ausgewählten Skills fügen jeder Nachricht etwa {{count}} Token hinzu (Schätzung: Zeichen geteilt durch vier).",
|
||||
"agentKb": {
|
||||
"reads": "Dieser Agent liest die Sammlung namens {{name}}.",
|
||||
"exists": "Dieser Agent liest die Sammlung namens {{name}}. Sie können sie im Speicher befüllen und durchsuchen.",
|
||||
"exists": "Dieser Agent liest die Sammlung namens {{name}}. Sie können sie unter Wissen befüllen und durchsuchen.",
|
||||
"created": "Dieser Agent liest die Sammlung namens {{name}}. Sie wird beim Speichern erstellt."
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
"voiceRecognition": "Spracherkennung",
|
||||
"agents": "Agenten",
|
||||
"skills": "Fähigkeiten",
|
||||
"memory": "Speicher",
|
||||
"memory": "Wissen",
|
||||
"mcpJobs": "MCP CI-Aufgaben",
|
||||
"usage": "Nutzung",
|
||||
"users": "Benutzer",
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
"model": "Model",
|
||||
"noModel": "No model set",
|
||||
"tools": "Tools",
|
||||
"memory": "Memory",
|
||||
"memory": "Knowledge",
|
||||
"skills": "Skills",
|
||||
"instructions": "Instructions",
|
||||
"record": "Record",
|
||||
@@ -184,7 +184,7 @@
|
||||
"BasicInfo": "Basic info",
|
||||
"ModelSettings": "Model",
|
||||
"PromptsGoals": "Instructions",
|
||||
"MemorySettings": "Memory",
|
||||
"MemorySettings": "Knowledge",
|
||||
"Skills": "Skills",
|
||||
"Addons": "Add-ons",
|
||||
"MCP": "MCP servers",
|
||||
@@ -206,7 +206,7 @@
|
||||
"instructionsHelp": "What the agent always follows. Every chat with it starts from this text.",
|
||||
"collections": "Collections",
|
||||
"collectionsHint": "Collection name",
|
||||
"collectionsHelp": "The memory collections a chat with this agent may search. The list is exact: an empty list grants none.",
|
||||
"collectionsHelp": "The collections a chat with this agent may search. The list is exact: an empty list grants none.",
|
||||
"skillsHelp": "The skills a chat with this agent may read. The list is exact: an empty list grants none.",
|
||||
"noSkills": "No skills yet.",
|
||||
"manageSkills": "Write or manage skills",
|
||||
|
||||
@@ -374,9 +374,9 @@
|
||||
"shell": "Run commands",
|
||||
"files": "Your files",
|
||||
"media": "Images and audio",
|
||||
"collections": "Collections",
|
||||
"collections": "Knowledge",
|
||||
"subagents": "Sub-agents",
|
||||
"changes": "Memory and profile changes"
|
||||
"changes": "Suggested changes"
|
||||
},
|
||||
"builtinBy": "{{tools}} · built-in",
|
||||
"builtinByAddon": "{{tools}} · served by {{provider}}",
|
||||
@@ -452,7 +452,7 @@
|
||||
"subagents": "Lets the model start a sub-agent for one task and get its report.",
|
||||
"saved_agents": "Lets the model start one of your saved agents as a sub-agent.",
|
||||
"triggers": "Lets the model propose, list, change and delete triggers. You confirm each new trigger or change.",
|
||||
"changes": "Lets the model propose changes to your memory and to an agent's files. You confirm each one."
|
||||
"changes": "Lets the model propose edits to your notes, its rules, skills, pages and dashboard. You confirm each one."
|
||||
},
|
||||
"whenOff": {
|
||||
"shell": "The model can write files but cannot run anything.",
|
||||
@@ -463,7 +463,7 @@
|
||||
"subagents": "The model works alone.",
|
||||
"saved_agents": "The model cannot see or start your saved agents.",
|
||||
"triggers": "The model cannot propose or manage triggers.",
|
||||
"changes": "The model cannot propose edits to your memory or to an agent's rules."
|
||||
"changes": "The model cannot propose edits to your notes, its rules, skills, pages or dashboard."
|
||||
},
|
||||
"addonDescribe_one": "Gives the model {{count}} tool from this add-on.",
|
||||
"addonDescribe_other": "Gives the model {{count}} tools from this add-on.",
|
||||
@@ -1105,7 +1105,7 @@
|
||||
"title": "Proposals",
|
||||
"supporting": "Changes that models asked for and that wait for your answer.",
|
||||
"emptyTitle": "Nothing is waiting",
|
||||
"emptyBody": "When a model proposes a change to your memory or an agent profile, it shows here until you answer.",
|
||||
"emptyBody": "When a model proposes a change to your notes, an agent profile, a skill, a page or the dashboard, it shows here until you answer.",
|
||||
"loadError": "Could not load the proposals."
|
||||
},
|
||||
"memoryPage": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"title": "Memory",
|
||||
"subtitle": "Your library of collections. Search any of them here, or add one to an agent when you want it used.",
|
||||
"title": "Knowledge",
|
||||
"subtitle": "Collections of documents that agents can search. Search any of them here, or add one to an agent when you want it used.",
|
||||
"newPlaceholder": "New collection name...",
|
||||
"actions": {
|
||||
"create": "Create",
|
||||
@@ -18,13 +18,13 @@
|
||||
"otherUsersCollections": "Other users' collections"
|
||||
},
|
||||
"empty": {
|
||||
"title": "Memory holds documents an agent can search",
|
||||
"title": "Knowledge holds documents an agent can search",
|
||||
"text": "A collection is a set of files and web pages, indexed so that a question finds the passages that answer it. You can search it here without any agent.",
|
||||
"stepCreate": "Create a collection.",
|
||||
"stepFill": "Add files or a web page to it.",
|
||||
"stepAsk": "Ask it a question to see what comes back, then give it to an agent.",
|
||||
"noPersonal": "You have no collections yet.",
|
||||
"learn": "How memory works"
|
||||
"learn": "How knowledge works"
|
||||
},
|
||||
"deleteDialog": {
|
||||
"title": "Delete Collection",
|
||||
@@ -137,8 +137,8 @@
|
||||
},
|
||||
"loadFailed": "Could not load your collections.",
|
||||
"starting": {
|
||||
"title": "Memory is starting.",
|
||||
"text": "The server is still getting the memory service ready. This page asks again by itself."
|
||||
"title": "Knowledge is starting.",
|
||||
"text": "The server is still getting the knowledge service ready. This page asks again by itself."
|
||||
},
|
||||
"embedding": {
|
||||
"missingTitle": "No embedding model installed.",
|
||||
|
||||
@@ -242,8 +242,8 @@
|
||||
"desc": "MCP servers your chats can use"
|
||||
},
|
||||
"memory": {
|
||||
"label": "Memory",
|
||||
"desc": "Collections your chats can search"
|
||||
"label": "Knowledge",
|
||||
"desc": "Knowledge your chats can search"
|
||||
},
|
||||
"complete": "complete"
|
||||
},
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"budgetNote": "Estimates: characters divided by four. The window of the model is not known here, so there is no share of a limit.",
|
||||
"instructions": "Instructions",
|
||||
"skills": "Skills",
|
||||
"memory": "Memory",
|
||||
"memory": "Knowledge",
|
||||
"skillsTitle": "Skills this context loads",
|
||||
"skillsNone": "No skills are on for this agent.",
|
||||
"skillsPrompt": "In the prompt of every message.",
|
||||
@@ -87,7 +87,7 @@
|
||||
"skillMissing": "{{name}} is listed but no skill has that name.",
|
||||
"skillTokens": "{{count}} tokens",
|
||||
"skillTokensTools": "0 up front",
|
||||
"memoryTitle": "Memory that would be sent",
|
||||
"memoryTitle": "Knowledge that would be sent",
|
||||
"memoryNone": "No collection is on this agent's list. Add one to the agent to use it.",
|
||||
"memoryNoCollection": "This agent's knowledge base is on, but no collection named {{name}} exists yet.",
|
||||
"memoryTools": "This agent searches only when the model asks. Nothing is added to the message up front.",
|
||||
@@ -108,7 +108,7 @@
|
||||
"agentBudget": "Selected skills add about {{count}} tokens to every message (estimate: characters divided by four).",
|
||||
"agentKb": {
|
||||
"reads": "This agent reads the collection named {{name}}.",
|
||||
"exists": "This agent reads the collection named {{name}}. You can fill and search it in Memory.",
|
||||
"exists": "This agent reads the collection named {{name}}. You can fill and search it in Knowledge.",
|
||||
"created": "This agent reads the collection named {{name}}. It is created when you save."
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
"voiceRecognition": "Voice Recognition",
|
||||
"agents": "Agents",
|
||||
"skills": "Skills",
|
||||
"memory": "Memory",
|
||||
"memory": "Knowledge",
|
||||
"mcpJobs": "MCP CI Jobs",
|
||||
"usage": "Usage",
|
||||
"users": "Users and keys",
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
"BasicInfo": "Basic info",
|
||||
"ModelSettings": "Model",
|
||||
"PromptsGoals": "Instructions",
|
||||
"MemorySettings": "Memory",
|
||||
"MemorySettings": "Conocimiento",
|
||||
"Skills": "Skills",
|
||||
"Addons": "Add-ons",
|
||||
"MCP": "MCP servers",
|
||||
@@ -94,7 +94,7 @@
|
||||
"instructionsHelp": "What the agent always follows. Every chat with it starts from this text.",
|
||||
"collections": "Collections",
|
||||
"collectionsHint": "Collection name",
|
||||
"collectionsHelp": "The memory collections a chat with this agent may search. The list is exact: an empty list grants none.",
|
||||
"collectionsHelp": "Las colecciones en las que un chat con este agente puede buscar. La lista es exacta: una lista vacía no concede ninguna.",
|
||||
"skillsHelp": "The skills a chat with this agent may read. The list is exact: an empty list grants none.",
|
||||
"noSkills": "No skills yet.",
|
||||
"manageSkills": "Write or manage skills",
|
||||
|
||||
@@ -326,9 +326,9 @@
|
||||
"shell": "Ejecutar comandos",
|
||||
"files": "Tus archivos",
|
||||
"media": "Imágenes y audio",
|
||||
"collections": "Colecciones",
|
||||
"collections": "Conocimiento",
|
||||
"subagents": "Subagentes",
|
||||
"changes": "Cambios de memoria y perfil"
|
||||
"changes": "Cambios sugeridos"
|
||||
},
|
||||
"builtinBy": "{{tools}} · integradas",
|
||||
"builtinByAddon": "{{tools}} · servidas por {{provider}}",
|
||||
@@ -350,7 +350,7 @@
|
||||
"subagents": "El modelo puede iniciar un subagente para una tarea y recibir su informe.",
|
||||
"saved_agents": "El modelo puede iniciar uno de tus agentes guardados como subagente.",
|
||||
"triggers": "El modelo puede proponer, listar, cambiar y borrar disparadores. Tú confirmas cada disparador nuevo o cambio.",
|
||||
"changes": "El modelo puede proponer cambios en tu memoria y en los archivos de un agente. Tú confirmas cada uno."
|
||||
"changes": "El modelo puede proponer cambios en tus notas, sus reglas, skills, páginas y el panel. Tú confirmas cada uno."
|
||||
},
|
||||
"whenOff": {
|
||||
"shell": "El modelo puede escribir archivos pero no puede ejecutar nada.",
|
||||
@@ -361,7 +361,7 @@
|
||||
"subagents": "El modelo trabaja solo.",
|
||||
"saved_agents": "El modelo no puede ver ni iniciar tus agentes guardados.",
|
||||
"triggers": "El modelo no puede proponer ni gestionar disparadores.",
|
||||
"changes": "El modelo no puede proponer cambios en tu memoria ni en las reglas de un agente."
|
||||
"changes": "El modelo no puede proponer cambios en tus notas, sus reglas, skills, páginas ni el panel."
|
||||
},
|
||||
"addonDescribe_one": "Da al modelo {{count}} herramienta de este add-on.",
|
||||
"addonDescribe_other": "Da al modelo {{count}} herramientas de este add-on.",
|
||||
@@ -783,7 +783,7 @@
|
||||
"title": "Propuestas",
|
||||
"supporting": "Cambios que pidieron los modelos y que esperan tu respuesta.",
|
||||
"emptyTitle": "No hay nada pendiente",
|
||||
"emptyBody": "Cuando un modelo propone un cambio en tu memoria o en el perfil de un agente, aparece aquí hasta que respondas.",
|
||||
"emptyBody": "Cuando un modelo propone un cambio en tus notas, el perfil de un agente, una skill, una página o el panel, aparece aquí hasta que respondas.",
|
||||
"loadError": "No se pudieron cargar las propuestas."
|
||||
},
|
||||
"memoryPage": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"title": "Base de conocimiento",
|
||||
"subtitle": "Administra colecciones de documentos para el RAG de los agentes",
|
||||
"title": "Conocimiento",
|
||||
"subtitle": "Colecciones de documentos en las que los agentes pueden buscar. Busca en cualquiera desde aquí o añade una a un agente cuando quieras que la use.",
|
||||
"newPlaceholder": "Nombre de la nueva colección...",
|
||||
"actions": {
|
||||
"create": "Crear",
|
||||
@@ -20,7 +20,7 @@
|
||||
"title": "Aún no hay colecciones",
|
||||
"text": "Las colecciones te permiten organizar documentos en bases de conocimiento que los agentes pueden buscar usando RAG (Retrieval-Augmented Generation). Crea una colección arriba para empezar.",
|
||||
"noPersonal": "Aún no tienes colecciones.",
|
||||
"learn": "Cómo funciona la memoria"
|
||||
"learn": "Cómo funciona el conocimiento"
|
||||
},
|
||||
"deleteDialog": {
|
||||
"title": "Eliminar colección",
|
||||
@@ -48,8 +48,8 @@
|
||||
"loadFailed": "No se pudieron cargar los archivos."
|
||||
},
|
||||
"starting": {
|
||||
"title": "La memoria se está iniciando.",
|
||||
"text": "El servidor aún está preparando el servicio de memoria. Esta página vuelve a preguntar sola."
|
||||
"title": "El conocimiento se está iniciando.",
|
||||
"text": "El servidor aún está preparando el servicio de conocimiento. Esta página vuelve a preguntar sola."
|
||||
},
|
||||
"embedding": {
|
||||
"missingTitle": "No hay ningún modelo de embeddings instalado.",
|
||||
|
||||
@@ -130,8 +130,8 @@
|
||||
"desc": "Servidores MCP que pueden usar tus chats"
|
||||
},
|
||||
"memory": {
|
||||
"label": "Memoria",
|
||||
"desc": "Colecciones en las que pueden buscar tus chats"
|
||||
"label": "Conocimiento",
|
||||
"desc": "Conocimiento que tus chats pueden buscar"
|
||||
},
|
||||
"complete": "completar"
|
||||
},
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"budgetNote": "Estimaciones: caracteres divididos entre cuatro. La ventana del modelo no se conoce aquí, así que no hay una parte de ningún límite.",
|
||||
"instructions": "Instrucciones",
|
||||
"skills": "Habilidades",
|
||||
"memory": "Memoria",
|
||||
"memory": "Conocimiento",
|
||||
"skillsTitle": "Habilidades que carga este contexto",
|
||||
"skillsNone": "No hay habilidades activas para este agente.",
|
||||
"skillsPrompt": "En el prompt de cada mensaje.",
|
||||
@@ -87,7 +87,7 @@
|
||||
"skillMissing": "{{name}} está en la lista, pero ninguna habilidad tiene ese nombre.",
|
||||
"skillTokens": "{{count}} tokens",
|
||||
"skillTokensTools": "0 al inicio",
|
||||
"memoryTitle": "Memoria que se enviaría",
|
||||
"memoryTitle": "Conocimiento que se enviaría",
|
||||
"memoryNone": "No hay ninguna colección en la lista de este agente. Añade una al agente para usarla.",
|
||||
"memoryNoCollection": "La base de conocimiento de este agente está activa, pero aún no existe una colección llamada {{name}}.",
|
||||
"memoryTools": "Este agente busca solo cuando el modelo lo pide. No se añade nada al mensaje al inicio.",
|
||||
@@ -108,7 +108,7 @@
|
||||
"agentBudget": "Las habilidades seleccionadas añaden unos {{count}} tokens a cada mensaje (estimación: caracteres divididos entre cuatro).",
|
||||
"agentKb": {
|
||||
"reads": "Este agente lee la colección llamada {{name}}.",
|
||||
"exists": "Este agente lee la colección llamada {{name}}. Puedes llenarla y buscar en ella desde Memoria.",
|
||||
"exists": "Este agente lee la colección llamada {{name}}. Puedes llenarla y buscar en ella desde Conocimiento.",
|
||||
"created": "Este agente lee la colección llamada {{name}}. Se crea al guardar."
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
"voiceRecognition": "Reconocimiento de voz",
|
||||
"agents": "Agentes",
|
||||
"skills": "Habilidades",
|
||||
"memory": "Memoria",
|
||||
"memory": "Conocimiento",
|
||||
"mcpJobs": "Trabajos MCP CI",
|
||||
"usage": "Uso",
|
||||
"users": "Usuarios",
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
"BasicInfo": "Basic info",
|
||||
"ModelSettings": "Model",
|
||||
"PromptsGoals": "Instructions",
|
||||
"MemorySettings": "Memory",
|
||||
"MemorySettings": "Connaissances",
|
||||
"Skills": "Skills",
|
||||
"Addons": "Add-ons",
|
||||
"MCP": "MCP servers",
|
||||
@@ -94,7 +94,7 @@
|
||||
"instructionsHelp": "What the agent always follows. Every chat with it starts from this text.",
|
||||
"collections": "Collections",
|
||||
"collectionsHint": "Collection name",
|
||||
"collectionsHelp": "The memory collections a chat with this agent may search. The list is exact: an empty list grants none.",
|
||||
"collectionsHelp": "Les collections qu'un chat avec cet agent peut consulter. La liste est exacte : une liste vide n'en accorde aucune.",
|
||||
"skillsHelp": "The skills a chat with this agent may read. The list is exact: an empty list grants none.",
|
||||
"noSkills": "No skills yet.",
|
||||
"manageSkills": "Write or manage skills",
|
||||
|
||||
@@ -326,9 +326,9 @@
|
||||
"shell": "Exécuter des commandes",
|
||||
"files": "Vos fichiers",
|
||||
"media": "Images et audio",
|
||||
"collections": "Collections",
|
||||
"collections": "Connaissances",
|
||||
"subagents": "Sous-agents",
|
||||
"changes": "Modifications de la mémoire et du profil"
|
||||
"changes": "Modifications suggérées"
|
||||
},
|
||||
"builtinBy": "{{tools}} · intégrés",
|
||||
"builtinByAddon": "{{tools}} · fournis par {{provider}}",
|
||||
@@ -350,7 +350,7 @@
|
||||
"subagents": "Le modèle peut lancer un sous-agent pour une tâche et recevoir son rapport.",
|
||||
"saved_agents": "Le modèle peut lancer l'un de vos agents enregistrés comme sous-agent.",
|
||||
"triggers": "Le modèle peut proposer, lister, modifier et supprimer des déclencheurs. Vous confirmez chaque nouveau déclencheur ou changement.",
|
||||
"changes": "Le modèle peut proposer des changements à votre mémoire et aux fichiers d'un agent. Vous confirmez chacun."
|
||||
"changes": "Le modèle peut proposer des modifications de vos notes, de ses règles, des skills, des pages et du tableau de bord. Vous confirmez chacune."
|
||||
},
|
||||
"whenOff": {
|
||||
"shell": "Le modèle peut écrire des fichiers mais ne peut rien exécuter.",
|
||||
@@ -361,7 +361,7 @@
|
||||
"subagents": "Le modèle travaille seul.",
|
||||
"saved_agents": "Le modèle ne peut ni voir ni lancer vos agents enregistrés.",
|
||||
"triggers": "Le modèle ne peut ni proposer ni gérer de déclencheurs.",
|
||||
"changes": "Le modèle ne peut pas proposer de modifications de votre mémoire ou des règles d'un agent."
|
||||
"changes": "Le modèle ne peut pas proposer de modifications de vos notes, de ses règles, des skills, des pages ou du tableau de bord."
|
||||
},
|
||||
"addonDescribe_one": "Donne au modèle {{count}} outil de cet add-on.",
|
||||
"addonDescribe_other": "Donne au modèle {{count}} outils de cet add-on.",
|
||||
@@ -783,7 +783,7 @@
|
||||
"title": "Propositions",
|
||||
"supporting": "Modifications demandées par les modèles et en attente de votre réponse.",
|
||||
"emptyTitle": "Rien en attente",
|
||||
"emptyBody": "Quand un modèle propose une modification de votre mémoire ou du profil d'un agent, elle apparaît ici jusqu'à votre réponse.",
|
||||
"emptyBody": "Quand un modèle propose une modification de vos notes, du profil d'un agent, d'un skill, d'une page ou du tableau de bord, elle apparaît ici jusqu'à votre réponse.",
|
||||
"loadError": "Impossible de charger les propositions."
|
||||
},
|
||||
"memoryPage": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"title": "Base de connaissances",
|
||||
"subtitle": "Gérez des collections de documents pour le RAG des agents",
|
||||
"title": "Connaissances",
|
||||
"subtitle": "Collections de documents que les agents peuvent consulter. Cherchez dans chacune ici, ou ajoutez-en une à un agent pour qu'il l'utilise.",
|
||||
"newPlaceholder": "Nom de la nouvelle collection...",
|
||||
"actions": {
|
||||
"create": "Créer",
|
||||
@@ -20,7 +20,7 @@
|
||||
"title": "Aucune collection pour l'instant",
|
||||
"text": "Les collections permettent d'organiser des documents en bases de connaissances que les agents peuvent interroger via RAG (génération augmentée par recherche). Créez une collection ci-dessus pour commencer.",
|
||||
"noPersonal": "Vous n'avez encore aucune collection.",
|
||||
"learn": "Fonctionnement de la mémoire"
|
||||
"learn": "Fonctionnement des connaissances"
|
||||
},
|
||||
"deleteDialog": {
|
||||
"title": "Supprimer la collection",
|
||||
@@ -48,8 +48,8 @@
|
||||
"loadFailed": "Impossible de charger les fichiers."
|
||||
},
|
||||
"starting": {
|
||||
"title": "La mémoire démarre.",
|
||||
"text": "Le serveur prépare encore le service de mémoire. Cette page réessaie toute seule."
|
||||
"title": "Les connaissances démarrent.",
|
||||
"text": "Le serveur prépare encore le service de connaissances. Cette page réessaie toute seule."
|
||||
},
|
||||
"embedding": {
|
||||
"missingTitle": "Aucun modèle d'embedding installé.",
|
||||
|
||||
@@ -133,8 +133,8 @@
|
||||
"desc": "Serveurs MCP que vos chats peuvent utiliser"
|
||||
},
|
||||
"memory": {
|
||||
"label": "Mémoire",
|
||||
"desc": "Collections que vos chats peuvent consulter"
|
||||
"label": "Connaissances",
|
||||
"desc": "Connaissances que vos chats peuvent consulter"
|
||||
},
|
||||
"complete": "compléter"
|
||||
},
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"budgetNote": "Estimations : caractères divisés par quatre. La fenêtre du modèle n'est pas connue ici, il n'y a donc pas de part d'une limite.",
|
||||
"instructions": "Instructions",
|
||||
"skills": "Compétences",
|
||||
"memory": "Mémoire",
|
||||
"memory": "Connaissances",
|
||||
"skillsTitle": "Compétences chargées par ce contexte",
|
||||
"skillsNone": "Aucune compétence n'est active pour cet agent.",
|
||||
"skillsPrompt": "Dans le prompt de chaque message.",
|
||||
@@ -87,7 +87,7 @@
|
||||
"skillMissing": "{{name}} figure dans la liste, mais aucune compétence ne porte ce nom.",
|
||||
"skillTokens": "{{count}} jetons",
|
||||
"skillTokensTools": "0 au départ",
|
||||
"memoryTitle": "Mémoire qui serait envoyée",
|
||||
"memoryTitle": "Connaissances qui seraient envoyées",
|
||||
"memoryNone": "Aucune collection n'est dans la liste de cet agent. Ajoutez-en une à l'agent pour l'utiliser.",
|
||||
"memoryNoCollection": "La base de connaissances de cet agent est active, mais aucune collection nommée {{name}} n'existe encore.",
|
||||
"memoryTools": "Cet agent ne recherche que lorsque le modèle en fait la demande. Rien n'est ajouté au message au départ.",
|
||||
@@ -108,7 +108,7 @@
|
||||
"agentBudget": "Les compétences sélectionnées ajoutent environ {{count}} jetons à chaque message (estimation : caractères divisés par quatre).",
|
||||
"agentKb": {
|
||||
"reads": "Cet agent lit la collection nommée {{name}}.",
|
||||
"exists": "Cet agent lit la collection nommée {{name}}. Vous pouvez la remplir et la rechercher dans Mémoire.",
|
||||
"exists": "Cet agent lit la collection nommée {{name}}. Vous pouvez la remplir et la rechercher dans Connaissances.",
|
||||
"created": "Cet agent lit la collection nommée {{name}}. Elle est créée à l'enregistrement."
|
||||
}
|
||||
}
|
||||
@@ -71,7 +71,7 @@
|
||||
"voiceRecognition": "Reconnaissance vocale",
|
||||
"agents": "Agents",
|
||||
"skills": "Compétences",
|
||||
"memory": "Mémoire",
|
||||
"memory": "Connaissances",
|
||||
"mcpJobs": "Tâches MCP CI",
|
||||
"usage": "Utilisation",
|
||||
"users": "Utilisateurs",
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
"BasicInfo": "Basic info",
|
||||
"ModelSettings": "Model",
|
||||
"PromptsGoals": "Instructions",
|
||||
"MemorySettings": "Memory",
|
||||
"MemorySettings": "Pengetahuan",
|
||||
"Skills": "Skills",
|
||||
"Addons": "Add-ons",
|
||||
"MCP": "MCP servers",
|
||||
@@ -94,7 +94,7 @@
|
||||
"instructionsHelp": "What the agent always follows. Every chat with it starts from this text.",
|
||||
"collections": "Collections",
|
||||
"collectionsHint": "Collection name",
|
||||
"collectionsHelp": "The memory collections a chat with this agent may search. The list is exact: an empty list grants none.",
|
||||
"collectionsHelp": "Koleksi yang boleh dicari dalam obrolan dengan agen ini. Daftarnya persis: daftar kosong berarti tidak ada akses.",
|
||||
"skillsHelp": "The skills a chat with this agent may read. The list is exact: an empty list grants none.",
|
||||
"noSkills": "No skills yet.",
|
||||
"manageSkills": "Write or manage skills",
|
||||
|
||||
@@ -326,9 +326,9 @@
|
||||
"shell": "Jalankan perintah",
|
||||
"files": "File Anda",
|
||||
"media": "Gambar dan audio",
|
||||
"collections": "Koleksi",
|
||||
"collections": "Pengetahuan",
|
||||
"subagents": "Sub-agen",
|
||||
"changes": "Perubahan memori dan profil"
|
||||
"changes": "Perubahan yang disarankan"
|
||||
},
|
||||
"builtinBy": "{{tools}} · bawaan",
|
||||
"builtinByAddon": "{{tools}} · dilayani oleh {{provider}}",
|
||||
@@ -350,7 +350,7 @@
|
||||
"subagents": "Model dapat memulai sub-agen untuk satu tugas dan menerima laporannya.",
|
||||
"saved_agents": "Model dapat memulai salah satu agen tersimpan Anda sebagai sub-agen.",
|
||||
"triggers": "Model dapat mengusulkan, mencantumkan, mengubah, dan menghapus pemicu. Anda mengonfirmasi setiap pemicu atau perubahan baru.",
|
||||
"changes": "Model dapat mengusulkan perubahan pada memori Anda dan file agen. Anda mengonfirmasi setiap perubahan."
|
||||
"changes": "Model dapat mengusulkan perubahan pada catatan Anda, aturannya, skill, halaman, dan dasbor. Anda mengonfirmasi setiap perubahan."
|
||||
},
|
||||
"whenOff": {
|
||||
"shell": "Model dapat menulis berkas tetapi tidak dapat menjalankan apa pun.",
|
||||
@@ -361,7 +361,7 @@
|
||||
"subagents": "Model bekerja sendiri.",
|
||||
"saved_agents": "Model tidak dapat melihat atau memulai agen tersimpan Anda.",
|
||||
"triggers": "Model tidak dapat mengusulkan atau mengelola pemicu.",
|
||||
"changes": "Model tidak dapat mengusulkan perubahan pada memori Anda atau aturan agen."
|
||||
"changes": "Model tidak dapat mengusulkan perubahan pada catatan Anda, aturannya, skill, halaman, atau dasbor."
|
||||
},
|
||||
"addonDescribe_one": "Memberi model {{count}} alat dari add-on ini.",
|
||||
"addonDescribe_other": "Memberi model {{count}} alat dari add-on ini.",
|
||||
@@ -783,7 +783,7 @@
|
||||
"title": "Usulan",
|
||||
"supporting": "Perubahan yang diminta model dan menunggu jawaban Anda.",
|
||||
"emptyTitle": "Tidak ada yang menunggu",
|
||||
"emptyBody": "Saat model mengusulkan perubahan pada memori Anda atau profil agen, usulan itu tampil di sini sampai Anda menjawab.",
|
||||
"emptyBody": "Saat model mengusulkan perubahan pada catatan Anda, profil agen, skill, halaman, atau dasbor, usulan itu tampil di sini sampai Anda menjawab.",
|
||||
"loadError": "Usulan tidak dapat dimuat."
|
||||
},
|
||||
"memoryPage": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"title": "Basis Pengetahuan",
|
||||
"subtitle": "Kelola koleksi dokumen untuk agen RAG",
|
||||
"title": "Pengetahuan",
|
||||
"subtitle": "Koleksi dokumen yang bisa dicari agen. Cari di koleksi mana pun di sini, atau tambahkan ke agen saat Anda ingin koleksi itu dipakai.",
|
||||
"newPlaceholder": "Nama koleksi baru...",
|
||||
"actions": {
|
||||
"create": "Buat",
|
||||
@@ -20,7 +20,7 @@
|
||||
"title": "Belum ada koleksi",
|
||||
"text": "Koleksi memungkinkan Anda mengatur dokumen ke dalam basis pengetahuan yang dapat dicari oleh agen menggunakan RAG (Retrieval-Augmented Generation). Buat koleksi di atas untuk memulai.",
|
||||
"noPersonal": "Anda belum memiliki koleksi.",
|
||||
"learn": "Cara kerja memori"
|
||||
"learn": "Cara kerja pengetahuan"
|
||||
},
|
||||
"deleteDialog": {
|
||||
"title": "Hapus koleksi",
|
||||
@@ -48,8 +48,8 @@
|
||||
"loadFailed": "File tidak dapat dimuat."
|
||||
},
|
||||
"starting": {
|
||||
"title": "Memori sedang dimulai.",
|
||||
"text": "Server masih menyiapkan layanan memori. Halaman ini akan mencoba lagi dengan sendirinya."
|
||||
"title": "Pengetahuan sedang dimulai.",
|
||||
"text": "Server masih menyiapkan layanan pengetahuan. Halaman ini akan mencoba lagi dengan sendirinya."
|
||||
},
|
||||
"embedding": {
|
||||
"missingTitle": "Tidak ada model embedding yang terpasang.",
|
||||
|
||||
@@ -130,8 +130,8 @@
|
||||
"desc": "Server MCP yang bisa dipakai obrolan Anda"
|
||||
},
|
||||
"memory": {
|
||||
"label": "Memori",
|
||||
"desc": "Koleksi yang bisa dicari obrolan Anda"
|
||||
"label": "Pengetahuan",
|
||||
"desc": "Pengetahuan yang bisa dicari obrolan Anda"
|
||||
},
|
||||
"complete": "lengkapi"
|
||||
},
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"budgetNote": "Perkiraan: jumlah karakter dibagi empat. Jendela konteks model tidak diketahui di sini, jadi tidak ada persentase dari batas.",
|
||||
"instructions": "Instruksi",
|
||||
"skills": "Skill",
|
||||
"memory": "Memori",
|
||||
"memory": "Pengetahuan",
|
||||
"skillsTitle": "Skill yang dimuat konteks ini",
|
||||
"skillsNone": "Tidak ada skill yang aktif untuk agen ini.",
|
||||
"skillsPrompt": "Di prompt setiap pesan.",
|
||||
@@ -87,7 +87,7 @@
|
||||
"skillMissing": "{{name}} ada dalam daftar, tetapi tidak ada skill dengan nama itu.",
|
||||
"skillTokens": "{{count}} token",
|
||||
"skillTokensTools": "0 di awal",
|
||||
"memoryTitle": "Memori yang akan dikirim",
|
||||
"memoryTitle": "Pengetahuan yang akan dikirim",
|
||||
"memoryNone": "Tidak ada koleksi dalam daftar agen ini. Tambahkan satu ke agen untuk menggunakannya.",
|
||||
"memoryNoCollection": "Basis pengetahuan agen ini aktif, tetapi belum ada koleksi bernama {{name}}.",
|
||||
"memoryTools": "Agen ini hanya mencari saat model memintanya. Tidak ada yang ditambahkan ke pesan di awal.",
|
||||
@@ -108,7 +108,7 @@
|
||||
"agentBudget": "Skill yang dipilih menambahkan sekitar {{count}} token ke setiap pesan (perkiraan: jumlah karakter dibagi empat).",
|
||||
"agentKb": {
|
||||
"reads": "Agen ini membaca koleksi bernama {{name}}.",
|
||||
"exists": "Agen ini membaca koleksi bernama {{name}}. Anda dapat mengisi dan mencarinya di Memori.",
|
||||
"exists": "Agen ini membaca koleksi bernama {{name}}. Anda dapat mengisi dan mencarinya di Pengetahuan.",
|
||||
"created": "Agen ini membaca koleksi bernama {{name}}. Koleksi dibuat saat Anda menyimpan."
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
"voiceRecognition": "Pengenalan Suara",
|
||||
"agents": "Agen",
|
||||
"skills": "Skill",
|
||||
"memory": "Memori",
|
||||
"memory": "Pengetahuan",
|
||||
"mcpJobs": "MCP CI Jobs",
|
||||
"usage": "Penggunaan",
|
||||
"users": "Pengguna",
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
"BasicInfo": "Basic info",
|
||||
"ModelSettings": "Model",
|
||||
"PromptsGoals": "Instructions",
|
||||
"MemorySettings": "Memory",
|
||||
"MemorySettings": "Conoscenza",
|
||||
"Skills": "Skills",
|
||||
"Addons": "Add-ons",
|
||||
"MCP": "MCP servers",
|
||||
@@ -94,7 +94,7 @@
|
||||
"instructionsHelp": "What the agent always follows. Every chat with it starts from this text.",
|
||||
"collections": "Collections",
|
||||
"collectionsHint": "Collection name",
|
||||
"collectionsHelp": "The memory collections a chat with this agent may search. The list is exact: an empty list grants none.",
|
||||
"collectionsHelp": "Le raccolte in cui una chat con questo agente può cercare. L'elenco è esatto: un elenco vuoto non ne concede nessuna.",
|
||||
"skillsHelp": "The skills a chat with this agent may read. The list is exact: an empty list grants none.",
|
||||
"noSkills": "No skills yet.",
|
||||
"manageSkills": "Write or manage skills",
|
||||
|
||||
@@ -326,9 +326,9 @@
|
||||
"shell": "Esegui comandi",
|
||||
"files": "I tuoi file",
|
||||
"media": "Immagini e audio",
|
||||
"collections": "Raccolte",
|
||||
"collections": "Conoscenza",
|
||||
"subagents": "Sotto-agenti",
|
||||
"changes": "Modifiche a memoria e profilo"
|
||||
"changes": "Modifiche suggerite"
|
||||
},
|
||||
"builtinBy": "{{tools}} · integrati",
|
||||
"builtinByAddon": "{{tools}} · servito da {{provider}}",
|
||||
@@ -350,7 +350,7 @@
|
||||
"subagents": "Il modello può avviare un sotto-agente per un compito e ricevere il suo rapporto.",
|
||||
"saved_agents": "Il modello può avviare uno dei tuoi agenti salvati come sotto-agente.",
|
||||
"triggers": "Il modello può proporre, elencare, modificare ed eliminare trigger. Confermi tu ogni nuovo trigger o modifica.",
|
||||
"changes": "Il modello può proporre modifiche alla tua memoria e ai file di un agente. Confermi tu ognuna."
|
||||
"changes": "Il modello può proporre modifiche alle tue note, alle sue regole, alle skill, alle pagine e alla dashboard. Confermi tu ognuna."
|
||||
},
|
||||
"whenOff": {
|
||||
"shell": "Il modello può scrivere file ma non può eseguire nulla.",
|
||||
@@ -361,7 +361,7 @@
|
||||
"subagents": "Il modello lavora da solo.",
|
||||
"saved_agents": "Il modello non può vedere né avviare i tuoi agenti salvati.",
|
||||
"triggers": "Il modello non può proporre né gestire trigger.",
|
||||
"changes": "Il modello non può proporre modifiche alla tua memoria o alle regole di un agente."
|
||||
"changes": "Il modello non può proporre modifiche alle tue note, alle sue regole, alle skill, alle pagine o alla dashboard."
|
||||
},
|
||||
"addonDescribe_one": "Dà al modello {{count}} strumento di questo add-on.",
|
||||
"addonDescribe_other": "Dà al modello {{count}} strumenti di questo add-on.",
|
||||
@@ -783,7 +783,7 @@
|
||||
"title": "Proposte",
|
||||
"supporting": "Modifiche richieste dai modelli che attendono la tua risposta.",
|
||||
"emptyTitle": "Niente in attesa",
|
||||
"emptyBody": "Quando un modello propone una modifica alla tua memoria o al profilo di un agente, appare qui finché non rispondi.",
|
||||
"emptyBody": "Quando un modello propone una modifica alle tue note, al profilo di un agente, a una skill, a una pagina o alla dashboard, appare qui finché non rispondi.",
|
||||
"loadError": "Impossibile caricare le proposte."
|
||||
},
|
||||
"memoryPage": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"title": "Base di conoscenza",
|
||||
"subtitle": "Gestisci raccolte di documenti per il RAG degli agenti",
|
||||
"title": "Conoscenza",
|
||||
"subtitle": "Raccolte di documenti in cui gli agenti possono cercare. Cerca in una qualsiasi da qui, oppure aggiungine una a un agente quando vuoi che la usi.",
|
||||
"newPlaceholder": "Nome della nuova raccolta...",
|
||||
"actions": {
|
||||
"create": "Crea",
|
||||
@@ -20,7 +20,7 @@
|
||||
"title": "Nessuna raccolta ancora",
|
||||
"text": "Le raccolte ti permettono di organizzare i documenti in basi di conoscenza che gli agenti possono consultare con RAG (Retrieval-Augmented Generation). Crea una raccolta sopra per iniziare.",
|
||||
"noPersonal": "Non hai ancora raccolte.",
|
||||
"learn": "Come funziona la memoria"
|
||||
"learn": "Come funziona la conoscenza"
|
||||
},
|
||||
"deleteDialog": {
|
||||
"title": "Elimina raccolta",
|
||||
@@ -48,8 +48,8 @@
|
||||
"loadFailed": "Impossibile caricare i file."
|
||||
},
|
||||
"starting": {
|
||||
"title": "La memoria si sta avviando.",
|
||||
"text": "Il server sta ancora preparando il servizio di memoria. Questa pagina riprova da sola."
|
||||
"title": "La conoscenza si sta avviando.",
|
||||
"text": "Il server sta ancora preparando il servizio di conoscenza. Questa pagina riprova da sola."
|
||||
},
|
||||
"embedding": {
|
||||
"missingTitle": "Nessun modello di embedding installato.",
|
||||
|
||||
@@ -130,8 +130,8 @@
|
||||
"desc": "Server MCP che le tue chat possono usare"
|
||||
},
|
||||
"memory": {
|
||||
"label": "Memoria",
|
||||
"desc": "Raccolte in cui le tue chat possono cercare"
|
||||
"label": "Conoscenza",
|
||||
"desc": "Conoscenza in cui le tue chat possono cercare"
|
||||
},
|
||||
"complete": "completa"
|
||||
},
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"budgetNote": "Stime: caratteri divisi per quattro. La finestra di contesto del modello non è nota qui, quindi non c'è una quota di un limite.",
|
||||
"instructions": "Istruzioni",
|
||||
"skills": "Competenze",
|
||||
"memory": "Memoria",
|
||||
"memory": "Conoscenza",
|
||||
"skillsTitle": "Competenze caricate da questo contesto",
|
||||
"skillsNone": "Nessuna competenza è attiva per questo agente.",
|
||||
"skillsPrompt": "Nel prompt di ogni messaggio.",
|
||||
@@ -87,7 +87,7 @@
|
||||
"skillMissing": "{{name}} è nell'elenco, ma nessuna competenza ha quel nome.",
|
||||
"skillTokens": "{{count}} token",
|
||||
"skillTokensTools": "0 all'inizio",
|
||||
"memoryTitle": "Memoria che verrebbe inviata",
|
||||
"memoryTitle": "Conoscenza che verrebbe inviata",
|
||||
"memoryNone": "Nessuna collezione è nell'elenco di questo agente. Aggiungine una per usarla.",
|
||||
"memoryNoCollection": "La base di conoscenza di questo agente è attiva, ma non esiste ancora una collezione chiamata {{name}}.",
|
||||
"memoryTools": "Questo agente cerca solo quando il modello lo richiede. Nulla viene aggiunto al messaggio all'inizio.",
|
||||
@@ -108,7 +108,7 @@
|
||||
"agentBudget": "Le competenze selezionate aggiungono circa {{count}} token a ogni messaggio (stima: caratteri divisi per quattro).",
|
||||
"agentKb": {
|
||||
"reads": "Questo agente legge la collezione chiamata {{name}}.",
|
||||
"exists": "Questo agente legge la collezione chiamata {{name}}. Puoi riempirla e cercarla in Memoria.",
|
||||
"exists": "Questo agente legge la collezione chiamata {{name}}. Puoi riempirla e cercarla in Conoscenza.",
|
||||
"created": "Questo agente legge la collezione chiamata {{name}}. Viene creata al salvataggio."
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
"voiceRecognition": "Riconoscimento vocale",
|
||||
"agents": "Agenti",
|
||||
"skills": "Competenze",
|
||||
"memory": "Memoria",
|
||||
"memory": "Conoscenza",
|
||||
"mcpJobs": "Job MCP CI",
|
||||
"usage": "Utilizzo",
|
||||
"users": "Utenti",
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
"BasicInfo": "Basic info",
|
||||
"ModelSettings": "Model",
|
||||
"PromptsGoals": "Instructions",
|
||||
"MemorySettings": "Memory",
|
||||
"MemorySettings": "지식",
|
||||
"Skills": "Skills",
|
||||
"Addons": "Add-ons",
|
||||
"MCP": "MCP servers",
|
||||
@@ -94,7 +94,7 @@
|
||||
"instructionsHelp": "What the agent always follows. Every chat with it starts from this text.",
|
||||
"collections": "Collections",
|
||||
"collectionsHint": "Collection name",
|
||||
"collectionsHelp": "The memory collections a chat with this agent may search. The list is exact: an empty list grants none.",
|
||||
"collectionsHelp": "이 에이전트와의 채팅이 검색할 수 있는 컬렉션입니다. 목록이 곧 허용 범위이며, 비어 있으면 아무것도 허용하지 않습니다.",
|
||||
"skillsHelp": "The skills a chat with this agent may read. The list is exact: an empty list grants none.",
|
||||
"noSkills": "No skills yet.",
|
||||
"manageSkills": "Write or manage skills",
|
||||
|
||||
@@ -326,9 +326,9 @@
|
||||
"shell": "명령 실행",
|
||||
"files": "내 파일",
|
||||
"media": "이미지와 오디오",
|
||||
"collections": "컬렉션",
|
||||
"collections": "지식",
|
||||
"subagents": "하위 에이전트",
|
||||
"changes": "메모리 및 프로필 변경"
|
||||
"changes": "제안된 변경"
|
||||
},
|
||||
"builtinBy": "{{tools}} · 기본 제공",
|
||||
"builtinByAddon": "{{tools}} · {{provider}}이(가) 제공",
|
||||
@@ -350,7 +350,7 @@
|
||||
"subagents": "모델이 작업 하나를 위해 하위 에이전트를 시작하고 보고를 받을 수 있습니다.",
|
||||
"saved_agents": "모델이 저장된 에이전트 중 하나를 하위 에이전트로 시작할 수 있습니다.",
|
||||
"triggers": "모델이 트리거를 제안하고, 나열하고, 변경하고, 삭제할 수 있습니다. 새 트리거나 변경은 매번 직접 확인합니다.",
|
||||
"changes": "모델이 내 메모리와 에이전트 파일의 변경을 제안할 수 있습니다. 매번 직접 확인합니다."
|
||||
"changes": "모델이 내 노트, 모델 자신의 규칙, 스킬, 페이지, 대시보드의 변경을 제안할 수 있습니다. 매번 직접 확인합니다."
|
||||
},
|
||||
"whenOff": {
|
||||
"shell": "모델이 파일은 쓸 수 있지만 아무것도 실행할 수 없습니다.",
|
||||
@@ -361,7 +361,7 @@
|
||||
"subagents": "모델이 혼자 일합니다.",
|
||||
"saved_agents": "모델이 저장된 에이전트를 보거나 시작할 수 없습니다.",
|
||||
"triggers": "모델이 트리거를 제안하거나 관리할 수 없습니다.",
|
||||
"changes": "모델이 메모리나 에이전트 규칙의 변경을 제안할 수 없습니다."
|
||||
"changes": "모델이 노트, 모델 자신의 규칙, 스킬, 페이지, 대시보드의 변경을 제안할 수 없습니다."
|
||||
},
|
||||
"addonDescribe_one": "이 애드온의 도구 {{count}}개를 모델에 제공합니다.",
|
||||
"addonDescribe_other": "이 애드온의 도구 {{count}}개를 모델에 제공합니다.",
|
||||
@@ -783,7 +783,7 @@
|
||||
"title": "제안",
|
||||
"supporting": "모델이 요청했고 당신의 답을 기다리는 변경입니다.",
|
||||
"emptyTitle": "대기 중인 항목이 없습니다",
|
||||
"emptyBody": "모델이 메모리나 에이전트 프로필 변경을 제안하면 답할 때까지 여기에 표시됩니다.",
|
||||
"emptyBody": "모델이 노트, 에이전트 프로필, 스킬, 페이지, 대시보드의 변경을 제안하면 답할 때까지 여기에 표시됩니다.",
|
||||
"loadError": "제안을 불러오지 못했습니다."
|
||||
},
|
||||
"memoryPage": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"title": "지식 베이스",
|
||||
"subtitle": "에이전트 RAG를 위한 문서 컬렉션을 관리합니다",
|
||||
"title": "지식",
|
||||
"subtitle": "에이전트가 검색할 수 있는 문서 컬렉션입니다. 여기서 검색하거나, 사용하게 하려면 에이전트에 추가하세요.",
|
||||
"newPlaceholder": "새 컬렉션 이름...",
|
||||
"actions": {
|
||||
"create": "만들기",
|
||||
@@ -20,7 +20,7 @@
|
||||
"title": "아직 컬렉션이 없습니다",
|
||||
"text": "컬렉션을 사용하면 문서를 지식 베이스로 정리하여 에이전트가 RAG(검색 증강 생성)로 검색할 수 있습니다. 위에서 컬렉션을 만들어 시작하세요.",
|
||||
"noPersonal": "아직 컬렉션이 없습니다.",
|
||||
"learn": "메모리 작동 방식"
|
||||
"learn": "지식 작동 방식"
|
||||
},
|
||||
"deleteDialog": {
|
||||
"title": "컬렉션 삭제",
|
||||
@@ -48,8 +48,8 @@
|
||||
"loadFailed": "파일을 불러올 수 없습니다."
|
||||
},
|
||||
"starting": {
|
||||
"title": "메모리를 시작하는 중입니다.",
|
||||
"text": "서버가 아직 메모리 서비스를 준비하고 있습니다. 이 페이지가 자동으로 다시 확인합니다."
|
||||
"title": "지식을 시작하는 중입니다.",
|
||||
"text": "서버가 아직 지식 서비스를 준비하고 있습니다. 이 페이지가 자동으로 다시 확인합니다."
|
||||
},
|
||||
"embedding": {
|
||||
"missingTitle": "임베딩 모델이 설치되어 있지 않습니다.",
|
||||
|
||||
@@ -130,8 +130,8 @@
|
||||
"desc": "채팅이 쓸 수 있는 MCP 서버"
|
||||
},
|
||||
"memory": {
|
||||
"label": "메모리",
|
||||
"desc": "채팅이 검색할 수 있는 컬렉션"
|
||||
"label": "지식",
|
||||
"desc": "채팅이 검색할 수 있는 지식"
|
||||
},
|
||||
"complete": "완성"
|
||||
},
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"budgetNote": "추정치: 글자 수를 4로 나눈 값. 여기서는 모델의 컨텍스트 창을 알 수 없으므로 한도 대비 비율은 표시하지 않습니다.",
|
||||
"instructions": "지침",
|
||||
"skills": "스킬",
|
||||
"memory": "메모리",
|
||||
"memory": "지식",
|
||||
"skillsTitle": "이 컨텍스트가 불러오는 스킬",
|
||||
"skillsNone": "이 에이전트에 켜진 스킬이 없습니다.",
|
||||
"skillsPrompt": "모든 메시지의 프롬프트에 포함됩니다.",
|
||||
@@ -87,7 +87,7 @@
|
||||
"skillMissing": "{{name}}이(가) 목록에 있지만 그 이름의 스킬이 없습니다.",
|
||||
"skillTokens": "{{count}} 토큰",
|
||||
"skillTokensTools": "처음에는 0",
|
||||
"memoryTitle": "전송될 메모리",
|
||||
"memoryTitle": "전송될 지식",
|
||||
"memoryNone": "이 에이전트의 목록에 컬렉션이 없습니다. 사용하려면 에이전트에 컬렉션을 추가하세요.",
|
||||
"memoryNoCollection": "이 에이전트의 지식 베이스는 켜져 있지만 {{name}}이라는 컬렉션이 아직 없습니다.",
|
||||
"memoryTools": "이 에이전트는 모델이 요청할 때만 검색합니다. 처음에는 메시지에 아무것도 추가되지 않습니다.",
|
||||
@@ -108,7 +108,7 @@
|
||||
"agentBudget": "선택한 스킬은 모든 메시지에 약 {{count}} 토큰을 더합니다 (추정: 글자 수를 4로 나눈 값).",
|
||||
"agentKb": {
|
||||
"reads": "이 에이전트는 {{name}}이라는 컬렉션을 읽습니다.",
|
||||
"exists": "이 에이전트는 {{name}}이라는 컬렉션을 읽습니다. 메모리에서 이 컬렉션을 채우고 검색할 수 있습니다.",
|
||||
"exists": "이 에이전트는 {{name}}이라는 컬렉션을 읽습니다. 지식에서 이 컬렉션을 채우고 검색할 수 있습니다.",
|
||||
"created": "이 에이전트는 {{name}}이라는 컬렉션을 읽습니다. 저장할 때 만들어집니다."
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
"voiceRecognition": "음성 인식",
|
||||
"agents": "에이전트",
|
||||
"skills": "스킬",
|
||||
"memory": "메모리",
|
||||
"memory": "지식",
|
||||
"mcpJobs": "MCP CI 작업",
|
||||
"usage": "사용량",
|
||||
"users": "사용자",
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
"BasicInfo": "Basic info",
|
||||
"ModelSettings": "Model",
|
||||
"PromptsGoals": "Instructions",
|
||||
"MemorySettings": "Memory",
|
||||
"MemorySettings": "Conhecimento",
|
||||
"Skills": "Skills",
|
||||
"Addons": "Add-ons",
|
||||
"MCP": "MCP servers",
|
||||
@@ -94,7 +94,7 @@
|
||||
"instructionsHelp": "What the agent always follows. Every chat with it starts from this text.",
|
||||
"collections": "Collections",
|
||||
"collectionsHint": "Collection name",
|
||||
"collectionsHelp": "The memory collections a chat with this agent may search. The list is exact: an empty list grants none.",
|
||||
"collectionsHelp": "As coleções que um chat com este agente pode pesquisar. A lista é exata: uma lista vazia não concede nenhuma.",
|
||||
"skillsHelp": "The skills a chat with this agent may read. The list is exact: an empty list grants none.",
|
||||
"noSkills": "No skills yet.",
|
||||
"manageSkills": "Write or manage skills",
|
||||
|
||||
@@ -326,9 +326,9 @@
|
||||
"shell": "Executar comandos",
|
||||
"files": "Seus arquivos",
|
||||
"media": "Imagens e áudio",
|
||||
"collections": "Coleções",
|
||||
"collections": "Conhecimento",
|
||||
"subagents": "Subagentes",
|
||||
"changes": "Alterações de memória e perfil"
|
||||
"changes": "Alterações sugeridas"
|
||||
},
|
||||
"builtinBy": "{{tools}} · integradas",
|
||||
"builtinByAddon": "{{tools}} · servidas por {{provider}}",
|
||||
@@ -350,7 +350,7 @@
|
||||
"subagents": "O modelo pode iniciar um subagente para uma tarefa e receber o relatório dele.",
|
||||
"saved_agents": "O modelo pode iniciar um dos seus agentes salvos como subagente.",
|
||||
"triggers": "O modelo pode propor, listar, alterar e excluir gatilhos. Você confirma cada novo gatilho ou alteração.",
|
||||
"changes": "O modelo pode propor alterações na sua memória e nos arquivos de um agente. Você confirma cada uma."
|
||||
"changes": "O modelo pode propor alterações nas suas notas, nas regras dele, em skills, páginas e no painel. Você confirma cada uma."
|
||||
},
|
||||
"whenOff": {
|
||||
"shell": "O modelo pode escrever arquivos, mas não pode executar nada.",
|
||||
@@ -361,7 +361,7 @@
|
||||
"subagents": "O modelo trabalha sozinho.",
|
||||
"saved_agents": "O modelo não pode ver nem iniciar seus agentes salvos.",
|
||||
"triggers": "O modelo não pode propor nem gerenciar gatilhos.",
|
||||
"changes": "O modelo não pode propor alterações na sua memória ou nas regras de um agente."
|
||||
"changes": "O modelo não pode propor alterações nas suas notas, nas regras dele, em skills, páginas ou no painel."
|
||||
},
|
||||
"addonDescribe_one": "Dá ao modelo {{count}} ferramenta deste add-on.",
|
||||
"addonDescribe_other": "Dá ao modelo {{count}} ferramentas deste add-on.",
|
||||
@@ -783,7 +783,7 @@
|
||||
"title": "Propostas",
|
||||
"supporting": "Alterações que os modelos pediram e que aguardam sua resposta.",
|
||||
"emptyTitle": "Nada aguardando",
|
||||
"emptyBody": "Quando um modelo propõe uma alteração na sua memória ou no perfil de um agente, ela aparece aqui até você responder.",
|
||||
"emptyBody": "Quando um modelo propõe uma alteração nas suas notas, no perfil de um agente, em uma skill, em uma página ou no painel, ela aparece aqui até você responder.",
|
||||
"loadError": "Não foi possível carregar as propostas."
|
||||
},
|
||||
"memoryPage": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"title": "Base de Conhecimento",
|
||||
"subtitle": "Gerencie coleções de documentos para RAG de agentes",
|
||||
"title": "Conhecimento",
|
||||
"subtitle": "Coleções de documentos em que os agentes podem pesquisar. Pesquise em qualquer uma aqui ou adicione uma a um agente quando quiser que ela seja usada.",
|
||||
"newPlaceholder": "Nome da nova coleção...",
|
||||
"actions": {
|
||||
"create": "Criar",
|
||||
@@ -20,7 +20,7 @@
|
||||
"title": "Nenhuma coleção ainda",
|
||||
"text": "As coleções permitem organizar documentos em bases de conhecimento que os agentes podem pesquisar usando RAG (Retrieval-Augmented Generation). Crie uma coleção acima para começar.",
|
||||
"noPersonal": "Você ainda não tem coleções.",
|
||||
"learn": "Como a memória funciona"
|
||||
"learn": "Como o conhecimento funciona"
|
||||
},
|
||||
"deleteDialog": {
|
||||
"title": "Excluir Coleção",
|
||||
@@ -48,8 +48,8 @@
|
||||
"loadFailed": "Não foi possível carregar os arquivos."
|
||||
},
|
||||
"starting": {
|
||||
"title": "A memória está iniciando.",
|
||||
"text": "O servidor ainda está preparando o serviço de memória. Esta página tenta de novo sozinha."
|
||||
"title": "O conhecimento está iniciando.",
|
||||
"text": "O servidor ainda está preparando o serviço de conhecimento. Esta página tenta de novo sozinha."
|
||||
},
|
||||
"embedding": {
|
||||
"missingTitle": "Nenhum modelo de embeddings instalado.",
|
||||
|
||||
@@ -145,8 +145,8 @@
|
||||
"desc": "Servidores MCP que seus chats podem usar"
|
||||
},
|
||||
"memory": {
|
||||
"label": "Memória",
|
||||
"desc": "Coleções em que seus chats podem pesquisar"
|
||||
"label": "Conhecimento",
|
||||
"desc": "Conhecimento que seus chats podem pesquisar"
|
||||
},
|
||||
"complete": "completar"
|
||||
},
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"budgetNote": "Estimativas: caracteres divididos por quatro. A janela do modelo não é conhecida aqui, então não há parcela de um limite.",
|
||||
"instructions": "Instruções",
|
||||
"skills": "Skills",
|
||||
"memory": "Memória",
|
||||
"memory": "Conhecimento",
|
||||
"skillsTitle": "Skills que este contexto carrega",
|
||||
"skillsNone": "Nenhuma skill está ativa para este agente.",
|
||||
"skillsPrompt": "No prompt de cada mensagem.",
|
||||
@@ -87,7 +87,7 @@
|
||||
"skillMissing": "{{name}} está na lista, mas nenhuma skill tem esse nome.",
|
||||
"skillTokens": "{{count}} tokens",
|
||||
"skillTokensTools": "0 no início",
|
||||
"memoryTitle": "Memória que seria enviada",
|
||||
"memoryTitle": "Conhecimento que seria enviado",
|
||||
"memoryNone": "Nenhuma coleção está na lista deste agente. Adicione uma ao agente para usá-la.",
|
||||
"memoryNoCollection": "A base de conhecimento deste agente está ativa, mas ainda não existe uma coleção chamada {{name}}.",
|
||||
"memoryTools": "Este agente pesquisa somente quando o modelo pedir. Nada é acrescentado à mensagem no início.",
|
||||
@@ -108,7 +108,7 @@
|
||||
"agentBudget": "As skills selecionadas acrescentam cerca de {{count}} tokens a cada mensagem (estimativa: caracteres divididos por quatro).",
|
||||
"agentKb": {
|
||||
"reads": "Este agente lê a coleção chamada {{name}}.",
|
||||
"exists": "Este agente lê a coleção chamada {{name}}. Você pode preenchê-la e pesquisá-la em Memória.",
|
||||
"exists": "Este agente lê a coleção chamada {{name}}. Você pode preenchê-la e pesquisá-la em Conhecimento.",
|
||||
"created": "Este agente lê a coleção chamada {{name}}. Ela é criada quando você salvar."
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
"voiceRecognition": "Reconhecimento de Voz",
|
||||
"agents": "Agentes",
|
||||
"skills": "Habilidades",
|
||||
"memory": "Memória",
|
||||
"memory": "Conhecimento",
|
||||
"mcpJobs": "Trabalhos de CI MCP",
|
||||
"usage": "Uso",
|
||||
"users": "Usuários",
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
"BasicInfo": "Basic info",
|
||||
"ModelSettings": "Model",
|
||||
"PromptsGoals": "Instructions",
|
||||
"MemorySettings": "Memory",
|
||||
"MemorySettings": "知识库",
|
||||
"Skills": "Skills",
|
||||
"Addons": "Add-ons",
|
||||
"MCP": "MCP servers",
|
||||
@@ -94,7 +94,7 @@
|
||||
"instructionsHelp": "What the agent always follows. Every chat with it starts from this text.",
|
||||
"collections": "Collections",
|
||||
"collectionsHint": "Collection name",
|
||||
"collectionsHelp": "The memory collections a chat with this agent may search. The list is exact: an empty list grants none.",
|
||||
"collectionsHelp": "与此智能体的聊天可以搜索的集合。列表即全部权限:列表为空则不授予任何集合。",
|
||||
"skillsHelp": "The skills a chat with this agent may read. The list is exact: an empty list grants none.",
|
||||
"noSkills": "No skills yet.",
|
||||
"manageSkills": "Write or manage skills",
|
||||
|
||||
@@ -328,7 +328,7 @@
|
||||
"media": "图片和音频",
|
||||
"collections": "知识库",
|
||||
"subagents": "子代理",
|
||||
"changes": "记忆和配置文件的修改"
|
||||
"changes": "建议的更改"
|
||||
},
|
||||
"builtinBy": "{{tools}} · 内置",
|
||||
"builtinByAddon": "{{tools}} · 由 {{provider}} 提供",
|
||||
@@ -350,7 +350,7 @@
|
||||
"subagents": "模型可以为一项任务启动子智能体并获取其报告。",
|
||||
"saved_agents": "模型可以把你已保存的智能体之一作为子智能体启动。",
|
||||
"triggers": "模型可以提议、列出、修改和删除触发器。每个新触发器或修改都由你确认。",
|
||||
"changes": "模型可以提议修改你的记忆和智能体的文件。每一项都由你确认。"
|
||||
"changes": "模型可以提议修改你的笔记、它自己的规则、技能、页面和仪表板。每一项都由你确认。"
|
||||
},
|
||||
"whenOff": {
|
||||
"shell": "模型可以写文件,但不能运行任何东西。",
|
||||
@@ -361,7 +361,7 @@
|
||||
"subagents": "模型独自工作。",
|
||||
"saved_agents": "模型看不到也无法启动你保存的智能体。",
|
||||
"triggers": "模型无法提议或管理触发器。",
|
||||
"changes": "模型无法提议修改你的记忆或智能体的规则。"
|
||||
"changes": "模型无法提议修改你的笔记、它自己的规则、技能、页面或仪表板。"
|
||||
},
|
||||
"addonDescribe_one": "向模型提供此附加组件的 {{count}} 个工具。",
|
||||
"addonDescribe_other": "向模型提供此附加组件的 {{count}} 个工具。",
|
||||
@@ -783,7 +783,7 @@
|
||||
"title": "提议",
|
||||
"supporting": "模型提出、等待你回应的更改。",
|
||||
"emptyTitle": "没有待处理的内容",
|
||||
"emptyBody": "当模型提议更改你的记忆或智能体配置文件时,会显示在这里,直到你作出回应。",
|
||||
"emptyBody": "当模型提议更改你的笔记、智能体配置文件、技能、页面或仪表板时,会显示在这里,直到你作出回应。",
|
||||
"loadError": "无法加载提议。"
|
||||
},
|
||||
"memoryPage": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"title": "知识库",
|
||||
"subtitle": "为智能体的 RAG 管理文档集合",
|
||||
"subtitle": "智能体可以搜索的文档集合。可在此搜索任意集合,或在需要时将其添加到智能体。",
|
||||
"newPlaceholder": "新集合名称...",
|
||||
"actions": {
|
||||
"create": "创建",
|
||||
@@ -20,7 +20,7 @@
|
||||
"title": "暂无集合",
|
||||
"text": "集合让您可以将文档组织成知识库,智能体可以通过 RAG(检索增强生成)进行搜索。在上方创建一个集合以开始。",
|
||||
"noPersonal": "您还没有任何集合。",
|
||||
"learn": "了解记忆的工作方式"
|
||||
"learn": "了解知识库的工作方式"
|
||||
},
|
||||
"deleteDialog": {
|
||||
"title": "删除集合",
|
||||
@@ -48,8 +48,8 @@
|
||||
"loadFailed": "无法加载文件。"
|
||||
},
|
||||
"starting": {
|
||||
"title": "记忆服务正在启动。",
|
||||
"text": "服务器仍在准备记忆服务。此页面会自动重试。"
|
||||
"title": "知识库服务正在启动。",
|
||||
"text": "服务器仍在准备知识库服务。此页面会自动重试。"
|
||||
},
|
||||
"embedding": {
|
||||
"missingTitle": "未安装嵌入模型。",
|
||||
|
||||
@@ -130,8 +130,8 @@
|
||||
"desc": "你的对话可以使用的 MCP 服务器"
|
||||
},
|
||||
"memory": {
|
||||
"label": "记忆",
|
||||
"desc": "你的对话可以搜索的集合"
|
||||
"label": "知识库",
|
||||
"desc": "你的对话可以搜索的知识库"
|
||||
},
|
||||
"complete": "补全"
|
||||
},
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"budgetNote": "估算:字符数除以四。此处不知道模型的窗口大小,因此不显示占上限的比例。",
|
||||
"instructions": "指令",
|
||||
"skills": "技能",
|
||||
"memory": "记忆库",
|
||||
"memory": "知识库",
|
||||
"skillsTitle": "此上下文加载的技能",
|
||||
"skillsNone": "此智能体未开启任何技能。",
|
||||
"skillsPrompt": "在每条消息的提示词中。",
|
||||
@@ -87,7 +87,7 @@
|
||||
"skillMissing": "{{name}} 在列表中,但没有该名称的技能。",
|
||||
"skillTokens": "{{count}} 个令牌",
|
||||
"skillTokensTools": "开始时为 0",
|
||||
"memoryTitle": "将发送的记忆内容",
|
||||
"memoryTitle": "将发送的知识库内容",
|
||||
"memoryNone": "此智能体的列表中没有集合。请将一个集合添加到智能体以使用它。",
|
||||
"memoryNoCollection": "此智能体的知识库已开启,但尚不存在名为 {{name}} 的集合。",
|
||||
"memoryTools": "此智能体仅在模型请求时搜索。开始时不会向消息添加任何内容。",
|
||||
@@ -108,7 +108,7 @@
|
||||
"agentBudget": "所选技能会为每条消息增加约 {{count}} 个令牌(估算:字符数除以四)。",
|
||||
"agentKb": {
|
||||
"reads": "此智能体读取名为 {{name}} 的集合。",
|
||||
"exists": "此智能体读取名为 {{name}} 的集合。您可以在记忆库中填充并搜索它。",
|
||||
"exists": "此智能体读取名为 {{name}} 的集合。您可以在知识库中填充并搜索它。",
|
||||
"created": "此智能体读取名为 {{name}} 的集合。保存时会创建该集合。"
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@
|
||||
"voiceRecognition": "语音识别",
|
||||
"agents": "智能体",
|
||||
"skills": "技能",
|
||||
"memory": "记忆库",
|
||||
"memory": "知识库",
|
||||
"mcpJobs": "MCP CI 任务",
|
||||
"usage": "用量",
|
||||
"users": "用户",
|
||||
|
||||
+2
-2
@@ -24,7 +24,7 @@
|
||||
// note what applying does, only where the handler says it
|
||||
|
||||
export const GROUPS = [
|
||||
{ id: 'memory', label: 'Memory and models', hint: 'When models stop, what gets evicted, GPU budget', icon: 'memory' },
|
||||
{ id: 'memory', label: 'Models in memory', hint: 'When models stop, what gets evicted, GPU budget', icon: 'memory' },
|
||||
{ id: 'speed', label: 'Speed and defaults', hint: 'Threads, context window, downloads', icon: 'gauge' },
|
||||
{ id: 'backends', label: 'Backends and galleries', hint: 'Upgrades, gallery sources, start-up loading', icon: 'boxes' },
|
||||
{ id: 'access', label: 'Access and security', hint: 'Cross-origin rules, CSRF, legacy API keys', icon: 'shield' },
|
||||
@@ -62,7 +62,7 @@ const WATCHDOG_LIVE = { apply: 'live', note: 'The watchdog restarts with the new
|
||||
// bool, text, int, duration, percent, select, model, json, lines, hosts, token,
|
||||
// asset (the three branding images, saved at once by their own endpoint).
|
||||
export const FIELDS = [
|
||||
// ---- Memory and models ---------------------------------------------------
|
||||
// ---- Models in memory ---------------------------------------------------
|
||||
{ key: 'watchdog_enabled', group: 'memory', was: 'watchdog', kind: 'bool', label: 'Watchdog', composite: true,
|
||||
desc: 'Automatically monitor and manage backend processes. Switches the idle and busy checks together.',
|
||||
default: false, ...WATCHDOG_LIVE },
|
||||
|
||||
@@ -198,18 +198,18 @@ test('sidebar entries own one route each: Apps on /app/addons, never a hub', asy
|
||||
assert.equal(hubOwnsPath(addons, '/app/addons', { ...auth, features: { addon_navigation: false } }), true)
|
||||
})
|
||||
|
||||
test('the primary items: files, pages, agents, MCP connectors, memory, skills, models and add-ons', () => {
|
||||
test('the primary items: files, pages, agents, MCP connectors, knowledge, skills, models and add-ons', () => {
|
||||
assert.deepEqual(primaryDestinations.map(i => i.path), [
|
||||
'/app/files', '/app/pages', '/app/agents', '/app/mcp-connectors', '/app/collections', '/app/skills', '/app/models', '/app/addons',
|
||||
])
|
||||
const all = { isAdmin: true, hasFeature: () => true, hasBuiltin: false, features: {}, hasPages: true }
|
||||
assert.equal(visiblePrimary(primaryDestinations, all).length, 8)
|
||||
// A server without collections hides Memory; a user without chats sees no chat pages.
|
||||
// A server without collections hides Knowledge; a user without chats sees no chat pages.
|
||||
// Agents have their own feature: an administrator grants it apart from the chats.
|
||||
assert.ok(!visiblePrimary(primaryDestinations, { ...all, features: { collections: false } }).some(i => i.path === '/app/collections'))
|
||||
const noChats = visiblePrimary(primaryDestinations, { ...all, hasFeature: f => f !== 'chats' }).map(i => i.path)
|
||||
assert.deepEqual(noChats, ['/app/agents', '/app/collections', '/app/models', '/app/addons'])
|
||||
// Skills sit right after Memory.
|
||||
// Skills sit right after Knowledge.
|
||||
const order = visiblePrimary(primaryDestinations, all).map(i => i.path)
|
||||
assert.equal(order[order.indexOf('/app/collections') + 1], '/app/skills')
|
||||
const noAgents = visiblePrimary(primaryDestinations, { ...all, hasFeature: f => f !== 'agents' }).map(i => i.path)
|
||||
|
||||
@@ -34,7 +34,7 @@ func (s *Service) describeGroups() {
|
||||
WhenOff: "The model cannot read images or recordings itself.",
|
||||
},
|
||||
builtins.GroupCollections: {
|
||||
Title: "Collections",
|
||||
Title: "Knowledge",
|
||||
Description: "The model can list your collections and search them for the passages that match a question.",
|
||||
WhenOff: "The model cannot read your collections.",
|
||||
},
|
||||
@@ -55,10 +55,10 @@ func (s *Service) describeGroups() {
|
||||
WhenOff: "The model cannot create or manage triggers. A run that a trigger or a connector started never has them.",
|
||||
},
|
||||
builtins.GroupChanges: {
|
||||
Title: "Memory and profile changes",
|
||||
Description: "The model can propose an edit to your memory notes or to an agent's standing rules, and undo an edit you confirmed. " +
|
||||
Title: "Suggested changes",
|
||||
Description: "The model can propose an edit to your notes, its standing rules, skills, pages and dashboard, and undo an edit you confirmed. " +
|
||||
"Nothing changes until you confirm the proposal on a card in the chat.",
|
||||
WhenOff: "The model cannot propose edits to your memory or to an agent's rules.",
|
||||
WhenOff: "The model cannot propose edits to your notes, its rules, skills, pages or dashboard.",
|
||||
},
|
||||
} {
|
||||
s.builtins.DescribeGroup(group, info)
|
||||
|
||||
@@ -37,7 +37,7 @@ var _ = Describe("what a person reads next to a tool switch", func() {
|
||||
// The group with no tool in the registry list of the interface
|
||||
// ("changes") reads as a title, not as its ID.
|
||||
changes := builtinGroup(p.Builtins, builtins.GroupChanges)
|
||||
Expect(changes.Title).To(Equal("Memory and profile changes"))
|
||||
Expect(changes.Title).To(Equal("Suggested changes"))
|
||||
Expect(changes.Description).To(ContainSubstring("until you confirm"))
|
||||
})
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ LocalAI provides a comprehensive set of features for running AI models locally.
|
||||
|
||||
- **[Chats]({{% relref "features/chats" %}})** - Conversations the server keeps, with files, sub-agents, skills and add-on tools.
|
||||
- **[Saved agents, triggers and inbox]({{% relref "features/chats-agents" %}})** - Instructions and exact tool grants, schedules, and notifications.
|
||||
- **[Collections]({{% relref "features/collections" %}})** - The knowledge base: upload documents and search them by meaning.
|
||||
- **[Knowledge]({{% relref "features/collections" %}})** - Collections of documents that agents can search: upload documents and search them by meaning.
|
||||
- **[Telegram, Slack and Discord connectors]({{% relref "features/chats-connectors" %}})** - Talk to an agent from Telegram, Slack or Discord.
|
||||
- **[Moving from the old chat and agents]({{% relref "features/chats-migration" %}})** - What was converted and what was dropped.
|
||||
- **[Model Context Protocol (MCP)]({{% relref "features/mcp" %}})** - Give a model external tools over MCP.
|
||||
|
||||
@@ -281,7 +281,7 @@ its profile, a skill, a page or a dashboard change with `propose_change`; you
|
||||
confirm every proposal, and you can undo it. The **Tools** list of the agent form
|
||||
and of a chat show each grant once, as an option under the switch it refines:
|
||||
"Create and manage triggers" holds "Also propose from messaging apps" (`triggers.propose`)
|
||||
and "Let triggers start from messaging apps" (`triggers.run`); "Memory and profile
|
||||
and "Let triggers start from messaging apps" (`triggers.run`); "Suggested
|
||||
changes" holds the five `*.write` grants; "Your files" holds `files.upload` and
|
||||
`act.files`. An option is greyed, with the reason, while its switch is off, and keeps its
|
||||
stored value. `talkback.channels` and `talkback.new_channel` are in the section
|
||||
|
||||
@@ -1327,11 +1327,11 @@ it off, so a chat that never touches the menu works as before:
|
||||
| **Your files** | `files` | `list_files`, `read_file`, `write_file`, `edit_file`, `move_file`, `delete_file`, `search_files` and `read_document` |
|
||||
| **Web** | `web` | `web_search` and `web_fetch` |
|
||||
| **Images and audio** | `media` | `describe_image` and `transcribe_audio` |
|
||||
| **Collections** | `collections` | `list_collections` and `search_collection` |
|
||||
| **Knowledge** | `collections` | `list_collections` and `search_collection` |
|
||||
| **Sub-agents** | `subagents` | `spawn_agent` |
|
||||
| **Saved agents** | `saved_agents` | `list_agents` and the `agent` argument of `spawn_agent` (opt-in) |
|
||||
| **Triggers** | `triggers` | `propose_trigger`, `list_triggers`, `update_trigger` and `delete_trigger` |
|
||||
| **Proposed changes** | `changes` | `propose_change` and `revert_change`: a model asks to change your memory or an agent profile, and you confirm (see [change proposals](/features/addons/#change-proposals-from-chats)); for memory notes only, you can choose on the Short memory page to have them saved at once with an Undo, or never (see [Short memory](/features/short-memory/#choose-how-a-note-is-saved)) |
|
||||
| **Suggested changes** | `changes` | `propose_change` and `revert_change`: a model asks to change your notes, an agent profile, a skill, a page or the dashboard, and you confirm (see [change proposals](/features/addons/#change-proposals-from-chats)); for memory notes only, you can choose on the Short memory page to have them saved at once with an Undo, or never (see [Short memory](/features/short-memory/#choose-how-a-note-is-saved)) |
|
||||
|
||||
```bash
|
||||
curl -s -X PUT localhost:8080/api/chats/$ID/builtins -d '{"off":["web","files"]}'
|
||||
@@ -1340,8 +1340,8 @@ curl -s -X PUT localhost:8080/api/chats/$ID/builtins -d '{"off":["web","files"]}
|
||||
`off` replaces the earlier list, and a name that is not a group is refused
|
||||
(400). A group the server does not offer is not listed: **Your files** and
|
||||
**Images and audio** need the files, **Images and audio** the helper models,
|
||||
**Collections** the collections. A group that this chat cannot use now is
|
||||
listed as not usable with the reason, for example **Collections** for a user
|
||||
**Knowledge** the collections. A group that this chat cannot use now is
|
||||
listed as not usable with the reason, for example **Knowledge** for a user
|
||||
without the `collections` feature.
|
||||
|
||||
**Run commands** governs `bash` from both providers: switched off, the chat
|
||||
@@ -1458,7 +1458,7 @@ it. When the page cannot be loaded, the chat shows the result as text.
|
||||
|
||||
## Skills
|
||||
|
||||
In the web UI, the **Skills** item in the sidebar, right after Memory, opens the page where you write, change and delete skills. Every chat can use them, and agents use the ones you add to them. You can also open the page from the **Manage skills** link at the bottom of the Skills menu in the composer, or by typing `/skills` in the message box.
|
||||
In the web UI, the **Skills** item in the sidebar, right after Knowledge, opens the page where you write, change and delete skills. Every chat can use them, and agents use the ones you add to them. You can also open the page from the **Manage skills** link at the bottom of the Skills menu in the composer, or by typing `/skills` in the message box.
|
||||
|
||||
A skill is a folder with a `SKILL.md`: a `name`, a one-line `description` and a procedure the model reads when a task matches. An optional `requires` key lists what the procedure needs; today the only value is `exec`, a way to run commands (`requires: [exec]`). A chat that cannot run commands lists such a skill as unavailable (see [Running commands](#running-commands)). At each turn the chat's prompt lists the skills it has, by name and description only, and tells the model to call the `load_skill` tool with a skill's name before a task that matches it. `load_skill` returns the instructions of the skill, the text after its frontmatter. It offers exactly the skills of that list: for each name the nearest skill, not switched off, and the skills of the add-ons the chat can use now. Any other name is refused with the names of the chat's skills and the near ones first (for example `Did you mean pdf?` for `PDF`).
|
||||
|
||||
@@ -1553,7 +1553,7 @@ Search, Tavily or Google with a key and to read PDF files. See
|
||||
|
||||
## Collections
|
||||
|
||||
When you may use collections, a chat has two more tools: `list_collections` and `search_collection` (`collection`, `query`, `limit`). They search your own collections, the ones of the Collections page, and nobody else's: a name that is not yours is answered "collection not found". An answer holds at most 20 passages and about 16 KiB. A sub-agent gets these tools only when its parent names them.
|
||||
When you may use collections, a chat has two more tools: `list_collections` and `search_collection` (`collection`, `query`, `limit`). They search your own collections, the ones of the Knowledge page, and nobody else's: a name that is not yours is answered "collection not found". An answer holds at most 20 passages and about 16 KiB. A sub-agent gets these tools only when its parent names them.
|
||||
|
||||
## Add-on tools
|
||||
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
+++
|
||||
disableToc = false
|
||||
title = "Collections (knowledge base)"
|
||||
title = "Knowledge (collections)"
|
||||
weight = 21
|
||||
url = "/features/collections/"
|
||||
+++
|
||||
|
||||
A collection is a named set of documents that LocalAI splits into chunks and
|
||||
Knowledge is the part of LocalAI that holds collections of documents that agents
|
||||
can search. In the web UI it is the **Knowledge** item in the sidebar. Each item
|
||||
in it is a collection: a named set of documents that LocalAI splits into chunks and
|
||||
stores as embeddings. You can search a collection by meaning. A
|
||||
[saved agent](/features/chats-agents/) can list the collections it may search,
|
||||
and a [chat](/features/chats/) with that agent gets the tools `list_collections`
|
||||
@@ -21,11 +23,15 @@ The name of this variable is old: it now turns off the collections only.
|
||||
3. It calls the embedding model to turn each chunk into a vector, and stores the vectors in the vector engine.
|
||||
4. A search embeds the query and returns the closest chunks.
|
||||
|
||||
With the default `chromem` engine a search is semantic only: it finds chunks by
|
||||
meaning and does not match exact words or codes. The `postgres` engine adds a
|
||||
keyword search (BM25) and mixes the two results (hybrid search).
|
||||
|
||||
The embedding calls go to the LocalAI API of the same server, inside the
|
||||
process, so they need no API key and work with user accounts. The embedding
|
||||
model must be installed. The default is `granite-embedding-107m-multilingual`.
|
||||
When it is not, the embeddings endpoint answers 404 and every upload and
|
||||
search fails. The Collections page then says *No embedding model installed*
|
||||
search fails. The Knowledge page then says *No embedding model installed*
|
||||
and names the model; an administrator gets a button that opens the Models
|
||||
page with a search for it. `GET /api/collections` reports the same in
|
||||
`embedding_model` and `embedding_model_installed`.
|
||||
|
||||
@@ -17,7 +17,7 @@ The groups reorganise the fields the page used to show under fifteen sections. T
|
||||
|
||||
| Group | Settings it holds | Used to be under |
|
||||
|---|---|---|
|
||||
| Memory and models | Watchdog (idle and busy checks, timeouts, interval), eviction (force when busy, largest first, retries, retry interval), free memory automatically and its threshold, models kept loaded, GPU memory budget | Watchdog, Memory Reclaimer, Backend Management, Performance |
|
||||
| Models in memory | Watchdog (idle and busy checks, timeouts, interval), eviction (force when busy, largest first, retries, retry interval), free memory automatically and its threshold, models kept loaded, GPU memory budget | Watchdog, Memory Reclaimer, Backend Management, Performance |
|
||||
| Speed and defaults | Default threads, default context size, artifact download concurrency, F16 | Performance |
|
||||
| Backends and galleries | Automatic backend upgrades, development backends, gallery loading on boot, the persistent VRAM cache, the model and backend gallery lists | Backend Management, Galleries |
|
||||
| Access and security | CORS and allowed origins, CSRF protection, shared API keys | API & CORS, API Keys |
|
||||
@@ -127,7 +127,7 @@ Manage model and backend galleries:
|
||||
|
||||
Configure the collections (the knowledge base) and the models the [chats]({{%relref "features/chats" %}}) use for media:
|
||||
|
||||
- **Collections**: Enable or disable the collections service
|
||||
- **Collections**: Enable or disable the collections service (the Knowledge page)
|
||||
- **Default model for collections**: Default LLM model of the collections service
|
||||
- **Chat image model** (`chats_vision_model`, default empty, applies at once): the model the chats use to describe an image (`describe_image`). Empty, or a model that is not installed: the chat's own model when it can look at images, else the first installed model, by name, that can.
|
||||
- **Chat transcription model** (`chats_transcription_model`, default empty, applies at once): the model the chats use to transcribe audio. Empty, or a model that is not installed: the first installed model, by name, that can transcribe.
|
||||
|
||||
@@ -10,7 +10,7 @@ memory**.
|
||||
|
||||
It is for the facts that change what a good answer is: where you live, what you eat, the
|
||||
language and units you use, how you want answers. It is not a store for large documents.
|
||||
Use [Collections](/features/collections/) to search many files.
|
||||
Use [Knowledge](/features/collections/) to search many files.
|
||||
|
||||
## How it works
|
||||
|
||||
|
||||
Reference in new issue
Block a user