Files
lobe-chat/locales/vi-VN/chat.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

723 lines
48 KiB
JSON

{
"ModelSwitch.title": "Mô hình",
"active": "Đang hoạt động",
"agentBuilder.installPlugin.authRequired": "Cloud MCP yêu cầu đăng nhập để tiếp tục",
"agentBuilder.installPlugin.cancel": "Hủy",
"agentBuilder.installPlugin.clickApproveToConnect": "Nhấn \"Chấp nhận\" để kết nối và cấp quyền cho Tích hợp này",
"agentBuilder.installPlugin.clickApproveToInstall": "Nhấn \"Chấp nhận\" để cài đặt Kỹ năng này",
"agentBuilder.installPlugin.connectedAndEnabled": "Đã kết nối và kích hoạt",
"agentBuilder.installPlugin.connectionFailed": "Kết nối thất bại. Vui lòng thử lại hoặc kiểm tra quyền truy cập và cài đặt mạng.",
"agentBuilder.installPlugin.installFailed": "Cài đặt thất bại. Vui lòng thử lại hoặc xem chi tiết và thử lại.",
"agentBuilder.installPlugin.installPlugin": "Cài đặt Kỹ năng",
"agentBuilder.installPlugin.installToEnable": "Cài đặt để kích hoạt Kỹ năng này cho Tác nhân (bạn có thể làm sau)",
"agentBuilder.installPlugin.installedAndEnabled": "Đã cài đặt và kích hoạt",
"agentBuilder.installPlugin.requiresAuth": "Yêu cầu cấp quyền. Nhấn \"Chấp nhận\" để kết nối",
"agentBuilder.installPlugin.retry": "Thử lại",
"agentBuilder.title": "Trình tạo Tác nhân",
"agentBuilder.welcome": "Hãy cho tôi biết trường hợp sử dụng của bạn.\n\nViết lách, lập trình hay phân tích dữ liệu—bất cứ điều gì cũng được. Bạn đặt mục tiêu và tiêu chuẩn; tôi sẽ chia nhỏ thành các Tác nhân có thể cộng tác và thực thi.",
"agentDefaultMessage": "Chào bạn, tôi là **{{name}}**. Một câu là đủ.\n\nMuốn tôi phù hợp hơn với quy trình làm việc của bạn? Truy cập [Cài đặt Tác nhân]({{url}}) và điền Hồ sơ Tác nhân (bạn có thể chỉnh sửa bất cứ lúc nào).",
"agentDefaultMessageWithSystemRole": "Chào bạn, tôi là **{{name}}**. Một câu là đủ—bạn là người kiểm soát.",
"agentDefaultMessageWithoutEdit": "Chào bạn, tôi là **{{name}}**. Một câu là đủ—bạn là người kiểm soát.",
"agentProfile.files_one": "{{count}} tệp",
"agentProfile.files_other": "{{count}} tệp",
"agentProfile.knowledgeBases_one": "{{count}} cơ sở tri thức",
"agentProfile.knowledgeBases_other": "{{count}} cơ sở tri thức",
"agentProfile.skills_one": "{{count}} kỹ năng",
"agentProfile.skills_other": "{{count}} kỹ năng",
"agents": "Tác nhân",
"artifact.generating": "Đang tạo",
"artifact.inThread": "Không thể xem trong chủ đề phụ, vui lòng chuyển sang khu vực hội thoại chính để mở",
"artifact.thinking": "Đang suy nghĩ",
"artifact.thought": "Quá trình suy nghĩ",
"artifact.unknownTitle": "Tác phẩm chưa có tiêu đề",
"availableAgents": "Tác nhân khả dụng",
"backToBottom": "Chuyển đến tin nhắn mới nhất",
"beforeUnload.confirmLeave": "Yêu cầu vẫn đang chạy. Bạn có chắc muốn rời đi?",
"builtinCopilot": "Trợ lý tích hợp sẵn",
"chatList.expandMessage": "Mở rộng tin nhắn",
"chatList.longMessageDetail": "Xem chi tiết",
"clearCurrentMessages": "Xóa tin nhắn phiên hiện tại",
"compressedHistory": "Lịch sử đã nén",
"compression.cancel": "Giải nén",
"compression.cancelConfirm": "Bạn có chắc chắn muốn giải nén không? Thao tác này sẽ khôi phục lại các tin nhắn gốc.",
"compression.history": "Lịch sử",
"compression.summary": "Tóm tắt",
"confirmClearCurrentMessages": "Bạn sắp xóa tất cả tin nhắn trong phiên hiện tại. Sau khi xóa sẽ không thể khôi phục. Vui lòng xác nhận hành động.",
"confirmRemoveChatGroupItemAlert": "Nhóm này sẽ bị xóa. Các trợ lý riêng của nhóm cũng sẽ bị xóa, nhưng các trợ lý bên ngoài sẽ không bị ảnh hưởng.",
"confirmRemoveGroupItemAlert": "Bạn sắp xóa nhóm này. Sau khi xóa, các tác nhân trong nhóm sẽ được chuyển về danh sách mặc định. Vui lòng xác nhận hành động.",
"confirmRemoveGroupSuccess": "Xóa nhóm thành công",
"confirmRemoveSessionItemAlert": "Bạn sắp xóa tác nhân này. Sau khi xóa sẽ không thể khôi phục. Vui lòng xác nhận hành động.",
"confirmRemoveSessionSuccess": "Xóa tác nhân thành công",
"createModal.createBlank": "Tạo trống",
"createModal.groupPlaceholder": "Mô tả nhóm này sẽ làm gì...",
"createModal.groupTitle": "Nhóm của bạn sẽ làm gì?",
"createModal.placeholder": "Mô tả tác vụ mà tác nhân của bạn sẽ làm...",
"createModal.title": "Tác nhân của bạn sẽ làm gì?",
"createTask.assignee": "Người được giao",
"createTask.collapse": "Ẩn mục nhập",
"createTask.expandToInline": "Gắn vào trang",
"createTask.instructionPlaceholder": "Thêm mô tả...",
"createTask.submit": "Tạo nhiệm vụ",
"createTask.titlePlaceholder": "Tiêu đề nhiệm vụ",
"defaultAgent": "Tác nhân mặc định",
"defaultGroupChat": "Nhóm",
"defaultList": "Danh sách mặc định",
"defaultSession": "Tác nhân mặc định",
"desktopNotification.aiReplyCompleted.body": "Phản hồi từ Tác nhân đã sẵn sàng",
"desktopNotification.aiReplyCompleted.title": "Phản hồi hoàn tất",
"dm.placeholder": "Tin nhắn riêng giữa bạn và {{agentTitle}} sẽ hiển thị tại đây.",
"dm.tooltip": "Gửi tin nhắn riêng",
"dm.visibleTo": "Chỉ hiển thị với {{target}}",
"dm.you": "Bạn",
"duplicateSession.loading": "Đang sao chép...",
"duplicateSession.success": "Sao chép thành công",
"duplicateSession.title": "Bản sao {{title}}",
"duplicateTitle": "Bản sao {{title}}",
"emptyAgent": "Chưa có Tác nhân nào. Bắt đầu với Tác nhân đầu tiên của bạn—xây dựng hệ thống theo thời gian.",
"emptyAgentAction": "Tạo Tác nhân",
"extendParams.disableContextCaching.desc": "Giảm tới 90% chi phí tạo một cuộc hội thoại và tăng tốc độ lên đến 4 lần. <1>Tìm hiểu thêm</1>",
"extendParams.disableContextCaching.title": "Bật bộ nhớ đệm ngữ cảnh",
"extendParams.effort.desc": "Điều chỉnh số lượng token Claude sử dụng khi phản hồi bằng tham số nỗ lực.",
"extendParams.effort.title": "Nỗ lực",
"extendParams.enableAdaptiveThinking.desc": "Cho phép Claude tự động quyết định thời điểm và mức độ suy nghĩ với chế độ tư duy thích ứng.",
"extendParams.enableAdaptiveThinking.title": "Bật Tư Duy Thích Ứng",
"extendParams.enableReasoning.desc": "Dựa trên giới hạn cơ chế Tư duy của Claude. <1>Tìm hiểu thêm</1>",
"extendParams.enableReasoning.title": "Bật Suy nghĩ sâu",
"extendParams.imageAspectRatio.title": "Tỷ lệ khung hình",
"extendParams.imageResolution.title": "Độ phân giải hình ảnh",
"extendParams.reasoningBudgetToken.title": "Token tiêu thụ cho suy nghĩ",
"extendParams.reasoningEffort.title": "Cường độ suy nghĩ",
"extendParams.textVerbosity.title": "Mức độ chi tiết văn bản đầu ra",
"extendParams.thinking.title": "Công tắc Suy nghĩ sâu",
"extendParams.thinkingBudget.title": "Ngân sách Dự tính",
"extendParams.thinkingLevel.title": "Mức độ suy nghĩ",
"extendParams.title": "Tính năng mở rộng mô hình",
"extendParams.urlContext.desc": "Khi bật, các liên kết web sẽ được tự động phân tích để lấy nội dung thực tế của trang",
"extendParams.urlContext.title": "Trích xuất nội dung liên kết web",
"followUpPlaceholder": "Theo dõi. Dùng @ để giao nhiệm vụ cho tác vụ khác.",
"group.desc": "Thực hiện nhiệm vụ với nhiều Tác nhân trong một không gian chung.",
"group.memberTooltip": "Có {{count}} thành viên trong nhóm",
"group.orchestratorThinking": "Điều phối viên đang suy nghĩ...",
"group.profile.contentPlaceholder": "Đặt mục tiêu/kiểu làm việc của nhóm tại đây. Thông tin này sẽ được chia sẻ với tất cả thành viên trong nhóm.",
"group.profile.external": "Bên ngoài",
"group.profile.externalAgentWarning": "Đây là một tác nhân bên ngoài. Các thay đổi tại đây sẽ trực tiếp sửa đổi cấu hình gốc của tác nhân.",
"group.profile.groupSettings": "Cài đặt nhóm",
"group.profile.supervisor": "Người giám sát",
"group.profile.supervisorPlaceholder": "Người giám sát điều phối các tác nhân khác nhau. Thiết lập thông tin người giám sát tại đây giúp phối hợp quy trình làm việc chính xác hơn.",
"group.removeMember": "Xóa thành viên",
"group.title": "Nhóm",
"groupDescription": "Mô tả nhóm",
"groupSidebar.agentProfile.chat": "Trò chuyện",
"groupSidebar.agentProfile.model": "Mô hình",
"groupSidebar.agentProfile.settings": "Cài đặt",
"groupSidebar.members.addMember": "Thêm thành viên",
"groupSidebar.members.enableOrchestrator": "Bật Điều phối viên",
"groupSidebar.members.memberSettings": "Cài đặt thành viên",
"groupSidebar.members.orchestrator": "Điều phối viên",
"groupSidebar.members.orchestratorThinking": "Điều phối viên đang suy nghĩ...",
"groupSidebar.members.removeMember": "Xóa thành viên",
"groupSidebar.members.stopOrchestrator": "Dừng",
"groupSidebar.members.triggerOrchestrator": "Bắt đầu",
"groupSidebar.tabs.host": "Điều phối viên",
"groupSidebar.tabs.members": "Thành viên",
"groupSidebar.tabs.role": "Hồ sơ",
"groupWizard.chooseMembers": "Chọn các tác nhân hiện có...",
"groupWizard.createGroup": "Tạo nhóm",
"groupWizard.existingMembers": "Tác nhân hiện tại",
"groupWizard.groupMembers": "Các tác nhân này cũng sẽ được thêm vào danh sách của bạn",
"groupWizard.host.description": "Để nhóm tự động tiến hành. Bạn có thể can thiệp bất cứ lúc nào.",
"groupWizard.host.title": "Bật Điều phối viên",
"groupWizard.host.tooltip": "Khi tắt, bạn cần @đề cập đến thành viên để nhận phản hồi.",
"groupWizard.memberCount": "{{count}} thành viên",
"groupWizard.noMatchingTemplates": "Không có mẫu phù hợp",
"groupWizard.noSelectedTemplates": "Chưa chọn mẫu nào",
"groupWizard.noTemplateMembers": "Không có thành viên trong mẫu",
"groupWizard.noTemplates": "Không có mẫu nào",
"groupWizard.searchTemplates": "Tìm kiếm mẫu...",
"groupWizard.title": "Tạo nhóm",
"groupWizard.useTemplate": "Sử dụng mẫu",
"heteroAgent.fullAccess.label": "Toàn quyền truy cập",
"heteroAgent.fullAccess.tooltip": "Claude Code chạy cục bộ với toàn quyền đọc/ghi vào thư mục làm việc. Chưa hỗ trợ chuyển đổi chế độ quyền.",
"heteroAgent.resumeReset.cwdChanged": "Thư mục làm việc đã thay đổi. Phiên Claude Code trước đó chỉ có thể tiếp tục từ thư mục gốc ban đầu, vì vậy một cuộc trò chuyện mới đã được bắt đầu.",
"heteroAgent.switchCwd.cancel": "Hủy",
"heteroAgent.switchCwd.content": "Các phiên Claude Code được gắn với một thư mục làm việc. Việc chuyển đổi sẽ bắt đầu một phiên mới cho chủ đề này — tin nhắn trò chuyện được giữ lại, nhưng không thể tiếp tục ngữ cảnh của phiên trước.",
"heteroAgent.switchCwd.ok": "Chuyển và bắt đầu phiên mới",
"heteroAgent.switchCwd.title": "Chuyển thư mục làm việc?",
"hideForYou": "Nội dung tin nhắn riêng bị ẩn. Vui lòng bật 'Hiển thị nội dung tin nhắn riêng' trong cài đặt để xem.",
"history.title": "Tác nhân sẽ chỉ giữ lại {{count}} tin nhắn gần nhất.",
"historyRange": "Phạm vi lịch sử",
"historySummary": "Tóm tắt tin nhắn lịch sử",
"inactive": "Không hoạt động",
"inbox.desc": "Cộng tác trong một không gian làm việc và biến ý tưởng thành kết quả.",
"inbox.title": "Lobe AI",
"input.addAi": "Thêm tin nhắn AI",
"input.addUser": "Thêm tin nhắn người dùng",
"input.disclaimer": "Tác nhân có thể mắc lỗi. Hãy sử dụng phán đoán của bạn với thông tin quan trọng.",
"input.errorMsg": "Gửi thất bại: {{errorMsg}}. Vui lòng thử lại hoặc gửi sau.",
"input.more": "Thêm",
"input.send": "Gửi",
"input.sendWithCmdEnter": "Nhấn <key/> để gửi",
"input.sendWithEnter": "Nhấn <key/> để gửi",
"input.stop": "Dừng",
"input.warp": "Dòng mới",
"input.warpWithKey": "Nhấn <key/> để xuống dòng",
"intentUnderstanding.title": "Đang hiểu ý định của bạn...",
"inviteMembers": "Mời thành viên",
"knowledgeBase.all": "Tất cả nội dung",
"knowledgeBase.allFiles": "Tất cả tệp",
"knowledgeBase.allLibraries": "Tất cả thư viện",
"knowledgeBase.disabled": "Trò chuyện thư viện không khả dụng trong bản triển khai này. Hãy chuyển sang cơ sở dữ liệu phía máy chủ hoặc sử dụng {{cloud}}.",
"knowledgeBase.library.action.add": "Thêm",
"knowledgeBase.library.action.detail": "Chi tiết",
"knowledgeBase.library.action.remove": "Xóa",
"knowledgeBase.library.title": "Tệp / Thư viện",
"knowledgeBase.relativeFilesOrLibraries": "Tệp/Thư viện liên quan",
"knowledgeBase.title": "Thư viện",
"knowledgeBase.uploadGuide": "Các tệp đã tải lên có thể xem trong phần 'Tài nguyên'.",
"knowledgeBase.viewMore": "Xem thêm",
"memberSelection.addMember": "Thêm thành viên",
"memberSelection.allMembers": "Tất cả thành viên",
"memberSelection.createGroup": "Tạo nhóm",
"memberSelection.noAvailableAgents": "Không có tác nhân nào để mời",
"memberSelection.noSelectedAgents": "Chưa chọn tác nhân nào",
"memberSelection.searchAgents": "Tìm kiếm tác nhân...",
"memberSelection.selectedAgents": "Đã chọn ({{count}})",
"memberSelection.setInitialMembers": "Chọn thành viên nhóm",
"members": "Thành viên",
"memory.effort.desc": "Kiểm soát mức độ tích cực của AI trong việc truy xuất và cập nhật bộ nhớ.",
"memory.effort.high.title": "Cao",
"memory.effort.low.title": "Thấp",
"memory.effort.medium.title": "Trung bình",
"memory.effort.title": "Sự quyết liệt",
"memory.off.desc": "Tắt bộ nhớ cho cuộc trò chuyện này.",
"memory.off.title": "Tắt Bộ Nhớ",
"memory.on.desc": "Ghi nhớ các tùy chọn và thông tin từ các cuộc trò chuyện.",
"memory.on.title": "Bật Bộ Nhớ",
"memory.title": "Bộ Nhớ",
"mention.title": "Đề cập thành viên",
"messageAction.collapse": "Thu gọn tin nhắn",
"messageAction.continueGeneration": "Tiếp tục tạo",
"messageAction.delAndRegenerate": "Xóa và tạo lại",
"messageAction.deleteDisabledByThreads": "Tin nhắn này có chủ đề phụ và không thể xóa",
"messageAction.expand": "Mở rộng tin nhắn",
"messageAction.interrupted": "Bị gián đoạn",
"messageAction.interruptedHint": "Tôi nên làm gì thay thế?",
"messageAction.reaction": "Thêm phản ứng",
"messageAction.regenerate": "Tạo lại",
"messages.dm.sentTo": "Chỉ hiển thị với {{name}}",
"messages.dm.title": "Tin nhắn riêng",
"messages.modelCard.credit": "Tín dụng",
"messages.modelCard.creditPricing": "Giá",
"messages.modelCard.creditTooltip": "Để tính toán, $1 tương đương 1 triệu tín dụng. Ví dụ: $3/M tokens → 3 tín dụng mỗi token.",
"messages.modelCard.pricing.inputCachedTokens": "Đầu vào đã lưu {{amount}} tín dụng · ${{amount}}/M",
"messages.modelCard.pricing.inputCharts": "${{amount}}/M ký tự",
"messages.modelCard.pricing.inputMinutes": "${{amount}}/phút",
"messages.modelCard.pricing.inputTokens": "Đầu vào {{amount}} tín dụng · ${{amount}}/M",
"messages.modelCard.pricing.outputTokens": "Đầu ra {{amount}} tín dụng · ${{amount}}/M",
"messages.modelCard.pricing.writeCacheInputTokens": "Ghi bộ nhớ đệm {{amount}} tín dụng · ${{amount}}/M",
"messages.tokenDetails.average": "Giá trung bình mỗi đơn vị",
"messages.tokenDetails.input": "Đầu vào",
"messages.tokenDetails.inputAudio": "Đầu vào âm thanh",
"messages.tokenDetails.inputCached": "Đầu vào đã lưu",
"messages.tokenDetails.inputCitation": "Trích dẫn đầu vào",
"messages.tokenDetails.inputText": "Đầu vào văn bản",
"messages.tokenDetails.inputTitle": "Chi tiết đầu vào",
"messages.tokenDetails.inputTool": "Công cụ sử dụng đầu vào",
"messages.tokenDetails.inputUncached": "Đầu vào chưa lưu",
"messages.tokenDetails.inputWriteCached": "Ghi bộ nhớ đệm đầu vào",
"messages.tokenDetails.output": "Đầu ra",
"messages.tokenDetails.outputAudio": "Đầu ra âm thanh",
"messages.tokenDetails.outputImage": "Đầu ra hình ảnh",
"messages.tokenDetails.outputText": "Đầu ra văn bản",
"messages.tokenDetails.outputTitle": "Chi tiết đầu ra",
"messages.tokenDetails.reasoning": "Suy luận sâu",
"messages.tokenDetails.speed.tps.title": "TPS",
"messages.tokenDetails.speed.tps.tooltip": "Tokens mỗi giây (TPS). Chỉ số này thể hiện tốc độ trung bình của nội dung do AI tạo ra (Tokens/giây), tính từ thời điểm nhận được token đầu tiên.",
"messages.tokenDetails.speed.ttft.title": "TTFT",
"messages.tokenDetails.speed.ttft.tooltip": "Thời gian đến token đầu tiên (TTFT). Khoảng thời gian từ khi bạn gửi tin nhắn đến khi nhận được token đầu tiên.",
"messages.tokenDetails.title": "Chi tiết tạo nội dung",
"messages.tokenDetails.total": "Tổng tiêu thụ",
"minimap.emptyPreview": "(Không có nội dung văn bản)",
"minimap.jumpToMessage": "Chuyển đến tin nhắn {{index}}",
"minimap.nextMessage": "Tin nhắn tiếp theo",
"minimap.previousMessage": "Tin nhắn trước",
"minimap.senderAssistant": "Tác nhân",
"minimap.senderUser": "Bạn",
"newAgent": "Tạo tác nhân",
"newClaudeCodeAgent": "Thêm Claude Code",
"newGroupChat": "Tạo nhóm",
"newPage": "Tạo trang",
"noAgentsYet": "Nhóm này chưa có thành viên. Nhấn nút + để mời tác nhân.",
"noAvailableAgents": "Không có thành viên nào để mời",
"noMatchingAgents": "Không tìm thấy thành viên phù hợp",
"noMembersYet": "Nhóm này chưa có thành viên. Nhấn nút + để mời tác nhân.",
"noSelectedAgents": "Chưa chọn thành viên nào",
"openInNewWindow": "Mở trong cửa sổ mới",
"operation.contextCompression": "Ngữ cảnh quá dài, đang nén lịch sử...",
"operation.execAgentRuntime": "Đang chuẩn bị phản hồi",
"operation.execClientTask": "Đang thực hiện tác vụ",
"operation.execHeterogeneousAgent": "{{name}} đang chạy",
"operation.execServerAgentRuntime": "Đang chạy… Bạn có thể chuyển tác vụ hoặc đóng trang — tác vụ sẽ tiếp tục.",
"operation.heterogeneousAgentFallback": "Tác tử bên ngoài",
"operation.sendMessage": "Đang gửi tin nhắn",
"owner": "Chủ nhóm",
"pageCopilot.title": "Tác nhân trang",
"pageCopilot.welcome": "**Viết rõ ràng, sắc nét hơn**\n\nSoạn thảo, viết lại hoặc chỉnh sửa—hãy cho tôi biết ý định của bạn và tôi sẽ hoàn thiện phần còn lại.",
"pageSelection.lines": "Dòng {{start}}-{{end}}",
"pageSelection.reference": "Văn bản đã chọn",
"pin": "Ghim",
"pinOff": "Bỏ ghim",
"prompts.summaryExpert": "Là chuyên gia tóm tắt, vui lòng tóm tắt nội dung sau dựa trên các gợi ý hệ thống ở trên:",
"rag.referenceChunks": "Nguồn tham khảo",
"rag.userQuery.actions.delete": "Xóa truy vấn đã viết lại",
"rag.userQuery.actions.regenerate": "Tạo lại truy vấn",
"regenerate": "Tạo lại",
"roleAndArchive": "Hồ sơ & Lịch sử tác nhân",
"runtimeEnv.mode.cloud": "Hộp cát Đám mây",
"runtimeEnv.mode.cloudDesc": "Chạy trong hộp cát đám mây an toàn",
"runtimeEnv.mode.local": "Cục bộ",
"runtimeEnv.mode.localDesc": "Truy cập tệp và lệnh cục bộ",
"runtimeEnv.mode.none": "Tắt",
"runtimeEnv.mode.noneDesc": "Vô hiệu hóa môi trường chạy",
"runtimeEnv.selectMode": "Chọn Môi trường Chạy",
"runtimeEnv.title": "Môi trường Chạy",
"search.grounding.imageSearchQueries": "Từ khóa tìm kiếm hình ảnh",
"search.grounding.imageTitle": "Đã tìm thấy {{count}} hình ảnh",
"search.grounding.searchQueries": "Từ khóa tìm kiếm",
"search.grounding.title": "Tìm thấy {{count}} kết quả",
"search.mode.auto.desc": "Tự động tìm kiếm web khi cần.",
"search.mode.auto.title": "Tự động",
"search.mode.off.desc": "Tắt truy cập web.",
"search.mode.off.title": "Tắt",
"search.mode.on.desc": "Luôn tìm kiếm web để có thông tin mới nhất.",
"search.mode.on.title": "Luôn bật",
"search.mode.useModelBuiltin": "Sử dụng tìm kiếm web tích hợp của mô hình",
"search.searchModel.desc": "Mô hình hiện tại không hỗ trợ gọi hàm, cần kết hợp với mô hình hỗ trợ để tìm kiếm trực tuyến.",
"search.searchModel.title": "Mô hình hỗ trợ tìm kiếm",
"search.title": "Tìm kiếm web",
"searchAgentPlaceholder": "Tìm kiếm tác nhân...",
"searchAgents": "Tìm kiếm tác nhân...",
"selectedAgents": "Tác nhân đã chọn",
"sendPlaceholder": "Hỏi, tạo hoặc bắt đầu nhiệm vụ, <hotkey><hotkey/>",
"sendPlaceholderHeterogeneous": "Yêu cầu {{name}} thực hiện một nhiệm vụ...",
"sendPlaceholderWithAgentAssignment": "Yêu cầu, tạo hoặc bắt đầu một nhiệm vụ. Dùng @ để giao nhiệm vụ cho tác tử khác.",
"sessionGroup.config": "Quản lý nhóm",
"sessionGroup.confirmRemoveGroupAlert": "Nhóm này sắp bị xóa. Sau khi xóa, các tác nhân trong nhóm sẽ được chuyển về danh sách mặc định. Vui lòng xác nhận thao tác.",
"sessionGroup.createAgentSuccess": "Tạo tác nhân thành công",
"sessionGroup.createGroup": "Thêm nhóm mới",
"sessionGroup.createGroupFailed": "Tạo nhóm trò chuyện thất bại",
"sessionGroup.createGroupSuccess": "Tạo nhóm trò chuyện thành công",
"sessionGroup.createSuccess": "Tạo thành công",
"sessionGroup.creatingAgent": "Đang tạo tác nhân...",
"sessionGroup.groupName": "Tên nhóm",
"sessionGroup.inputPlaceholder": "Vui lòng nhập tên nhóm...",
"sessionGroup.moveGroup": "Chuyển đến nhóm",
"sessionGroup.newGroup": "Nhóm mới",
"sessionGroup.noAvailableAgents": "Không có tác nhân khả dụng",
"sessionGroup.noMatchingAgents": "Không tìm thấy tác nhân phù hợp",
"sessionGroup.noSelectedAgents": "Vui lòng chọn tác nhân",
"sessionGroup.rename": "Đổi tên nhóm",
"sessionGroup.renameSuccess": "Đổi tên thành công",
"sessionGroup.searchAgents": "Tìm kiếm tác nhân",
"sessionGroup.selectedAgents": "Tác nhân đã chọn ({{count}})",
"sessionGroup.sortSuccess": "Sắp xếp lại thành công",
"sessionGroup.sorting": "Đang cập nhật sắp xếp nhóm...",
"sessionGroup.tooLong": "Tên nhóm phải từ 1 đến 20 ký tự",
"shareModal.copy": "Sao chép",
"shareModal.copyLink": "Sao chép liên kết",
"shareModal.copyLinkSuccess": "Đã sao chép liên kết",
"shareModal.download": "Tải ảnh chụp màn hình",
"shareModal.downloadError": "Tải xuống thất bại",
"shareModal.downloadFile": "Tải tệp",
"shareModal.downloadPdf": "Tải PDF",
"shareModal.downloadSuccess": "Tải xuống thành công",
"shareModal.exportMode.full": "Mặc định",
"shareModal.exportMode.label": "Chế độ xuất",
"shareModal.exportMode.simple": "Tương thích OpenAI",
"shareModal.exportPdf": "Xuất dưới dạng PDF",
"shareModal.exportTitle": "Tiêu đề mặc định",
"shareModal.generatePdf": "Tạo PDF",
"shareModal.generatingPdf": "Đang tạo PDF...",
"shareModal.imageType": "Định dạng hình ảnh",
"shareModal.includeTool": "Bao gồm tin nhắn kỹ năng",
"shareModal.includeUser": "Bao gồm tin nhắn người dùng",
"shareModal.link": "Liên kết",
"shareModal.link.linkHint": "Bất kỳ ai có liên kết đều có thể xem chủ đề này",
"shareModal.link.noTopic": "Hãy bắt đầu một cuộc trò chuyện để chia sẻ",
"shareModal.link.permissionLink": "Bất kỳ ai có liên kết",
"shareModal.link.permissionPrivate": "Riêng tư",
"shareModal.link.privateHint": "Chỉ bạn mới có thể truy cập liên kết này",
"shareModal.link.updateError": "Không thể cập nhật cài đặt chia sẻ",
"shareModal.link.visibilityUpdated": "Đã cập nhật quyền hiển thị",
"shareModal.loadingPdf": "Đang tải PDF...",
"shareModal.noPdfData": "Không có dữ liệu PDF",
"shareModal.pdf": "PDF",
"shareModal.pdfErrorDescription": "Đã xảy ra lỗi khi tạo PDF, vui lòng thử lại",
"shareModal.pdfGenerationError": "Tạo PDF thất bại",
"shareModal.pdfReady": "PDF đã sẵn sàng",
"shareModal.popover.moreOptions": "Tùy chọn chia sẻ khác",
"shareModal.popover.privacyWarning.confirm": "Tôi hiểu, tiếp tục",
"shareModal.popover.privacyWarning.content": "Vui lòng đảm bảo cuộc trò chuyện của bạn không chứa thông tin cá nhân hoặc nhạy cảm. Bạn chịu trách nhiệm về bất kỳ nội dung nào bạn chọn chia sẻ và hậu quả của nó.",
"shareModal.popover.privacyWarning.doNotShowAgain": "Không hiển thị lại",
"shareModal.popover.privacyWarning.title": "Thông báo quyền riêng tư",
"shareModal.popover.title": "Chia sẻ chủ đề",
"shareModal.popover.visibility": "Quyền hiển thị",
"shareModal.regeneratePdf": "Tạo lại PDF",
"shareModal.screenshot": "Ảnh chụp màn hình",
"shareModal.settings": "Cài đặt xuất",
"shareModal.text": "Văn bản",
"shareModal.widthMode.label": "Chế độ chiều rộng",
"shareModal.widthMode.narrow": "Hẹp",
"shareModal.widthMode.wide": "Rộng",
"shareModal.withBackground": "Bao gồm hình nền",
"shareModal.withFooter": "Bao gồm chân trang",
"shareModal.withPluginInfo": "Bao gồm thông tin kỹ năng",
"shareModal.withRole": "Bao gồm vai trò tin nhắn",
"shareModal.withSystemRole": "Bao gồm hồ sơ tác nhân",
"sharePage.actions.findMord": "Tìm thêm",
"sharePage.actions.tryItYourself": "Tự mình thử",
"sharePage.error.forbidden.subtitle": "Chia sẻ này là riêng tư và không thể truy cập.",
"sharePage.error.forbidden.title": "Từ chối truy cập",
"sharePage.error.notFound.subtitle": "Chủ đề này không tồn tại hoặc đã bị xóa.",
"sharePage.error.notFound.title": "Không tìm thấy chủ đề",
"sharePage.error.unauthorized.action": "Đăng nhập",
"sharePage.error.unauthorized.subtitle": "Vui lòng đăng nhập để xem chủ đề được chia sẻ.",
"sharePage.error.unauthorized.title": "Yêu cầu đăng nhập",
"sharePageDisclaimer": "Nội dung này được chia sẻ bởi người dùng và không đại diện cho quan điểm của LobeHub. LobeHub không chịu trách nhiệm cho bất kỳ hậu quả nào phát sinh từ nội dung được chia sẻ này.",
"stt.action": "Nhập bằng giọng nói",
"stt.loading": "Đang nhận dạng...",
"stt.prettifying": "Đang chỉnh sửa...",
"supervisor.label": "Người giám sát",
"supervisor.todoList.allComplete": "Tất cả nhiệm vụ đã hoàn thành",
"supervisor.todoList.title": "Nhiệm vụ đã hoàn thành",
"tab.groupProfile": "Hồ sơ nhóm",
"tab.integration": "Tích hợp",
"tab.profile": "Hồ sơ tác nhân",
"tab.search": "Tìm kiếm",
"tab.tasks": "Nhiệm vụ",
"task.activity.calling": "Đang gọi kỹ năng...",
"task.activity.clientExecuting": "Đang thực hiện cục bộ...",
"task.activity.generating": "Đang tạo phản hồi...",
"task.activity.gotResult": "Đã nhận kết quả từ công cụ",
"task.activity.toolCalling": "Đang gọi {{toolName}}...",
"task.activity.toolResult": "Đã nhận kết quả từ {{toolName}}",
"task.batchTasks": "{{count}} nhiệm vụ hàng loạt",
"task.groupTasks": "{{count}} Nhiệm vụ song song",
"task.groupTasksTitle": "{{agents}} và {{count}} nhiệm vụ của tác nhân",
"task.groupTasksTitleSimple": "{{agents}} {{count}} nhiệm vụ",
"task.instruction": "Hướng dẫn tác vụ",
"task.intermediateSteps": "{{count}} bước trung gian",
"task.metrics.duration": "(mất {{duration}})",
"task.metrics.stepsShort": "bước",
"task.metrics.toolCallsShort": "lượt dùng công cụ",
"task.status.cancelled": "Nhiệm vụ đã hủy",
"task.status.failed": "Nhiệm vụ thất bại",
"task.status.fetchingDetails": "Đang lấy chi tiết...",
"task.status.initializing": "Đang khởi tạo nhiệm vụ...",
"task.subtask": "Nhiệm vụ phụ",
"task.title": "Tác vụ",
"taskDetail.activities": "Hoạt động",
"taskDetail.activities.agentTag": "Tác tử",
"taskDetail.activities.fallback.brief": "đã đăng một bản tóm tắt",
"taskDetail.activities.fallback.comment": "đã để lại bình luận",
"taskDetail.activities.fallback.created": "đã tạo nhiệm vụ",
"taskDetail.activities.fallback.topic": "đã bắt đầu một chủ đề",
"taskDetail.activitiesEmpty": "Chưa có hoạt động nào",
"taskDetail.addSubtask": "Thêm nhiệm vụ con",
"taskDetail.blockedBy": "Bị chặn bởi {{id}}",
"taskDetail.comment.cancel": "Hủy",
"taskDetail.comment.delete": "Xóa",
"taskDetail.comment.deleteConfirm.content": "Bình luận này sẽ bị xóa vĩnh viễn.",
"taskDetail.comment.deleteConfirm.ok": "Xóa",
"taskDetail.comment.deleteConfirm.title": "Xóa bình luận này?",
"taskDetail.comment.edit": "Chỉnh sửa",
"taskDetail.comment.save": "Lưu",
"taskDetail.commentPlaceholder": "Để lại bình luận...",
"taskDetail.deleteConfirm.content": "Hành động này không thể hoàn tác.",
"taskDetail.deleteConfirm.ok": "Xóa",
"taskDetail.deleteConfirm.title": "Xóa tác vụ này?",
"taskDetail.instruction": "Hướng dẫn",
"taskDetail.instructionPlaceholder": "Nhấn để chỉnh sửa hướng dẫn của tác vụ...",
"taskDetail.latestActivity.brief": "Tóm tắt: {{title}}",
"taskDetail.latestActivity.briefOnly": "Tóm tắt",
"taskDetail.latestActivity.briefWithAction": "{{title}} - {{action}}",
"taskDetail.latestActivity.briefWithType": "Tóm tắt ({{type}}): {{title}}",
"taskDetail.latestActivity.briefWithTypeOnly": "Tóm tắt ({{type}})",
"taskDetail.latestActivity.topic": "Chủ đề: {{title}}",
"taskDetail.latestActivity.topicWithSeq": "Chủ đề #{{seq}}: {{title}}",
"taskDetail.latestActivity.untitledTopic": "Chủ đề chưa có tên",
"taskDetail.modelConfig": "Ghi đè mô hình",
"taskDetail.navigation": "Điều hướng",
"taskDetail.pauseTask": "Tạm dừng tác vụ",
"taskDetail.priority.high": "Cao",
"taskDetail.priority.low": "Thấp",
"taskDetail.priority.none": "Không ưu tiên",
"taskDetail.priority.normal": "Bình thường",
"taskDetail.priority.urgent": "Khẩn cấp",
"taskDetail.properties": "Thuộc tính",
"taskDetail.reassignDisabled": "Không thể giao lại tác tử khi nhiệm vụ đang chạy",
"taskDetail.rerunTask": "Chạy lại nhiệm vụ",
"taskDetail.runTask": "Chạy tác vụ",
"taskDetail.saveModelConfig": "Lưu",
"taskDetail.status.backlog": "Tồn đọng",
"taskDetail.status.canceled": "Đã hủy",
"taskDetail.status.completed": "Hoàn thành",
"taskDetail.status.failed": "Thất bại",
"taskDetail.status.paused": "Đã tạm dừng",
"taskDetail.status.running": "Đang thực hiện",
"taskDetail.stopTask": "Dừng nhiệm vụ",
"taskDetail.subIssueOf": "Vấn đề con của",
"taskDetail.subtaskInstructionPlaceholder": "Mô tả nhiệm vụ con...",
"taskDetail.subtasks": "Tác vụ con",
"taskDetail.titlePlaceholder": "Nhập tiêu đề tác vụ...",
"taskDetail.topicDrawer.untitled": "Không có tiêu đề",
"taskDetail.updateFailed": "Cập nhật nhiệm vụ thất bại",
"taskList.activeTasks": "Công Việc Đang Hoạt Động",
"taskList.all": "Tất cả tác vụ",
"taskList.breadcrumb.task": "Công Việc",
"taskList.empty": "Chưa có tác vụ nào",
"taskList.form.grouping": "Nhóm",
"taskList.form.orderCompletedByRecency": "Sắp xếp tác vụ đã hoàn thành theo thời gian gần nhất",
"taskList.form.ordering": "Sắp xếp",
"taskList.form.subGrouping": "Nhóm phụ",
"taskList.groupBy.assignee": "Người được giao",
"taskList.groupBy.none": "Không nhóm",
"taskList.groupBy.priority": "Ưu tiên",
"taskList.groupBy.status": "Trạng thái",
"taskList.orderBy.assignee": "Người được giao",
"taskList.orderBy.createdAt": "Ngày tạo",
"taskList.orderBy.priority": "Ưu tiên",
"taskList.orderBy.status": "Trạng thái",
"taskList.orderBy.title": "Tiêu đề",
"taskList.orderBy.updatedAt": "Ngày cập nhật",
"taskList.title": "Công Việc",
"taskList.unassigned": "Chưa giao",
"taskList.view.board": "Bảng",
"taskList.view.list": "Danh sách",
"taskList.viewAll": "Xem tất cả",
"taskSchedule.clear": "Xóa",
"taskSchedule.enable": "Bật tự động hóa",
"taskSchedule.every": "Mỗi",
"taskSchedule.hours": "Giờ",
"taskSchedule.interval": "Lặp lại",
"taskSchedule.intervalTab": "Lặp lại",
"taskSchedule.minutes": "Phút",
"taskSchedule.scheduler": "Lịch trình",
"taskSchedule.schedulerNotReady": "Tính năng Lịch trình sắp ra mắt. Tạm thời hãy dùng Lặp lại.",
"taskSchedule.schedulerTab": "Lịch trình",
"taskSchedule.seconds": "Giây",
"taskSchedule.tag.add": "Đặt lịch",
"taskSchedule.tag.every": "mỗi {{interval}}",
"taskSchedule.tag.heartbeat": "Nhịp · {{every}}",
"taskSchedule.tag.schedule": "Lịch · {{schedule}}{{timezone}}",
"taskSchedule.title": "Lịch",
"taskSchedule.unit.hour_one": "{{count}} giờ",
"taskSchedule.unit.hour_other": "{{count}} giờ",
"taskSchedule.unit.minute_one": "{{count}} phút",
"taskSchedule.unit.minute_other": "{{count}} phút",
"taskSchedule.unit.second_one": "{{count}} giây",
"taskSchedule.unit.second_other": "{{count}} giây",
"thread.closeSubagentThread": "Thu gọn hội thoại tác tử phụ",
"thread.divider": "Chủ đề phụ",
"thread.openSubagentThread": "Xem toàn bộ hội thoại tác tử phụ",
"thread.subagentBadge": "Tác tử phụ",
"thread.threadMessageCount": "{{messageCount}} tin nhắn",
"thread.title": "Chủ đề phụ",
"todoProgress.allCompleted": "Tất cả nhiệm vụ đã hoàn thành",
"todoProgress.title": "Nhiệm vụ",
"toggleWideScreen.off": "Tắt chế độ toàn màn hình",
"toggleWideScreen.on": "Bật chế độ toàn màn hình",
"tokenDetails.chats": "Tin nhắn trò chuyện",
"tokenDetails.historySummary": "Tóm tắt lịch sử",
"tokenDetails.rest": "Còn lại",
"tokenDetails.supervisor": "Chủ nhóm",
"tokenDetails.systemRole": "Cài đặt vai trò",
"tokenDetails.title": "Chi tiết ngữ cảnh",
"tokenDetails.tools": "Cài đặt kỹ năng",
"tokenDetails.total": "Tổng khả dụng",
"tokenDetails.used": "Tổng đã dùng",
"tokenTag.overload": "Vượt giới hạn",
"tokenTag.remained": "Còn lại",
"tokenTag.used": "Đã dùng",
"tool.intervention.approvalMode": "Chế độ Phê duyệt",
"tool.intervention.approve": "Chấp thuận",
"tool.intervention.approveAndRemember": "Chấp thuận và ghi nhớ",
"tool.intervention.approveOnce": "Chỉ chấp thuận lần này",
"tool.intervention.mode.allowList": "Danh sách cho phép",
"tool.intervention.mode.allowListDesc": "Chỉ tự động thực thi các công cụ đã được chấp thuận",
"tool.intervention.mode.autoRun": "Tự động chấp thuận",
"tool.intervention.mode.autoRunDesc": "Tự động chấp thuận tất cả các lần thực thi công cụ",
"tool.intervention.mode.manual": "Thủ công",
"tool.intervention.mode.manualDesc": "Yêu cầu chấp thuận thủ công cho mỗi lần gọi",
"tool.intervention.onboarding.agentIdentity.applyHint": "Danh tính mới sẽ xuất hiện sau khi được phê duyệt.",
"tool.intervention.onboarding.agentIdentity.description": "Phê duyệt thay đổi này sẽ cập nhật Tác tử hiển thị trong Hộp thư và trong hội thoại onboarding này.",
"tool.intervention.onboarding.agentIdentity.emoji": "Ảnh đại diện tác tử",
"tool.intervention.onboarding.agentIdentity.eyebrow": "Phê duyệt onboarding",
"tool.intervention.onboarding.agentIdentity.name": "Tên tác tử",
"tool.intervention.onboarding.agentIdentity.targetInbox": "Tác tử Hộp thư",
"tool.intervention.onboarding.agentIdentity.targetOnboarding": "Tác tử Onboarding hiện tại",
"tool.intervention.onboarding.agentIdentity.targets": "Áp dụng cho",
"tool.intervention.onboarding.agentIdentity.title": "Xác nhận cập nhật danh tính Tác tử",
"tool.intervention.pending": "Đang chờ xử lý",
"tool.intervention.reject": "Từ chối",
"tool.intervention.rejectAndContinue": "Từ chối và thử lại",
"tool.intervention.rejectOnly": "Từ chối",
"tool.intervention.rejectReasonPlaceholder": "Lý do giúp tác nhân hiểu giới hạn của bạn và cải thiện hành động sau này",
"tool.intervention.rejectTitle": "Từ chối gọi kỹ năng này",
"tool.intervention.rejectedWithReason": "Lệnh gọi kỹ năng này đã bị từ chối: {{reason}}",
"tool.intervention.scrollToIntervention": "Xem",
"tool.intervention.toolAbort": "Bạn đã hủy lệnh gọi kỹ năng này",
"tool.intervention.toolRejected": "Lệnh gọi kỹ năng này đã bị từ chối",
"tool.intervention.viewParameters": "Xem các tham số ({{count}})",
"toolAuth.authorize": "Ủy quyền",
"toolAuth.authorizing": "Đang ủy quyền...",
"toolAuth.hint": "Nếu không có ủy quyền hoặc cấu hình, kỹ năng có thể không hoạt động. Điều này có thể giới hạn tác nhân hoặc gây lỗi.",
"toolAuth.signIn": "Đăng nhập",
"toolAuth.title": "Ủy quyền kỹ năng cho tác nhân này",
"topic.checkOpenNewTopic": "Bắt đầu chủ đề mới?",
"topic.checkSaveCurrentMessages": "Bạn có muốn lưu cuộc trò chuyện hiện tại thành chủ đề không?",
"topic.defaultTitle": "Chủ đề chưa có tên",
"topic.openNewTopic": "Mở chủ đề mới",
"topic.recent": "Chủ đề gần đây",
"topic.saveCurrentMessages": "Lưu phiên hiện tại thành chủ đề",
"topic.viewAll": "Xem tất cả chủ đề",
"translate.action": "Dịch",
"translate.clear": "Xóa bản dịch",
"tts.action": "Chuyển văn bản thành giọng nói",
"tts.clear": "Xóa giọng nói",
"untitledAgent": "Tác nhân chưa đặt tên",
"untitledGroup": "Nhóm chưa đặt tên",
"updateAgent": "Cập nhật thông tin tác nhân",
"upload.action.fileUpload": "Tải tệp lên",
"upload.action.folderUpload": "Tải thư mục lên",
"upload.action.imageDisabled": "Mô hình hiện tại không hỗ trợ nhận diện hình ảnh. Vui lòng chuyển mô hình để sử dụng tính năng này.",
"upload.action.imageUpload": "Tải hình ảnh lên",
"upload.action.tooltip": "Tải lên",
"upload.clientMode.actionFiletip": "Tải tệp lên",
"upload.clientMode.actionTooltip": "Tải lên",
"upload.clientMode.disabled": "Mô hình hiện tại không hỗ trợ nhận diện hình ảnh và phân tích tệp. Vui lòng chuyển mô hình để sử dụng tính năng này.",
"upload.clientMode.fileNotSupported": "Chế độ trình duyệt không hỗ trợ tải tệp, chỉ cho phép hình ảnh.",
"upload.clientMode.visionNotSupported": "Mô hình hiện tại không hỗ trợ nhận diện hình ảnh. Vui lòng chuyển sang mô hình khác để sử dụng tính năng này.",
"upload.preview.prepareTasks": "Đang chuẩn bị phân đoạn...",
"upload.preview.status.pending": "Đang chuẩn bị tải lên...",
"upload.preview.status.processing": "Đang xử lý tệp...",
"upload.validation.videoSizeExceeded": "Kích thước tệp video không được vượt quá 20MB. Kích thước hiện tại là {{actualSize}}.",
"viewMode.fullWidth": "Toàn chiều rộng",
"viewMode.normal": "Chuẩn",
"viewMode.wideScreen": "Toàn màn hình",
"workflow.awaitingConfirmation": "Đang chờ bạn xác nhận",
"workflow.collapse": "Thu gọn",
"workflow.expandFull": "Mở rộng hoàn toàn",
"workflow.failedSuffix": "(thất bại)",
"workflow.summaryFailed": "{{count}} thất bại",
"workflow.summaryMoreTools": "{{count}} loại công cụ",
"workflow.summaryTotalCalls": "Tổng {{count}} lượt gọi",
"workflow.thoughtForDuration": "Đã suy nghĩ trong {{duration}}",
"workflow.toolDisplayName.activateDevice": "Thiết bị đã được kích hoạt",
"workflow.toolDisplayName.activateSkill": "Đã kích hoạt một kỹ năng",
"workflow.toolDisplayName.activateTools": "Công cụ đã được kích hoạt",
"workflow.toolDisplayName.addActivityMemory": "Bộ nhớ đã lưu",
"workflow.toolDisplayName.addContextMemory": "Bộ nhớ đã lưu",
"workflow.toolDisplayName.addExperienceMemory": "Bộ nhớ đã lưu",
"workflow.toolDisplayName.addIdentityMemory": "Bộ nhớ đã lưu",
"workflow.toolDisplayName.addPreferenceMemory": "Bộ nhớ đã lưu",
"workflow.toolDisplayName.calculate": "Đã tính toán",
"workflow.toolDisplayName.callAgent": "Đã gọi một tác nhân",
"workflow.toolDisplayName.clearTodos": "Đã xóa danh sách việc cần làm",
"workflow.toolDisplayName.copyDocument": "Đã sao chép một tài liệu",
"workflow.toolDisplayName.crawlMultiPages": "Các trang đã thu thập",
"workflow.toolDisplayName.crawlSinglePage": "Đã thu thập dữ liệu một trang",
"workflow.toolDisplayName.createAgent": "Đã tạo một tác nhân",
"workflow.toolDisplayName.createDocument": "Đã tạo một tài liệu",
"workflow.toolDisplayName.createPlan": "Đã tạo kế hoạch",
"workflow.toolDisplayName.createTodos": "Đã tạo các việc cần làm",
"workflow.toolDisplayName.deleteAgent": "Đã xóa một tác nhân",
"workflow.toolDisplayName.deleteDocument": "Đã xóa một tài liệu",
"workflow.toolDisplayName.editDocument": "Đã chỉnh sửa một tài liệu",
"workflow.toolDisplayName.editLocalFile": "Đã chỉnh sửa một tệp",
"workflow.toolDisplayName.editTitle": "Tiêu đề đã chỉnh sửa",
"workflow.toolDisplayName.evaluate": "Biểu thức đã được đánh giá",
"workflow.toolDisplayName.execScript": "Đã thực thi một tập lệnh",
"workflow.toolDisplayName.execTask": "Đã thực thi một tác vụ",
"workflow.toolDisplayName.execTasks": "Các tác vụ đã thực thi",
"workflow.toolDisplayName.execute": "Đã thực hiện phép tính",
"workflow.toolDisplayName.executeCode": "Mã đã được thực thi",
"workflow.toolDisplayName.finishOnboarding": "Hoàn tất hướng dẫn ban đầu",
"workflow.toolDisplayName.getCommandOutput": "Đọc kết quả đầu ra của lệnh",
"workflow.toolDisplayName.getDocument": "Đọc tài liệu",
"workflow.toolDisplayName.getOnboardingState": "Đã kiểm tra trạng thái hướng dẫn ban đầu",
"workflow.toolDisplayName.getPageContent": "Đọc nội dung trang",
"workflow.toolDisplayName.getTopicContext": "Đọc ngữ cảnh chủ đề",
"workflow.toolDisplayName.globLocalFiles": "Tệp đã tìm kiếm",
"workflow.toolDisplayName.grepContent": "Nội dung đã tìm kiếm",
"workflow.toolDisplayName.importFromMarket": "Được nhập từ chợ",
"workflow.toolDisplayName.importSkill": "Đã nhập một kỹ năng",
"workflow.toolDisplayName.initPage": "Trang đã khởi tạo",
"workflow.toolDisplayName.killCommand": "Đã dừng một lệnh",
"workflow.toolDisplayName.listDocuments": "Danh sách tài liệu",
"workflow.toolDisplayName.listLocalFiles": "Đã liệt kê các tệp",
"workflow.toolDisplayName.listOnlineDevices": "Các thiết bị đã liệt kê",
"workflow.toolDisplayName.modifyNodes": "Trang đã chỉnh sửa",
"workflow.toolDisplayName.moveLocalFiles": "Đã di chuyển tệp",
"workflow.toolDisplayName.readDocument": "Đọc tài liệu",
"workflow.toolDisplayName.readDocumentByFilename": "Đọc một tài liệu",
"workflow.toolDisplayName.readKnowledge": "Đọc kiến thức",
"workflow.toolDisplayName.readLocalFile": "Đọc một tệp",
"workflow.toolDisplayName.removeDocument": "Đã xóa một tài liệu",
"workflow.toolDisplayName.removeIdentityMemory": "Đã xóa bộ nhớ",
"workflow.toolDisplayName.renameDocument": "Đã đổi tên một tài liệu",
"workflow.toolDisplayName.renameLocalFile": "Đã đổi tên một tệp",
"workflow.toolDisplayName.replaceText": "Đã thay thế văn bản",
"workflow.toolDisplayName.runCommand": "Đã chạy lệnh",
"workflow.toolDisplayName.search": "Đã tìm kiếm trên web",
"workflow.toolDisplayName.searchAgent": "Các tác nhân đã được tìm kiếm",
"workflow.toolDisplayName.searchKnowledgeBase": "Đã tìm kiếm cơ sở kiến thức",
"workflow.toolDisplayName.searchLocalFiles": "Các tệp đã tìm kiếm",
"workflow.toolDisplayName.searchSkill": "Kỹ năng đã tìm kiếm",
"workflow.toolDisplayName.searchUserMemory": "Đã tìm kiếm bộ nhớ",
"workflow.toolDisplayName.solve": "Phương trình đã được giải",
"workflow.toolDisplayName.updateAgent": "Đã cập nhật một tác nhân",
"workflow.toolDisplayName.updateDocument": "Đã cập nhật một tài liệu",
"workflow.toolDisplayName.updateIdentityMemory": "Đã cập nhật bộ nhớ",
"workflow.toolDisplayName.updateLoadRule": "Quy tắc tải đã được cập nhật",
"workflow.toolDisplayName.updatePlan": "Kế hoạch đã được cập nhật",
"workflow.toolDisplayName.updateTodos": "Đã cập nhật việc cần làm",
"workflow.toolDisplayName.upsertDocumentByFilename": "Đã cập nhật một tài liệu",
"workflow.toolDisplayName.writeLocalFile": "Đã ghi một tệp",
"workflow.working": "Đang xử lý...",
"workingPanel.agentDocuments": "Agent Documents",
"workingPanel.documents.close": "Close",
"workingPanel.documents.discard": "Discard",
"workingPanel.documents.edit": "Edit",
"workingPanel.documents.error": "Failed to load document",
"workingPanel.documents.loading": "Loading document...",
"workingPanel.documents.preview": "Preview",
"workingPanel.documents.save": "Save",
"workingPanel.documents.saved": "All changes saved",
"workingPanel.documents.title": "Document",
"workingPanel.documents.unsaved": "Unsaved changes",
"workingPanel.progress": "Progress",
"workingPanel.progress.allCompleted": "All tasks completed",
"workingPanel.resources": "Resources",
"workingPanel.resources.deleteConfirm": "This action cannot be undone.",
"workingPanel.resources.deleteError": "Failed to delete document",
"workingPanel.resources.deleteSuccess": "Document deleted",
"workingPanel.resources.deleteTitle": "Delete document?",
"workingPanel.resources.empty": "Chưa có tài liệu. Các tài liệu liên quan đến tác tử này sẽ xuất hiện ở đây.",
"workingPanel.resources.error": "Failed to load resources",
"workingPanel.resources.filter.all": "Tất cả",
"workingPanel.resources.filter.documents": "Tài liệu",
"workingPanel.resources.filter.web": "Web",
"workingPanel.resources.loading": "Loading resources...",
"workingPanel.resources.previewError": "Failed to load preview",
"workingPanel.resources.previewLoading": "Loading preview...",
"workingPanel.resources.renameEmpty": "Title cannot be empty",
"workingPanel.resources.renameError": "Failed to rename document",
"workingPanel.resources.renameSuccess": "Document renamed",
"workingPanel.resources.viewMode.list": "Chế độ danh sách",
"workingPanel.resources.viewMode.tree": "Chế độ cây",
"workingPanel.title": "Working Panel",
"you": "Bạn",
"zenMode": "Chế độ tập trung"
}