Files
lobe-chat/locales/ko-KR/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
46 KiB
JSON

{
"ModelSwitch.title": "모델",
"active": "활성",
"agentBuilder.installPlugin.authRequired": "클라우드 MCP를 사용하려면 로그인이 필요합니다",
"agentBuilder.installPlugin.cancel": "취소",
"agentBuilder.installPlugin.clickApproveToConnect": "'승인'을 클릭하여 연결하고 이 커넥터를 승인하세요",
"agentBuilder.installPlugin.clickApproveToInstall": "'승인'을 클릭하여 이 기능을 설치하세요",
"agentBuilder.installPlugin.connectedAndEnabled": "연결됨 및 활성화됨",
"agentBuilder.installPlugin.connectionFailed": "연결 중 문제가 발생했습니다. 재시도하거나 승인과 네트워크를 확인한 후 계속하세요",
"agentBuilder.installPlugin.installFailed": "설치 중 문제가 발생했습니다. 재시도하거나 원인을 확인한 후 계속하세요",
"agentBuilder.installPlugin.installPlugin": "기능 설치",
"agentBuilder.installPlugin.installToEnable": "설치하면 도우미에서 이 기능을 활성화할 수 있습니다(나중에 설치할 수도 있습니다)",
"agentBuilder.installPlugin.installedAndEnabled": "설치됨 및 활성화됨",
"agentBuilder.installPlugin.requiresAuth": "승인이 필요합니다. '승인'을 클릭하여 연결을 완료하세요",
"agentBuilder.installPlugin.retry": "재시도",
"agentBuilder.title": "도우미 빌더",
"agentBuilder.welcome": "먼저 사용 시나리오를 말씀해 주세요.\n\n글쓰기, 코딩, 데이터 분석 등—당신은 목표와 기준을 정하고, 아이디어를 협업적이고 실행 가능한 도우미로 만드는 것을 도와드리겠습니다",
"agentDefaultMessage": "안녕하세요, 저는 **{{name}}**입니다. 한 문장으로 시작하세요.\n\n더 당신의 업무 방식에 맞추려면: [도우미 설정]({{url}})에서 도우미 프로필을 보완하세요(언제든 변경 가능)",
"agentDefaultMessageWithSystemRole": "안녕하세요, 저는 **{{name}}**입니다. 한 문장으로 시작하세요—결정은 당신에게 있습니다",
"agentDefaultMessageWithoutEdit": "안녕하세요, 저는 **{{name}}**입니다. 한 문장으로 시작하세요—결정은 당신에게 있습니다",
"agentProfile.files_one": "{{count}}개 파일",
"agentProfile.files_other": "{{count}}개 파일",
"agentProfile.knowledgeBases_one": "{{count}}개 지식 베이스",
"agentProfile.knowledgeBases_other": "{{count}}개 지식 베이스",
"agentProfile.skills_one": "{{count}}개 스킬",
"agentProfile.skills_other": "{{count}}개 스킬",
"agents": "도우미",
"artifact.generating": "생성 중",
"artifact.inThread": "하위 주제에서는 볼 수 없습니다. 메인 대화 영역으로 돌아가서 열어주세요",
"artifact.thinking": "생각 중",
"artifact.thought": "사고 과정",
"artifact.unknownTitle": "제목 없는 작품",
"availableAgents": "사용 가능한 도우미",
"backToBottom": "최신으로 이동",
"beforeUnload.confirmLeave": "생성 중인 요청이 있습니다. 떠나시겠습니까?",
"builtinCopilot": "내장 Copilot",
"chatList.expandMessage": "메시지 펼치기",
"chatList.longMessageDetail": "자세히 보기",
"clearCurrentMessages": "현재 대화 메시지 지우기",
"compressedHistory": "압축된 기록",
"compression.cancel": "압축 해제",
"compression.cancelConfirm": "정말로 압축을 해제하시겠습니까? 원래 메시지가 복원됩니다.",
"compression.history": "기록",
"compression.summary": "요약",
"confirmClearCurrentMessages": "현재 대화 메시지를 지우시겠습니까? 지운 후 복구할 수 없습니다",
"confirmRemoveChatGroupItemAlert": "이 그룹을 삭제하시겠습니까? 구성원에게는 영향이 없습니다",
"confirmRemoveGroupItemAlert": "이 그룹을 삭제하시겠습니까? 그룹 내 도우미는 기본 목록으로 이동합니다",
"confirmRemoveGroupSuccess": "그룹이 삭제되었습니다",
"confirmRemoveSessionItemAlert": "이 도우미를 삭제하시겠습니까? 삭제 후 복구할 수 없습니다",
"confirmRemoveSessionSuccess": "도우미가 삭제되었습니다",
"createModal.createBlank": "빈 페이지 만들기",
"createModal.groupPlaceholder": "이 그룹이 수행할 작업을 설명하세요...",
"createModal.groupTitle": "그룹은 어떤 일을 해야 하나요?",
"createModal.placeholder": "에이전트가 수행해야 할 작업을 설명하세요...",
"createModal.title": "에이전트는 어떤 일을 해야 하나요?",
"createTask.assignee": "담당자",
"createTask.collapse": "입력 숨기기",
"createTask.expandToInline": "페이지에 도킹",
"createTask.instructionPlaceholder": "설명 추가...",
"createTask.submit": "작업 생성",
"createTask.titlePlaceholder": "작업 제목",
"defaultAgent": "사용자 정의 도우미",
"defaultGroupChat": "그룹",
"defaultList": "기본 목록",
"defaultSession": "사용자 정의 도우미",
"desktopNotification.aiReplyCompleted.body": "AI 응답 생성 완료",
"desktopNotification.aiReplyCompleted.title": "AI 응답 완료",
"dm.placeholder": "당신과 {{agentTitle}}의 개인 메시지가 여기에 표시됩니다",
"dm.tooltip": "개인 메시지 보내기",
"dm.visibleTo": "{{target}}만 볼 수 있습니다",
"dm.you": "당신",
"duplicateSession.loading": "복사 중…",
"duplicateSession.success": "복사 성공",
"duplicateSession.title": "{{title}} 복사본",
"duplicateTitle": "{{title}} 복사본",
"emptyAgent": "아직 도우미가 없습니다. 첫 번째 도우미부터 시작해서 도우미 시스템을 점진적으로 구축해 보세요",
"emptyAgentAction": "도우미 만들기",
"extendParams.disableContextCaching.desc": "단일 대화를 생성하는 비용을 최대 90%까지 절감하고 최대 4배 빠른 속도를 제공합니다. <1>자세히 알아보기</1>",
"extendParams.disableContextCaching.title": "컨텍스트 캐시 활성화",
"extendParams.effort.desc": "Effort 매개변수를 사용하여 Claude가 응답 시 사용하는 토큰 수를 제어합니다.",
"extendParams.effort.title": "노력 수준",
"extendParams.enableAdaptiveThinking.desc": "적응형 사고 모드를 통해 Claude가 언제 얼마나 사고할지 동적으로 결정하도록 합니다.",
"extendParams.enableAdaptiveThinking.title": "적응형 사고 활성화",
"extendParams.enableReasoning.desc": "Claude 사고 메커니즘의 제한을 기반으로 합니다. <1>자세히 알아보기</1>",
"extendParams.enableReasoning.title": "심층 사고 활성화",
"extendParams.imageAspectRatio.title": "이미지 가로세로 비율",
"extendParams.imageResolution.title": "이미지 해상도",
"extendParams.reasoningBudgetToken.title": "사고 토큰 예산",
"extendParams.reasoningEffort.title": "추론 강도",
"extendParams.textVerbosity.title": "출력 상세도",
"extendParams.thinking.title": "심층 사고 스위치",
"extendParams.thinkingBudget.title": "생각 예산",
"extendParams.thinkingLevel.title": "사고 수준",
"extendParams.title": "모델 확장 기능",
"extendParams.urlContext.desc": "활성화하면 웹 링크를 자동 분석하여 웹페이지 컨텍스트를 추출합니다",
"extendParams.urlContext.title": "웹 링크 컨텐츠 추출",
"followUpPlaceholder": "후속 작업. 다른 에이전트에게 작업을 할당하려면 @를 사용하세요.",
"group.desc": "동일한 대화 공간에서 여러 도우미가 함께 작업을 추진합니다",
"group.memberTooltip": "그룹에 {{count}}명의 구성원이 있습니다",
"group.orchestratorThinking": "호스트가 생각 중…",
"group.profile.contentPlaceholder": "그룹의 목표 및 작업 방식을 설정하세요. 이 정보는 모든 그룹 구성원과 공유됩니다.",
"group.profile.external": "외부",
"group.profile.externalAgentWarning": "이 에이전트는 외부 에이전트입니다. 여기서 변경한 내용은 원본 에이전트 설정에 직접 반영됩니다.",
"group.profile.groupSettings": "그룹 설정",
"group.profile.supervisor": "감독자",
"group.profile.supervisorPlaceholder": "감독자는 다양한 에이전트를 조율합니다. 여기에서 감독자 정보를 설정하면 워크플로우를 보다 정밀하게 조정할 수 있습니다.",
"group.removeMember": "구성원 제거",
"group.title": "그룹",
"groupDescription": "그룹 설명",
"groupSidebar.agentProfile.chat": "채팅",
"groupSidebar.agentProfile.model": "모델",
"groupSidebar.agentProfile.settings": "설정",
"groupSidebar.members.addMember": "구성원 추가",
"groupSidebar.members.enableOrchestrator": "호스트 활성화",
"groupSidebar.members.memberSettings": "구성원 설정",
"groupSidebar.members.orchestrator": "호스트",
"groupSidebar.members.orchestratorThinking": "호스트가 생각 중…",
"groupSidebar.members.removeMember": "구성원 제거",
"groupSidebar.members.stopOrchestrator": "생각 중지",
"groupSidebar.members.triggerOrchestrator": "그룹 채팅 시작",
"groupSidebar.tabs.host": "호스트",
"groupSidebar.tabs.members": "구성원",
"groupSidebar.tabs.role": "설정",
"groupWizard.chooseMembers": "기존 도우미 선택…",
"groupWizard.createGroup": "그룹 만들기",
"groupWizard.existingMembers": "기존 도우미",
"groupWizard.groupMembers": "이 도우미들도 목록에 추가됩니다",
"groupWizard.host.description": "그룹이 자율적으로 작업을 추진하도록 합니다. 당신은 언제든 개입할 수 있습니다",
"groupWizard.host.title": "호스트 활성화",
"groupWizard.host.tooltip": "끄면 구성원이 응답하려면 수동으로 @멘션해야 합니다",
"groupWizard.memberCount": "{{count}}명 구성원",
"groupWizard.noMatchingTemplates": "일치하는 템플릿을 찾을 수 없습니다",
"groupWizard.noSelectedTemplates": "선택된 템플릿이 없습니다",
"groupWizard.noTemplateMembers": "이 템플릿에는 구성원이 없습니다",
"groupWizard.noTemplates": "사용 가능한 템플릿이 없습니다",
"groupWizard.searchTemplates": "템플릿 검색…",
"groupWizard.title": "그룹 만들기",
"groupWizard.useTemplate": "템플릿 사용",
"heteroAgent.fullAccess.label": "전체 권한",
"heteroAgent.fullAccess.tooltip": "Claude Code는 작업 디렉터리에 대한 전체 읽기/쓰기 권한으로 로컬에서 실행됩니다. 권한 모드 전환은 아직 지원되지 않습니다.",
"heteroAgent.resumeReset.cwdChanged": "작업 디렉터리가 변경되었습니다. 이전 Claude Code 세션은 원래 디렉터리에서만 재개할 수 있으므로 새 대화가 시작되었습니다.",
"heteroAgent.switchCwd.cancel": "취소",
"heteroAgent.switchCwd.content": "Claude Code 세션은 작업 디렉터리에 고정됩니다. 디렉터리를 변경하면 이 주제에 대한 새 세션이 시작됩니다. 채팅 메시지는 유지되지만 이전 세션의 컨텍스트는 복원할 수 없습니다.",
"heteroAgent.switchCwd.ok": "전환하고 새 세션 시작",
"heteroAgent.switchCwd.title": "작업 디렉터리를 전환하시겠습니까?",
"hideForYou": "개인 메시지 내용이 숨겨져 있습니다. 설정에서 '개인 메시지 내용 표시'를 활성화하여 보세요",
"history.title": "도우미는 최근 {{count}}개의 메시지만 기억합니다",
"historyRange": "기록 범위",
"historySummary": "기록 메시지 요약",
"inactive": "비활성",
"inbox.desc": "동일한 공간에서 협력하여 아이디어를 결과로 만듭니다",
"inbox.title": "Lobe AI",
"input.addAi": "도우미 메시지 추가",
"input.addUser": "사용자 메시지 추가",
"input.disclaimer": "도우미도 실수를 할 수 있습니다. 중요한 정보는 당신의 판단을 최우선으로 하세요",
"input.errorMsg": "전송 중 문제가 발생했습니다: {{errorMsg}}. 재시도하거나 나중에 다시 보내세요",
"input.more": "더 보기",
"input.send": "전송",
"input.sendWithCmdEnter": "<key/> 키를 눌러 전송",
"input.sendWithEnter": "<key/> 키를 눌러 전송",
"input.stop": "중지",
"input.warp": "줄바꿈",
"input.warpWithKey": "<key/> 키를 눌러 줄 바꿈",
"intentUnderstanding.title": "당신의 의도를 이해하는 중…",
"inviteMembers": "구성원 초대",
"knowledgeBase.all": "모든 컨텐츠",
"knowledgeBase.allFiles": "모든 파일",
"knowledgeBase.allLibraries": "모든 자료실",
"knowledgeBase.disabled": "현재 배포 모드에서는 자료실 대화를 지원하지 않습니다. 서버 데이터베이스 배포로 전환하거나 {{cloud}} 서비스를 사용하세요",
"knowledgeBase.library.action.add": "추가",
"knowledgeBase.library.action.detail": "상세",
"knowledgeBase.library.action.remove": "제거",
"knowledgeBase.library.title": "파일/자료실",
"knowledgeBase.relativeFilesOrLibraries": "관련 파일/자료실",
"knowledgeBase.title": "자료실",
"knowledgeBase.uploadGuide": "업로드한 파일은 '자료'에서 확인할 수 있습니다",
"knowledgeBase.viewMore": "더 보기",
"memberSelection.addMember": "구성원 추가",
"memberSelection.allMembers": "전체 구성원",
"memberSelection.createGroup": "그룹 만들기",
"memberSelection.noAvailableAgents": "초대할 수 있는 도우미가 없습니다",
"memberSelection.noSelectedAgents": "선택된 도우미가 없습니다",
"memberSelection.searchAgents": "도우미 검색…",
"memberSelection.selectedAgents": "선택됨({{count}})",
"memberSelection.setInitialMembers": "그룹 구성원 선택",
"members": "구성원",
"memory.effort.desc": "AI가 메모리를 검색하고 업데이트하는 강도를 제어합니다.",
"memory.effort.high.title": "높음",
"memory.effort.low.title": "낮음",
"memory.effort.medium.title": "중간",
"memory.effort.title": "공격성",
"memory.off.desc": "이 대화에 대한 메모리를 비활성화합니다.",
"memory.off.title": "메모리 비활성화",
"memory.on.desc": "대화에서 선호 사항과 정보를 기억합니다.",
"memory.on.title": "메모리 활성화",
"memory.title": "메모리",
"mention.title": "구성원 멘션",
"messageAction.collapse": "메시지 접기",
"messageAction.continueGeneration": "계속 생성하기",
"messageAction.delAndRegenerate": "삭제 후 재생성",
"messageAction.deleteDisabledByThreads": "이 메시지에는 하위 주제가 있어 삭제할 수 없습니다",
"messageAction.expand": "메시지 펼치기",
"messageAction.interrupted": "중단됨",
"messageAction.interruptedHint": "대신 무엇을 해야 하나요?",
"messageAction.reaction": "반응 추가",
"messageAction.regenerate": "재생성",
"messages.dm.sentTo": "{{name}}만 볼 수 있습니다",
"messages.dm.title": "개인 메시지",
"messages.modelCard.credit": "크레딧",
"messages.modelCard.creditPricing": "가격",
"messages.modelCard.creditTooltip": "계산을 용이하게 하기 위해 $1를 1M 크레딧으로 환산합니다. 예를 들어 $3/M 토큰은 3크레딧/토큰에 해당합니다",
"messages.modelCard.pricing.inputCachedTokens": "캐시 입력 {{amount}}크레딧 · ${{amount}}/M",
"messages.modelCard.pricing.inputCharts": "${{amount}}/M 문자",
"messages.modelCard.pricing.inputMinutes": "${{amount}}/분",
"messages.modelCard.pricing.inputTokens": "입력 {{amount}}크레딧 · ${{amount}}/M",
"messages.modelCard.pricing.outputTokens": "출력 {{amount}}크레딧 · ${{amount}}/M",
"messages.modelCard.pricing.writeCacheInputTokens": "캐시 쓰기 {{amount}}크레딧 · ${{amount}}/M",
"messages.tokenDetails.average": "평균 단가",
"messages.tokenDetails.input": "입력",
"messages.tokenDetails.inputAudio": "오디오 입력",
"messages.tokenDetails.inputCached": "입력 캐시",
"messages.tokenDetails.inputCitation": "입력 인용",
"messages.tokenDetails.inputText": "텍스트 입력",
"messages.tokenDetails.inputTitle": "입력 상세",
"messages.tokenDetails.inputTool": "도구 사용 입력",
"messages.tokenDetails.inputUncached": "미캐시 입력",
"messages.tokenDetails.inputWriteCached": "캐시 쓰기",
"messages.tokenDetails.output": "출력",
"messages.tokenDetails.outputAudio": "오디오 출력",
"messages.tokenDetails.outputImage": "이미지 출력",
"messages.tokenDetails.outputText": "텍스트 출력",
"messages.tokenDetails.outputTitle": "출력 상세",
"messages.tokenDetails.reasoning": "심층 사고",
"messages.tokenDetails.speed.tps.title": "TPS",
"messages.tokenDetails.speed.tps.tooltip": "Tokens Per Second(TPS): AI가 생성한 콘텐츠의 평균 속도(토큰/초). 첫 번째 토큰을 수신한 후부터 계산을 시작합니다",
"messages.tokenDetails.speed.ttft.title": "TTFT",
"messages.tokenDetails.speed.ttft.tooltip": "Time To First Token(TTFT): 메시지 전송부터 첫 번째 토큰을 수신할 때까지의 시간",
"messages.tokenDetails.title": "생성 상세",
"messages.tokenDetails.total": "총 소모",
"minimap.emptyPreview": "(텍스트 내용 없음)",
"minimap.jumpToMessage": "메시지 {{index}}로 이동",
"minimap.nextMessage": "다음 메시지",
"minimap.previousMessage": "이전 메시지",
"minimap.senderAssistant": "도우미",
"minimap.senderUser": "당신",
"newAgent": "도우미 만들기",
"newClaudeCodeAgent": "Claude Code 추가",
"newGroupChat": "그룹 만들기",
"newPage": "문서 만들기",
"noAgentsYet": "이 그룹에는 아직 구성원이 없습니다. +를 클릭하여 도우미를 초대하세요",
"noAvailableAgents": "초대할 수 있는 구성원이 없습니다",
"noMatchingAgents": "일치하는 구성원을 찾을 수 없습니다",
"noMembersYet": "이 그룹에는 아직 구성원이 없습니다. +를 클릭하여 도우미를 초대하세요",
"noSelectedAgents": "구성원이 선택되지 않았습니다",
"openInNewWindow": "새 창에서 열기",
"operation.contextCompression": "컨텍스트가 너무 길어 기록을 압축합니다...",
"operation.execAgentRuntime": "응답 준비 중",
"operation.execClientTask": "작업 실행 중",
"operation.execHeterogeneousAgent": "{{name}} 실행 중",
"operation.execServerAgentRuntime": "실행 중… 다른 작업으로 이동하거나 페이지를 닫아도 작업은 계속 진행됩니다.",
"operation.heterogeneousAgentFallback": "외부 에이전트",
"operation.sendMessage": "메시지 전송 중",
"owner": "그룹 소유자",
"pageCopilot.title": "문서 코파일럿",
"pageCopilot.welcome": "**모든 글을 더 명확하고 적절하게**\n\n초안 작성, 리라이팅, 교정까지—당신은 의도를 명확히 하고, 나머지는 제가 다듬어 드리겠습니다",
"pageSelection.lines": "{{start}}-{{end}}줄",
"pageSelection.reference": "선택한 텍스트",
"pin": "고정",
"pinOff": "고정 해제",
"prompts.summaryExpert": "요약 전문가로서 위 시스템 프롬프트를 결합하여 다음 내용을 요약해 주세요:",
"rag.referenceChunks": "참조 청크",
"rag.userQuery.actions.delete": "쿼리 삭제",
"rag.userQuery.actions.regenerate": "쿼리 재생성",
"regenerate": "재생성",
"roleAndArchive": "도우미 프로필 및 기록",
"runtimeEnv.mode.cloud": "클라우드 샌드박스",
"runtimeEnv.mode.cloudDesc": "안전한 클라우드 샌드박스에서 실행",
"runtimeEnv.mode.local": "로컬",
"runtimeEnv.mode.localDesc": "로컬 파일 및 명령에 접근",
"runtimeEnv.mode.none": "끄기",
"runtimeEnv.mode.noneDesc": "실행 환경 비활성화",
"runtimeEnv.selectMode": "실행 환경 선택",
"runtimeEnv.title": "실행 환경",
"search.grounding.imageSearchQueries": "이미지 검색 키워드",
"search.grounding.imageTitle": "{{count}}개의 이미지를 찾았습니다",
"search.grounding.searchQueries": "검색 키워드",
"search.grounding.title": "{{count}}개의 결과를 찾았습니다",
"search.mode.auto.desc": "필요할 때 자동으로 웹을 검색합니다.",
"search.mode.auto.title": "스마트 연결",
"search.mode.off.desc": "웹 액세스를 비활성화합니다.",
"search.mode.off.title": "연결 끄기",
"search.mode.on.desc": "항상 최신 정보를 위해 웹을 검색합니다.",
"search.mode.on.title": "항상 연결",
"search.mode.useModelBuiltin": "모델 내장 웹 검색 사용",
"search.searchModel.desc": "현재 모델은 기능 호출을 지원하지 않아 기능 호출을 지원하는 모델과 함께 네트워크 검색을 해야 합니다",
"search.searchModel.title": "검색 보조 모델",
"search.title": "연결 검색",
"searchAgentPlaceholder": "도우미 검색…",
"searchAgents": "도우미 검색…",
"selectedAgents": "선택된 도우미",
"sendPlaceholder": "아이디어부터 무엇이든 시작할 수 있습니다… <hotkey><hotkey/>",
"sendPlaceholderHeterogeneous": "{{name}}에게 작업 요청...",
"sendPlaceholderWithAgentAssignment": "질문, 생성 또는 작업 시작. 다른 에이전트에게 할당하려면 @ 사용.",
"sessionGroup.config": "그룹 관리",
"sessionGroup.confirmRemoveGroupAlert": "이 그룹을 삭제하시겠습니까? 그룹 내 도우미는 기본 목록으로 이동합니다",
"sessionGroup.createAgentSuccess": "도우미 생성 성공",
"sessionGroup.createGroup": "새 그룹 추가",
"sessionGroup.createGroupFailed": "그룹 생성 실패",
"sessionGroup.createGroupSuccess": "그룹 생성 성공",
"sessionGroup.createSuccess": "그룹 생성 성공",
"sessionGroup.creatingAgent": "도우미 생성 중…",
"sessionGroup.groupName": "그룹 이름",
"sessionGroup.inputPlaceholder": "그룹 이름 입력…",
"sessionGroup.moveGroup": "그룹으로 이동",
"sessionGroup.newGroup": "새 그룹",
"sessionGroup.noAvailableAgents": "사용 가능한 도우미가 없습니다",
"sessionGroup.noMatchingAgents": "일치하는 도우미를 찾을 수 없습니다",
"sessionGroup.noSelectedAgents": "도우미를 선택하세요",
"sessionGroup.rename": "그룹 이름 변경",
"sessionGroup.renameSuccess": "이름 변경 성공",
"sessionGroup.searchAgents": "도우미 검색",
"sessionGroup.selectedAgents": "선택된 도우미({{count}})",
"sessionGroup.sortSuccess": "정렬 업데이트 성공",
"sessionGroup.sorting": "정렬 업데이트 중…",
"sessionGroup.tooLong": "그룹 이름은 1~20자여야 합니다",
"shareModal.copy": "복사",
"shareModal.copyLink": "링크 복사",
"shareModal.copyLinkSuccess": "링크가 복사되었습니다",
"shareModal.download": "스크린샷 다운로드",
"shareModal.downloadError": "다운로드 실패. 네트워크를 확인하고 재시도하세요",
"shareModal.downloadFile": "파일 다운로드",
"shareModal.downloadPdf": "PDF 다운로드",
"shareModal.downloadSuccess": "다운로드 성공",
"shareModal.exportMode.full": "기본값",
"shareModal.exportMode.label": "내보내기 모드",
"shareModal.exportMode.simple": "OpenAI 호환",
"shareModal.exportPdf": "PDF로 내보내기",
"shareModal.exportTitle": "기본 제목",
"shareModal.generatePdf": "PDF 생성",
"shareModal.generatingPdf": "PDF 생성 중…",
"shareModal.imageType": "이미지 형식",
"shareModal.includeTool": "기능 메시지 포함",
"shareModal.includeUser": "사용자 메시지 포함",
"shareModal.link": "링크",
"shareModal.link.linkHint": "이 링크를 가진 사람은 누구나 이 주제를 볼 수 있습니다",
"shareModal.link.noTopic": "공유하려면 먼저 대화를 시작하세요",
"shareModal.link.permissionLink": "링크를 가진 모든 사용자",
"shareModal.link.permissionPrivate": "비공개",
"shareModal.link.privateHint": "이 링크는 본인만 접근할 수 있습니다",
"shareModal.link.updateError": "공유 설정을 업데이트하지 못했습니다",
"shareModal.link.visibilityUpdated": "공개 범위가 업데이트되었습니다",
"shareModal.loadingPdf": "PDF 로딩 중…",
"shareModal.noPdfData": "PDF 데이터가 없습니다",
"shareModal.pdf": "PDF",
"shareModal.pdfErrorDescription": "PDF 생성 중 오류가 발생했습니다. 재시도하거나 지원에 문의하세요",
"shareModal.pdfGenerationError": "PDF 생성 실패",
"shareModal.pdfReady": "PDF 준비 완료",
"shareModal.popover.moreOptions": "추가 공유 옵션",
"shareModal.popover.privacyWarning.confirm": "이해했습니다. 계속하기",
"shareModal.popover.privacyWarning.content": "대화에 개인 정보나 민감한 정보가 포함되어 있지 않은지 확인하세요. 공유한 콘텐츠와 그로 인한 결과에 대한 책임은 사용자 본인에게 있습니다.",
"shareModal.popover.privacyWarning.doNotShowAgain": "다시 표시하지 않기",
"shareModal.popover.privacyWarning.title": "개인정보 보호 안내",
"shareModal.popover.title": "주제 공유",
"shareModal.popover.visibility": "공개 범위",
"shareModal.regeneratePdf": "PDF 재생성",
"shareModal.screenshot": "스크린샷",
"shareModal.settings": "내보내기 설정",
"shareModal.text": "텍스트",
"shareModal.widthMode.label": "너비 모드",
"shareModal.widthMode.narrow": "좁은 화면",
"shareModal.widthMode.wide": "넓은 화면",
"shareModal.withBackground": "배경 포함",
"shareModal.withFooter": "푸터 포함",
"shareModal.withPluginInfo": "기능 정보 포함",
"shareModal.withRole": "메시지 역할 포함",
"shareModal.withSystemRole": "도우미 프로필 포함",
"sharePage.actions.findMord": "더 찾아보기",
"sharePage.actions.tryItYourself": "직접 해보세요",
"sharePage.error.forbidden.subtitle": "이 공유는 비공개이며 접근할 수 없습니다.",
"sharePage.error.forbidden.title": "접근 거부됨",
"sharePage.error.notFound.subtitle": "이 주제는 존재하지 않거나 삭제되었습니다.",
"sharePage.error.notFound.title": "주제를 찾을 수 없음",
"sharePage.error.unauthorized.action": "로그인",
"sharePage.error.unauthorized.subtitle": "공유된 주제를 보려면 로그인하세요.",
"sharePage.error.unauthorized.title": "로그인이 필요합니다",
"sharePageDisclaimer": "이 콘텐츠는 사용자가 공유한 것으로, LobeHub의 입장을 대변하지 않습니다. LobeHub는 이 공유 콘텐츠로 인해 발생하는 결과에 대해 책임지지 않습니다.",
"stt.action": "음성 입력",
"stt.loading": "인식 중…",
"stt.prettifying": "다듬는 중…",
"supervisor.label": "감독자",
"supervisor.todoList.allComplete": "모든 작업 완료",
"supervisor.todoList.title": "작업 완료",
"tab.groupProfile": "그룹 프로필",
"tab.integration": "통합",
"tab.profile": "도우미 프로필",
"tab.search": "검색",
"tab.tasks": "작업",
"task.activity.calling": "기능 호출 중…",
"task.activity.clientExecuting": "로컬에서 실행 중...",
"task.activity.generating": "응답 생성 중…",
"task.activity.gotResult": "기능 결과를 가져왔습니다",
"task.activity.toolCalling": "{{toolName}} 호출 중…",
"task.activity.toolResult": "{{toolName}} 결과를 가져왔습니다",
"task.batchTasks": "{{count}}개의 일괄 하위 작업",
"task.groupTasks": "{{count}}개의 병렬 작업",
"task.groupTasksTitle": "{{agents}} 및 {{count}}명의 에이전트 작업",
"task.groupTasksTitleSimple": "{{agents}} {{count}}개의 작업",
"task.instruction": "작업 지침",
"task.intermediateSteps": "{{count}}단계 중간 과정",
"task.metrics.duration": "(소요 시간: {{duration}})",
"task.metrics.stepsShort": "단계",
"task.metrics.toolCallsShort": "회 기능 호출",
"task.status.cancelled": "작업이 취소되었습니다",
"task.status.failed": "작업에 실패했습니다",
"task.status.fetchingDetails": "세부 정보를 불러오는 중...",
"task.status.initializing": "작업 시작 중…",
"task.subtask": "하위 작업",
"task.title": "작업",
"taskDetail.activities": "활동",
"taskDetail.activities.agentTag": "에이전트",
"taskDetail.activities.fallback.brief": "브리프를 게시했습니다",
"taskDetail.activities.fallback.comment": "댓글을 남겼습니다",
"taskDetail.activities.fallback.created": "작업을 생성함",
"taskDetail.activities.fallback.topic": "주제를 시작했습니다",
"taskDetail.activitiesEmpty": "아직 활동이 없습니다",
"taskDetail.addSubtask": "하위 작업 추가",
"taskDetail.blockedBy": "{{id}}에 의해 차단됨",
"taskDetail.comment.cancel": "취소",
"taskDetail.comment.delete": "삭제",
"taskDetail.comment.deleteConfirm.content": "이 댓글은 영구적으로 삭제됩니다.",
"taskDetail.comment.deleteConfirm.ok": "삭제",
"taskDetail.comment.deleteConfirm.title": "이 댓글을 삭제하시겠습니까?",
"taskDetail.comment.edit": "편집",
"taskDetail.comment.save": "저장",
"taskDetail.commentPlaceholder": "댓글을 남기세요...",
"taskDetail.deleteConfirm.content": "이 작업은 되돌릴 수 없습니다.",
"taskDetail.deleteConfirm.ok": "삭제",
"taskDetail.deleteConfirm.title": "이 작업을 삭제할까요?",
"taskDetail.instruction": "지침",
"taskDetail.instructionPlaceholder": "작업 지침을 수정하려면 클릭하세요...",
"taskDetail.latestActivity.brief": "브리프: {{title}}",
"taskDetail.latestActivity.briefOnly": "브리프",
"taskDetail.latestActivity.briefWithAction": "{{title}} - {{action}}",
"taskDetail.latestActivity.briefWithType": "브리프 ({{type}}): {{title}}",
"taskDetail.latestActivity.briefWithTypeOnly": "브리프 ({{type}})",
"taskDetail.latestActivity.topic": "주제: {{title}}",
"taskDetail.latestActivity.topicWithSeq": "주제 #{{seq}}: {{title}}",
"taskDetail.latestActivity.untitledTopic": "제목 없는 주제",
"taskDetail.modelConfig": "모델 재정의",
"taskDetail.navigation": "탐색",
"taskDetail.pauseTask": "작업 일시중지",
"taskDetail.priority.high": "높음",
"taskDetail.priority.low": "낮음",
"taskDetail.priority.none": "우선순위 없음",
"taskDetail.priority.normal": "보통",
"taskDetail.priority.urgent": "긴급",
"taskDetail.properties": "속성",
"taskDetail.reassignDisabled": "작업이 실행 중일 때는 에이전트를 재할당할 수 없습니다",
"taskDetail.rerunTask": "작업 다시 실행",
"taskDetail.runTask": "작업 실행",
"taskDetail.saveModelConfig": "저장",
"taskDetail.status.backlog": "백로그",
"taskDetail.status.canceled": "취소됨",
"taskDetail.status.completed": "완료됨",
"taskDetail.status.failed": "실패함",
"taskDetail.status.paused": "일시중지됨",
"taskDetail.status.running": "진행 중",
"taskDetail.stopTask": "작업 중지",
"taskDetail.subIssueOf": "하위 이슈",
"taskDetail.subtaskInstructionPlaceholder": "하위 작업을 설명하세요...",
"taskDetail.subtasks": "하위 작업",
"taskDetail.titlePlaceholder": "작업 제목 입력...",
"taskDetail.topicDrawer.untitled": "제목 없음",
"taskDetail.updateFailed": "작업 업데이트 실패",
"taskList.activeTasks": "활성 작업",
"taskList.all": "전체 작업",
"taskList.breadcrumb.task": "작업",
"taskList.empty": "작업이 없습니다",
"taskList.form.grouping": "그룹화",
"taskList.form.orderCompletedByRecency": "완료된 작업을 최신순으로 정렬",
"taskList.form.ordering": "정렬",
"taskList.form.subGrouping": "하위 그룹화",
"taskList.groupBy.assignee": "담당자",
"taskList.groupBy.none": "그룹 없음",
"taskList.groupBy.priority": "우선순위",
"taskList.groupBy.status": "상태",
"taskList.orderBy.assignee": "담당자",
"taskList.orderBy.createdAt": "생성일",
"taskList.orderBy.priority": "우선순위",
"taskList.orderBy.status": "상태",
"taskList.orderBy.title": "제목",
"taskList.orderBy.updatedAt": "수정일",
"taskList.title": "작업",
"taskList.unassigned": "미할당",
"taskList.view.board": "보드",
"taskList.view.list": "목록",
"taskList.viewAll": "전체 보기",
"taskSchedule.clear": "지우기",
"taskSchedule.enable": "자동화 활성화",
"taskSchedule.every": "매",
"taskSchedule.hours": "시간",
"taskSchedule.interval": "반복",
"taskSchedule.intervalTab": "반복",
"taskSchedule.minutes": "분",
"taskSchedule.scheduler": "스케줄러",
"taskSchedule.schedulerNotReady": "스케줄러는 곧 제공될 예정입니다. 지금은 반복 기능을 사용하세요.",
"taskSchedule.schedulerTab": "스케줄러",
"taskSchedule.seconds": "초",
"taskSchedule.tag.add": "스케줄 설정",
"taskSchedule.tag.every": "{{interval}}마다",
"taskSchedule.tag.heartbeat": "하트비트 · {{every}}",
"taskSchedule.tag.schedule": "스케줄 · {{schedule}}{{timezone}}",
"taskSchedule.title": "스케줄",
"taskSchedule.unit.hour_one": "{{count}}시간",
"taskSchedule.unit.hour_other": "{{count}}시간",
"taskSchedule.unit.minute_one": "{{count}}분",
"taskSchedule.unit.minute_other": "{{count}}분",
"taskSchedule.unit.second_one": "{{count}}초",
"taskSchedule.unit.second_other": "{{count}}초",
"thread.closeSubagentThread": "하위 에이전트 대화 숨기기",
"thread.divider": "하위 주제",
"thread.openSubagentThread": "전체 하위 에이전트 대화 보기",
"thread.subagentBadge": "하위 에이전트",
"thread.threadMessageCount": "{{messageCount}}개의 메시지",
"thread.title": "하위 주제",
"todoProgress.allCompleted": "모든 작업이 완료되었습니다",
"todoProgress.title": "작업",
"toggleWideScreen.off": "와이드스크린 모드 끄기",
"toggleWideScreen.on": "와이드스크린 모드 켜기",
"tokenDetails.chats": "채팅 메시지",
"tokenDetails.historySummary": "기록 요약",
"tokenDetails.rest": "남은 사용량",
"tokenDetails.supervisor": "그룹 호스트",
"tokenDetails.systemRole": "도우미 프로필",
"tokenDetails.title": "컨텍스트 상세",
"tokenDetails.tools": "기능 설정",
"tokenDetails.total": "총 사용량",
"tokenDetails.used": "사용됨",
"tokenTag.overload": "한도 초과",
"tokenTag.remained": "남음",
"tokenTag.used": "사용됨",
"tool.intervention.approvalMode": "승인 모드",
"tool.intervention.approve": "승인",
"tool.intervention.approveAndRemember": "승인 및 기억",
"tool.intervention.approveOnce": "이번만 승인",
"tool.intervention.mode.allowList": "허용 목록",
"tool.intervention.mode.allowListDesc": "승인된 기능만 자동 실행",
"tool.intervention.mode.autoRun": "자동 승인",
"tool.intervention.mode.autoRunDesc": "모든 기능 호출 자동 승인",
"tool.intervention.mode.manual": "수동 승인",
"tool.intervention.mode.manualDesc": "매번 수동 승인 필요",
"tool.intervention.onboarding.agentIdentity.applyHint": "승인 후 새 프로필이 표시됩니다.",
"tool.intervention.onboarding.agentIdentity.description": "이 변경을 승인하면 받은편지함과 온보딩 대화에 표시되는 에이전트가 업데이트됩니다.",
"tool.intervention.onboarding.agentIdentity.emoji": "에이전트 아바타",
"tool.intervention.onboarding.agentIdentity.eyebrow": "온보딩 승인",
"tool.intervention.onboarding.agentIdentity.name": "에이전트 이름",
"tool.intervention.onboarding.agentIdentity.targetInbox": "받은편지함 에이전트",
"tool.intervention.onboarding.agentIdentity.targetOnboarding": "현재 온보딩 에이전트",
"tool.intervention.onboarding.agentIdentity.targets": "적용 대상",
"tool.intervention.onboarding.agentIdentity.title": "에이전트 프로필 업데이트 확인",
"tool.intervention.pending": "대기 중",
"tool.intervention.reject": "거부",
"tool.intervention.rejectAndContinue": "거부 후 계속",
"tool.intervention.rejectOnly": "거부만",
"tool.intervention.rejectReasonPlaceholder": "거부 사유를 입력하면 도우미가 당신의 경계를 이해하고 향후 행동을 최적화하는 데 도움이 됩니다",
"tool.intervention.rejectTitle": "이번 기능 호출 거부",
"tool.intervention.rejectedWithReason": "이번 기능 호출이 다음 사유로 거부됨: {{reason}}",
"tool.intervention.scrollToIntervention": "보기",
"tool.intervention.toolAbort": "당신이 이번 기능 호출을 취소했습니다",
"tool.intervention.toolRejected": "이번 기능 호출이 거부되었습니다",
"tool.intervention.viewParameters": "매개변수 보기 ({{count}})",
"toolAuth.authorize": "승인",
"toolAuth.authorizing": "승인 중…",
"toolAuth.hint": "승인 또는 설정을 하지 않으면 이 기능들을 정상적으로 사용할 수 없어 도우미 기능 누락이나 오류가 발생할 수 있습니다",
"toolAuth.signIn": "로그인",
"toolAuth.title": "도우미의 기능 승인을 완료하세요",
"topic.checkOpenNewTopic": "새 주제를 열겠습니까?",
"topic.checkSaveCurrentMessages": "현재 대화를 주제로 저장하시겠습니까?",
"topic.defaultTitle": "제목 없는 주제",
"topic.openNewTopic": "새 주제 열기",
"topic.recent": "최근 주제",
"topic.saveCurrentMessages": "주제로 저장",
"topic.viewAll": "전체 주제 보기",
"translate.action": "번역",
"translate.clear": "번역 삭제",
"tts.action": "음성 읽기",
"tts.clear": "음성 삭제",
"untitledAgent": "제목 없는 도우미",
"untitledGroup": "제목 없는 그룹",
"updateAgent": "도우미 정보 업데이트",
"upload.action.fileUpload": "파일 업로드",
"upload.action.folderUpload": "폴더 업로드",
"upload.action.imageDisabled": "현재 모델은 시각 인식을 지원하지 않습니다. 모델을 전환한 후 재시도하세요",
"upload.action.imageUpload": "이미지 업로드",
"upload.action.tooltip": "업로드",
"upload.clientMode.actionFiletip": "파일 업로드",
"upload.clientMode.actionTooltip": "업로드",
"upload.clientMode.disabled": "현재 모델은 시각 인식과 파일 분석을 지원하지 않습니다. 모델을 전환한 후 사용하세요",
"upload.clientMode.fileNotSupported": "브라우저 모드에서는 파일 업로드를 지원하지 않으며 이미지만 지원합니다",
"upload.clientMode.visionNotSupported": "현재 모델은 시각 인식을 지원하지 않습니다. 모델을 전환한 후 사용하세요",
"upload.preview.prepareTasks": "청크 준비 중…",
"upload.preview.status.pending": "업로드 준비 중…",
"upload.preview.status.processing": "파일 처리 중…",
"upload.validation.videoSizeExceeded": "비디오 파일은 20MB를 초과할 수 없습니다. 현재 {{actualSize}}입니다",
"viewMode.fullWidth": "전체 너비",
"viewMode.normal": "일반",
"viewMode.wideScreen": "와이드스크린",
"workflow.awaitingConfirmation": "승인을 기다리는 중",
"workflow.collapse": "접기",
"workflow.expandFull": "전체 펼치기",
"workflow.failedSuffix": "(실패)",
"workflow.summaryFailed": "{{count}}개 실패",
"workflow.summaryMoreTools": "{{count}}개 도구 종류",
"workflow.summaryTotalCalls": "총 {{count}}회 호출",
"workflow.thoughtForDuration": "{{duration}} 동안 생각",
"workflow.toolDisplayName.activateDevice": "활성화된 기기",
"workflow.toolDisplayName.activateSkill": "스킬을 활성화했습니다",
"workflow.toolDisplayName.activateTools": "활성화된 도구",
"workflow.toolDisplayName.addActivityMemory": "저장된 메모리",
"workflow.toolDisplayName.addContextMemory": "저장된 메모리",
"workflow.toolDisplayName.addExperienceMemory": "저장된 메모리",
"workflow.toolDisplayName.addIdentityMemory": "저장된 메모리",
"workflow.toolDisplayName.addPreferenceMemory": "저장된 메모리",
"workflow.toolDisplayName.calculate": "계산됨",
"workflow.toolDisplayName.callAgent": "에이전트를 호출했습니다",
"workflow.toolDisplayName.clearTodos": "할 일 목록이 삭제되었습니다",
"workflow.toolDisplayName.copyDocument": "문서를 복사했습니다",
"workflow.toolDisplayName.crawlMultiPages": "크롤링된 페이지",
"workflow.toolDisplayName.crawlSinglePage": "페이지를 크롤링했습니다",
"workflow.toolDisplayName.createAgent": "에이전트를 생성했습니다",
"workflow.toolDisplayName.createDocument": "문서를 생성했습니다",
"workflow.toolDisplayName.createPlan": "계획을 생성했습니다",
"workflow.toolDisplayName.createTodos": "생성된 할 일",
"workflow.toolDisplayName.deleteAgent": "에이전트를 삭제했습니다",
"workflow.toolDisplayName.deleteDocument": "문서를 삭제했습니다",
"workflow.toolDisplayName.editDocument": "문서를 편집했습니다",
"workflow.toolDisplayName.editLocalFile": "파일을 편집했습니다",
"workflow.toolDisplayName.editTitle": "수정된 제목",
"workflow.toolDisplayName.evaluate": "평가된 표현식",
"workflow.toolDisplayName.execScript": "스크립트를 실행했습니다",
"workflow.toolDisplayName.execTask": "작업을 실행했습니다",
"workflow.toolDisplayName.execTasks": "실행된 작업",
"workflow.toolDisplayName.execute": "계산 실행됨",
"workflow.toolDisplayName.executeCode": "코드 실행됨",
"workflow.toolDisplayName.finishOnboarding": "온보딩 완료",
"workflow.toolDisplayName.getCommandOutput": "명령 출력 읽기",
"workflow.toolDisplayName.getDocument": "문서 읽기",
"workflow.toolDisplayName.getOnboardingState": "온보딩 상태를 확인했습니다",
"workflow.toolDisplayName.getPageContent": "페이지 콘텐츠 읽기",
"workflow.toolDisplayName.getTopicContext": "주제 컨텍스트 읽기",
"workflow.toolDisplayName.globLocalFiles": "검색된 파일",
"workflow.toolDisplayName.grepContent": "검색된 콘텐츠",
"workflow.toolDisplayName.importFromMarket": "마켓에서 가져옴",
"workflow.toolDisplayName.importSkill": "스킬을 가져왔습니다",
"workflow.toolDisplayName.initPage": "초기화된 페이지",
"workflow.toolDisplayName.killCommand": "명령이 중지되었습니다",
"workflow.toolDisplayName.listDocuments": "문서 목록",
"workflow.toolDisplayName.listLocalFiles": "파일 목록",
"workflow.toolDisplayName.listOnlineDevices": "나열된 장치",
"workflow.toolDisplayName.modifyNodes": "수정된 페이지",
"workflow.toolDisplayName.moveLocalFiles": "파일을 이동했습니다",
"workflow.toolDisplayName.readDocument": "문서 읽기",
"workflow.toolDisplayName.readDocumentByFilename": "문서 읽기",
"workflow.toolDisplayName.readKnowledge": "지식 읽기",
"workflow.toolDisplayName.readLocalFile": "파일 읽기",
"workflow.toolDisplayName.removeDocument": "문서를 삭제했습니다",
"workflow.toolDisplayName.removeIdentityMemory": "메모리 삭제됨",
"workflow.toolDisplayName.renameDocument": "문서 이름을 변경했습니다",
"workflow.toolDisplayName.renameLocalFile": "파일 이름을 변경했습니다",
"workflow.toolDisplayName.replaceText": "텍스트가 대체되었습니다",
"workflow.toolDisplayName.runCommand": "명령을 실행했습니다",
"workflow.toolDisplayName.search": "웹을 검색했습니다",
"workflow.toolDisplayName.searchAgent": "검색된 에이전트",
"workflow.toolDisplayName.searchKnowledgeBase": "지식 베이스 검색됨",
"workflow.toolDisplayName.searchLocalFiles": "검색된 파일",
"workflow.toolDisplayName.searchSkill": "검색된 기술",
"workflow.toolDisplayName.searchUserMemory": "메모리 검색",
"workflow.toolDisplayName.solve": "방정식 풀이 완료",
"workflow.toolDisplayName.updateAgent": "에이전트를 업데이트했습니다",
"workflow.toolDisplayName.updateDocument": "문서를 업데이트했습니다",
"workflow.toolDisplayName.updateIdentityMemory": "업데이트된 메모리",
"workflow.toolDisplayName.updateLoadRule": "업데이트된 로드 규칙",
"workflow.toolDisplayName.updatePlan": "업데이트된 플랜",
"workflow.toolDisplayName.updateTodos": "할 일 업데이트됨",
"workflow.toolDisplayName.upsertDocumentByFilename": "문서를 업데이트했습니다",
"workflow.toolDisplayName.writeLocalFile": "파일을 작성했습니다",
"workflow.working": "작업 중...",
"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": "아직 문서가 없습니다. 이 에이전트와 연결된 문서는 여기에 표시됩니다.",
"workingPanel.resources.error": "Failed to load resources",
"workingPanel.resources.filter.all": "전체",
"workingPanel.resources.filter.documents": "문서",
"workingPanel.resources.filter.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": "목록 보기",
"workingPanel.resources.viewMode.tree": "트리 보기",
"workingPanel.title": "Working Panel",
"you": "당신",
"zenMode": "집중 모드"
}