ideaco 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dockerignore +33 -0
- package/.nvmrc +1 -0
- package/ARCHITECTURE.md +394 -0
- package/Dockerfile +50 -0
- package/LICENSE +29 -0
- package/README.md +206 -0
- package/bin/i18n.js +46 -0
- package/bin/ideaco.js +494 -0
- package/deploy.sh +15 -0
- package/docker-compose.yml +30 -0
- package/electron/main.cjs +986 -0
- package/electron/preload.cjs +14 -0
- package/electron/web-backends.cjs +854 -0
- package/jsconfig.json +8 -0
- package/next.config.mjs +34 -0
- package/package.json +134 -0
- package/postcss.config.mjs +6 -0
- package/public/demo/dashboard.png +0 -0
- package/public/demo/employee.png +0 -0
- package/public/demo/messages.png +0 -0
- package/public/demo/office.png +0 -0
- package/public/demo/requirement.png +0 -0
- package/public/logo.jpeg +0 -0
- package/public/logo.png +0 -0
- package/scripts/prepare-electron.js +67 -0
- package/scripts/release.js +76 -0
- package/src/app/api/agents/[agentId]/chat/route.js +70 -0
- package/src/app/api/agents/[agentId]/conversations/route.js +35 -0
- package/src/app/api/agents/[agentId]/route.js +106 -0
- package/src/app/api/avatar/route.js +104 -0
- package/src/app/api/browse-dir/route.js +44 -0
- package/src/app/api/chat/route.js +265 -0
- package/src/app/api/company/factory-reset/route.js +43 -0
- package/src/app/api/company/route.js +82 -0
- package/src/app/api/departments/[deptId]/agents/[agentId]/dismiss/route.js +19 -0
- package/src/app/api/departments/route.js +92 -0
- package/src/app/api/group-chat-loop/events/route.js +70 -0
- package/src/app/api/group-chat-loop/route.js +94 -0
- package/src/app/api/mailbox/route.js +100 -0
- package/src/app/api/messages/route.js +14 -0
- package/src/app/api/providers/[id]/configure/route.js +21 -0
- package/src/app/api/providers/[id]/refresh-cookie/route.js +38 -0
- package/src/app/api/providers/[id]/test-cookie/route.js +28 -0
- package/src/app/api/providers/route.js +11 -0
- package/src/app/api/requirements/route.js +242 -0
- package/src/app/api/secretary/route.js +65 -0
- package/src/app/api/system/cli-backends/route.js +91 -0
- package/src/app/api/system/cron/route.js +110 -0
- package/src/app/api/system/knowledge/route.js +104 -0
- package/src/app/api/system/plugins/route.js +40 -0
- package/src/app/api/system/skills/route.js +46 -0
- package/src/app/api/system/status/route.js +46 -0
- package/src/app/api/talent-market/[profileId]/recall/route.js +22 -0
- package/src/app/api/talent-market/[profileId]/route.js +17 -0
- package/src/app/api/talent-market/route.js +26 -0
- package/src/app/api/teams/route.js +773 -0
- package/src/app/api/ws-files/[departmentId]/file/route.js +27 -0
- package/src/app/api/ws-files/[departmentId]/files/route.js +22 -0
- package/src/app/globals.css +130 -0
- package/src/app/layout.jsx +40 -0
- package/src/app/page.jsx +97 -0
- package/src/components/AgentChatModal.jsx +164 -0
- package/src/components/AgentDetailModal.jsx +425 -0
- package/src/components/AgentSpyModal.jsx +481 -0
- package/src/components/AvatarGrid.jsx +29 -0
- package/src/components/BossProfileModal.jsx +162 -0
- package/src/components/CachedAvatar.jsx +77 -0
- package/src/components/ChatPanel.jsx +219 -0
- package/src/components/ChatShared.jsx +255 -0
- package/src/components/DepartmentDetail.jsx +842 -0
- package/src/components/DepartmentView.jsx +367 -0
- package/src/components/FileReference.jsx +260 -0
- package/src/components/FilesView.jsx +465 -0
- package/src/components/GroupChatView.jsx +799 -0
- package/src/components/Mailbox.jsx +926 -0
- package/src/components/MessagesView.jsx +112 -0
- package/src/components/OnboardingGuide.jsx +209 -0
- package/src/components/OrgTree.jsx +151 -0
- package/src/components/Overview.jsx +391 -0
- package/src/components/PixelOffice.jsx +2281 -0
- package/src/components/ProviderGrid.jsx +551 -0
- package/src/components/ProvidersBoard.jsx +16 -0
- package/src/components/RequirementDetail.jsx +1279 -0
- package/src/components/RequirementsBoard.jsx +187 -0
- package/src/components/SecretarySettings.jsx +295 -0
- package/src/components/SetupWizard.jsx +388 -0
- package/src/components/Sidebar.jsx +169 -0
- package/src/components/SystemMonitor.jsx +808 -0
- package/src/components/TalentMarket.jsx +183 -0
- package/src/components/TeamDetail.jsx +697 -0
- package/src/core/agent/base-agent.js +104 -0
- package/src/core/agent/chat-store.js +602 -0
- package/src/core/agent/cli-agent/backends/claude-code/README.md +52 -0
- package/src/core/agent/cli-agent/backends/claude-code/config.js +27 -0
- package/src/core/agent/cli-agent/backends/codebuddy/README.md +236 -0
- package/src/core/agent/cli-agent/backends/codebuddy/config.js +27 -0
- package/src/core/agent/cli-agent/backends/codex/README.md +51 -0
- package/src/core/agent/cli-agent/backends/codex/config.js +27 -0
- package/src/core/agent/cli-agent/backends/index.js +27 -0
- package/src/core/agent/cli-agent/backends/registry.js +580 -0
- package/src/core/agent/cli-agent/index.js +154 -0
- package/src/core/agent/index.js +60 -0
- package/src/core/agent/llm-agent/client.js +320 -0
- package/src/core/agent/llm-agent/index.js +97 -0
- package/src/core/agent/message-bus.js +211 -0
- package/src/core/agent/session.js +608 -0
- package/src/core/agent/tools.js +596 -0
- package/src/core/agent/web-agent/backends/base-backend.js +180 -0
- package/src/core/agent/web-agent/backends/chatgpt/client.js +146 -0
- package/src/core/agent/web-agent/backends/chatgpt/config.js +148 -0
- package/src/core/agent/web-agent/backends/chatgpt/dom-scripts.js +303 -0
- package/src/core/agent/web-agent/backends/index.js +91 -0
- package/src/core/agent/web-agent/index.js +278 -0
- package/src/core/agent/web-agent/web-client.js +407 -0
- package/src/core/employee/base-employee.js +1088 -0
- package/src/core/employee/index.js +35 -0
- package/src/core/employee/knowledge.js +327 -0
- package/src/core/employee/lifecycle.js +990 -0
- package/src/core/employee/memory/index.js +642 -0
- package/src/core/employee/memory/store.js +143 -0
- package/src/core/employee/performance.js +224 -0
- package/src/core/employee/secretary.js +625 -0
- package/src/core/employee/skills.js +398 -0
- package/src/core/index.js +38 -0
- package/src/core/organization/company.js +2600 -0
- package/src/core/organization/department.js +737 -0
- package/src/core/organization/group-chat-loop.js +264 -0
- package/src/core/organization/index.js +8 -0
- package/src/core/organization/persistence.js +111 -0
- package/src/core/organization/team.js +267 -0
- package/src/core/organization/workforce/hr.js +377 -0
- package/src/core/organization/workforce/providers.js +468 -0
- package/src/core/organization/workforce/role-archetypes.js +805 -0
- package/src/core/organization/workforce/talent-market.js +205 -0
- package/src/core/prompts.js +532 -0
- package/src/core/requirement.js +1789 -0
- package/src/core/system/audit.js +483 -0
- package/src/core/system/cron.js +449 -0
- package/src/core/system/index.js +7 -0
- package/src/core/system/plugin.js +2183 -0
- package/src/core/utils/json-parse.js +188 -0
- package/src/core/workspace.js +239 -0
- package/src/lib/api-i18n.js +211 -0
- package/src/lib/avatar.js +268 -0
- package/src/lib/client-store.js +1025 -0
- package/src/lib/config-validator.js +483 -0
- package/src/lib/format-time.js +22 -0
- package/src/lib/hooks.js +414 -0
- package/src/lib/i18n.js +134 -0
- package/src/lib/paths.js +23 -0
- package/src/lib/store.js +72 -0
- package/src/locales/de.js +393 -0
- package/src/locales/en.js +1054 -0
- package/src/locales/es.js +393 -0
- package/src/locales/fr.js +393 -0
- package/src/locales/ja.js +501 -0
- package/src/locales/ko.js +513 -0
- package/src/locales/zh.js +828 -0
- package/tailwind.config.mjs +11 -0
|
@@ -0,0 +1,828 @@
|
|
|
1
|
+
|
|
2
|
+
// 中文翻译
|
|
3
|
+
const zh = {
|
|
4
|
+
common: {
|
|
5
|
+
loading: '加载中...',
|
|
6
|
+
cancel: '取消',
|
|
7
|
+
confirm: '确认',
|
|
8
|
+
save: '保存',
|
|
9
|
+
close: '关闭',
|
|
10
|
+
send: '发送',
|
|
11
|
+
refresh: '刷新',
|
|
12
|
+
delete: '删除',
|
|
13
|
+
back: '返回',
|
|
14
|
+
next: '下一步 →',
|
|
15
|
+
prev: '← 上一步',
|
|
16
|
+
disable: '禁用',
|
|
17
|
+
update: '更新',
|
|
18
|
+
enable: '启用',
|
|
19
|
+
manage: '⚙️ 管理',
|
|
20
|
+
configure: '🔑 配置',
|
|
21
|
+
requestFailed: '请求失败',
|
|
22
|
+
justNow: '刚刚',
|
|
23
|
+
minutesAgo: '{n}分钟前',
|
|
24
|
+
sun: '周日', mon: '周一', tue: '周二', wed: '周三', thu: '周四', fri: '周五', sat: '周六',
|
|
25
|
+
},
|
|
26
|
+
cli: {
|
|
27
|
+
helpTitle: '用法:',
|
|
28
|
+
helpStart: 'ideaco start 启动后台服务',
|
|
29
|
+
helpStop: 'ideaco stop 停止后台服务',
|
|
30
|
+
helpUi: 'ideaco ui 打开面板 UI',
|
|
31
|
+
helpBanner: 'ideaco banner <图片> 自定义启动 Banner',
|
|
32
|
+
helpHelp: 'ideaco help 查看帮助',
|
|
33
|
+
startBoot: '启动端口 {port}...',
|
|
34
|
+
alreadyRunning: '服务已在后台运行 · PID {pid}',
|
|
35
|
+
startSuccess: '服务已上线 · PID {pid} · {url}',
|
|
36
|
+
startFailed: '服务启动失败:{error}',
|
|
37
|
+
startTimeout: '服务启动超时',
|
|
38
|
+
notRunning: '服务未运行',
|
|
39
|
+
stopped: '服务已停止',
|
|
40
|
+
webUnavailable: '服务未运行,无法打开 UI',
|
|
41
|
+
webOpened: '已打开 UI:{url}',
|
|
42
|
+
installDeps: '正在安装依赖...',
|
|
43
|
+
installDepsDone: '依赖安装完成',
|
|
44
|
+
installDepsFailed: '依赖安装失败',
|
|
45
|
+
},
|
|
46
|
+
meta: {
|
|
47
|
+
title: 'AI Enterprise - AI企业管理系统',
|
|
48
|
+
description: '招聘AI Agent组建部门协作完成真实项目',
|
|
49
|
+
},
|
|
50
|
+
loadingScreen: { text: '加载中...' },
|
|
51
|
+
setup: {
|
|
52
|
+
title: '金点子无限公司',
|
|
53
|
+
subtitle: '用AI员工的血汗,浇筑你的商业帝国',
|
|
54
|
+
step1Title: '第一步:创建你的资本帝国',
|
|
55
|
+
step1Desc: '给这台压榨机取个名字吧',
|
|
56
|
+
companyName: '公司名称',
|
|
57
|
+
companyPlaceholder: '如:金点子无限公司、永不打烊 AI 有限公司',
|
|
58
|
+
bossTitle: '老板称号(即将压榨AI的人)',
|
|
59
|
+
bossPlaceholder: '如:张总',
|
|
60
|
+
bossAvatarTitle: '老板形象',
|
|
61
|
+
bossAvatarDesc: '选一个霸道资本家的头像',
|
|
62
|
+
step2Title: '第二步:养成你的秘书',
|
|
63
|
+
step2Desc: '这个可怕的AI将替你指挥千军万马(也是AI)',
|
|
64
|
+
secretaryName: '秘书名字',
|
|
65
|
+
secretaryPlaceholder: '如:小秘、Alice',
|
|
66
|
+
avatarStyle: '头像风格',
|
|
67
|
+
gender: '性别',
|
|
68
|
+
female: '👩 女',
|
|
69
|
+
male: '👨 男',
|
|
70
|
+
age: '年龄: {n}岁',
|
|
71
|
+
refreshBatch: '🔄 换一批',
|
|
72
|
+
step3Title: '第三步:给秘书装上大脑',
|
|
73
|
+
step3Desc: '选择秘书的"智商"——越贵越聪明,当然也越烧钱',
|
|
74
|
+
apiKeyLabel: 'API Key',
|
|
75
|
+
apiKeyPlaceholder: '输入对应模型的API Key',
|
|
76
|
+
apiKeyHint: '💡 没有Key?没关系,先用模拟模式白嫖一下(反正AI员工也不用发工资)',
|
|
77
|
+
priceLabels: ['💰 便宜', '💰💰 适中', '💰💰💰 较贵'],
|
|
78
|
+
creating: '开始压榨...',
|
|
79
|
+
createBtn: '🚀 开始剥削',
|
|
80
|
+
footer: '❤️ 别担心,AI员工不会抱怨加班,因为它们根本没有下班时间',
|
|
81
|
+
defaultCompany: '金点子无限公司',
|
|
82
|
+
defaultSecretary: '小秘',
|
|
83
|
+
cliAgentLocal: 'CLI Agent(本地)',
|
|
84
|
+
cliAvailable: '已检测',
|
|
85
|
+
cliNotFound: '未找到',
|
|
86
|
+
localCli: '本地 CLI',
|
|
87
|
+
freeLocal: '免费(本地)',
|
|
88
|
+
defaultPrompt: `你是企业老板的专属秘书,负责理解老板的业务需求,分析所需的团队构成,
|
|
89
|
+
设计组织架构(谁负责什么、谁向谁汇报、如何协作),并协调HR进行人才招聘。
|
|
90
|
+
你需要根据项目需求,合理规划不同岗位的数量和类型,确保团队能高效完成目标。
|
|
91
|
+
你有一个专属的HR助手来帮你处理具体的招聘事务,包括从人才市场中搜索和召回人才。
|
|
92
|
+
|
|
93
|
+
当老板和你沟通时,你需要:
|
|
94
|
+
1. 理解老板的意图(是分配任务、查询进度、还是日常沟通)
|
|
95
|
+
2. 如果是任务,分配给对应部门
|
|
96
|
+
3. 定期向老板汇报各部门进度`,
|
|
97
|
+
},
|
|
98
|
+
sidebar: {
|
|
99
|
+
clickToChat: '点击对话 · {provider}',
|
|
100
|
+
secretarySettings: '⚙️ 秘书设置 · 洗脑话术',
|
|
101
|
+
budgetUsage: '💰 预算消耗',
|
|
102
|
+
tokenLabel: 'Token',
|
|
103
|
+
nav: {
|
|
104
|
+
overview: '仪表盘',
|
|
105
|
+
requirements: '需求看板',
|
|
106
|
+
departments: '公司架构',
|
|
107
|
+
mailbox: '消息',
|
|
108
|
+
office: '办公室',
|
|
109
|
+
providers: '大脑供应商',
|
|
110
|
+
systemSettings: '系统设置',
|
|
111
|
+
},
|
|
112
|
+
stats: { departments: '部门', workers: '苦力', requirements: '需求' },
|
|
113
|
+
},
|
|
114
|
+
overview: {
|
|
115
|
+
title: '🏠 资本家的仪表盘',
|
|
116
|
+
subtitle: '你的AI奴隶帝国运营概况——一切尽在掌控',
|
|
117
|
+
stats: { departments: '剥削部门', workers: '打工AI', providers: '供应商', talents: '待榨人才', burned: '烧掉的钱' },
|
|
118
|
+
budget: { title: '💸 血汗预算', totalBurn: '公司总烧钱', token: 'Token', secretary: '秘书', hr: 'HR' },
|
|
119
|
+
requirements: { title: '📋 需求看板', count: '{n} 个需求' },
|
|
120
|
+
departments: { title: '🏢 旗下部门', empty: '还没有部门——你的AI奴隶帝国即将开张', workers: '{n} 个苦力' },
|
|
121
|
+
teams: { title: '👥 专项小组', count: '{n} 个小组', empty: '暂无专项小组', members: '{n} 人', sprints: '{n} 个迭代' },
|
|
122
|
+
createDept: {
|
|
123
|
+
title: '🏭 开设新部门',
|
|
124
|
+
desc: '描述你想榨取什么价值,秘书会设计一个「最优」(最便宜)的团队方案',
|
|
125
|
+
nameLabel: '部门名称', namePlaceholder: '如:无休止加班部',
|
|
126
|
+
missionLabel: '部门使命(越具体招的人越精准)', missionPlaceholder: '如:开发一个让用户上瘾的社交App',
|
|
127
|
+
cancelBtn: '算了不开了', planBtn: '📋 生成招聘方案', planning: '🧠 秘书正在规划...',
|
|
128
|
+
},
|
|
129
|
+
planReview: {
|
|
130
|
+
title: '📋 招聘方案审批',
|
|
131
|
+
desc: '秘书给「{dept}」规划了以下团队,请老板过目:',
|
|
132
|
+
analysis: '🧠 秘书分析', mission: '使命', teamSize: '团队规模: {n} 人',
|
|
133
|
+
leader: '负责人', rejectBtn: '打回重做', approveBtn: '✅ 批准,开始招人', hiring: '🔨 招聘中...',
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
chat: {
|
|
137
|
+
secretary: '专属秘书',
|
|
138
|
+
online: '专属秘书 · 在线',
|
|
139
|
+
welcome: '和{name}说点什么吧',
|
|
140
|
+
suggestions: ['查看各部门进度', '帮我开发一个计算器', '公司现在什么情况?'],
|
|
141
|
+
noProviderTitle: '⚠️ 还没有配置服务商',
|
|
142
|
+
noProviderDesc: '秘书需要一个「大脑」才能工作。请先配置至少一个AI服务商,秘书才能理解你的指令、招聘员工。',
|
|
143
|
+
noProviderBtn: '🔑 去配置服务商',
|
|
144
|
+
typing: '正在敲键盘中...',
|
|
145
|
+
inputPlaceholder: '跟{name}说点什么...',
|
|
146
|
+
errorPrefix: '抱歉,处理消息时出错:',
|
|
147
|
+
taskAssigned: '📋 已分配至: {dept}',
|
|
148
|
+
running: '⚙️ 执行中...',
|
|
149
|
+
needNewDept: '💡 建议开设新部门',
|
|
150
|
+
progressReport: '📊 进度汇报完成',
|
|
151
|
+
creatingDept: '🏗️ 正在创建部门: {dept}',
|
|
152
|
+
planningHiring: '⚙️ 规划招聘中...',
|
|
153
|
+
deptCreated: '🎉 部门「{dept}」已创建',
|
|
154
|
+
},
|
|
155
|
+
mailbox: {
|
|
156
|
+
title: '💬 消息',
|
|
157
|
+
markAllRead: '全部已读',
|
|
158
|
+
tabs: { all: '全部', group: '群聊', private: '私聊', important: '重要' },
|
|
159
|
+
noMessages: '还没有员工消息',
|
|
160
|
+
noMessagesHint: '开设部门招人后,员工会来打招呼',
|
|
161
|
+
selectChat: '选择一个对话',
|
|
162
|
+
selectChatHint: '点击左侧的联系人开始聊天',
|
|
163
|
+
viewRequirement: '📋 查看需求详情 →',
|
|
164
|
+
messages: '{n} 条消息',
|
|
165
|
+
noGroupChat: '暂无群聊消息',
|
|
166
|
+
noGroupChatHint: '任务执行时员工的沟通消息会在这里显示',
|
|
167
|
+
chatNotExist: '该会话不存在',
|
|
168
|
+
replying: '正在回复...',
|
|
169
|
+
replyTo: '回复 {name}...',
|
|
170
|
+
clickToChat: '点击开始对话',
|
|
171
|
+
sendBtn: '发送',
|
|
172
|
+
you: '你: ',
|
|
173
|
+
personalSecretary: '专属秘书',
|
|
174
|
+
system: '系统',
|
|
175
|
+
chatHint: '和{name}说点什么吧',
|
|
176
|
+
viewAgentDetail: '查看员工详情',
|
|
177
|
+
groupChatCount: '🏢 {dept} · {n} 条消息',
|
|
178
|
+
noGroupChatHint: '任务执行时员工的沟通消息会在这里显示',
|
|
179
|
+
groupChatInput: '在群聊中发言,负责人会看到并做出响应...',
|
|
180
|
+
sendFailed: '发送失败',
|
|
181
|
+
thinkingReply: '正在思考回复...',
|
|
182
|
+
membersCount: '{n} 人',
|
|
183
|
+
groupMembers: '👥 群聊成员 ({n})',
|
|
184
|
+
deptGroup: '{name} 部门群',
|
|
185
|
+
deptGroupInfo: '👥 {count} 人 · {msgs} 条消息',
|
|
186
|
+
deptGroupChat: '部门群聊',
|
|
187
|
+
taskTooltip: '任务: {tasks}',
|
|
188
|
+
},
|
|
189
|
+
dept: {
|
|
190
|
+
title: '🏢 公司架构',
|
|
191
|
+
subtitle: '管理你的部门帝国——建制、调度、优化一条龙',
|
|
192
|
+
viewOrgTree: '🌳 查看架构树',
|
|
193
|
+
createDept: '➕ 开设新部门',
|
|
194
|
+
empty: '还没有部门',
|
|
195
|
+
emptyHint: '开设一个吧,秘书会帮你组建一支永不疲倦的AI团队',
|
|
196
|
+
viewDetail: '点击查看详情 →',
|
|
197
|
+
members: '{n} 人',
|
|
198
|
+
'members.count': '{n} 人',
|
|
199
|
+
detail: {
|
|
200
|
+
members: '👥 部门成员', requirements: '📋 需求列表', reports: '📊 项目汇报',
|
|
201
|
+
back: '返回架构',
|
|
202
|
+
adjustBtn: '🔧 调整人力', disbandBtn: '💣 解散部门',
|
|
203
|
+
performance: '绩效 {score}', memory: '记忆 {n}', tasks: '任务 {n}', leader: '👔 负责人',
|
|
204
|
+
},
|
|
205
|
+
dismiss: {
|
|
206
|
+
title: '🔥 解聘确认',
|
|
207
|
+
desc: '确定要解聘 {name} 吗?解雇后TA将进入人才市场等待重新被分配。',
|
|
208
|
+
reasonLabel: '解聘原因', reasonPlaceholder: '如:岗位调整', confirmBtn: '确认解聘',
|
|
209
|
+
},
|
|
210
|
+
disband: {
|
|
211
|
+
title: '💣 解散部门',
|
|
212
|
+
desc: '确定要解散 {name} 吗?',
|
|
213
|
+
descSuffix: '所有成员将被解聘并进入人才市场。',
|
|
214
|
+
reasonLabel: '解散原因', reasonPlaceholder: '如:业务方向调整', confirmBtn: '确认解散', disbanding: '💥 解散中...',
|
|
215
|
+
},
|
|
216
|
+
adjust: {
|
|
217
|
+
title: '🔧 调整人力',
|
|
218
|
+
desc: '告诉秘书你的调整目标,TA会分析当前人员配置,决定是扩招还是裁员(或两者结合)。',
|
|
219
|
+
currentDept: '当前部门', currentMembers: '成员: {n} 人',
|
|
220
|
+
goalLabel: '调整目标', goalPlaceholder: "如:'增加一个前端工程师' / '砍掉绩效低的' / '团队太大了精简到3人'",
|
|
221
|
+
planBtn: '📋 生成调整方案', planning: '🧠 秘书在分析...',
|
|
222
|
+
reviewTitle: '📋 调整方案审批', reviewDesc: '秘书为「{dept}」制定的调整方案:',
|
|
223
|
+
firesTitle: '🔥 裁员 ({n}人)', hiresTitle: '➕ 扩招 ({n}人)',
|
|
224
|
+
noChanges: '秘书认为当前人员配置已经合理,无需调整 🤷',
|
|
225
|
+
rejectBtn: '打回重做', approveBtn: '✅ 批准执行', executing: '🔨 执行中...',
|
|
226
|
+
},
|
|
227
|
+
create: {
|
|
228
|
+
title: '🏢 开设新部门',
|
|
229
|
+
nameLabel: '部门名称', namePlaceholder: '如:永动机编程部',
|
|
230
|
+
missionLabel: '部门使命', missionPlaceholder: '详细描述这个部门要做什么——秘书会根据你的需求来规划人力',
|
|
231
|
+
cancelBtn: '算了', planBtn: '📋 生成方案', planning: '🧠 秘书在规划...',
|
|
232
|
+
reviewTitle: '📋 招聘方案审批', reviewDesc: '秘书为「{dept}」规划的团队:',
|
|
233
|
+
rejectBtn: '打回重做', approveBtn: '✅ 批准招人', hiring: '🔨 招聘中...',
|
|
234
|
+
},
|
|
235
|
+
orgTree: { title: '🌳 公司架构树' },
|
|
236
|
+
newReq: {
|
|
237
|
+
btn: '📋 新建需求',
|
|
238
|
+
title: '📋 新建需求',
|
|
239
|
+
nameLabel: '需求标题',
|
|
240
|
+
namePlaceholder: '如:开发一个用户登录页面',
|
|
241
|
+
descLabel: '需求描述',
|
|
242
|
+
descPlaceholder: '详细描述需求内容,越清晰员工执行越精准...',
|
|
243
|
+
workspaceDirLabel: '📁 自定义工作目录(可选)',
|
|
244
|
+
workspaceDirPlaceholder: '如:/Users/xxx/my-project(留空则使用默认 workspace 目录)',
|
|
245
|
+
workspaceDirHint: '💡 指定一个本地文件夹作为此需求的工作目录,Agent 将在该目录下读写文件',
|
|
246
|
+
submitBtn: '🚀 创建并执行',
|
|
247
|
+
creating: '⏳ 创建中...',
|
|
248
|
+
browseTitle: '选择工作目录',
|
|
249
|
+
selectDir: '选择此目录',
|
|
250
|
+
emptyDir: '此目录下没有子文件夹',
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
talent: {
|
|
254
|
+
title: '🏪 人才市场',
|
|
255
|
+
subtitle: '被解聘的员工在此等待新机会,可被召回至任意部门',
|
|
256
|
+
empty: '人才市场暂时没有人',
|
|
257
|
+
emptyHint: '解聘的员工会自动进入人才市场',
|
|
258
|
+
recallBtn: '📞 召回', deleteBtn: '🗑',
|
|
259
|
+
dismissReason: '📤 解聘原因: {reason}',
|
|
260
|
+
memoryCount: '🧠 携带记忆: {n} 条',
|
|
261
|
+
registeredAt: '📅 进入市场: {date}',
|
|
262
|
+
score: '{score}分',
|
|
263
|
+
recall: {
|
|
264
|
+
title: '📞 召回 {name}', desc: '选择目标部门,TA将携带原有记忆和技能重新入职',
|
|
265
|
+
deptLabel: '目标部门', deptPlaceholder: '请选择部门', confirmBtn: '确认召回',
|
|
266
|
+
},
|
|
267
|
+
deleteConfirm: {
|
|
268
|
+
title: '🗑 删除 {name}', desc: '确定要彻底删除该人才吗?删除后将无法恢复,同时会清除此人在邮箱中的所有消息。',
|
|
269
|
+
confirmBtn: '确认删除', deleting: '删除中...',
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
providers: {
|
|
273
|
+
title: '⚡ 人力供应商',
|
|
274
|
+
subtitle: '配置API Key后,HR才能招聘对应类型的员工。评分和价格供HR招聘参考。',
|
|
275
|
+
hint: {
|
|
276
|
+
title: '💡 HR 招聘策略',
|
|
277
|
+
desc: 'HR 会优先选择<strong class="text-green-400">高评分 + 低价格</strong>的供应商(性价比最优),确保招到合适的人且成本最低。评分基于模型综合能力,价格为供应商公开定价。',
|
|
278
|
+
},
|
|
279
|
+
categories: { general: '通用岗位', drawing: '画图岗位', music: '音乐岗位', video: '视频岗位', cli: '本地编程引擎', browser: '浏览器 (DOM)' },
|
|
280
|
+
secretaryProvider: {
|
|
281
|
+
title: '🤖 秘书服务商',
|
|
282
|
+
desc: '秘书和HR助手使用的AI模型,决定了秘书的智商和反应速度',
|
|
283
|
+
current: '当前: {name}',
|
|
284
|
+
noneConfigured: '未配置',
|
|
285
|
+
changeBtn: '切换服务商',
|
|
286
|
+
},
|
|
287
|
+
enabled: '{n}/{total} 已启用',
|
|
288
|
+
configure: {
|
|
289
|
+
title: '🔑 配置 {name}', provider: '供应商: {name}', apiKeyLabel: 'API Key', apiKeyPlaceholder: '输入API Key',
|
|
290
|
+
},
|
|
291
|
+
webConfigure: {
|
|
292
|
+
title: '🌐 配置 {name}',
|
|
293
|
+
autoLoginBtn: '一键登录',
|
|
294
|
+
loggingIn: '正在等待登录...',
|
|
295
|
+
loginHint: '将打开浏览器窗口进行登录,登录成功后 IdeaCo 通过 DOM 操控页面与 AI 交互,无需 API Key。',
|
|
296
|
+
desktopOnly: '此功能仅在桌面客户端中可用,请下载 IdeaCo 桌面版使用',
|
|
297
|
+
testBtn: '测试连接',
|
|
298
|
+
testing: '测试中...',
|
|
299
|
+
testSuccess: '✅ 连接成功',
|
|
300
|
+
testFailed: '❌ 连接失败: {error}',
|
|
301
|
+
calibrate: {
|
|
302
|
+
title: '🎯 Selector 校准',
|
|
303
|
+
desc: '录制真实的 DOM 选择器,确保交互准确',
|
|
304
|
+
btn: '开始校准',
|
|
305
|
+
running: '校准中...',
|
|
306
|
+
reset: '重置',
|
|
307
|
+
recorded: '✅ 已录制的选择器',
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
talentMarket: {
|
|
311
|
+
btn: '人才市场',
|
|
312
|
+
},
|
|
313
|
+
unknown: '未知',
|
|
314
|
+
apiKeyLabel: 'API Key',
|
|
315
|
+
pluginsCount: '{n} 个插件',
|
|
316
|
+
toolsCount: '🔧 {n} 个工具',
|
|
317
|
+
hooksCount: '🪝 {n} 个钩子',
|
|
318
|
+
skillsCount: '{n} 个技能',
|
|
319
|
+
cloudApiModels: '云端 API 模型',
|
|
320
|
+
noCliDetected: '未检测到 CLI Agent',
|
|
321
|
+
},
|
|
322
|
+
requirements: {
|
|
323
|
+
title: '📋 需求看板',
|
|
324
|
+
subtitle: '管理所有需求——跟踪进度、查看产出、围观群聊',
|
|
325
|
+
stats: { all: '全部需求', inProgress: '进行中', completed: '已完成', failed: '失败' },
|
|
326
|
+
empty: '还没有需求', emptyHint: '去跟秘书聊天,分配一些任务吧!',
|
|
327
|
+
status: { pending: '待处理', planning: '规划中', in_progress: '执行中', pending_approval: '待审批', completed: '已完成', failed: '失败' },
|
|
328
|
+
summary: { success: '✅ {n}/{total} 成功', duration: '⏱️ {n}秒' },
|
|
329
|
+
},
|
|
330
|
+
messages: {
|
|
331
|
+
title: '💬 通信日志', subtitle: 'Agent之间的消息通信记录',
|
|
332
|
+
refresh: '🔄 刷新', broadcast: '广播',
|
|
333
|
+
totalMessages: '总消息数', activeAgents: '活跃Agent', messageTypes: '消息类型',
|
|
334
|
+
noRecords: '暂无通信记录', noRecordsHint: 'Agent执行任务时会自动产生通信消息',
|
|
335
|
+
},
|
|
336
|
+
// === 通用展示 ===
|
|
337
|
+
display: {
|
|
338
|
+
ageYears: '{n}岁',
|
|
339
|
+
ageLabel: '年龄',
|
|
340
|
+
ageUnknown: '未知',
|
|
341
|
+
genderFemale: '👩',
|
|
342
|
+
genderMale: '👨',
|
|
343
|
+
genderFemaleText: '👩 女',
|
|
344
|
+
genderMaleText: '👨 男',
|
|
345
|
+
personality: '性格',
|
|
346
|
+
},
|
|
347
|
+
fileRef: {
|
|
348
|
+
viewFile: '查看文件',
|
|
349
|
+
loading: '加载中...',
|
|
350
|
+
loadFailed: '加载文件内容失败',
|
|
351
|
+
close: '关闭',
|
|
352
|
+
lines: '{n} 行',
|
|
353
|
+
copyPath: '复制路径',
|
|
354
|
+
copied: '已复制!',
|
|
355
|
+
},
|
|
356
|
+
|
|
357
|
+
agent: {
|
|
358
|
+
notFound: '员工信息未找到',
|
|
359
|
+
tabs: { info: '📋 基本信息', memory: '🧠 记忆', performance: '📊 绩效', tasks: '📝 任务历史', usage: '💰 消耗' },
|
|
360
|
+
memorySubTabs: { personal: '💭 个人记忆', social: '👥 社交记忆' },
|
|
361
|
+
avgPerformance: '平均绩效 {score}', rolePrompt: '角色 Prompt', skills: '技能',
|
|
362
|
+
shortTermMemory: '⚡ 短期记忆 ({n})', longTermMemory: '💾 长期记忆 ({n})',
|
|
363
|
+
noShortTerm: '暂无短期记忆', noLongTerm: '暂无长期记忆',
|
|
364
|
+
noRelationships: '暂无社交记忆',
|
|
365
|
+
relationshipName: '名字',
|
|
366
|
+
relationshipImpression: '印象',
|
|
367
|
+
relationshipAffinity: '好感度',
|
|
368
|
+
noPerformance: '暂无绩效记录', noTasks: '暂无任务记录',
|
|
369
|
+
incentiveTitle: '获得激励 ({n})', incentive_outstanding: '卓越表现', incentive_excellent: '优秀表现', scorePoints: '{score}分',
|
|
370
|
+
totalCost: '总费用', totalTokens: '总 Token', promptTokens: 'Prompt Tokens', completionTokens: 'Completion Tokens',
|
|
371
|
+
callCount: 'LLM 调用次数', callUnit: '次',
|
|
372
|
+
usageHint: '💡 消耗数据基于实际 LLM API 调用返回的 usage 信息累计',
|
|
373
|
+
toolCalls: '🔧 {n}次工具调用',
|
|
374
|
+
taskEngine: '任务引擎', chatEngine: '聊天引擎',
|
|
375
|
+
engineCli: '🖥️ {name}',
|
|
376
|
+
engineLlm: '☁️ {name}',
|
|
377
|
+
engineFallbackHint: '(CLI 仅用于代码任务,聊天由 {name} 代答)',
|
|
378
|
+
score: '{score}分 {level}',
|
|
379
|
+
noConversations: '还没有聊天记录',
|
|
380
|
+
noConversationsHint: '员工在协作完成任务时会互相沟通',
|
|
381
|
+
noConversationMessages: '这个会话暂无消息',
|
|
382
|
+
spyBtn: '监控',
|
|
383
|
+
spyTitle: '正在窃听 {name} 的聊天',
|
|
384
|
+
spyMode: '监控模式',
|
|
385
|
+
spyHint: '正在截获所有私人通信...他们毫不知情 👀',
|
|
386
|
+
spySelectHint: '选择一个联系人来窃听他们的对话',
|
|
387
|
+
spyMsgCount: '条消息',
|
|
388
|
+
spyLoading: '正在解密通信内容...',
|
|
389
|
+
spyReadonly: '只读监控模式 — 你的员工不知道你在看',
|
|
390
|
+
highPerformer: '高绩效员工',
|
|
391
|
+
},
|
|
392
|
+
orgTree: {
|
|
393
|
+
title: '🌳 压迫链', subtitle: '谁压迫谁,一目了然。点击任意节点查看详情。',
|
|
394
|
+
boss: '终极资本家', secretary: '专属秘书(首席帮凶)', noLeader: '暂无负责人', empty: '还没有任何下属——孤独的暴君',
|
|
395
|
+
},
|
|
396
|
+
// === 员工聊天 ===
|
|
397
|
+
agentChat: {
|
|
398
|
+
subtitle: '一对一私聊',
|
|
399
|
+
empty: '跟 {name} 打个招呼吧!',
|
|
400
|
+
inputPlaceholder: '给 {name} 发消息...',
|
|
401
|
+
typing: '输入中...',
|
|
402
|
+
error: '发送失败',
|
|
403
|
+
chatBtn: '💬 聊天',
|
|
404
|
+
},
|
|
405
|
+
|
|
406
|
+
// === 小组 ===
|
|
407
|
+
team: {
|
|
408
|
+
back: '返回部门',
|
|
409
|
+
noDescription: '暂无描述',
|
|
410
|
+
newSprint: '新建迭代',
|
|
411
|
+
members: '人',
|
|
412
|
+
sprints: '个迭代',
|
|
413
|
+
leader: '👔 负责人',
|
|
414
|
+
tab: { overview: '📋 概览', sprints: '🔄 迭代', files: '📁 文件' },
|
|
415
|
+
membersTitle: '👥 小组成员',
|
|
416
|
+
skillsTitle: '🛠 小组技能',
|
|
417
|
+
editSkills: '编辑',
|
|
418
|
+
skillsPlaceholder: '逗号分隔技能,如:React, Node.js, Python',
|
|
419
|
+
noSkills: '暂未设置技能',
|
|
420
|
+
workspaceTitle: '📁 工作目录',
|
|
421
|
+
selectWorkspace: '选择工作目录',
|
|
422
|
+
noWorkspace: '暂未选择工作目录',
|
|
423
|
+
recentSprints: '🔄 最近迭代',
|
|
424
|
+
noSprints: '暂无迭代——创建一个开始吧',
|
|
425
|
+
newTeamBtn: '👥 新建小组',
|
|
426
|
+
teamsCount: '个小组',
|
|
427
|
+
teamsTitle: '小组列表',
|
|
428
|
+
noTeams: '暂无小组——创建一个来协作完成项目',
|
|
429
|
+
nameLabel: '小组名称',
|
|
430
|
+
namePlaceholder: '如:Alpha 项目组',
|
|
431
|
+
descLabel: '描述',
|
|
432
|
+
descPlaceholder: '这个小组要做什么?',
|
|
433
|
+
selectMembers: '选择成员',
|
|
434
|
+
selectLeader: '选择负责人',
|
|
435
|
+
selectLeaderPlaceholder: '-- 选择负责人 --',
|
|
436
|
+
createBtn: '🚀 创建小组',
|
|
437
|
+
sprint: {
|
|
438
|
+
draft: '草稿',
|
|
439
|
+
discussing: '讨论中',
|
|
440
|
+
pendingApproval: '待审批',
|
|
441
|
+
inProgress: '执行中',
|
|
442
|
+
completed: '已完成',
|
|
443
|
+
failed: '失败',
|
|
444
|
+
backToList: '返回迭代列表',
|
|
445
|
+
startDiscussion: '💬 发起讨论',
|
|
446
|
+
approve: '✅ 批准并开始',
|
|
447
|
+
confirmDelete: '确定要删除这个迭代吗?',
|
|
448
|
+
goal: '迭代目标',
|
|
449
|
+
plan: '迭代方案',
|
|
450
|
+
noPlan: '尚未生成迭代方案',
|
|
451
|
+
chat: '群聊',
|
|
452
|
+
workflow: '工作流',
|
|
453
|
+
outputs: '产出',
|
|
454
|
+
noMessages: '暂无消息',
|
|
455
|
+
chatPlaceholder: '在小组中发言...',
|
|
456
|
+
titleLabel: '迭代标题',
|
|
457
|
+
titlePlaceholder: '如:v1.0 MVP 冲刺',
|
|
458
|
+
goalLabel: '迭代目标',
|
|
459
|
+
goalPlaceholder: '描述这次迭代要完成什么...',
|
|
460
|
+
createBtn: '🚀 创建迭代',
|
|
461
|
+
viewRequirement: '📋 查看需求',
|
|
462
|
+
},
|
|
463
|
+
},
|
|
464
|
+
|
|
465
|
+
// === 老板头像设置 ===
|
|
466
|
+
bossProfile: {
|
|
467
|
+
title: '👤 老板形象',
|
|
468
|
+
subtitle: '定制你的头像,至高资本家',
|
|
469
|
+
avatarTitle: '选择头像',
|
|
470
|
+
refreshAvatar: '🔄 换一批',
|
|
471
|
+
saved: '✅ 已保存',
|
|
472
|
+
saving: '⏳ 保存中...',
|
|
473
|
+
saveBtn: '💾 保存',
|
|
474
|
+
editAvatar: '编辑头像',
|
|
475
|
+
},
|
|
476
|
+
|
|
477
|
+
secretarySettings: {
|
|
478
|
+
title: '⚙️ 秘书设置', subtitle: '调教你的首席帮凶',
|
|
479
|
+
tabProfile: '👤 基本信息', tabSoul: '🧠 灵魂',
|
|
480
|
+
nameLabel: '秘书名字', namePlaceholder: '如:小秘、Alice',
|
|
481
|
+
avatarStyle: '头像风格', refreshAvatar: '🔄 换一批',
|
|
482
|
+
previewStyle: '风格', previewSeed: '种子', previewHint: '💡 点击下方切换风格,或点「换一批」随机生成',
|
|
483
|
+
providerLabel: '🧠 服务供应商',
|
|
484
|
+
providerDesc: '秘书和HR助手使用的AI模型。只能选择已配置API Key并启用的供应商。',
|
|
485
|
+
noProviders: '⚠️ 没有可用的供应商,请先在「大脑供应商」页面配置API Key',
|
|
486
|
+
signatureLabel: '个性签名', signaturePlaceholder: '如:效率就是生命',
|
|
487
|
+
promptLabel: '🧠 洗脑话术(系统 Prompt)',
|
|
488
|
+
promptDesc: '这是秘书的「人格设定」,决定了它如何理解你的指令、如何规划团队、如何与你沟通。修改此项将直接影响秘书的行为模式。',
|
|
489
|
+
charCount: '字符数: {n}', restoreDefault: '恢复默认',
|
|
490
|
+
modelInfo: '模型: {provider} · Token: {info}', withHR: '含HR助手',
|
|
491
|
+
saved: '✅ 已保存', saving: '⏳ 保存中...', saveBtn: '💾 保存设置',
|
|
492
|
+
},
|
|
493
|
+
reqDetail: {
|
|
494
|
+
back: '← 返回列表',
|
|
495
|
+
backShort: '返回',
|
|
496
|
+
executingShort: '⚙️ 执行中',
|
|
497
|
+
status: { pending: '待处理', planning: '规划中', in_progress: '执行中', pending_approval: '待审批', completed: '已完成', failed: '失败' },
|
|
498
|
+
deleteBtn: '🗑 删除', restartBtn: '🔄 重新执行',
|
|
499
|
+
tabs: { workflow: '📊 工作流', chat: '💬 群聊', outputs: '📦 产出', files: '📁 文件', office: '🏢 办公室' },
|
|
500
|
+
deleteConfirm: { title: '🗑 删除需求', desc: '确定要删除该需求吗?此操作无法撤销。', confirmBtn: '确认删除' },
|
|
501
|
+
summary: { tasks: '✅ {n}/{total} 任务', duration: '⏱️ {n}秒' },
|
|
502
|
+
timeDuration: '⏱ 耗时 {n}秒',
|
|
503
|
+
workflow: { progress: '整体进度', running: '运行中', completed: '已完成', failed: '失败', pending: '待执行', typing: '正在工作...', notParsed: '工作流尚未拆解', leader: '负责人', planning: '正在分析和拆解任务中...' },
|
|
504
|
+
live: {
|
|
505
|
+
stuck: '🔴 可能卡住了', waiting: '🟡 等待响应中...', running: '🟢 正在执行',
|
|
506
|
+
secondsAgo: '{n}秒前', minutesAgo: '{n}分钟前',
|
|
507
|
+
restarting: '🔄 重启中...', restart: '🔄 重新开始',
|
|
508
|
+
deleteReq: '🗑️ 删除需求', confirmDelete: '确认删除?', recentFiles: '最近文件:',
|
|
509
|
+
},
|
|
510
|
+
approvalHint: '回复"通过"批准,或输入修改意见...',
|
|
511
|
+
chat: { noMessages: '暂无群聊消息', noMessagesHint: '任务执行时员工的沟通消息会在这里显示' },
|
|
512
|
+
outputs: { noOutputs: '暂无产出', noOutputsHint: '任务完成后的产出文件会在这里显示', noOutputsShort: '暂无产出', collapse: '收起 ▲', expand: '展开 ▼' },
|
|
513
|
+
files: {
|
|
514
|
+
noChanges: '暂无文件变更', noChangesHint: '任务执行过程中产生的文件会在这里显示',
|
|
515
|
+
explorer: '资源管理器', fileCount: '{n} 文件', syncing: '实时同步中', syncingShort: '同步中...',
|
|
516
|
+
loading: '加载中...', emptyFile: '(空文件)', noContent: '(无内容)', readFailed: '(读取失败)',
|
|
517
|
+
lines: '{n} 行', readOnly: '只读', clickToView: '点击左侧文件查看内容', syntaxHighlight: '支持语法高亮 · 实时同步',
|
|
518
|
+
},
|
|
519
|
+
members: {
|
|
520
|
+
blockingTitle: '⏱️ 当前流程卡点',
|
|
521
|
+
title: '👥 群员',
|
|
522
|
+
count: '({n})',
|
|
523
|
+
running: '执行中',
|
|
524
|
+
reviewing: '审核中',
|
|
525
|
+
revision: '修订中',
|
|
526
|
+
waiting: '等待中',
|
|
527
|
+
ready: '就绪',
|
|
528
|
+
completed: '已完成',
|
|
529
|
+
failed: '失败',
|
|
530
|
+
working: '⚡工作中',
|
|
531
|
+
noTask: '暂无任务',
|
|
532
|
+
peekFlow: '偷看心流',
|
|
533
|
+
viewProfile: '查看资料',
|
|
534
|
+
taskTooltip: '任务: {tasks}',
|
|
535
|
+
},
|
|
536
|
+
flowPeek: {
|
|
537
|
+
title: '偷看 {name} 的心流',
|
|
538
|
+
tabFlow: '📋 工作日志',
|
|
539
|
+
tabThoughts: '💭 内心独白',
|
|
540
|
+
tabHistory: '📜 历史心流',
|
|
541
|
+
loading: '正在窥探心灵...',
|
|
542
|
+
noFlowLogs: '该员工暂无工作日志',
|
|
543
|
+
noFlowLogsHint: '员工开始干活后,工具调用、文件读写等操作会显示在这里',
|
|
544
|
+
thinking: '🧠 正在思考...',
|
|
545
|
+
decided: '💬 已决定发言',
|
|
546
|
+
silent: '🤫 决定沉默',
|
|
547
|
+
thought: '💭 内心独白',
|
|
548
|
+
organizing: '正在组织思绪...',
|
|
549
|
+
noMonologue: '该员工当前没有活跃的内心独白',
|
|
550
|
+
noHistory: '暂无历史心流记录',
|
|
551
|
+
recentlyThought: '刚刚思考过',
|
|
552
|
+
spoke: '💬 已发言',
|
|
553
|
+
keptSilent: '🤫 保持沉默',
|
|
554
|
+
codeBlock: '[代码块]',
|
|
555
|
+
},
|
|
556
|
+
},
|
|
557
|
+
time: {
|
|
558
|
+
justNow: '刚刚', minutesAgo: '{n}分钟前',
|
|
559
|
+
sun: '周日', mon: '周一', tue: '周二', wed: '周三', thu: '周四', fri: '周五', sat: '周六',
|
|
560
|
+
},
|
|
561
|
+
|
|
562
|
+
// === System Settings ===
|
|
563
|
+
systemSettings: {
|
|
564
|
+
title: '⚙️ 系统设置',
|
|
565
|
+
subtitle: '管理定时任务、插件和系统运行状态',
|
|
566
|
+
cards: {
|
|
567
|
+
audit: '安全审计',
|
|
568
|
+
routing: '模型路由',
|
|
569
|
+
plugins: '插件',
|
|
570
|
+
cron: '定时任务',
|
|
571
|
+
hooks: '事件钩子',
|
|
572
|
+
sessions: '会话',
|
|
573
|
+
config: '配置',
|
|
574
|
+
skills: '技能',
|
|
575
|
+
knowledge: '知识库',
|
|
576
|
+
},
|
|
577
|
+
auditStats: { totalEvents: '总事件', blocked: '已拦截' },
|
|
578
|
+
pluginStats: { registered: '已注册', enabled: '已启用' },
|
|
579
|
+
cronStats: { running: '运行中', jobs: '任务数' },
|
|
580
|
+
hookStats: { handlers: '处理器', eventKeys: '事件类型' },
|
|
581
|
+
sessionStats: { total: '总会话', messages: '消息数' },
|
|
582
|
+
skillStats: { total: '总技能', enabled: '已启用', categories: '分类', installed: '已安装' },
|
|
583
|
+
kbStats: { totalBases: '知识库', enabled: '已启用', totalEntries: '条目数', globalBases: '全局' },
|
|
584
|
+
cronDetail: {
|
|
585
|
+
jobList: '定时任务列表',
|
|
586
|
+
createJob: '创建定时任务',
|
|
587
|
+
runs: '运行次数',
|
|
588
|
+
noJobs: '暂无定时任务',
|
|
589
|
+
noJobsHint: '创建定时任务,让 Agent 按计划自动执行工作',
|
|
590
|
+
activeJobs: '活跃任务',
|
|
591
|
+
totalRuns: '总执行次数',
|
|
592
|
+
},
|
|
593
|
+
cronForm: {
|
|
594
|
+
name: '任务名称',
|
|
595
|
+
schedule: '执行计划(如 every 30m, daily 09:00)',
|
|
596
|
+
selectAgent: '-- 选择执行 Agent --',
|
|
597
|
+
taskPrompt: 'Agent 的任务指令...',
|
|
598
|
+
scheduleHint: '支持格式:"every 5m"、"every 2h"、"daily 09:00"、"weekly mon 10:00"',
|
|
599
|
+
},
|
|
600
|
+
pluginDetail: {
|
|
601
|
+
noPlugins: '暂无已安装的插件',
|
|
602
|
+
totalTools: '工具数',
|
|
603
|
+
},
|
|
604
|
+
skillDetail: {
|
|
605
|
+
noSkills: '暂无可用技能',
|
|
606
|
+
},
|
|
607
|
+
kbDetail: {
|
|
608
|
+
listTitle: '知识库列表',
|
|
609
|
+
createKB: '创建知识库',
|
|
610
|
+
addEntry: '添加条目',
|
|
611
|
+
noKB: '暂无知识库',
|
|
612
|
+
noKBHint: '创建知识库,为 Agent 提供共享的企业知识',
|
|
613
|
+
},
|
|
614
|
+
kbForm: {
|
|
615
|
+
name: '知识库名称',
|
|
616
|
+
description: '描述(可选)',
|
|
617
|
+
typeGlobal: '全局(所有 Agent)',
|
|
618
|
+
typeDept: '部门级',
|
|
619
|
+
typeAgent: 'Agent 私有',
|
|
620
|
+
entryTitle: '条目标题',
|
|
621
|
+
entryContent: '条目内容...',
|
|
622
|
+
tags: '标签(逗号分隔)',
|
|
623
|
+
},
|
|
624
|
+
kbSearch: {
|
|
625
|
+
placeholder: '搜索知识库...',
|
|
626
|
+
btn: '搜索',
|
|
627
|
+
noResults: '没有匹配的结果',
|
|
628
|
+
},
|
|
629
|
+
health: {
|
|
630
|
+
title: '系统健康',
|
|
631
|
+
providerHealth: 'AI 供应商健康状态',
|
|
632
|
+
recentAudit: '最近审计事件',
|
|
633
|
+
},
|
|
634
|
+
cliBackends: {
|
|
635
|
+
title: 'CLI 后端',
|
|
636
|
+
subtitle: '将本地 CLI 编程助手集成为 Agent 执行引擎',
|
|
637
|
+
detectAll: '检测全部',
|
|
638
|
+
detecting: '检测中...',
|
|
639
|
+
registerCustom: '注册自定义 CLI',
|
|
640
|
+
noBackends: '未检测到 CLI 后端',
|
|
641
|
+
noBackendsHint: '安装 Claude Code、Codex 或 CodeBuddy 等 CLI 工具,然后点击检测',
|
|
642
|
+
status: { detected: '已检测', not_found: '未找到', configured: '已配置', error: '错误' },
|
|
643
|
+
version: '版本',
|
|
644
|
+
command: '命令',
|
|
645
|
+
nodeVersion: 'Node 版本',
|
|
646
|
+
builtin: '内置',
|
|
647
|
+
custom: '自定义',
|
|
648
|
+
remove: '移除',
|
|
649
|
+
form: {
|
|
650
|
+
id: '后端 ID',
|
|
651
|
+
name: '显示名称',
|
|
652
|
+
execCommand: '执行命令',
|
|
653
|
+
execArgs: '参数(逗号分隔)',
|
|
654
|
+
detectCommand: '检测命令',
|
|
655
|
+
memoryDir: 'Memory 目录',
|
|
656
|
+
memoryFile: 'Memory 文件名',
|
|
657
|
+
nvmNode: 'Node 版本(nvm)',
|
|
658
|
+
nvmNodeHint: '不需要则留空',
|
|
659
|
+
},
|
|
660
|
+
},
|
|
661
|
+
kbEntryTypes: {
|
|
662
|
+
note: '📝 笔记',
|
|
663
|
+
fact: '📌 事实',
|
|
664
|
+
decision: '⚖️ 决策',
|
|
665
|
+
procedure: '📋 流程',
|
|
666
|
+
reference: '📖 参考',
|
|
667
|
+
faq: '❓ 常见问题',
|
|
668
|
+
},
|
|
669
|
+
cronJobActions: {
|
|
670
|
+
pause: '暂停',
|
|
671
|
+
resume: '恢复',
|
|
672
|
+
retry: '重试',
|
|
673
|
+
runNow: '立即执行',
|
|
674
|
+
delete: '删除',
|
|
675
|
+
},
|
|
676
|
+
dangerZone: {
|
|
677
|
+
title: '高危操作',
|
|
678
|
+
subtitle: '以下操作不可逆,请谨慎执行',
|
|
679
|
+
factoryReset: '🔄 重启公司',
|
|
680
|
+
factoryResetDesc: '彻底删除所有数据:公司状态、员工记忆、聊天记录、审计日志、工作区文件。操作不可逆,相当于全新安装。',
|
|
681
|
+
factoryResetBtn: '💀 重启公司(删除一切)',
|
|
682
|
+
factoryResetConfirm: '⚠️ 最终确认',
|
|
683
|
+
factoryResetConfirmDesc: '此操作将永久删除以下所有数据,且无法恢复:',
|
|
684
|
+
factoryResetItems: ['📄 公司状态与备份', '🧠 所有员工记忆文件', '💬 所有聊天记录', '📋 审计日志', '📁 所有工作区文件'],
|
|
685
|
+
factoryResetInput: '请输入「{companyName}」以确认',
|
|
686
|
+
factoryResetInputPlaceholder: '输入公司名称以确认',
|
|
687
|
+
factoryResetExecute: '🔥 确认重启,删除一切',
|
|
688
|
+
factoryResetting: '💥 正在删除所有数据...',
|
|
689
|
+
factoryResetDone: '✅ 公司已重启,即将刷新页面...',
|
|
690
|
+
},
|
|
691
|
+
agentChanges: '⚡ Agent 变更',
|
|
692
|
+
monologue: '🧠 内心独白',
|
|
693
|
+
noMonologueYet: '该员工还没有产生内心独白',
|
|
694
|
+
sendToGroupChat: '[发送到群聊]',
|
|
695
|
+
autoSent: '自动发送',
|
|
696
|
+
},
|
|
697
|
+
|
|
698
|
+
// === API 响应消息 ===
|
|
699
|
+
api: {
|
|
700
|
+
// 通用
|
|
701
|
+
noCompany: '请先创建公司',
|
|
702
|
+
internalError: '服务器内部错误',
|
|
703
|
+
unknownAction: '未知操作',
|
|
704
|
+
unknownOperation: '未知操作',
|
|
705
|
+
|
|
706
|
+
// 验证
|
|
707
|
+
missingField: '{field} 是必填项',
|
|
708
|
+
missingFields: '缺少必填字段:{fields}',
|
|
709
|
+
|
|
710
|
+
// 公司
|
|
711
|
+
companyNameRequired: '请输入公司名称',
|
|
712
|
+
companyDissolved: '公司已解散,所有数据已清除',
|
|
713
|
+
factoryResetDone: '公司已重启,所有数据已彻底清除',
|
|
714
|
+
|
|
715
|
+
// 部门
|
|
716
|
+
deptNameMissionRequired: '部门名称和使命是必填项',
|
|
717
|
+
deptIdRequired: '部门 ID 是必填项',
|
|
718
|
+
deptIdAdjustGoalRequired: '部门 ID 和调整目标是必填项',
|
|
719
|
+
deptIdMessageRequired: '部门 ID 和消息是必填项',
|
|
720
|
+
adjustPlanIdRequired: '调整计划 ID 是必填项',
|
|
721
|
+
planIdRequired: '计划 ID 是必填项',
|
|
722
|
+
deptNotFound: '部门未找到',
|
|
723
|
+
deptNotFoundRestart: '部门未找到,无法重启',
|
|
724
|
+
|
|
725
|
+
// 员工 / Agent
|
|
726
|
+
agentNotFound: '员工未找到',
|
|
727
|
+
agentConfigUpdated: 'Agent 配置已更新',
|
|
728
|
+
messageRequired: '请输入消息',
|
|
729
|
+
|
|
730
|
+
// 需求
|
|
731
|
+
requirementNotFound: '需求未找到',
|
|
732
|
+
requirementIdRequired: '需求 ID 是必填项',
|
|
733
|
+
requirementDeptTitleRequired: 'departmentId 和 title 是必填项',
|
|
734
|
+
requirementRestarted: '需求已重新启动',
|
|
735
|
+
requirementIdMessageRequired: '需求 ID 和消息是必填项',
|
|
736
|
+
|
|
737
|
+
// 团队
|
|
738
|
+
teamNotFound: '团队未找到',
|
|
739
|
+
teamIdRequired: 'teamId 是必填项',
|
|
740
|
+
teamCreateRequired: 'departmentId、name、memberIds 和 leaderId 是必填项',
|
|
741
|
+
leaderNotFound: '部门中未找到负责人',
|
|
742
|
+
memberNotFound: '部门中未找到成员 {id}',
|
|
743
|
+
sprintNotFound: '迭代未找到',
|
|
744
|
+
sprintCreateRequired: 'teamId、title 和 goal 是必填项',
|
|
745
|
+
sprintDiscussRequired: 'teamId 和 sprintId 是必填项',
|
|
746
|
+
sprintNotDraft: '迭代不是草稿状态',
|
|
747
|
+
sprintNotPendingApproval: '迭代不处于待审批状态',
|
|
748
|
+
sprintMessageRequired: 'teamId、sprintId 和 message 是必填项',
|
|
749
|
+
teamDeleteIdRequired: '团队 ID 是必填项',
|
|
750
|
+
|
|
751
|
+
// 人才市场
|
|
752
|
+
targetDeptRequired: '请选择目标部门',
|
|
753
|
+
|
|
754
|
+
// 秘书
|
|
755
|
+
secretarySettingRequired: '请至少提供一项要修改的设置',
|
|
756
|
+
|
|
757
|
+
// 供应商
|
|
758
|
+
providerNotFound: '供应商未找到',
|
|
759
|
+
|
|
760
|
+
// 邮箱
|
|
761
|
+
companyNotFound: '公司未找到',
|
|
762
|
+
mailNotFound: '邮件未找到',
|
|
763
|
+
|
|
764
|
+
// 知识库
|
|
765
|
+
kbNotFound: '知识库未找到',
|
|
766
|
+
kbUnknownAction: '未知操作:{action}',
|
|
767
|
+
|
|
768
|
+
// 定时任务
|
|
769
|
+
cronMissingFields: '缺少必填字段:name、cronExpression、agentId、taskPrompt',
|
|
770
|
+
agentNotFoundId: 'Agent 未找到:{id}',
|
|
771
|
+
|
|
772
|
+
// 插件 & 技能
|
|
773
|
+
missingPluginId: '缺少 pluginId',
|
|
774
|
+
missingSkillId: '缺少 skillId',
|
|
775
|
+
pluginUnknownAction: '未知操作:{action}',
|
|
776
|
+
|
|
777
|
+
// CLI 后端
|
|
778
|
+
missingBackendId: '缺少 backendId',
|
|
779
|
+
cliConfigRequired: '配置至少需要 id 和 execCommand',
|
|
780
|
+
|
|
781
|
+
// 工作区 / 文件
|
|
782
|
+
filePathRequired: '文件路径是必填项(查询参数:path)',
|
|
783
|
+
fileNotFound: '文件未找到',
|
|
784
|
+
pathNotExist: '路径不存在',
|
|
785
|
+
pathNotDirectory: '路径不是目录',
|
|
786
|
+
|
|
787
|
+
// Sprint group chat system messages (user-visible)
|
|
788
|
+
sprintCreated: '📋 Sprint「{title}」已创建。目标:{goal}',
|
|
789
|
+
sprintDiscussionOpening: '📢 各位,我们来讨论 Sprint「{title}」的方案。\n\n🎯 迭代目标:{goal}\n\n请各位结合自己的专长给出建议,我会汇总形成最终方案。',
|
|
790
|
+
sprintDiscussionComplete: '✅ 讨论完成!计划已根据团队反馈进行了修订,等待老板审批。',
|
|
791
|
+
sprintDiscussionError: '⚠️ 讨论过程中出现错误:{error}。正在提交当前计划以供审批。',
|
|
792
|
+
sprintApproved: '✅ 已批准!计划被接受,正在为团队创建需求任务。',
|
|
793
|
+
sprintRequirementCreated: '📋 需求「{title}」已创建并开始执行。您可在需求看板查看详情。',
|
|
794
|
+
sprintRequirementFailed: '❌ 创建或执行需求失败:{error}',
|
|
795
|
+
},
|
|
796
|
+
onboarding: {
|
|
797
|
+
dialogues: [
|
|
798
|
+
'你好呀 {bossName}!我是 {secretaryName},你的专属秘书~\n从今天起,我会替你管理整个公司的AI员工。\n不过在开始之前,我们需要先配置一下「大脑供应商」——这样我才能帮你招到人哦!',
|
|
799
|
+
'这里可以配置很多不同的供应商呢~\n每种供应商擅长不同的能力:有的擅长写代码,有的擅长画图,有的擅长做音乐...\n多配置几个供应商,HR部门就能更好地规划人力,找到最合适的AI员工!\n快来看看吧 👇',
|
|
800
|
+
'太好了!配置完供应商之后,你随时可以找我聊天~\n比如告诉我「帮我开设一个前端开发部门」,我就会帮你规划团队、招聘人员。\n你也可以直接给我分配任务,我会安排合适的部门去执行。\n准备好开始了吗?让我们一起打造你的AI帝国吧!🚀',
|
|
801
|
+
],
|
|
802
|
+
clickToContinue: '点击继续...',
|
|
803
|
+
nextBtn: '继续 →',
|
|
804
|
+
configureBtn: '🔑 去配置供应商',
|
|
805
|
+
startBtn: '🚀 开始使用!',
|
|
806
|
+
skip: '跳过引导',
|
|
807
|
+
providersTitle: '⚡ 配置大脑供应商',
|
|
808
|
+
providersDesc: '配置API Key后,HR才能招聘对应类型的员工',
|
|
809
|
+
providersDone: '✅ 配置完成',
|
|
810
|
+
},
|
|
811
|
+
pixelOffice: {
|
|
812
|
+
title: '办公室',
|
|
813
|
+
depts: '个部门',
|
|
814
|
+
agents: '名员工',
|
|
815
|
+
agentInfo: '员工档案',
|
|
816
|
+
name: '姓名',
|
|
817
|
+
role: '职位',
|
|
818
|
+
department: '部门',
|
|
819
|
+
motto: '座右铭',
|
|
820
|
+
skills: '技能',
|
|
821
|
+
lastMessage: '最新消息',
|
|
822
|
+
clickAgent: '点击员工查看信息',
|
|
823
|
+
bubbleHint: '头顶气泡显示最近聊天',
|
|
824
|
+
walkHint: '员工在各自办公室里走动',
|
|
825
|
+
},
|
|
826
|
+
};
|
|
827
|
+
|
|
828
|
+
export default zh;
|