Files
lobe-chat/locales/vi-VN/plugin.json
T
Tsuki 70e7e441b2 🔨 chore: premerge Task detail page UI (#13653)
*  feat: add AgentTaskList component on agent welcome page (LOBE-6597)

- AgentTaskList with TaskListHeader, TaskItem, and styles
- Embedded in AgentWelcome below ToolAuthAlert
- Each task rendered as independent rounded card with status badge
- Status: green filled circle (Done), blue circle (In progress)
- Card width matches chat input (960px)
- i18n keys for taskList.title and taskList.viewAll
- Fix updateReview type to use TRPC-inferred type

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: add Tasks page at /agent/:aid/tasks with route, breadcrumb, and view toggle (LOBE-6597)

- Register tasks route in both desktopRouter.config.tsx and .desktop.tsx
- Thin route page at src/routes/(main)/agent/tasks/index.tsx
- Feature components in src/features/AgentTasks/: page, breadcrumb, header with list/kanban toggle, full task list
- Wire up "View All Tasks" navigation from AgentTaskList welcome card
- Add i18n keys (taskList.activeTasks, taskList.breadcrumb.task) and generate translations via pnpm i18n

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: add Task detail page at /agent/:aid/tasks/:taskId (LOBE-6597)

- Register :taskId child route in both desktopRouter configs
- TaskDetailPage with auto-save hint, breadcrumb, and scrollable content
- TaskDetailHeader: editable title (borderless Input), Run/Pause button, status/priority tags, delete
- TaskInstruction: click-to-edit Markdown with debounced auto-save
- TaskSubtasks: sub-issues list with status badges
- TaskActivities: timeline with topic/brief/comment icons
- TaskItem now navigates to detail page instead of just setting activeTaskId
- Add taskDetail.* i18n keys with generated translations

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: add TaskModelConfig, TaskScheduleConfig, and refine Task detail UI (LOBE-6597)

Add model/provider selector and periodic execution config to Task detail page.
Refine TaskDetailHeader, TaskInstruction with auto-save and i18n support.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: refine Task detail UI with Linear-style design (LOBE-6597)

- Redesign SubTasks with collapsible header, progress circle, hover + click navigation
- Redesign Activities with agent avatar, comment input box, and Linear-style layout
- Add TaskParentBar showing parent task relationship with sibling navigation popover
- Add delete confirmation modal using App.useApp().modal.confirm
- Move ModelSelect to separate row below action bar
- Fix zustand selector recreation in ActivityItem
- Replace hardcoded colors with cssVar tokens

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: add Properties panel, parent link hover, activity icon, and lifecycle save status (LOBE-6597)

- Add TaskProperties sidebar with collapsible status/priority dropdowns
- Parent bar: clickable parent link with hover, sibling navigation popover on progress
- Activity title: add BotMessageSquare icon
- Fix lifecycle actions not updating taskSaveStatus (saving/saved indicator)
- Filter status dropdown to only user-selectable states (backlog/completed/canceled)
- Add test task creation script for dev

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: add recursive tree view for subtasks with Linear-style connecting lines (LOBE-6597)

- Add buildTaskTree utility to convert flat getTaskTree API response into nested tree
- Implement SubtaskTreeItem recursive component with CSS connecting lines (├─ and └─)
- Fetch full task tree via taskService.getTaskTree for nested subtask display
- Show loading spinner during tree fetch, fallback to flat list on error
- Remove padding-inline from AgentTaskList container

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🐛 fix: address PR review — delete redirect, debounce cleanup, schedule resync (LOBE-6597)

- Redirect to task list after successful delete (P1)
- Clean up instruction debounce timer on unmount/task switch to prevent stale writes (P1)
- Resync TaskScheduleConfig local state when active task changes (P2)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ♻️ refactor: use backend nested subtasks directly, remove buildTaskTree (LOBE-6597)

Backend now returns nested subtasks in task.detail (LOBE-6814).
Remove buildTaskTree utility, getTaskTree API call, and loading state.
Use TaskDetailSubtask from @lobechat/types instead of local interface.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  perf: add optimistic update and save status for model config change (LOBE-6597)

updateTaskModelConfig now immediately reflects new model/provider in UI
via optimistic store dispatch, and tracks taskSaveStatus (saving/saved).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  perf: skip redundant refreshTaskDetail on successful model config update (LOBE-6597)

Optimistic update is trusted on success — no need for full detail re-fetch.
Aligns with updateTask pattern. Refresh kept only in error path for revert.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: use backend author info for activities, fix AgentTaskList after AgentHome refactor (LOBE-6597)

- Activity: use act.author (TaskDetailActivityAuthor) from backend instead of agentMap lookup (LOBE-7013)
- AgentTaskList: fix agentId from useParams instead of useAgentStore.activeAgentId (was undefined)
- AgentHome: integrate AgentTaskList into new AgentHome layout (replaces old AgentWelcome)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: show participant avatars on task cards, use backend author for activities (LOBE-6597)

- TaskItem: display up to 3 participant avatars next to task title (LOBE-6805)
- Activity: use act.author from backend instead of agentMap lookup (LOBE-7013)
- AgentHome: integrate AgentTaskList into new AgentHome layout
- Revert AgentTaskList/TaskItem agentId back to useAgentStore (works correctly when mounted)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ♻️ refactor: fix type safety, memoize participants filter, extract avatar styles (LOBE-6597)

- Use TaskParticipant type instead of `any` in filter/map
- Compute displayParticipants once with useMemo (was filtering twice per render)
- Move avatar overlap styles to CSS classes (was inline objects per render)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🔇 chore: hide kanban view toggle until implemented (LOBE-6597)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ♻️ refactor: export TaskStatus/TaskPriority/TaskActivityType from @lobechat/types (LOBE-6597)

Replace hardcoded string/number types with shared type aliases:
- TaskStatus: 'backlog' | 'canceled' | 'completed' | 'failed' | 'paused' | 'running'
- TaskPriority: 0 | 1 | 2 | 3 | 4
- TaskActivityType: 'brief' | 'comment' | 'topic'

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: update

* style: update

* style: update

* style: update

* style: update

* style: update

* style: update

* style: update

* style: update

* style: update

*  feat: add Daily Brief module to homepage (#13851)

*  feat: add Daily Brief module to homepage

Add a Daily Brief section below the chat input on the homepage that
displays unresolved briefs from the Agent Tasks system. Users can
resolve, comment, and provide feedback directly from the brief cards.

- Service: BriefService with listUnresolved, resolve, markRead, addComment
- Store: Independent Zustand store (src/store/brief/) with SWR data fetching
- Components: BriefCard, BriefCardActions (dynamic action buttons),
  BriefCardSummary (Markdown with expand/collapse), CommentInput (@lobehub/editor)
- Three action types: resolve (closes brief), comment (resolve with text),
  link (safe URL navigation with protocol validation)
- Fixed feedback button: adds task comment without resolving the brief
- Inline success state ("Feedback sent") with 1.5s auto-restore
- i18n: zh-CN + en-US translations
- Tests: 21 tests across service, store selectors, and components
- CLI: Register task and brief commands for local development

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: add agent avatars to Daily Brief cards

Display stacked agent avatars next to brief card titles using the
new `agents` data from Arvin's enriched listUnresolved API (#13489).

- Add AgentAvatarInfo type and agents field to BriefItem
- Render overlapping circular avatars (20px, -6px overlap)
- Use cssVar.colorBgContainer for border (dark mode compatible)
- Extract avatar style to function to avoid inline object creation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ♻️ refactor: clean up Daily Brief components

- Extract duplicate success state JSX into reusable SuccessTag component
- Remove redundant comments that describe what code does
- Use DEFAULT_AVATAR from @lobechat/const instead of hardcoded emoji

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🐛 fix: address PR review feedback for Daily Brief

- Use cssVar.colorBgBase instead of hardcoded #fff for primary button
  text color (dark mode contrast fix)
- Add submitting state to CommentInput to prevent duplicate submissions
  (disable buttons + show loading during async submit)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🌐 chore: generate i18n translations for Daily Brief

Run pnpm i18n to generate translations for all 18 locales.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ♻️ refactor: use shared BriefType from @lobechat/types

Export BriefType union from packages/types and use it in
BRIEF_TYPE_COLOR and BRIEF_TYPE_ICON records for compile-time
key validation. Adding a new brief type now requires updating
the shared type, and TypeScript will flag missing mappings.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: update

* style: update

* style: update

---------

Co-authored-by: Tsuki <976499226@qq.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: update

* style: update

* style: update

* style: update

* fix: stopPropagation

* fix: i18n

* 🐛 fix: wire comment inputs to editor instance so Send actually submits

CommentInput in AgentTasks and DailyBrief used antd TextArea inside
@lobehub/editor's ChatInput while reading content via
editor.getDocument('markdown'). The TextArea was never connected to the
editor instance, so getDocument always returned empty and handleSubmit
short-circuited silently — Send appeared to do nothing (no network
request fired).

Replace the TextArea with <Editor editor={editor} type="text"
variant="chat" /> so useEditor() actually drives the editable surface.
Keep plain-text behavior via markdownOption={false} +
enablePasteMarkdown={false}, and bind Cmd/Ctrl+Enter submit via
onPressEnter.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🐛 fix: use participant.title after TaskParticipant schema rename (#13877)

PR #13877 renamed TaskParticipant.name → .title and added
.backgroundColor. Our branch's UI code (AgentAvatars, listViewOptions,
TaskList group header, Breadcrumb) was already written against the new
schema, but TaskProperties still read firstParticipant?.name — update
the last remaining call site so the type matches post-rebase.

backgroundColor is already plumbed through everywhere it applies within
#13877's scope; TaskActivities' TaskDetailActivityAuthor is a separate
type untouched by the PR and kept as-is.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🐛 fix: resolve type-check errors exposed after canary rebase

canary upgraded react-i18next to a version with typed i18n keys and
tightened @lobehub/editor's SendButton + IEditor APIs. Rebase pulled
these in, surfacing latent type errors in LOBE-6597 code.

- CommentInput: use editor.cleanDocument() (IEditor's actual API;
  clearContent never existed).
- TaskActivities / TaskLatestActivity / TaskTriggerTag: type t as
  TFunction<'chat'> so typed i18n accepts the known-literal keys used
  inside module-level helpers.
- TaskPriorityTag / TaskStatusTag / listViewOptions: add
  defaultValue: '' to dynamic-key t() calls (template literals and
  Record lookups) to match the broad-key i18n overload.
- BriefCardActions: swap unusable <SendButton> (no children, no
  iconPlacement) for <Button>; add defaultValue to the dynamic
  brief-action key lookup; drop stale @ts-ignore.
- DailyBrief/CommentInput: drop unsupported children on SendButton;
  keep label via title attribute.
- Recents/Item: type TYPE_ICON_MAP as Partial<Record<...>> so 'task'
  (rendered via TaskStatusIcon elsewhere) is a safe absent key.
- brief/slices/list/action: cast briefService.listUnresolved() result
  back to BriefItem[] (TRPC serialization widens BriefType to string).
- AgentTasks/TasksHeader: delete dead file — no importers and its
  ./style module was removed by an earlier refactor.

Also ran pnpm install to materialize the newly-extracted
@lobechat/agent-gateway-client workspace package (canary #13866),
clearing ~7 "cannot find module" errors.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ♻️ refactor(builtin-tool-task): polish task tool paths (#13869)

*  feat: navigate to task detail when clicking brief card header

Clicking the header row of a Daily Brief card (icon + title + time +
agent avatars) now jumps straight to the associated task, using the
brief's task-tree agent (with activeAgent / inbox as fallback).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: show parent task ids as clickable breadcrumb trail

Walk the cached parent chain from taskDetailMap and insert each ancestor's
identifier as a link between the "任务" entry and the current task name in
the task detail breadcrumb.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: add cross-agent /tasks page with View All Tasks on Daily Brief

- Register `/tasks` route in desktop (web + Electron) and mobile router configs
- `useFetchTaskList` supports `allAgents` mode via options object API to fetch
  tasks without agent filter; backend already supports optional assigneeAgentId
- `Breadcrumb` accepts optional `agentId`, renders "All tasks" crumb when absent
- `AgentTaskItem` navigation uses `task.assigneeAgentId` so clicks work from
  the cross-agent page (falls back to `activeAgentId` for unassigned tasks)
- Extract `useScenarioEnabledTools` hook to share layout effect between
  `/tasks/_layout` and `/agent/:aid/tasks/_layout`

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* ♻️ refactor: use assigneeAgentId for task avatar instead of participants array

Replace AgentAvatars (took participants[]) with AssigneeAvatar (takes agentId,
resolves meta from agent store). This correctly represents that a task is
assigned to a single agent via assigneeAgentId/detail.agentId.

- New AssigneeAvatar component reads agent meta from agent store by ID
- TaskProperties reads activeTaskAgentId from task detail store
- listViewOptions uses task.assigneeAgentId directly for groupBy/sort
- Extract shared isInboxAgentId helper to eliminate 4x inline duplication
- Group headers resolve agent title at render time via AssigneeLabel component

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🐛 fix: enable vertical scrolling on cross-agent tasks page

Add overflowY and flex to WideScreenContainer wrapper so the task list
can scroll when content exceeds viewport height.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: add re-assign task agent with popover selector

- Add AssigneeAgentSelector component with Popover agent list
- Extract useAgentDisplayMeta hook for consistent agent name/avatar resolution
- Fix optimistic update mapping assigneeAgentId → agentId in task store
- Disable reassignment for running tasks with tooltip hint
- Integrate selector into task list and task detail property panel

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: reuse BriefCard in task detail activities & fix raw-id navigation

Render brief-type activities as full BriefCard (same as homepage) instead of
plain tree rows. Decouple BriefCardActions from useBriefStore for actions
lookup so it can be reused across pages. Fix infinite loading when navigating
to task detail via raw DB id (task_xxx) by storing detail under both the
identifier and the raw id key in taskDetailMap.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: add TopicCard component for task detail activities

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: allow re-running completed tasks with dedicated button

Completed tasks now show a "Re-run" button (with rotate icon) instead of
hiding the action. The backend already supported this — only the frontend
selector gate needed updating.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: add create task modal with markdown editor

Add a "+" button on the tasks list page that opens a Linear-style modal
for manually creating tasks. The modal features a title input, a markdown
editor (EditorCanvas), and a bottom toolbar with priority and assignee
selectors. Existing tag components (TaskStatusTag, TaskPriorityTag,
AssigneeAgentSelector) are extended with an `onChange` controlled mode
so they can be used in creation context where no task exists yet.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 🐛 fix: suppress spurious updateTask on Task Detail page load

EditorDataMode was missing the contentChangeLockRef pattern that
DocumentIdMode already uses, causing Lexical's registerUpdateListener
to treat programmatic content hydration as a user edit and fire
onContentChange → updateTask on every page visit.

- Add contentChangeLockRef + lockIdRef staleness guard
- Extract loadContentWithLock to deduplicate lock/load/unlock logic
- Pass contentChangeLockRef to InternalEditor
- Remove unreachable dead code in loadEditorContent

Closes LOBE-7362

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

*  feat: task detail comment CRUD and various UX improvements

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 🐛 fix: move canceled status group to the end of task list

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 💄 style: polish task detail layout, title, and run button

- Title switched to auto-sizing TextArea so long names wrap (like Linear)
- Reduce title font-size from 32px to 24px and tighten paddings
- Make "运行任务" button small-sized to match the denser header
- Add 120px bottom padding for end-of-content scroll breathing room
- Default EditorCanvas paddingBottom trimmed from 64 to 32

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 💄 style: refine task assignee, priority, and comment input

- Assignee block uses filled variant in dark mode for better contrast
- Urgent priority (level 1) renders in orange for quick scanning
- Comment input keeps SendButton slot reserved to prevent layout shift

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

*  feat: task detail — inline subtasks, automation mode, chronological activity

- Inline subtask creation under a task via CreateTaskInlineEntry
  (parentTaskId/autoFocus/onCollapse/placeholder), refreshes parent on create
- Track agent-created tasks via createdByAgentId through service, router,
  types, and the builtin task executor
- Replace scheduler Segmented-only UI with an Enable switch + heartbeat/
  schedule mode; persist via automationMode on the task
- Sort detail activities oldest → newest for a natural timeline reading
- Reducer patches nested subtask entries on updateTaskDetail so in-place
  edits reflect in the parent's subtask tree

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 💄 style: render activate-tool chips as rounded pills

Switch inspector tool chips from monospace code tags to filled rounded
pills with ellipsis overflow, making multi-tool rows scan better in tight
headers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 🐛 fix: keep finished tool call out of loading state while siblings run

The message-level isAssistantMessageBusy flag stays true while sibling
tool calls are still running. Without guarding on this tool's own
result, a finished tool would flip back to "loading". Now a tool that
has a real result or error is never shown as calling.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 💄 style: use small Segmented in schedule config popover

Keeps the automation mode switcher visually aligned with the denser
popover controls.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

*  feat: agent profile hover card on task activity author

- Extract shared AgentProfileCard + unified AgentProfilePopup (click / hover)
  with lazy agent fetch; move out of group sidebar path.
- Wire activity author avatar + name to a hover card; brighten title on hover;
  keep a small "agent" tag on the author row.
- Show inline skeletons (description + footer stats) while loading.
- Enrich subtask payload with assignee agent info for cleaner UI.

*  feat: open task topic chat in side drawer

Click a topic row in the task detail activities to open a right-side drawer
showing the topic's full chat history. Messages stream in live via the existing
agent gateway pipeline (gateway events land in chatStore.dbMessagesMap keyed by
the topic context), so a running topic refreshes its drawer in real time without
a dedicated subscription.

Reuses the Conversation feature (ConversationProvider + ChatList) with an
isolated context (agentId + topicId + isolatedTopic), so the drawer never
touches the global active topic and multiple panels coexist cleanly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 💄 style: outline activate-tool chip with subtle border

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

*  feat: show topic handoff summary on activity card

Pull `handoff.summary` through the task service into TaskDetailActivity and
render it under the title in TopicCard so completed topics surface what was
accomplished without opening the drawer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 🎸 chore: gate agent task feature behind agent_task flag

Hide every client-side entry point to the Agent Task feature when the
`agent_task` flag (default `isDev`, off in prod) is disabled:

- Sidebar: task tab in the agent sidebar nav
- Routes: `/agent/:aid/tasks/*` and `/tasks/*` layouts redirect to `/` when
  the flag is off (mobile router reuses the same layout)
- Home Recents: filter out `type='task'` items in both the list and the
  "all recents" drawer
- Daily Brief: skip fetch + hide the entire panel (all briefs link to tasks)

Backend TRPC / lifecycle stays on — the feature is already live for CLI
usage. Flag name mirrors `agent_onboarding` for consistency.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 🐛 fix: prioritize includeTriggers in topic queries

* 🐛 fix: normalize task detail activity payloads

*  feat: add Kanban board view for task list with drag-and-drop

LOBE-7493

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* 💄 style: shorten schedule tag labels & fix time width in task cards

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* update i18n

* 💄 style: hide task tool from user selectors

* 💄 style: hide task skill from user selectors

---------

Co-authored-by: canisminor1990 <i@canisminor.cc>
Co-authored-by: YuTengjing <ytj2713151713@gmail.com>
Co-authored-by: Arvin Xu <arvinx@foxmail.com>
2026-04-23 02:10:45 +08:00

637 lines
44 KiB
JSON

{
"arguments.moreParams": "Tổng cộng có {{count}} tham số",
"arguments.title": "Tham số",
"builtins.lobe-activator.apiName.activateTools": "Kích hoạt Công cụ",
"builtins.lobe-activator.inspector.activateTools.notFoundCount": "{{count}} không tìm thấy",
"builtins.lobe-agent-builder.apiName.getAvailableModels": "Lấy mô hình khả dụng",
"builtins.lobe-agent-builder.apiName.getAvailableTools": "Lấy Kỹ năng khả dụng",
"builtins.lobe-agent-builder.apiName.getConfig": "Lấy cấu hình",
"builtins.lobe-agent-builder.apiName.getMeta": "Lấy siêu dữ liệu",
"builtins.lobe-agent-builder.apiName.getPrompt": "Lấy lời nhắc hệ thống",
"builtins.lobe-agent-builder.apiName.installPlugin": "Cài đặt Kỹ năng",
"builtins.lobe-agent-builder.apiName.searchMarketTools": "Tìm kiếm Kỹ năng trên chợ",
"builtins.lobe-agent-builder.apiName.searchOfficialTools": "Tìm kiếm Kỹ năng chính thức",
"builtins.lobe-agent-builder.apiName.setModel": "Thiết lập mô hình",
"builtins.lobe-agent-builder.apiName.setOpeningMessage": "Thiết lập tin nhắn mở đầu",
"builtins.lobe-agent-builder.apiName.setOpeningQuestions": "Thiết lập câu hỏi mở đầu",
"builtins.lobe-agent-builder.apiName.togglePlugin": "Bật/tắt Kỹ năng",
"builtins.lobe-agent-builder.apiName.updateChatConfig": "Cập nhật cấu hình trò chuyện",
"builtins.lobe-agent-builder.apiName.updateConfig": "Cập nhật cấu hình",
"builtins.lobe-agent-builder.apiName.updateMeta": "Cập nhật siêu dữ liệu",
"builtins.lobe-agent-builder.apiName.updatePrompt": "Cập nhật lời nhắc hệ thống",
"builtins.lobe-agent-builder.inspector.chars": " ký tự",
"builtins.lobe-agent-builder.inspector.disablePlugin": "Vô hiệu hóa",
"builtins.lobe-agent-builder.inspector.enablePlugin": "Kích hoạt",
"builtins.lobe-agent-builder.inspector.modelsCount": "{{count}} mô hình",
"builtins.lobe-agent-builder.inspector.noResults": "Không có kết quả",
"builtins.lobe-agent-builder.inspector.togglePlugin": "Chuyển đổi",
"builtins.lobe-agent-builder.title": "Chuyên gia Xây dựng Tác nhân",
"builtins.lobe-agent-documents.apiName.copyDocument": "Sao chép tài liệu",
"builtins.lobe-agent-documents.apiName.createDocument": "Tạo tài liệu",
"builtins.lobe-agent-documents.apiName.editDocument": "Chỉnh sửa tài liệu",
"builtins.lobe-agent-documents.apiName.listDocuments": "Liệt kê tài liệu",
"builtins.lobe-agent-documents.apiName.patchDocument": "Chỉnh sửa tài liệu",
"builtins.lobe-agent-documents.apiName.readDocument": "Đọc tài liệu",
"builtins.lobe-agent-documents.apiName.readDocumentByFilename": "Đọc tài liệu theo tên tệp",
"builtins.lobe-agent-documents.apiName.removeDocument": "Xóa tài liệu",
"builtins.lobe-agent-documents.apiName.renameDocument": "Đổi tên tài liệu",
"builtins.lobe-agent-documents.apiName.updateLoadRule": "Cập nhật quy tắc tải",
"builtins.lobe-agent-documents.apiName.upsertDocumentByFilename": "Cập nhật hoặc chèn tài liệu theo tên tệp",
"builtins.lobe-agent-documents.title": "Tài liệu của Agent",
"builtins.lobe-agent-management.apiName.callAgent": "Gọi đại lý",
"builtins.lobe-agent-management.apiName.createAgent": "Tạo đại lý",
"builtins.lobe-agent-management.apiName.deleteAgent": "Xóa đại lý",
"builtins.lobe-agent-management.apiName.duplicateAgent": "Nhân bản agent",
"builtins.lobe-agent-management.apiName.getAgentDetail": "Lấy chi tiết agent",
"builtins.lobe-agent-management.apiName.installPlugin": "Cài đặt plugin",
"builtins.lobe-agent-management.apiName.searchAgent": "Tìm kiếm đại lý",
"builtins.lobe-agent-management.apiName.updateAgent": "Cập nhật đại lý",
"builtins.lobe-agent-management.apiName.updatePrompt": "Cập nhật prompt",
"builtins.lobe-agent-management.inspector.callAgent.sync": "Đang gọi:",
"builtins.lobe-agent-management.inspector.callAgent.task": "Giao nhiệm vụ cho:",
"builtins.lobe-agent-management.inspector.createAgent.title": "Đang tạo đại lý:",
"builtins.lobe-agent-management.inspector.duplicateAgent.title": "Đang nhân bản agent:",
"builtins.lobe-agent-management.inspector.getAgentDetail.title": "Đang lấy chi tiết:",
"builtins.lobe-agent-management.inspector.installPlugin.title": "Đang cài đặt plugin:",
"builtins.lobe-agent-management.inspector.searchAgent.all": "Tìm kiếm đại lý:",
"builtins.lobe-agent-management.inspector.searchAgent.market": "Tìm kiếm thị trường:",
"builtins.lobe-agent-management.inspector.searchAgent.results": "{{count}} kết quả",
"builtins.lobe-agent-management.inspector.searchAgent.user": "Tìm kiếm đại lý của tôi:",
"builtins.lobe-agent-management.inspector.updateAgent.title": "Đang cập nhật đại lý:",
"builtins.lobe-agent-management.inspector.updatePrompt.title": "Đang cập nhật prompt:",
"builtins.lobe-agent-management.render.duplicateAgent.newId": "ID Agent mới",
"builtins.lobe-agent-management.render.duplicateAgent.sourceId": "ID Agent nguồn",
"builtins.lobe-agent-management.render.installPlugin.failed": "Cài đặt thất bại",
"builtins.lobe-agent-management.render.installPlugin.plugin": "Plugin",
"builtins.lobe-agent-management.render.installPlugin.success": "Cài đặt thành công",
"builtins.lobe-agent-management.title": "Quản lý Đại lý",
"builtins.lobe-claude-code.agent.instruction": "Hướng dẫn",
"builtins.lobe-claude-code.agent.result": "Kết quả",
"builtins.lobe-claude-code.todoWrite.allDone": "Tất cả nhiệm vụ đã hoàn thành",
"builtins.lobe-claude-code.todoWrite.currentStep": "Bước hiện tại",
"builtins.lobe-claude-code.todoWrite.todos": "Công việc cần làm",
"builtins.lobe-cloud-sandbox.apiName.editLocalFile": "Chỉnh sửa tệp",
"builtins.lobe-cloud-sandbox.apiName.executeCode": "Thực thi mã",
"builtins.lobe-cloud-sandbox.apiName.exportFile": "Xuất tệp",
"builtins.lobe-cloud-sandbox.apiName.getCommandOutput": "Lấy kết quả lệnh",
"builtins.lobe-cloud-sandbox.apiName.globLocalFiles": "Tìm kiếm tệp",
"builtins.lobe-cloud-sandbox.apiName.grepContent": "Tìm kiếm nội dung",
"builtins.lobe-cloud-sandbox.apiName.killCommand": "Dừng lệnh",
"builtins.lobe-cloud-sandbox.apiName.listLocalFiles": "Liệt kê tệp",
"builtins.lobe-cloud-sandbox.apiName.moveLocalFiles": "Di chuyển tệp",
"builtins.lobe-cloud-sandbox.apiName.readLocalFile": "Đọc nội dung tệp",
"builtins.lobe-cloud-sandbox.apiName.renameLocalFile": "Đổi tên",
"builtins.lobe-cloud-sandbox.apiName.runCommand": "Chạy lệnh",
"builtins.lobe-cloud-sandbox.apiName.searchLocalFiles": "Tìm kiếm tệp",
"builtins.lobe-cloud-sandbox.apiName.writeLocalFile": "Ghi tệp",
"builtins.lobe-cloud-sandbox.inspector.noResults": "Không có kết quả",
"builtins.lobe-cloud-sandbox.title": "Môi trường Đám mây",
"builtins.lobe-group-agent-builder.apiName.batchCreateAgents": "Tạo hàng loạt tác nhân",
"builtins.lobe-group-agent-builder.apiName.createAgent": "Tạo tác nhân",
"builtins.lobe-group-agent-builder.apiName.createGroup": "Tạo nhóm",
"builtins.lobe-group-agent-builder.apiName.getAgentInfo": "Lấy thông tin thành viên",
"builtins.lobe-group-agent-builder.apiName.getAvailableModels": "Lấy mô hình khả dụng",
"builtins.lobe-group-agent-builder.apiName.installPlugin": "Cài đặt Kỹ năng",
"builtins.lobe-group-agent-builder.apiName.inviteAgent": "Mời thành viên",
"builtins.lobe-group-agent-builder.apiName.removeAgent": "Xóa thành viên",
"builtins.lobe-group-agent-builder.apiName.searchAgent": "Tìm kiếm tác nhân",
"builtins.lobe-group-agent-builder.apiName.searchMarketTools": "Tìm kiếm Kỹ năng trên chợ",
"builtins.lobe-group-agent-builder.apiName.updateAgentConfig": "Cập nhật cấu hình tác nhân",
"builtins.lobe-group-agent-builder.apiName.updateAgentPrompt": "Cập nhật lời nhắc tác nhân",
"builtins.lobe-group-agent-builder.apiName.updateGroup": "Cập nhật nhóm",
"builtins.lobe-group-agent-builder.apiName.updateGroupPrompt": "Cập nhật lời nhắc nhóm",
"builtins.lobe-group-agent-builder.apiName.updateSupervisorPrompt": "Cập nhật lời nhắc giám sát",
"builtins.lobe-group-agent-builder.inspector.agents": "tác nhân",
"builtins.lobe-group-agent-builder.inspector.avatar": "Ảnh đại diện",
"builtins.lobe-group-agent-builder.inspector.backgroundColor": "Màu nền",
"builtins.lobe-group-agent-builder.inspector.description": "Mô tả",
"builtins.lobe-group-agent-builder.inspector.noResults": "Không có kết quả",
"builtins.lobe-group-agent-builder.inspector.openingMessage": "Tin nhắn mở đầu",
"builtins.lobe-group-agent-builder.inspector.openingQuestions": "Câu hỏi mở đầu",
"builtins.lobe-group-agent-builder.inspector.title": "Tiêu đề",
"builtins.lobe-group-agent-builder.title": "Chuyên gia Xây dựng Nhóm",
"builtins.lobe-group-management.apiName.broadcast": "Tất cả cùng nói",
"builtins.lobe-group-management.apiName.createWorkflow": "Lập kế hoạch quy trình",
"builtins.lobe-group-management.apiName.executeAgentTask": "Thực hiện tác vụ của tác nhân",
"builtins.lobe-group-management.apiName.executeAgentTasks": "Thực hiện các tác vụ song song của tác nhân",
"builtins.lobe-group-management.apiName.getAgentInfo": "Lấy thông tin thành viên",
"builtins.lobe-group-management.apiName.interrupt": "Gián đoạn nhiệm vụ",
"builtins.lobe-group-management.apiName.speak": "Chỉ định người phát biểu",
"builtins.lobe-group-management.apiName.summarize": "Tóm tắt cuộc trò chuyện",
"builtins.lobe-group-management.apiName.vote": "Bắt đầu bỏ phiếu",
"builtins.lobe-group-management.inspector.broadcast.title": "Các Tác nhân sau sẽ phát biểu:",
"builtins.lobe-group-management.inspector.executeAgentTask.assignTo": "Giao nhiệm vụ",
"builtins.lobe-group-management.inspector.executeAgentTask.task": "nhiệm vụ:",
"builtins.lobe-group-management.inspector.executeAgentTasks.title": "Giao nhiệm vụ cho:",
"builtins.lobe-group-management.inspector.speak.title": "Tác nhân được chỉ định phát biểu:",
"builtins.lobe-group-management.title": "Điều phối viên Nhóm",
"builtins.lobe-gtd.apiName.clearTodos": "Xóa việc cần làm",
"builtins.lobe-gtd.apiName.clearTodos.modeAll": "tất cả",
"builtins.lobe-gtd.apiName.clearTodos.modeCompleted": "đã hoàn thành",
"builtins.lobe-gtd.apiName.clearTodos.result": "Đã xóa việc cần làm <mode>{{mode}}</mode>",
"builtins.lobe-gtd.apiName.completeTodos": "Hoàn thành việc cần làm",
"builtins.lobe-gtd.apiName.createPlan": "Tạo kế hoạch",
"builtins.lobe-gtd.apiName.createPlan.result": "Tạo kế hoạch: <goal>{{goal}}</goal>",
"builtins.lobe-gtd.apiName.createTodos": "Tạo việc cần làm",
"builtins.lobe-gtd.apiName.execTask": "Thực hiện nhiệm vụ",
"builtins.lobe-gtd.apiName.execTask.completed": "Đã tạo nhiệm vụ: ",
"builtins.lobe-gtd.apiName.execTask.loading": "Đang tạo nhiệm vụ: ",
"builtins.lobe-gtd.apiName.execTasks": "Thực hiện các nhiệm vụ",
"builtins.lobe-gtd.apiName.removeTodos": "Xóa việc cần làm",
"builtins.lobe-gtd.apiName.updatePlan": "Cập nhật kế hoạch",
"builtins.lobe-gtd.apiName.updatePlan.completed": "Đã hoàn thành",
"builtins.lobe-gtd.apiName.updatePlan.modified": "Đã chỉnh sửa",
"builtins.lobe-gtd.apiName.updateTodos": "Cập nhật việc cần làm",
"builtins.lobe-gtd.title": "Công cụ Nhiệm vụ",
"builtins.lobe-knowledge-base.apiName.readKnowledge": "Đọc nội dung Thư viện",
"builtins.lobe-knowledge-base.apiName.searchKnowledgeBase": "Tìm kiếm Thư viện",
"builtins.lobe-knowledge-base.inspector.andMoreFiles": "và {{count}} tệp nữa",
"builtins.lobe-knowledge-base.inspector.noResults": "Không có kết quả",
"builtins.lobe-knowledge-base.title": "Thư viện",
"builtins.lobe-local-system.apiName.editLocalFile": "Chỉnh sửa tệp",
"builtins.lobe-local-system.apiName.getCommandOutput": "Lấy kết quả lệnh",
"builtins.lobe-local-system.apiName.globLocalFiles": "Tìm kiếm tệp",
"builtins.lobe-local-system.apiName.grepContent": "Tìm kiếm nội dung",
"builtins.lobe-local-system.apiName.killCommand": "Dừng lệnh",
"builtins.lobe-local-system.apiName.listLocalFiles": "Liệt kê tệp",
"builtins.lobe-local-system.apiName.moveLocalFiles": "Di chuyển tệp",
"builtins.lobe-local-system.apiName.readLocalFile": "Đọc nội dung tệp",
"builtins.lobe-local-system.apiName.renameLocalFile": "Đổi tên",
"builtins.lobe-local-system.apiName.runCommand": "Chạy lệnh",
"builtins.lobe-local-system.apiName.searchLocalFiles": "Tìm kiếm tệp",
"builtins.lobe-local-system.apiName.writeLocalFile": "Ghi tệp",
"builtins.lobe-local-system.inspector.noResults": "Không có kết quả",
"builtins.lobe-local-system.inspector.rename.result": "<old>{{oldName}}</old> → <new>{{newName}}</new>",
"builtins.lobe-local-system.title": "Hệ thống Cục bộ",
"builtins.lobe-notebook.actions.collapse": "Thu gọn",
"builtins.lobe-notebook.actions.copy": "Sao chép",
"builtins.lobe-notebook.actions.creating": "Đang tạo tài liệu...",
"builtins.lobe-notebook.actions.edit": "Chỉnh sửa",
"builtins.lobe-notebook.actions.expand": "Mở rộng",
"builtins.lobe-notebook.apiName.createDocument": "Tạo tài liệu",
"builtins.lobe-notebook.apiName.deleteDocument": "Xóa tài liệu",
"builtins.lobe-notebook.apiName.getDocument": "Lấy tài liệu",
"builtins.lobe-notebook.apiName.updateDocument": "Cập nhật tài liệu",
"builtins.lobe-notebook.title": "Sổ tay",
"builtins.lobe-page-agent.apiName.batchUpdate": "Cập nhật hàng loạt nút",
"builtins.lobe-page-agent.apiName.compareSnapshots": "So sánh ảnh chụp",
"builtins.lobe-page-agent.apiName.convertToList": "Chuyển thành danh sách",
"builtins.lobe-page-agent.apiName.createNode": "Tạo nút",
"builtins.lobe-page-agent.apiName.cropImage": "Cắt ảnh",
"builtins.lobe-page-agent.apiName.deleteNode": "Xóa nút",
"builtins.lobe-page-agent.apiName.deleteSnapshot": "Xóa ảnh chụp",
"builtins.lobe-page-agent.apiName.deleteTableColumn": "Xóa cột bảng",
"builtins.lobe-page-agent.apiName.deleteTableRow": "Xóa hàng bảng",
"builtins.lobe-page-agent.apiName.duplicateNode": "Nhân bản nút",
"builtins.lobe-page-agent.apiName.editTitle": "Đổi tên tiêu đề trang",
"builtins.lobe-page-agent.apiName.editTitle.result": "Đổi tiêu đề thành \"<title>{{title}}</title>\"",
"builtins.lobe-page-agent.apiName.getPageContent": "Lấy cấu trúc tài liệu",
"builtins.lobe-page-agent.apiName.indentListItem": "Thụt dòng mục danh sách",
"builtins.lobe-page-agent.apiName.initPage": "Bắt đầu viết nội dung",
"builtins.lobe-page-agent.apiName.initPage.chars": " ký tự",
"builtins.lobe-page-agent.apiName.initPage.creating": "Đang tạo tài liệu",
"builtins.lobe-page-agent.apiName.initPage.lines": " dòng",
"builtins.lobe-page-agent.apiName.initPage.result": "Đã tạo tài liệu",
"builtins.lobe-page-agent.apiName.insertTableColumn": "Chèn cột bảng",
"builtins.lobe-page-agent.apiName.insertTableRow": "Chèn hàng bảng",
"builtins.lobe-page-agent.apiName.listSnapshots": "Liệt kê ảnh chụp",
"builtins.lobe-page-agent.apiName.mergeNodes": "Gộp nút",
"builtins.lobe-page-agent.apiName.modifyNodes": "Chỉnh sửa trang",
"builtins.lobe-page-agent.apiName.modifyNodes.addNodes": "Thêm nội dung",
"builtins.lobe-page-agent.apiName.modifyNodes.deleteNodes": "Xóa nội dung",
"builtins.lobe-page-agent.apiName.modifyNodes.init": "Đang chuẩn bị chỉnh sửa",
"builtins.lobe-page-agent.apiName.modifyNodes.result": "+{{insert}} / ~{{modify}} / -{{remove}}",
"builtins.lobe-page-agent.apiName.moveNode": "Di chuyển nút",
"builtins.lobe-page-agent.apiName.outdentListItem": "Bỏ thụt dòng mục danh sách",
"builtins.lobe-page-agent.apiName.replaceText": "Thay thế văn bản",
"builtins.lobe-page-agent.apiName.replaceText.count": "Đã thay thế {{count}}",
"builtins.lobe-page-agent.apiName.replaceText.empty": "(trống)",
"builtins.lobe-page-agent.apiName.replaceText.init": "Đang chuẩn bị thay thế",
"builtins.lobe-page-agent.apiName.resizeImage": "Thay đổi kích thước ảnh",
"builtins.lobe-page-agent.apiName.restoreSnapshot": "Khôi phục ảnh chụp",
"builtins.lobe-page-agent.apiName.rotateImage": "Xoay ảnh",
"builtins.lobe-page-agent.apiName.saveSnapshot": "Lưu ảnh chụp",
"builtins.lobe-page-agent.apiName.setImageAlt": "Thiết lập văn bản thay thế ảnh",
"builtins.lobe-page-agent.apiName.splitNode": "Tách nút",
"builtins.lobe-page-agent.apiName.toggleListType": "Chuyển kiểu danh sách",
"builtins.lobe-page-agent.apiName.unwrapNode": "Bỏ bao nút",
"builtins.lobe-page-agent.apiName.updateNode": "Cập nhật nút",
"builtins.lobe-page-agent.apiName.wrapNodes": "Bao nút",
"builtins.lobe-page-agent.title": "Trang",
"builtins.lobe-skill-store.apiName.importFromMarket": "Nhập từ Thị trường",
"builtins.lobe-skill-store.apiName.importSkill": "Nhập Kỹ năng",
"builtins.lobe-skill-store.apiName.searchSkill": "Tìm kiếm Kỹ năng",
"builtins.lobe-skill-store.inspector.noResults": "Không có kết quả",
"builtins.lobe-skill-store.render.installs": "Lượt cài đặt",
"builtins.lobe-skill-store.render.repository": "Kho lưu trữ",
"builtins.lobe-skill-store.render.version": "Phiên bản",
"builtins.lobe-skill-store.title": "Cửa hàng Kỹ năng",
"builtins.lobe-skills.apiName.activateSkill": "Kích hoạt Kỹ năng",
"builtins.lobe-skills.apiName.execScript": "Chạy Script",
"builtins.lobe-skills.apiName.exportFile": "Xuất Tệp",
"builtins.lobe-skills.apiName.importFromMarket": "Nhập từ Thị trường",
"builtins.lobe-skills.apiName.importSkill": "Nhập Kỹ năng",
"builtins.lobe-skills.apiName.readReference": "Đọc Tài liệu tham khảo",
"builtins.lobe-skills.apiName.runCommand": "Chạy Lệnh",
"builtins.lobe-skills.apiName.searchSkill": "Tìm kiếm Kỹ năng",
"builtins.lobe-skills.title": "Kỹ năng",
"builtins.lobe-topic-reference.apiName.getTopicContext": "Lấy ngữ cảnh chủ đề",
"builtins.lobe-topic-reference.title": "Tham chiếu chủ đề",
"builtins.lobe-user-interaction.apiName.askUserQuestion": "Hỏi người dùng câu hỏi",
"builtins.lobe-user-interaction.apiName.cancelUserResponse": "Hủy phản hồi của người dùng",
"builtins.lobe-user-interaction.apiName.getInteractionState": "Lấy trạng thái tương tác",
"builtins.lobe-user-interaction.apiName.skipUserResponse": "Bỏ qua phản hồi của người dùng",
"builtins.lobe-user-interaction.apiName.submitUserResponse": "Gửi phản hồi của người dùng",
"builtins.lobe-user-interaction.title": "Tương tác người dùng",
"builtins.lobe-user-memory.apiName.addContextMemory": "Thêm trí nhớ ngữ cảnh",
"builtins.lobe-user-memory.apiName.addExperienceMemory": "Thêm trí nhớ kinh nghiệm",
"builtins.lobe-user-memory.apiName.addIdentityMemory": "Thêm trí nhớ danh tính",
"builtins.lobe-user-memory.apiName.addPreferenceMemory": "Thêm trí nhớ sở thích",
"builtins.lobe-user-memory.apiName.queryTaxonomyOptions": "Truy vấn phân loại",
"builtins.lobe-user-memory.apiName.removeIdentityMemory": "Xóa trí nhớ danh tính",
"builtins.lobe-user-memory.apiName.searchUserMemory": "Tìm kiếm trí nhớ",
"builtins.lobe-user-memory.apiName.updateIdentityMemory": "Cập nhật trí nhớ danh tính",
"builtins.lobe-user-memory.inspector.noResults": "Không có kết quả",
"builtins.lobe-user-memory.render.contexts": "Ngữ cảnh",
"builtins.lobe-user-memory.render.experiences": "Trải nghiệm",
"builtins.lobe-user-memory.render.preferences": "Sở thích",
"builtins.lobe-user-memory.title": "Trí nhớ",
"builtins.lobe-web-browsing.apiName.crawlMultiPages": "Đọc nhiều trang",
"builtins.lobe-web-browsing.apiName.crawlSinglePage": "Đọc nội dung trang",
"builtins.lobe-web-browsing.apiName.search": "Tìm kiếm trang",
"builtins.lobe-web-browsing.inspector.noResults": "Không có kết quả",
"builtins.lobe-web-browsing.title": "Tìm kiếm Web",
"builtins.lobe-web-onboarding.apiName.finishOnboarding": "Hoàn tất giới thiệu",
"builtins.lobe-web-onboarding.apiName.getOnboardingState": "Đọc trạng thái giới thiệu",
"builtins.lobe-web-onboarding.apiName.readDocument": "Đọc tài liệu",
"builtins.lobe-web-onboarding.apiName.saveUserQuestion": "Lưu câu hỏi của người dùng",
"builtins.lobe-web-onboarding.apiName.updateDocument": "Cập nhật tài liệu",
"builtins.lobe-web-onboarding.apiName.writeDocument": "Viết tài liệu",
"builtins.lobe-web-onboarding.title": "Giới thiệu người dùng",
"confirm": "Xác nhận",
"debug.arguments": "Tham số",
"debug.error": "Nhật ký lỗi",
"debug.function_call": "Gọi hàm",
"debug.intervention": "Can thiệp Kỹ năng",
"debug.off": "Tắt gỡ lỗi",
"debug.on": "Xem thông tin gọi Kỹ năng",
"debug.payload": "Payload Kỹ năng",
"debug.pluginState": "Trạng thái Kỹ năng",
"debug.response": "Phản hồi",
"debug.title": "Chi tiết Kỹ năng",
"debug.tool_call": "Yêu cầu gọi Kỹ năng",
"detailModal.customPlugin.description": "Xem chi tiết trên trang chỉnh sửa",
"detailModal.customPlugin.editBtn": "Chỉnh sửa ngay",
"detailModal.customPlugin.title": "Đây là Kỹ năng tùy chỉnh",
"detailModal.emptyState.description": "Cài đặt Kỹ năng này để xem khả năng và cài đặt của nó",
"detailModal.emptyState.title": "Cài đặt để xem chi tiết Kỹ năng",
"detailModal.info.description": "Mô tả API",
"detailModal.info.name": "Tên API",
"detailModal.tabs.info": "Khả năng",
"detailModal.tabs.manifest": "Manifest",
"detailModal.tabs.settings": "Cài đặt",
"detailModal.title": "Chi tiết Kỹ năng",
"dev.confirmDeleteDevPlugin": "Kỹ năng cục bộ này sẽ bị xóa vĩnh viễn. Tiếp tục?",
"dev.customParams.useProxy.label": "Cài đặt qua proxy (bật nếu gặp lỗi CORS, sau đó thử lại)",
"dev.deleteSuccess": "Đã xóa Kỹ năng",
"dev.manifest.identifier.desc": "Định danh duy nhất cho Kỹ năng",
"dev.manifest.identifier.label": "Định danh",
"dev.manifest.mode.claude": "Kỹ năng Claude",
"dev.manifest.mode.claudeWip": "Sắp ra mắt",
"dev.manifest.mode.mcp": "MCP",
"dev.manifest.name.desc": "Tiêu đề Kỹ năng",
"dev.manifest.name.label": "Tiêu đề",
"dev.manifest.name.placeholder": "Công cụ tìm kiếm",
"dev.mcp.advanced.title": "Nâng cao",
"dev.mcp.args.desc": "Tham số truyền vào lệnh, thường là tên máy chủ MCP hoặc đường dẫn script",
"dev.mcp.args.label": "Tham số",
"dev.mcp.args.placeholder": "ví dụ: mcp-hello-world",
"dev.mcp.args.required": "Nhập tham số",
"dev.mcp.auth.bear": "API Key",
"dev.mcp.auth.desc": "Chọn phương thức xác thực cho máy chủ MCP",
"dev.mcp.auth.label": "Loại xác thực",
"dev.mcp.auth.none": "Không xác thực",
"dev.mcp.auth.placeholder": "Chọn loại xác thực",
"dev.mcp.auth.token.desc": "Nhập API Key hoặc Bearer Token",
"dev.mcp.auth.token.label": "API Key",
"dev.mcp.auth.token.placeholder": "sk-xxxxx",
"dev.mcp.auth.token.required": "Nhập mã xác thực",
"dev.mcp.avatar.label": "Biểu tượng Kỹ năng",
"dev.mcp.command.desc": "Lệnh hoặc script để khởi động máy chủ MCP STDIO",
"dev.mcp.command.label": "Lệnh",
"dev.mcp.command.placeholder": "ví dụ: npx / uv / docker",
"dev.mcp.command.required": "Nhập lệnh",
"dev.mcp.desc.desc": "Thêm mô tả Kỹ năng",
"dev.mcp.desc.label": "Mô tả",
"dev.mcp.desc.placeholder": "Hướng dẫn sử dụng và tình huống áp dụng",
"dev.mcp.endpoint.desc": "Nhập địa chỉ máy chủ MCP Streamable HTTP",
"dev.mcp.endpoint.label": "URL Endpoint MCP",
"dev.mcp.env.add": "Thêm dòng",
"dev.mcp.env.desc": "Nhập biến môi trường cho máy chủ MCP",
"dev.mcp.env.duplicateKeyError": "Khóa phải là duy nhất",
"dev.mcp.env.formValidationFailed": "Xác thực biểu mẫu thất bại, kiểm tra định dạng",
"dev.mcp.env.keyRequired": "Cần nhập khóa",
"dev.mcp.env.label": "Biến môi trường máy chủ MCP",
"dev.mcp.env.stringifyError": "Không thể chuyển đổi, kiểm tra định dạng",
"dev.mcp.headers.add": "Thêm dòng",
"dev.mcp.headers.desc": "Nhập HTTP headers",
"dev.mcp.headers.label": "HTTP Headers",
"dev.mcp.identifier.desc": "Tên cho MCP này (chỉ ký tự tiếng Anh)",
"dev.mcp.identifier.invalid": "Định danh chỉ được chứa chữ cái, số, dấu gạch ngang, gạch dưới",
"dev.mcp.identifier.label": "Tên MCP",
"dev.mcp.identifier.placeholder": "ví dụ: my-mcp-plugin",
"dev.mcp.identifier.required": "Nhập định danh MCP",
"dev.mcp.previewManifest": "Xem trước manifest",
"dev.mcp.quickImport": "Nhập cấu hình JSON",
"dev.mcp.quickImportError.empty": "Nội dung không được để trống",
"dev.mcp.quickImportError.invalidJson": "JSON không hợp lệ",
"dev.mcp.quickImportError.invalidStructure": "Cấu trúc JSON không hợp lệ",
"dev.mcp.stdioNotSupported": "STDIO MCP không được hỗ trợ trong môi trường hiện tại",
"dev.mcp.testConnection": "Kiểm tra kết nối",
"dev.mcp.testConnectionTip": "MCP sẽ khả dụng sau khi kiểm tra kết nối thành công",
"dev.mcp.type.desc": "Chọn loại MCP, web chỉ hỗ trợ Streamable HTTP",
"dev.mcp.type.httpFeature1": "Tương thích web và desktop",
"dev.mcp.type.httpFeature2": "Kết nối máy chủ MCP từ xa, không cần cài đặt",
"dev.mcp.type.httpShortDesc": "Giao thức Streamable HTTP",
"dev.mcp.type.label": "Loại MCP",
"dev.mcp.type.stdioFeature1": "Độ trễ thấp, chạy cục bộ",
"dev.mcp.type.stdioFeature2": "Yêu cầu cài đặt máy chủ MCP cục bộ",
"dev.mcp.type.stdioNotAvailable": "STDIO chỉ khả dụng trên desktop",
"dev.mcp.type.stdioShortDesc": "Giao thức nhập/xuất chuẩn",
"dev.mcp.type.title": "Loại MCP",
"dev.mcp.url.desc": "Nhập URL máy chủ MCP Streamable HTTP (không hỗ trợ SSE)",
"dev.mcp.url.invalid": "Nhập URL hợp lệ",
"dev.mcp.url.label": "URL Endpoint Streamable HTTP",
"dev.mcp.url.required": "Nhập URL máy chủ MCP",
"dev.meta.author.desc": "Tác giả Kỹ năng",
"dev.meta.author.label": "Tác giả",
"dev.meta.avatar.desc": "Biểu tượng Kỹ năng (emoji hoặc URL)",
"dev.meta.avatar.label": "Biểu tượng",
"dev.meta.description.desc": "Mô tả Kỹ năng",
"dev.meta.description.label": "Mô tả",
"dev.meta.description.placeholder": "Công cụ tìm kiếm thông tin",
"dev.meta.formFieldRequired": "Trường bắt buộc",
"dev.meta.homepage.desc": "Trang chủ Kỹ năng",
"dev.meta.homepage.label": "Trang chủ",
"dev.meta.identifier.desc": "Định danh duy nhất, tự động phát hiện từ manifest",
"dev.meta.identifier.errorDuplicate": "Định danh trùng với Kỹ năng đã tồn tại",
"dev.meta.identifier.label": "Định danh",
"dev.meta.identifier.pattenErrorMessage": "Chỉ cho phép chữ cái, số, dấu gạch ngang, gạch dưới",
"dev.meta.lobe": "Kỹ năng {{appName}}",
"dev.meta.manifest.desc": "{{appName}} sẽ cài đặt Kỹ năng qua URL này",
"dev.meta.manifest.label": "URL Manifest",
"dev.meta.manifest.preview": "Xem trước manifest",
"dev.meta.manifest.refresh": "Làm mới",
"dev.meta.openai": "Kỹ năng OpenAI",
"dev.meta.title.desc": "Tiêu đề Kỹ năng",
"dev.meta.title.label": "Tiêu đề",
"dev.meta.title.placeholder": "Công cụ tìm kiếm",
"dev.metaConfig": "Cấu hình meta",
"dev.modalDesc": "Kỹ năng tùy chỉnh có thể dùng để phát triển hoặc sử dụng trực tiếp trong hội thoại. Xem <1>tài liệu↗</1>",
"dev.openai.importUrl": "Nhập từ URL",
"dev.openai.schema": "Schema",
"dev.preview.api.noParams": "Không có tham số",
"dev.preview.api.noResults": "Không tìm thấy API",
"dev.preview.api.params": "Tham số:",
"dev.preview.api.searchPlaceholder": "Tìm kiếm Kỹ năng…",
"dev.preview.card": "Xem trước thẻ Kỹ năng",
"dev.preview.desc": "Xem trước mô tả",
"dev.preview.empty.desc": "Hoàn tất cấu hình để xem trước khả năng Kỹ năng",
"dev.preview.empty.title": "Cấu hình để xem trước",
"dev.preview.title": "Xem trước tên Kỹ năng",
"dev.save": "Cài đặt",
"dev.saveError": "Cài đặt thất bại, vui lòng thử lại",
"dev.saveSuccess": "Đã lưu cài đặt",
"dev.tabs.manifest": "Manifest",
"dev.tabs.meta": "Thông tin meta",
"dev.title.create": "Thêm Kỹ năng MCP Tùy chỉnh",
"dev.title.edit": "Chỉnh sửa Kỹ năng MCP Tùy chỉnh",
"dev.title.editCommunity": "Chỉnh sửa Kỹ năng Cộng đồng",
"dev.title.skillDetails": "Chi tiết Kỹ năng",
"dev.title.skillSettings": "Cài đặt Kỹ năng",
"dev.type.lobe": "Kỹ năng {{appName}}",
"dev.type.openai": "Kỹ năng OpenAI",
"dev.update": "Cập nhật",
"dev.updateSuccess": "Đã cập nhật cài đặt",
"empty.description": "Duyệt cửa hàng Kỹ năng. Cài đặt một để bắt đầu, thêm sau.",
"empty.search": "Không tìm thấy Kỹ năng phù hợp",
"empty.title": "Chưa có Kỹ năng",
"error.details": "Chi tiết lỗi",
"error.fetchError": "Không thể lấy manifest. Kiểm tra URL và quyền truy cập CORS",
"error.installError": "Không thể cài đặt {{name}}",
"error.manifestInvalid": "Manifest không hợp lệ: \n\n {{error}}",
"error.noManifest": "Không tìm thấy manifest",
"error.openAPIInvalid": "Phân tích OpenAPI thất bại: \n\n {{error}}",
"error.reinstallError": "Không thể làm mới {{name}}",
"error.renderError": "Lỗi hiển thị",
"error.testConnectionFailed": "Không thể lấy manifest: {{error}}",
"error.unknownError": "Lỗi không xác định",
"error.urlError": "URL không trả về JSON, kiểm tra liên kết",
"inspector.args": "Xem đối số",
"inspector.delete": "Xóa lệnh gọi",
"inspector.orphanedToolCall": "Phát hiện lệnh gọi Kỹ năng mồ côi, có thể ảnh hưởng đến quá trình thực thi của Tác nhân. Hãy xóa nó.",
"inspector.pluginRender": "Xem giao diện Kỹ năng",
"list.item.deprecated.title": "Đã xóa",
"list.item.local.config": "Cấu hình",
"list.item.local.title": "Tùy chỉnh",
"loading.content": "Đang gọi Kỹ năng…",
"loading.plugin": "Kỹ năng đang chạy…",
"localSystem.workingDirectory.agentDescription": "Thư mục làm việc mặc định cho tất cả các cuộc trò chuyện với Tác nhân này",
"localSystem.workingDirectory.agentLevel": "Thư mục làm việc của Tác nhân",
"localSystem.workingDirectory.aheadBehindTooltip": "{{ahead}} cần đẩy · {{behind}} cần kéo ({{upstream}})",
"localSystem.workingDirectory.aheadTooltip": "{{count}} commit cần đẩy lên {{upstream}}",
"localSystem.workingDirectory.behindTooltip": "{{count}} commit cần kéo từ {{upstream}}",
"localSystem.workingDirectory.branchSearchPlaceholder": "Tìm kiếm nhánh",
"localSystem.workingDirectory.branchesEmpty": "Không có nhánh cục bộ",
"localSystem.workingDirectory.branchesHeading": "Các nhánh",
"localSystem.workingDirectory.branchesLoading": "Đang tải danh sách nhánh…",
"localSystem.workingDirectory.branchesNoMatch": "Không có nhánh phù hợp",
"localSystem.workingDirectory.cancel": "Hủy",
"localSystem.workingDirectory.checkoutAction": "Checkout",
"localSystem.workingDirectory.checkoutFailed": "Checkout thất bại",
"localSystem.workingDirectory.chooseDifferentFolder": "Chọn thư mục khác",
"localSystem.workingDirectory.createBranchAction": "Checkout nhánh mới…",
"localSystem.workingDirectory.current": "Thư mục làm việc hiện tại",
"localSystem.workingDirectory.detachedHead": "Detached HEAD tại {{sha}}",
"localSystem.workingDirectory.diffStatTooltip": "Đã thêm {{added}} · Đã sửa {{modified}} · Đã xóa {{deleted}}",
"localSystem.workingDirectory.filesAdded": "Đã thêm",
"localSystem.workingDirectory.filesDeleted": "Đã xóa",
"localSystem.workingDirectory.filesEmpty": "Không có thay đổi chưa commit",
"localSystem.workingDirectory.filesLoading": "Đang tải thay đổi…",
"localSystem.workingDirectory.filesModified": "Đã sửa",
"localSystem.workingDirectory.ghMissing": "Cài đặt và đăng nhập GitHub CLI (`gh`) để xem các pull request liên kết",
"localSystem.workingDirectory.newBranchPlaceholder": "feature/new-branch-name",
"localSystem.workingDirectory.noRecent": "Không có thư mục gần đây",
"localSystem.workingDirectory.notSet": "Nhấn để thiết lập thư mục làm việc",
"localSystem.workingDirectory.placeholder": "Nhập đường dẫn thư mục, ví dụ: /Users/name/projects",
"localSystem.workingDirectory.prTooltipWithExtra": "{{title}} (và {{count}} PR đang mở khác trên nhánh này)",
"localSystem.workingDirectory.recent": "Gần đây",
"localSystem.workingDirectory.refreshGitStatus": "Làm mới trạng thái nhánh & PR",
"localSystem.workingDirectory.removeRecent": "Xóa khỏi gần đây",
"localSystem.workingDirectory.selectFolder": "Chọn thư mục",
"localSystem.workingDirectory.title": "Thư mục làm việc",
"localSystem.workingDirectory.topicDescription": "Ghi đè mặc định của Tác nhân chỉ cho cuộc trò chuyện này",
"localSystem.workingDirectory.topicLevel": "Ghi đè trong cuộc trò chuyện",
"localSystem.workingDirectory.topicOverride": "Ghi đè cho cuộc trò chuyện này",
"localSystem.workingDirectory.uncommittedChanges_one": "Thay đổi chưa commit: {{count}} tệp",
"localSystem.workingDirectory.uncommittedChanges_other": "Thay đổi chưa commit: {{count}} tệp",
"mcpEmpty.deployment": "Không có tùy chọn triển khai",
"mcpEmpty.prompts": "Không có lời nhắc",
"mcpEmpty.resources": "Không có tài nguyên",
"mcpEmpty.tools": "Không có công cụ",
"mcpInstall.CHECKING_INSTALLATION": "Đang kiểm tra cài đặt…",
"mcpInstall.COMPLETED": "Hoàn tất",
"mcpInstall.CONFIGURATION_REQUIRED": "Hoàn tất cấu hình để tiếp tục",
"mcpInstall.ERROR": "Lỗi cài đặt",
"mcpInstall.FETCHING_MANIFEST": "Đang lấy manifest…",
"mcpInstall.GETTING_SERVER_MANIFEST": "Đang khởi tạo máy chủ MCP…",
"mcpInstall.INSTALLING_PLUGIN": "Đang cài đặt Kỹ năng…",
"mcpInstall.configurationDescription": "Cấu hình các tham số cần thiết cho MCP này",
"mcpInstall.configurationRequired": "Cấu hình tham số",
"mcpInstall.continueInstall": "Tiếp tục",
"mcpInstall.dependenciesDescription": "Cài đặt các phụ thuộc cần thiết, sau đó kiểm tra lại để tiếp tục.",
"mcpInstall.dependenciesRequired": "Cài đặt phụ thuộc hệ thống",
"mcpInstall.dependencyStatus.installed": "Đã cài đặt",
"mcpInstall.dependencyStatus.notInstalled": "Chưa cài đặt",
"mcpInstall.dependencyStatus.requiredVersion": "Yêu cầu: {{version}}",
"mcpInstall.errorDetails.args": "Đối số",
"mcpInstall.errorDetails.command": "Lệnh",
"mcpInstall.errorDetails.connectionParams": "Tham số kết nối",
"mcpInstall.errorDetails.env": "Biến môi trường",
"mcpInstall.errorDetails.errorOutput": "Nhật ký lỗi",
"mcpInstall.errorDetails.exitCode": "Mã thoát",
"mcpInstall.errorDetails.hideDetails": "Ẩn chi tiết",
"mcpInstall.errorDetails.originalError": "Lỗi gốc",
"mcpInstall.errorDetails.showDetails": "Xem chi tiết",
"mcpInstall.errorTypes.AUTHORIZATION_ERROR": "Lỗi xác thực",
"mcpInstall.errorTypes.CONNECTION_FAILED": "Kết nối thất bại",
"mcpInstall.errorTypes.INITIALIZATION_TIMEOUT": "Hết thời gian khởi tạo",
"mcpInstall.errorTypes.PROCESS_SPAWN_ERROR": "Không thể khởi động tiến trình",
"mcpInstall.errorTypes.UNKNOWN_ERROR": "Lỗi không xác định",
"mcpInstall.errorTypes.VALIDATION_ERROR": "Xác thực thất bại",
"mcpInstall.installError": "Cài đặt MCP thất bại: {{detail}}",
"mcpInstall.installMethods.manual": "Thủ công:",
"mcpInstall.installMethods.recommended": "Khuyến nghị:",
"mcpInstall.recheckDependencies": "Kiểm tra lại",
"mcpInstall.skipDependencies": "Bỏ qua",
"pluginList": "Kỹ năng",
"protocolInstall.actions.install": "Cài đặt",
"protocolInstall.actions.installAnyway": "Vẫn cài đặt",
"protocolInstall.actions.installed": "Đã cài đặt",
"protocolInstall.config.addEnv": "Thêm biến môi trường",
"protocolInstall.config.addHeaders": "Thêm header",
"protocolInstall.config.args": "Đối số",
"protocolInstall.config.command": "Lệnh",
"protocolInstall.config.env": "Môi trường",
"protocolInstall.config.headers": "Header",
"protocolInstall.config.title": "Cấu hình",
"protocolInstall.config.type.http": "Loại: HTTP",
"protocolInstall.config.type.label": "Loại",
"protocolInstall.config.type.stdio": "Loại: Stdio",
"protocolInstall.config.url": "URL máy chủ",
"protocolInstall.custom.badge": "Kỹ năng tùy chỉnh",
"protocolInstall.custom.security.description": "Kỹ năng không chính thức, có thể tiềm ẩn rủi ro bảo mật. Hãy xác minh nguồn trước khi cài đặt.",
"protocolInstall.custom.security.title": "Bảo mật",
"protocolInstall.custom.title": "Cài đặt Kỹ năng tùy chỉnh",
"protocolInstall.install.title": "Thông tin cài đặt",
"protocolInstall.marketplace.title": "Cài đặt Kỹ năng bên thứ ba",
"protocolInstall.marketplace.trustedBy": "Bởi {{name}}",
"protocolInstall.marketplace.unverified.title": "Kỹ năng bên thứ ba chưa xác minh",
"protocolInstall.marketplace.unverified.warning": "Hãy xác minh nguồn trước khi cài đặt Kỹ năng cộng đồng này.",
"protocolInstall.marketplace.verified": "Đã xác minh",
"protocolInstall.messages.connectionTestFailed": "Kiểm tra kết nối thất bại",
"protocolInstall.messages.installError": "Cài đặt thất bại, thử lại",
"protocolInstall.messages.installSuccess": "{{name}} đã được cài đặt. Bật ngay hoặc cấu hình sau.",
"protocolInstall.messages.manifestError": "Không thể lấy thông tin Kỹ năng. Kiểm tra kết nối mạng hoặc thử lại sau.",
"protocolInstall.messages.manifestNotFound": "Không tìm thấy manifest",
"protocolInstall.meta.author": "Tác giả",
"protocolInstall.meta.homepage": "Trang chủ",
"protocolInstall.meta.identifier": "Định danh",
"protocolInstall.meta.source": "Nguồn",
"protocolInstall.meta.version": "Phiên bản",
"protocolInstall.official.badge": "Kỹ năng chính thức của LobeHub",
"protocolInstall.official.description": "Kỹ năng chính thức từ LobeHub, đã được xác minh và kiểm tra bảo mật.",
"protocolInstall.official.loadingMessage": "Đang tải chi tiết Kỹ năng…",
"protocolInstall.official.loadingTitle": "Đang tải",
"protocolInstall.official.title": "Cài đặt Kỹ năng chính thức",
"protocolInstall.title": "Cài đặt MCP",
"protocolInstall.warning": "Hãy xác minh nguồn Kỹ năng. Có thể tắt hoặc xóa bất kỳ lúc nào trong cài đặt.",
"search.config.addKey": "Thêm khóa",
"search.config.close": "Xóa",
"search.config.confirm": "Xong, thử lại",
"search.crawPages.crawling": "Đang xác định liên kết",
"search.crawPages.detail.preview": "Xem trước",
"search.crawPages.detail.raw": "Văn bản gốc",
"search.crawPages.detail.tooLong": "Văn bản bị cắt bớt còn {{characters}} ký tự để làm ngữ cảnh, phần dư bị loại bỏ.",
"search.crawPages.meta.crawler": "Chế độ thu thập",
"search.crawPages.meta.words": "Ký tự",
"search.searchxng.baseURL": "Nhập URL",
"search.searchxng.description": "Nhập URL SearchXNG để bắt đầu tìm kiếm web",
"search.searchxng.keyPlaceholder": "Nhập khóa",
"search.searchxng.title": "Cấu hình SearchXNG",
"search.searchxng.unconfiguredDesc": "Liên hệ quản trị viên để cấu hình SearchXNG",
"search.searchxng.unconfiguredTitle": "SearchXNG chưa được cấu hình",
"search.title": "Tìm kiếm Web",
"setting": "Cài đặt",
"settings.capabilities.prompts": "Lời nhắc",
"settings.capabilities.resources": "Tài nguyên",
"settings.capabilities.title": "Kỹ năng",
"settings.capabilities.tools": "Công cụ",
"settings.configuration.title": "Cấu hình",
"settings.connection.args": "Đối số",
"settings.connection.command": "Lệnh",
"settings.connection.title": "Kết nối",
"settings.connection.type": "Loại",
"settings.connection.url": "URL máy chủ",
"settings.edit": "Chỉnh sửa",
"settings.envConfigDescription": "Được truyền dưới dạng biến môi trường khi máy chủ MCP khởi động",
"settings.httpTypeNotice": "MCP HTTP không có biến môi trường để cấu hình",
"settings.indexUrl.title": "Chỉ mục cộng đồng",
"settings.indexUrl.tooltip": "Chỉnh sửa qua biến môi trường triển khai",
"settings.messages.connectionUpdateFailed": "Cập nhật kết nối thất bại",
"settings.messages.connectionUpdateSuccess": "Kết nối đã được cập nhật",
"settings.messages.envUpdateFailed": "Lưu biến môi trường thất bại",
"settings.messages.envUpdateSuccess": "Biến môi trường đã được lưu",
"settings.modalDesc": "Cấu hình URL cộng đồng để sử dụng cộng đồng Kỹ năng tùy chỉnh.",
"settings.rules.argsRequired": "Nhập đối số",
"settings.rules.commandRequired": "Nhập lệnh",
"settings.rules.urlRequired": "Nhập URL máy chủ",
"settings.saveSettings": "Lưu cài đặt",
"settings.title": "Cài đặt cộng đồng Kỹ năng",
"showInPortal": "Xem chi tiết trong Không gian làm việc",
"skillDetail.author": "Tác giả",
"skillDetail.details": "Chi tiết",
"skillDetail.developedBy": "Phát triển bởi",
"skillDetail.networkError": "Tải dữ liệu không thành công. Vui lòng kiểm tra kết nối mạng và thử lại.",
"skillDetail.noAgents": "Chưa có tác nhân nào đang sử dụng kỹ năng này",
"skillDetail.tabs.agents": "Tác nhân đang sử dụng kỹ năng này",
"skillDetail.tabs.overview": "Tổng quan",
"skillDetail.tabs.tools": "Khả năng",
"skillDetail.tools": "Công cụ",
"skillDetail.trustWarning": "Chỉ sử dụng các trình kết nối từ những nhà phát triển mà bạn tin tưởng. LobeHub không kiểm soát các công cụ mà nhà phát triển cung cấp và không thể đảm bảo rằng chúng sẽ hoạt động như mong đợi hoặc không bị thay đổi.",
"skillInstallBanner.dismiss": "Bỏ qua",
"skillInstallBanner.title": "Thêm kỹ năng vào Lobe AI",
"store.actions.cancel": "Hủy",
"store.actions.configure": "Cấu hình",
"store.actions.confirmUninstall": "Gỡ cài đặt sẽ xóa cấu hình Kỹ năng. Tiếp tục?",
"store.actions.detail": "Chi tiết",
"store.actions.install": "Cài đặt",
"store.actions.manifest": "Chỉnh sửa manifest",
"store.actions.settings": "Cài đặt",
"store.actions.uninstall": "Gỡ cài đặt",
"store.communityPlugin": "Cộng đồng",
"store.customPlugin": "Tùy chỉnh",
"store.empty": "Chưa cài đặt Kỹ năng nào",
"store.emptySelectHint": "Chọn một Kỹ năng để xem chi tiết",
"store.installAllPlugins": "Cài đặt tất cả",
"store.networkError": "Không thể tải cửa hàng Kỹ năng. Kiểm tra kết nối mạng và thử lại.",
"store.placeholder": "Tìm Kỹ năng theo tên hoặc từ khóa…",
"store.releasedAt": "Phát hành {{createdAt}}",
"store.tabs.installed": "Đã cài đặt",
"store.tabs.mcp": "MCP",
"store.tabs.old": "Kỹ năng LobeHub",
"store.title": "Cửa hàng Kỹ năng",
"unknownError": "Lỗi không xác định",
"unknownPlugin": "Kỹ năng không xác định"
}