claude-code-workflow 6.2.7 → 6.3.0

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.
Files changed (208) hide show
  1. package/.claude/CLAUDE.md +16 -1
  2. package/.claude/workflows/cli-templates/protocols/analysis-protocol.md +11 -4
  3. package/.claude/workflows/cli-templates/protocols/write-protocol.md +10 -75
  4. package/.claude/workflows/cli-tools-usage.md +14 -24
  5. package/.codex/AGENTS.md +51 -1
  6. package/.codex/prompts/compact.md +378 -0
  7. package/.gemini/GEMINI.md +57 -20
  8. package/ccw/dist/cli.d.ts.map +1 -1
  9. package/ccw/dist/cli.js +21 -8
  10. package/ccw/dist/cli.js.map +1 -1
  11. package/ccw/dist/commands/cli.d.ts +2 -0
  12. package/ccw/dist/commands/cli.d.ts.map +1 -1
  13. package/ccw/dist/commands/cli.js +129 -8
  14. package/ccw/dist/commands/cli.js.map +1 -1
  15. package/ccw/dist/commands/hook.d.ts.map +1 -1
  16. package/ccw/dist/commands/hook.js +3 -2
  17. package/ccw/dist/commands/hook.js.map +1 -1
  18. package/ccw/dist/config/litellm-api-config-manager.d.ts +180 -0
  19. package/ccw/dist/config/litellm-api-config-manager.d.ts.map +1 -0
  20. package/ccw/dist/config/litellm-api-config-manager.js +770 -0
  21. package/ccw/dist/config/litellm-api-config-manager.js.map +1 -0
  22. package/ccw/dist/config/provider-models.d.ts +73 -0
  23. package/ccw/dist/config/provider-models.d.ts.map +1 -0
  24. package/ccw/dist/config/provider-models.js +172 -0
  25. package/ccw/dist/config/provider-models.js.map +1 -0
  26. package/ccw/dist/core/cache-manager.d.ts.map +1 -1
  27. package/ccw/dist/core/cache-manager.js +3 -5
  28. package/ccw/dist/core/cache-manager.js.map +1 -1
  29. package/ccw/dist/core/dashboard-generator.d.ts.map +1 -1
  30. package/ccw/dist/core/dashboard-generator.js +3 -1
  31. package/ccw/dist/core/dashboard-generator.js.map +1 -1
  32. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
  33. package/ccw/dist/core/routes/cli-routes.js +169 -0
  34. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  35. package/ccw/dist/core/routes/codexlens-routes.d.ts.map +1 -1
  36. package/ccw/dist/core/routes/codexlens-routes.js +234 -18
  37. package/ccw/dist/core/routes/codexlens-routes.js.map +1 -1
  38. package/ccw/dist/core/routes/hooks-routes.d.ts.map +1 -1
  39. package/ccw/dist/core/routes/hooks-routes.js +30 -32
  40. package/ccw/dist/core/routes/hooks-routes.js.map +1 -1
  41. package/ccw/dist/core/routes/litellm-api-routes.d.ts +21 -0
  42. package/ccw/dist/core/routes/litellm-api-routes.d.ts.map +1 -0
  43. package/ccw/dist/core/routes/litellm-api-routes.js +780 -0
  44. package/ccw/dist/core/routes/litellm-api-routes.js.map +1 -0
  45. package/ccw/dist/core/routes/litellm-routes.d.ts +20 -0
  46. package/ccw/dist/core/routes/litellm-routes.d.ts.map +1 -0
  47. package/ccw/dist/core/routes/litellm-routes.js +85 -0
  48. package/ccw/dist/core/routes/litellm-routes.js.map +1 -0
  49. package/ccw/dist/core/routes/mcp-routes.js +2 -2
  50. package/ccw/dist/core/routes/mcp-routes.js.map +1 -1
  51. package/ccw/dist/core/routes/status-routes.d.ts.map +1 -1
  52. package/ccw/dist/core/routes/status-routes.js +39 -0
  53. package/ccw/dist/core/routes/status-routes.js.map +1 -1
  54. package/ccw/dist/core/routes/system-routes.js +1 -1
  55. package/ccw/dist/core/routes/system-routes.js.map +1 -1
  56. package/ccw/dist/core/server.d.ts.map +1 -1
  57. package/ccw/dist/core/server.js +15 -1
  58. package/ccw/dist/core/server.js.map +1 -1
  59. package/ccw/dist/mcp-server/index.js +1 -1
  60. package/ccw/dist/mcp-server/index.js.map +1 -1
  61. package/ccw/dist/tools/claude-cli-tools.d.ts +82 -0
  62. package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -0
  63. package/ccw/dist/tools/claude-cli-tools.js +216 -0
  64. package/ccw/dist/tools/claude-cli-tools.js.map +1 -0
  65. package/ccw/dist/tools/cli-executor.d.ts.map +1 -1
  66. package/ccw/dist/tools/cli-executor.js +76 -14
  67. package/ccw/dist/tools/cli-executor.js.map +1 -1
  68. package/ccw/dist/tools/codex-lens.d.ts +9 -2
  69. package/ccw/dist/tools/codex-lens.d.ts.map +1 -1
  70. package/ccw/dist/tools/codex-lens.js +114 -9
  71. package/ccw/dist/tools/codex-lens.js.map +1 -1
  72. package/ccw/dist/tools/context-cache-store.d.ts +136 -0
  73. package/ccw/dist/tools/context-cache-store.d.ts.map +1 -0
  74. package/ccw/dist/tools/context-cache-store.js +256 -0
  75. package/ccw/dist/tools/context-cache-store.js.map +1 -0
  76. package/ccw/dist/tools/context-cache.d.ts +56 -0
  77. package/ccw/dist/tools/context-cache.d.ts.map +1 -0
  78. package/ccw/dist/tools/context-cache.js +294 -0
  79. package/ccw/dist/tools/context-cache.js.map +1 -0
  80. package/ccw/dist/tools/core-memory.d.ts.map +1 -1
  81. package/ccw/dist/tools/core-memory.js +33 -19
  82. package/ccw/dist/tools/core-memory.js.map +1 -1
  83. package/ccw/dist/tools/index.d.ts.map +1 -1
  84. package/ccw/dist/tools/index.js +2 -0
  85. package/ccw/dist/tools/index.js.map +1 -1
  86. package/ccw/dist/tools/litellm-client.d.ts +85 -0
  87. package/ccw/dist/tools/litellm-client.d.ts.map +1 -0
  88. package/ccw/dist/tools/litellm-client.js +188 -0
  89. package/ccw/dist/tools/litellm-client.js.map +1 -0
  90. package/ccw/dist/tools/litellm-executor.d.ts +34 -0
  91. package/ccw/dist/tools/litellm-executor.d.ts.map +1 -0
  92. package/ccw/dist/tools/litellm-executor.js +192 -0
  93. package/ccw/dist/tools/litellm-executor.js.map +1 -0
  94. package/ccw/dist/tools/pattern-parser.d.ts +55 -0
  95. package/ccw/dist/tools/pattern-parser.d.ts.map +1 -0
  96. package/ccw/dist/tools/pattern-parser.js +237 -0
  97. package/ccw/dist/tools/pattern-parser.js.map +1 -0
  98. package/ccw/dist/tools/smart-search.d.ts +1 -0
  99. package/ccw/dist/tools/smart-search.d.ts.map +1 -1
  100. package/ccw/dist/tools/smart-search.js +117 -41
  101. package/ccw/dist/tools/smart-search.js.map +1 -1
  102. package/ccw/dist/types/litellm-api-config.d.ts +294 -0
  103. package/ccw/dist/types/litellm-api-config.d.ts.map +1 -0
  104. package/ccw/dist/types/litellm-api-config.js +8 -0
  105. package/ccw/dist/types/litellm-api-config.js.map +1 -0
  106. package/ccw/src/cli.ts +258 -244
  107. package/ccw/src/commands/cli.ts +153 -9
  108. package/ccw/src/commands/hook.ts +3 -2
  109. package/ccw/src/config/.litellm-api-config-manager.ts.2025-12-23T11-57-43-727Z.bak +441 -0
  110. package/ccw/src/config/litellm-api-config-manager.ts +1012 -0
  111. package/ccw/src/config/provider-models.ts +222 -0
  112. package/ccw/src/core/cache-manager.ts +292 -294
  113. package/ccw/src/core/dashboard-generator.ts +3 -1
  114. package/ccw/src/core/routes/cli-routes.ts +192 -0
  115. package/ccw/src/core/routes/codexlens-routes.ts +241 -19
  116. package/ccw/src/core/routes/hooks-routes.ts +399 -405
  117. package/ccw/src/core/routes/litellm-api-routes.ts +930 -0
  118. package/ccw/src/core/routes/litellm-routes.ts +107 -0
  119. package/ccw/src/core/routes/mcp-routes.ts +1271 -1271
  120. package/ccw/src/core/routes/status-routes.ts +51 -0
  121. package/ccw/src/core/routes/system-routes.ts +1 -1
  122. package/ccw/src/core/server.ts +15 -1
  123. package/ccw/src/mcp-server/index.ts +1 -1
  124. package/ccw/src/templates/dashboard-css/12-cli-legacy.css +44 -0
  125. package/ccw/src/templates/dashboard-css/31-api-settings.css +2265 -0
  126. package/ccw/src/templates/dashboard-js/components/cli-history.js +15 -8
  127. package/ccw/src/templates/dashboard-js/components/cli-status.js +323 -9
  128. package/ccw/src/templates/dashboard-js/components/navigation.js +329 -313
  129. package/ccw/src/templates/dashboard-js/i18n.js +583 -1
  130. package/ccw/src/templates/dashboard-js/views/api-settings.js +3362 -0
  131. package/ccw/src/templates/dashboard-js/views/cli-manager.js +199 -24
  132. package/ccw/src/templates/dashboard-js/views/codexlens-manager.js +1265 -27
  133. package/ccw/src/templates/dashboard.html +840 -831
  134. package/ccw/src/tools/claude-cli-tools.ts +300 -0
  135. package/ccw/src/tools/cli-executor.ts +83 -14
  136. package/ccw/src/tools/codex-lens.ts +146 -9
  137. package/ccw/src/tools/context-cache-store.ts +368 -0
  138. package/ccw/src/tools/context-cache.ts +393 -0
  139. package/ccw/src/tools/core-memory.ts +33 -19
  140. package/ccw/src/tools/index.ts +2 -0
  141. package/ccw/src/tools/litellm-client.ts +246 -0
  142. package/ccw/src/tools/litellm-executor.ts +241 -0
  143. package/ccw/src/tools/pattern-parser.ts +329 -0
  144. package/ccw/src/tools/smart-search.ts +142 -41
  145. package/ccw/src/types/litellm-api-config.ts +402 -0
  146. package/ccw-litellm/README.md +180 -0
  147. package/ccw-litellm/pyproject.toml +35 -0
  148. package/ccw-litellm/src/ccw_litellm/__init__.py +47 -0
  149. package/ccw-litellm/src/ccw_litellm/__pycache__/__init__.cpython-313.pyc +0 -0
  150. package/ccw-litellm/src/ccw_litellm/__pycache__/cli.cpython-313.pyc +0 -0
  151. package/ccw-litellm/src/ccw_litellm/cli.py +108 -0
  152. package/ccw-litellm/src/ccw_litellm/clients/__init__.py +12 -0
  153. package/ccw-litellm/src/ccw_litellm/clients/__pycache__/__init__.cpython-313.pyc +0 -0
  154. package/ccw-litellm/src/ccw_litellm/clients/__pycache__/litellm_embedder.cpython-313.pyc +0 -0
  155. package/ccw-litellm/src/ccw_litellm/clients/__pycache__/litellm_llm.cpython-313.pyc +0 -0
  156. package/ccw-litellm/src/ccw_litellm/clients/litellm_embedder.py +251 -0
  157. package/ccw-litellm/src/ccw_litellm/clients/litellm_llm.py +165 -0
  158. package/ccw-litellm/src/ccw_litellm/config/__init__.py +22 -0
  159. package/ccw-litellm/src/ccw_litellm/config/__pycache__/__init__.cpython-313.pyc +0 -0
  160. package/ccw-litellm/src/ccw_litellm/config/__pycache__/loader.cpython-313.pyc +0 -0
  161. package/ccw-litellm/src/ccw_litellm/config/__pycache__/models.cpython-313.pyc +0 -0
  162. package/ccw-litellm/src/ccw_litellm/config/loader.py +316 -0
  163. package/ccw-litellm/src/ccw_litellm/config/models.py +130 -0
  164. package/ccw-litellm/src/ccw_litellm/interfaces/__init__.py +14 -0
  165. package/ccw-litellm/src/ccw_litellm/interfaces/__pycache__/__init__.cpython-313.pyc +0 -0
  166. package/ccw-litellm/src/ccw_litellm/interfaces/__pycache__/embedder.cpython-313.pyc +0 -0
  167. package/ccw-litellm/src/ccw_litellm/interfaces/__pycache__/llm.cpython-313.pyc +0 -0
  168. package/ccw-litellm/src/ccw_litellm/interfaces/embedder.py +52 -0
  169. package/ccw-litellm/src/ccw_litellm/interfaces/llm.py +45 -0
  170. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  171. package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
  172. package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
  173. package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
  174. package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
  175. package/codex-lens/src/codexlens/cli/commands.py +378 -23
  176. package/codex-lens/src/codexlens/cli/embedding_manager.py +660 -56
  177. package/codex-lens/src/codexlens/cli/model_manager.py +31 -18
  178. package/codex-lens/src/codexlens/cli/output.py +12 -1
  179. package/codex-lens/src/codexlens/config.py +93 -0
  180. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  181. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  182. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  183. package/codex-lens/src/codexlens/search/chain_search.py +6 -2
  184. package/codex-lens/src/codexlens/search/hybrid_search.py +44 -21
  185. package/codex-lens/src/codexlens/search/ranking.py +1 -1
  186. package/codex-lens/src/codexlens/semantic/__init__.py +42 -0
  187. package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
  188. package/codex-lens/src/codexlens/semantic/__pycache__/base.cpython-313.pyc +0 -0
  189. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
  190. package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
  191. package/codex-lens/src/codexlens/semantic/__pycache__/factory.cpython-313.pyc +0 -0
  192. package/codex-lens/src/codexlens/semantic/__pycache__/gpu_support.cpython-313.pyc +0 -0
  193. package/codex-lens/src/codexlens/semantic/__pycache__/litellm_embedder.cpython-313.pyc +0 -0
  194. package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
  195. package/codex-lens/src/codexlens/semantic/base.py +61 -0
  196. package/codex-lens/src/codexlens/semantic/chunker.py +43 -20
  197. package/codex-lens/src/codexlens/semantic/embedder.py +60 -13
  198. package/codex-lens/src/codexlens/semantic/factory.py +98 -0
  199. package/codex-lens/src/codexlens/semantic/gpu_support.py +225 -3
  200. package/codex-lens/src/codexlens/semantic/litellm_embedder.py +144 -0
  201. package/codex-lens/src/codexlens/semantic/rotational_embedder.py +434 -0
  202. package/codex-lens/src/codexlens/semantic/vector_store.py +33 -8
  203. package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
  204. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
  205. package/codex-lens/src/codexlens/storage/path_mapper.py +27 -1
  206. package/package.json +15 -5
  207. package/.codex/prompts.zip +0 -0
  208. package/ccw/package.json +0 -65
@@ -19,13 +19,18 @@ const i18n = {
19
19
  'common.delete': 'Delete',
20
20
  'common.cancel': 'Cancel',
21
21
  'common.save': 'Save',
22
+ 'common.include': 'Include',
22
23
  'common.close': 'Close',
23
24
  'common.loading': 'Loading...',
24
25
  'common.error': 'Error',
25
26
  'common.success': 'Success',
27
+ 'common.deleteSuccess': 'Deleted successfully',
28
+ 'common.deleteFailed': 'Delete failed',
26
29
  'common.retry': 'Retry',
27
30
  'common.refresh': 'Refresh',
28
31
  'common.minutes': 'minutes',
32
+ 'common.enabled': 'Enabled',
33
+ 'common.disabled': 'Disabled',
29
34
 
30
35
  // Header
31
36
  'header.project': 'Project:',
@@ -41,6 +46,7 @@ const i18n = {
41
46
  'nav.explorer': 'Explorer',
42
47
  'nav.status': 'Status',
43
48
  'nav.history': 'History',
49
+ 'nav.codexLensManager': 'CodexLens',
44
50
  'nav.memory': 'Memory',
45
51
  'nav.contextMemory': 'Context',
46
52
  'nav.coreMemory': 'Core Memory',
@@ -98,7 +104,8 @@ const i18n = {
98
104
  'title.hookManager': 'Hook Manager',
99
105
  'title.memoryModule': 'Memory Module',
100
106
  'title.promptHistory': 'Prompt History',
101
-
107
+ 'title.codexLensManager': 'CodexLens Manager',
108
+
102
109
  // Search
103
110
  'search.placeholder': 'Search...',
104
111
 
@@ -215,6 +222,7 @@ const i18n = {
215
222
  'cli.default': 'Default',
216
223
  'cli.install': 'Install',
217
224
  'cli.uninstall': 'Uninstall',
225
+ 'cli.openManager': 'Manager',
218
226
  'cli.initIndex': 'Init Index',
219
227
  'cli.geminiDesc': 'Google AI for code analysis',
220
228
  'cli.qwenDesc': 'Alibaba AI assistant',
@@ -223,12 +231,19 @@ const i18n = {
223
231
  'cli.codexLensDescFull': 'Full-text code search engine',
224
232
  'cli.semanticDesc': 'AI-powered code understanding',
225
233
  'cli.semanticDescFull': 'Natural language code search',
234
+ 'cli.apiEndpoints': 'API Endpoints',
235
+ 'cli.configured': 'configured',
236
+ 'cli.addToCli': 'Add to CLI',
237
+ 'cli.enabled': 'Enabled',
238
+ 'cli.disabled': 'Disabled',
226
239
 
227
240
  // CodexLens Configuration
228
241
  'codexlens.config': 'CodexLens Configuration',
242
+ 'codexlens.configDesc': 'Manage code indexing, semantic search, and embedding models',
229
243
  'codexlens.status': 'Status',
230
244
  'codexlens.installed': 'Installed',
231
245
  'codexlens.notInstalled': 'Not Installed',
246
+ 'codexlens.installFirst': 'Install CodexLens to access semantic search and model management features',
232
247
  'codexlens.indexes': 'Indexes',
233
248
  'codexlens.currentWorkspace': 'Current Workspace',
234
249
  'codexlens.indexStoragePath': 'Index Storage Path',
@@ -237,6 +252,8 @@ const i18n = {
237
252
  'codexlens.newStoragePath': 'New Storage Path',
238
253
  'codexlens.pathPlaceholder': 'e.g., /path/to/indexes or ~/.codexlens/indexes',
239
254
  'codexlens.pathInfo': 'Supports ~ for home directory. Changes take effect immediately.',
255
+ 'codexlens.pathUnchanged': 'Path unchanged',
256
+ 'codexlens.pathEmpty': 'Path cannot be empty',
240
257
  'codexlens.migrationRequired': 'Migration Required',
241
258
  'codexlens.migrationWarning': 'After changing the path, existing indexes will need to be re-initialized for each workspace.',
242
259
  'codexlens.actions': 'Actions',
@@ -244,6 +261,50 @@ const i18n = {
244
261
  'codexlens.cleanCurrentWorkspace': 'Clean Current Workspace',
245
262
  'codexlens.cleanAllIndexes': 'Clean All Indexes',
246
263
  'codexlens.installCodexLens': 'Install CodexLens',
264
+ 'codexlens.createIndex': 'Create Index',
265
+ 'codexlens.embeddingBackend': 'Embedding Backend',
266
+ 'codexlens.localFastembed': 'Local (FastEmbed)',
267
+ 'codexlens.apiLitellm': 'API (LiteLLM)',
268
+ 'codexlens.backendHint': 'Select local model or remote API endpoint',
269
+ 'codexlens.noApiModels': 'No API embedding models configured',
270
+ 'codexlens.embeddingModel': 'Embedding Model',
271
+ 'codexlens.modelHint': 'Select embedding model for vector search (models with ✓ are installed)',
272
+ 'codexlens.concurrency': 'API Concurrency',
273
+ 'codexlens.concurrencyHint': 'Number of parallel API calls. Higher values speed up indexing but may hit rate limits.',
274
+ 'codexlens.concurrencyCustom': 'Custom',
275
+ 'codexlens.rotation': 'Multi-Provider Rotation',
276
+ 'codexlens.rotationDesc': 'Aggregate multiple API providers and keys for parallel embedding generation',
277
+ 'codexlens.rotationEnabled': 'Enable Rotation',
278
+ 'codexlens.rotationStrategy': 'Rotation Strategy',
279
+ 'codexlens.strategyRoundRobin': 'Round Robin',
280
+ 'codexlens.strategyLatencyAware': 'Latency Aware',
281
+ 'codexlens.strategyWeightedRandom': 'Weighted Random',
282
+ 'codexlens.targetModel': 'Target Model',
283
+ 'codexlens.targetModelHint': 'Model name that all providers should support (e.g., qwen3-embedding)',
284
+ 'codexlens.cooldownSeconds': 'Cooldown (seconds)',
285
+ 'codexlens.cooldownHint': 'Default cooldown after rate limit (60s recommended)',
286
+ 'codexlens.rotationProviders': 'Rotation Providers',
287
+ 'codexlens.addProvider': 'Add Provider',
288
+ 'codexlens.noRotationProviders': 'No providers configured for rotation',
289
+ 'codexlens.providerWeight': 'Weight',
290
+ 'codexlens.maxConcurrentPerKey': 'Max Concurrent/Key',
291
+ 'codexlens.useAllKeys': 'Use All Keys',
292
+ 'codexlens.selectKeys': 'Select Keys',
293
+ 'codexlens.configureRotation': 'Configure Rotation',
294
+ 'codexlens.configureInApiSettings': 'Configure in API Settings',
295
+ 'codexlens.rotationSaved': 'Rotation config saved successfully',
296
+ 'codexlens.endpointsSynced': 'endpoints synced to CodexLens',
297
+ 'codexlens.syncFailed': 'Sync failed',
298
+ 'codexlens.rotationDeleted': 'Rotation config deleted',
299
+ 'codexlens.totalEndpoints': 'Total Endpoints',
300
+ 'codexlens.fullIndex': 'Full',
301
+ 'codexlens.vectorIndex': 'Vector',
302
+ 'codexlens.ftsIndex': 'FTS',
303
+ 'codexlens.fullIndexDesc': 'FTS + Semantic search (recommended)',
304
+ 'codexlens.vectorIndexDesc': 'Semantic search with embeddings only',
305
+ 'codexlens.ftsIndexDesc': 'Fast full-text search only',
306
+ 'codexlens.indexTypeHint': 'Full index includes FTS + semantic search. FTS only is faster but without AI-powered search.',
307
+ 'codexlens.maintenance': 'Maintenance',
247
308
  'codexlens.testSearch': 'Test Search',
248
309
  'codexlens.testFunctionality': 'test CodexLens functionality',
249
310
  'codexlens.textSearch': 'Text Search',
@@ -257,6 +318,9 @@ const i18n = {
257
318
  'codexlens.runSearch': 'Run Search',
258
319
  'codexlens.results': 'Results',
259
320
  'codexlens.resultsCount': 'results',
321
+ 'codexlens.resultLimit': 'Limit',
322
+ 'codexlens.contentLength': 'Content Length',
323
+ 'codexlens.extraFiles': 'Extra Files',
260
324
  'codexlens.saveConfig': 'Save Configuration',
261
325
  'codexlens.searching': 'Searching...',
262
326
  'codexlens.searchCompleted': 'Search completed',
@@ -291,6 +355,17 @@ const i18n = {
291
355
  'codexlens.cudaModeDesc': 'NVIDIA GPU (requires CUDA Toolkit)',
292
356
  'common.recommended': 'Recommended',
293
357
  'common.unavailable': 'Unavailable',
358
+ 'common.auto': 'Auto',
359
+
360
+ // GPU Device Selection
361
+ 'codexlens.selectGpuDevice': 'Select GPU Device',
362
+ 'codexlens.discrete': 'Discrete',
363
+ 'codexlens.integrated': 'Integrated',
364
+ 'codexlens.selectingGpu': 'Selecting GPU...',
365
+ 'codexlens.gpuSelected': 'GPU selected',
366
+ 'codexlens.resettingGpu': 'Resetting GPU selection...',
367
+ 'codexlens.gpuReset': 'GPU selection reset to auto',
368
+ 'codexlens.resetToAuto': 'Reset to Auto',
294
369
  'codexlens.modelManagement': 'Model Management',
295
370
  'codexlens.loadingModels': 'Loading models...',
296
371
  'codexlens.downloadModel': 'Download',
@@ -342,6 +417,8 @@ const i18n = {
342
417
  'codexlens.indexComplete': 'Index complete',
343
418
  'codexlens.indexSuccess': 'Index created successfully',
344
419
  'codexlens.indexFailed': 'Indexing failed',
420
+ 'codexlens.embeddingsFailed': 'Embeddings generation failed',
421
+ 'codexlens.ftsSuccessEmbeddingsFailed': 'FTS index created, but embeddings failed',
345
422
 
346
423
  // CodexLens Install
347
424
  'codexlens.installDesc': 'Python-based code indexing engine',
@@ -444,6 +521,19 @@ const i18n = {
444
521
  'lang.windowsDisableSuccess': 'Windows platform guidelines disabled',
445
522
  'lang.windowsEnableFailed': 'Failed to enable Windows platform guidelines',
446
523
  'lang.windowsDisableFailed': 'Failed to disable Windows platform guidelines',
524
+ 'lang.installRequired': 'Run "ccw install" to enable this feature',
525
+
526
+ // CCW Installation Status
527
+ 'status.installed': 'Installed',
528
+ 'status.incomplete': 'Incomplete',
529
+ 'status.notInstalled': 'Not Installed',
530
+ 'status.ccwInstall': 'CCW Workflows',
531
+ 'status.ccwInstallDesc': 'Required workflow files for full functionality',
532
+ 'status.required': 'Required',
533
+ 'status.filesMissing': 'files missing',
534
+ 'status.missingFiles': 'Missing files',
535
+ 'status.runToFix': 'Run to fix',
536
+
447
537
  'cli.promptFormat': 'Prompt Format',
448
538
  'cli.promptFormatDesc': 'Format for multi-turn conversation concatenation',
449
539
  'cli.storageBackend': 'Storage Backend',
@@ -1289,6 +1379,206 @@ const i18n = {
1289
1379
  'claude.unsupportedFileType': 'Unsupported file type',
1290
1380
  'claude.loadFileError': 'Failed to load file',
1291
1381
 
1382
+
1383
+ // API Settings
1384
+ 'nav.apiSettings': 'API Settings',
1385
+ 'title.apiSettings': 'API Settings',
1386
+ 'apiSettings.providers': 'Providers',
1387
+ 'apiSettings.customEndpoints': 'Custom Endpoints',
1388
+ 'apiSettings.cacheSettings': 'Cache Settings',
1389
+ 'apiSettings.addProvider': 'Add Provider',
1390
+ 'apiSettings.editProvider': 'Edit Provider',
1391
+ 'apiSettings.deleteProvider': 'Delete Provider',
1392
+ 'apiSettings.addEndpoint': 'Add Endpoint',
1393
+ 'apiSettings.editEndpoint': 'Edit Endpoint',
1394
+ 'apiSettings.deleteEndpoint': 'Delete Endpoint',
1395
+ 'apiSettings.providerType': 'Provider Type',
1396
+ 'apiSettings.apiFormat': 'API Format',
1397
+ 'apiSettings.compatible': 'Compatible',
1398
+ 'apiSettings.customFormat': 'Custom Format',
1399
+ 'apiSettings.apiFormatHint': 'Most providers (DeepSeek, Ollama, etc.) use OpenAI-compatible format',
1400
+ 'apiSettings.displayName': 'Display Name',
1401
+ 'apiSettings.apiKey': 'API Key',
1402
+ 'apiSettings.apiBaseUrl': 'API Base URL',
1403
+ 'apiSettings.useEnvVar': 'Use environment variable',
1404
+ 'apiSettings.enableProvider': 'Enable provider',
1405
+ 'apiSettings.advancedSettings': 'Advanced Settings',
1406
+ 'apiSettings.basicInfo': 'Basic Info',
1407
+ 'apiSettings.endpointSettings': 'Endpoint Settings',
1408
+ 'apiSettings.timeout': 'Timeout (seconds)',
1409
+ 'apiSettings.seconds': 'seconds',
1410
+ 'apiSettings.timeoutHint': 'Request timeout in seconds (default: 300)',
1411
+ 'apiSettings.maxRetries': 'Max Retries',
1412
+ 'apiSettings.maxRetriesHint': 'Maximum retry attempts on failure',
1413
+ 'apiSettings.organization': 'Organization ID',
1414
+ 'apiSettings.organizationHint': 'OpenAI organization ID (org-...)',
1415
+ 'apiSettings.apiVersion': 'API Version',
1416
+ 'apiSettings.apiVersionHint': 'Azure API version (e.g., 2024-02-01)',
1417
+ 'apiSettings.rpm': 'RPM Limit',
1418
+ 'apiSettings.tpm': 'TPM Limit',
1419
+ 'apiSettings.unlimited': 'Unlimited',
1420
+ 'apiSettings.proxy': 'Proxy Server',
1421
+ 'apiSettings.proxyHint': 'HTTP proxy server URL',
1422
+ 'apiSettings.customHeaders': 'Custom Headers',
1423
+ 'apiSettings.customHeadersHint': 'JSON object with custom HTTP headers',
1424
+ 'apiSettings.invalidJsonHeaders': 'Invalid JSON in custom headers',
1425
+ 'apiSettings.searchProviders': 'Search providers...',
1426
+ 'apiSettings.selectProvider': 'Select a Provider',
1427
+ 'apiSettings.selectProviderHint': 'Select a provider from the list to view and manage its settings',
1428
+ 'apiSettings.noProvidersFound': 'No providers found',
1429
+ 'apiSettings.llmModels': 'LLM Models',
1430
+ 'apiSettings.embeddingModels': 'Embedding Models',
1431
+ 'apiSettings.manageModels': 'Manage',
1432
+ 'apiSettings.addModel': 'Add Model',
1433
+ 'apiSettings.multiKeySettings': 'Multi-Key Settings',
1434
+ 'apiSettings.noModels': 'No models configured',
1435
+ 'apiSettings.previewModel': 'Preview',
1436
+ 'apiSettings.modelSettings': 'Model Settings',
1437
+ 'apiSettings.deleteModel': 'Delete Model',
1438
+ 'apiSettings.endpointPreview': 'Endpoint Preview',
1439
+ 'apiSettings.modelBaseUrlOverride': 'Base URL Override',
1440
+ 'apiSettings.modelBaseUrlHint': 'Override the provider base URL for this specific model (leave empty to use provider default)',
1441
+ 'apiSettings.providerUpdated': 'Provider updated',
1442
+ 'apiSettings.syncToCodexLens': 'Sync to CodexLens',
1443
+ 'apiSettings.configSynced': 'Config synced to CodexLens',
1444
+ 'apiSettings.sdkAutoAppends': 'SDK auto-appends',
1445
+ 'apiSettings.preview': 'Preview',
1446
+ 'apiSettings.used': 'used',
1447
+ 'apiSettings.total': 'total',
1448
+ 'apiSettings.testConnection': 'Test Connection',
1449
+ 'apiSettings.endpointId': 'Endpoint ID',
1450
+ 'apiSettings.endpointIdHint': 'Usage: ccw cli -p "..." --model <endpoint-id>',
1451
+ 'apiSettings.endpoints': 'Endpoints',
1452
+ 'apiSettings.addEndpointHint': 'Create custom endpoint aliases for CLI usage',
1453
+ 'apiSettings.endpointModel': 'Model',
1454
+ 'apiSettings.selectEndpoint': 'Select an endpoint',
1455
+ 'apiSettings.selectEndpointHint': 'Choose an endpoint from the list to view or edit its settings',
1456
+ 'apiSettings.provider': 'Provider',
1457
+ 'apiSettings.model': 'Model',
1458
+ 'apiSettings.selectModel': 'Select model',
1459
+ 'apiSettings.noModelsConfigured': 'No models configured for this provider',
1460
+ 'apiSettings.cacheStrategy': 'Cache Strategy',
1461
+ 'apiSettings.enableContextCaching': 'Enable Context Caching',
1462
+ 'apiSettings.cacheTTL': 'TTL (minutes)',
1463
+ 'apiSettings.cacheMaxSize': 'Max Size (KB)',
1464
+ 'apiSettings.autoCachePatterns': 'Auto-cache file patterns',
1465
+ 'apiSettings.enableGlobalCaching': 'Enable Global Caching',
1466
+ 'apiSettings.cacheUsed': 'Used',
1467
+ 'apiSettings.cacheEntries': 'Entries',
1468
+ 'apiSettings.clearCache': 'Clear Cache',
1469
+ 'apiSettings.noProviders': 'No providers configured',
1470
+ 'apiSettings.noEndpoints': 'No endpoints configured',
1471
+ 'apiSettings.enabled': 'Enabled',
1472
+ 'apiSettings.disabled': 'Disabled',
1473
+ 'apiSettings.cacheEnabled': 'Cache Enabled',
1474
+ 'apiSettings.cacheDisabled': 'Cache Disabled',
1475
+ 'apiSettings.providerSaved': 'Provider saved successfully',
1476
+ 'apiSettings.providerDeleted': 'Provider deleted successfully',
1477
+ 'apiSettings.apiBaseUpdated': 'API Base URL updated successfully',
1478
+ 'apiSettings.endpointSaved': 'Endpoint saved successfully',
1479
+ 'apiSettings.endpointDeleted': 'Endpoint deleted successfully',
1480
+ 'apiSettings.cacheCleared': 'Cache cleared successfully',
1481
+ 'apiSettings.cacheSettingsUpdated': 'Cache settings updated',
1482
+ 'apiSettings.embeddingPool': 'Embedding Pool',
1483
+ 'apiSettings.embeddingPoolDesc': 'Auto-rotate between providers with same model',
1484
+ 'apiSettings.targetModel': 'Target Model',
1485
+ 'apiSettings.discoveredProviders': 'Discovered Providers',
1486
+ 'apiSettings.autoDiscover': 'Auto-discover providers',
1487
+ 'apiSettings.excludeProvider': 'Exclude',
1488
+ 'apiSettings.defaultCooldown': 'Cooldown (seconds)',
1489
+ 'apiSettings.defaultConcurrent': 'Concurrent per key',
1490
+ 'apiSettings.poolEnabled': 'Enable Embedding Pool',
1491
+ 'apiSettings.noProvidersFound': 'No providers found for this model',
1492
+ 'apiSettings.poolSaved': 'Embedding pool config saved',
1493
+ 'apiSettings.strategy': 'Strategy',
1494
+ 'apiSettings.providerKeys': 'keys',
1495
+ 'apiSettings.selectTargetModel': 'Select target model',
1496
+ 'apiSettings.confirmDeleteProvider': 'Are you sure you want to delete this provider?',
1497
+ 'apiSettings.confirmDeleteEndpoint': 'Are you sure you want to delete this endpoint?',
1498
+ 'apiSettings.confirmClearCache': 'Are you sure you want to clear the cache?',
1499
+ 'apiSettings.connectionSuccess': 'Connection successful',
1500
+ 'apiSettings.connectionFailed': 'Connection failed',
1501
+ 'apiSettings.saveProviderFirst': 'Please save the provider first',
1502
+ 'apiSettings.addProviderFirst': 'Please add a provider first',
1503
+ 'apiSettings.failedToLoad': 'Failed to load API settings',
1504
+ 'apiSettings.toggleVisibility': 'Toggle visibility',
1505
+ 'apiSettings.noProvidersHint': 'Add an API provider to get started',
1506
+ 'apiSettings.noEndpointsHint': 'Create custom endpoints for quick access to models',
1507
+ 'apiSettings.cache': 'Cache',
1508
+ 'apiSettings.off': 'Off',
1509
+ 'apiSettings.used': 'used',
1510
+ 'apiSettings.total': 'total',
1511
+ 'apiSettings.cacheUsage': 'Usage',
1512
+ 'apiSettings.cacheSize': 'Size',
1513
+ 'apiSettings.endpointsDescription': 'Manage custom API endpoints for quick model access',
1514
+ 'apiSettings.totalEndpoints': 'Total Endpoints',
1515
+ 'apiSettings.cachedEndpoints': 'Cached Endpoints',
1516
+ 'apiSettings.cacheTabHint': 'Configure global cache settings and view statistics in the main panel',
1517
+ 'apiSettings.cacheDescription': 'Manage response caching to improve performance and reduce costs',
1518
+ 'apiSettings.cachedEntries': 'Cached Entries',
1519
+ 'apiSettings.storageUsed': 'Storage Used',
1520
+ 'apiSettings.cacheActions': 'Cache Actions',
1521
+ 'apiSettings.cacheStatistics': 'Cache Statistics',
1522
+ 'apiSettings.globalCache': 'Global Cache',
1523
+
1524
+ // Multi-key management
1525
+ 'apiSettings.apiKeys': 'API Keys',
1526
+ 'apiSettings.addKey': 'Add Key',
1527
+ 'apiSettings.keyLabel': 'Label',
1528
+ 'apiSettings.keyValue': 'API Key',
1529
+ 'apiSettings.keyWeight': 'Weight',
1530
+ 'apiSettings.removeKey': 'Remove',
1531
+ 'apiSettings.noKeys': 'No API keys configured',
1532
+ 'apiSettings.primaryKey': 'Primary Key',
1533
+
1534
+ // Routing strategy
1535
+ 'apiSettings.routingStrategy': 'Routing Strategy',
1536
+ 'apiSettings.simpleShuffleRouting': 'Simple Shuffle (Random)',
1537
+ 'apiSettings.weightedRouting': 'Weighted Distribution',
1538
+ 'apiSettings.latencyRouting': 'Latency-Based',
1539
+ 'apiSettings.costRouting': 'Cost-Based',
1540
+ 'apiSettings.leastBusyRouting': 'Least Busy',
1541
+ 'apiSettings.routingHint': 'How to distribute requests across multiple API keys',
1542
+
1543
+ // Health check
1544
+ 'apiSettings.healthCheck': 'Health Check',
1545
+ 'apiSettings.enableHealthCheck': 'Enable Health Check',
1546
+ 'apiSettings.healthInterval': 'Check Interval (seconds)',
1547
+ 'apiSettings.healthCooldown': 'Cooldown (seconds)',
1548
+ 'apiSettings.failureThreshold': 'Failure Threshold',
1549
+ 'apiSettings.healthStatus': 'Status',
1550
+ 'apiSettings.healthy': 'Healthy',
1551
+ 'apiSettings.unhealthy': 'Unhealthy',
1552
+ 'apiSettings.unknown': 'Unknown',
1553
+ 'apiSettings.lastCheck': 'Last Check',
1554
+ 'apiSettings.testKey': 'Test Key',
1555
+ 'apiSettings.testingKey': 'Testing...',
1556
+ 'apiSettings.keyValid': 'Key is valid',
1557
+ 'apiSettings.keyInvalid': 'Key is invalid',
1558
+
1559
+ // Embedding models
1560
+ 'apiSettings.embeddingDimensions': 'Dimensions',
1561
+ 'apiSettings.embeddingMaxTokens': 'Max Tokens',
1562
+ 'apiSettings.selectEmbeddingModel': 'Select Embedding Model',
1563
+
1564
+ // Model modal
1565
+ 'apiSettings.addLlmModel': 'Add LLM Model',
1566
+ 'apiSettings.addEmbeddingModel': 'Add Embedding Model',
1567
+ 'apiSettings.modelId': 'Model ID',
1568
+ 'apiSettings.modelName': 'Display Name',
1569
+ 'apiSettings.modelSeries': 'Series',
1570
+ 'apiSettings.selectFromPresets': 'Select from Presets',
1571
+ 'apiSettings.customModel': 'Custom Model',
1572
+ 'apiSettings.capabilities': 'Capabilities',
1573
+ 'apiSettings.streaming': 'Streaming',
1574
+ 'apiSettings.functionCalling': 'Function Calling',
1575
+ 'apiSettings.vision': 'Vision',
1576
+ 'apiSettings.contextWindow': 'Context Window',
1577
+ 'apiSettings.description': 'Description',
1578
+ 'apiSettings.optional': 'Optional',
1579
+ 'apiSettings.modelIdExists': 'Model ID already exists',
1580
+ 'apiSettings.useModelTreeToManage': 'Use the model tree to manage individual models',
1581
+
1292
1582
  // Common
1293
1583
  'common.cancel': 'Cancel',
1294
1584
  'common.optional': '(Optional)',
@@ -1312,6 +1602,7 @@ const i18n = {
1312
1602
  'common.saveFailed': 'Failed to save',
1313
1603
  'common.unknownError': 'Unknown error',
1314
1604
  'common.exception': 'Exception',
1605
+ 'common.status': 'Status',
1315
1606
 
1316
1607
  // Core Memory
1317
1608
  'title.coreMemory': 'Core Memory',
@@ -1435,13 +1726,18 @@ const i18n = {
1435
1726
  'common.delete': '删除',
1436
1727
  'common.cancel': '取消',
1437
1728
  'common.save': '保存',
1729
+ 'common.include': '包含',
1438
1730
  'common.close': '关闭',
1439
1731
  'common.loading': '加载中...',
1440
1732
  'common.error': '错误',
1441
1733
  'common.success': '成功',
1734
+ 'common.deleteSuccess': '删除成功',
1735
+ 'common.deleteFailed': '删除失败',
1442
1736
  'common.retry': '重试',
1443
1737
  'common.refresh': '刷新',
1444
1738
  'common.minutes': '分钟',
1739
+ 'common.enabled': '已启用',
1740
+ 'common.disabled': '已禁用',
1445
1741
 
1446
1742
  // Header
1447
1743
  'header.project': '项目:',
@@ -1457,6 +1753,7 @@ const i18n = {
1457
1753
  'nav.explorer': '文件浏览器',
1458
1754
  'nav.status': '状态',
1459
1755
  'nav.history': '历史',
1756
+ 'nav.codexLensManager': 'CodexLens',
1460
1757
  'nav.memory': '记忆',
1461
1758
  'nav.contextMemory': '活动',
1462
1759
  'nav.coreMemory': '核心记忆',
@@ -1514,6 +1811,7 @@ const i18n = {
1514
1811
  'title.hookManager': '钩子管理',
1515
1812
  'title.memoryModule': '记忆模块',
1516
1813
  'title.promptHistory': '提示历史',
1814
+ 'title.codexLensManager': 'CodexLens 管理',
1517
1815
 
1518
1816
  // Search
1519
1817
  'search.placeholder': '搜索...',
@@ -1631,6 +1929,7 @@ const i18n = {
1631
1929
  'cli.default': '默认',
1632
1930
  'cli.install': '安装',
1633
1931
  'cli.uninstall': '卸载',
1932
+ 'cli.openManager': '管理',
1634
1933
  'cli.initIndex': '初始化索引',
1635
1934
  'cli.geminiDesc': 'Google AI 代码分析',
1636
1935
  'cli.qwenDesc': '阿里通义 AI 助手',
@@ -1639,12 +1938,19 @@ const i18n = {
1639
1938
  'cli.codexLensDescFull': '全文代码搜索引擎',
1640
1939
  'cli.semanticDesc': 'AI 驱动的代码理解',
1641
1940
  'cli.semanticDescFull': '自然语言代码搜索',
1941
+ 'cli.apiEndpoints': 'API 端点',
1942
+ 'cli.configured': '已配置',
1943
+ 'cli.addToCli': '添加到 CLI',
1944
+ 'cli.enabled': '已启用',
1945
+ 'cli.disabled': '已禁用',
1642
1946
 
1643
1947
  // CodexLens 配置
1644
1948
  'codexlens.config': 'CodexLens 配置',
1949
+ 'codexlens.configDesc': '管理代码索引、语义搜索和嵌入模型',
1645
1950
  'codexlens.status': '状态',
1646
1951
  'codexlens.installed': '已安装',
1647
1952
  'codexlens.notInstalled': '未安装',
1953
+ 'codexlens.installFirst': '安装 CodexLens 以访问语义搜索和模型管理功能',
1648
1954
  'codexlens.indexes': '索引',
1649
1955
  'codexlens.currentWorkspace': '当前工作区',
1650
1956
  'codexlens.indexStoragePath': '索引存储路径',
@@ -1653,6 +1959,8 @@ const i18n = {
1653
1959
  'codexlens.newStoragePath': '新存储路径',
1654
1960
  'codexlens.pathPlaceholder': '例如:/path/to/indexes 或 ~/.codexlens/indexes',
1655
1961
  'codexlens.pathInfo': '支持 ~ 表示用户目录。更改立即生效。',
1962
+ 'codexlens.pathUnchanged': '路径未变更',
1963
+ 'codexlens.pathEmpty': '路径不能为空',
1656
1964
  'codexlens.migrationRequired': '需要迁移',
1657
1965
  'codexlens.migrationWarning': '更改路径后,需要为每个工作区重新初始化索引。',
1658
1966
  'codexlens.actions': '操作',
@@ -1660,6 +1968,50 @@ const i18n = {
1660
1968
  'codexlens.cleanCurrentWorkspace': '清理当前工作空间',
1661
1969
  'codexlens.cleanAllIndexes': '清理所有索引',
1662
1970
  'codexlens.installCodexLens': '安装 CodexLens',
1971
+ 'codexlens.createIndex': '创建索引',
1972
+ 'codexlens.embeddingBackend': '嵌入后端',
1973
+ 'codexlens.localFastembed': '本地 (FastEmbed)',
1974
+ 'codexlens.apiLitellm': 'API (LiteLLM)',
1975
+ 'codexlens.backendHint': '选择本地模型或远程 API 端点',
1976
+ 'codexlens.noApiModels': '未配置 API 嵌入模型',
1977
+ 'codexlens.embeddingModel': '嵌入模型',
1978
+ 'codexlens.modelHint': '选择向量搜索的嵌入模型(带 ✓ 的已安装)',
1979
+ 'codexlens.concurrency': 'API 并发数',
1980
+ 'codexlens.concurrencyHint': '并行 API 调用数量。较高的值可加速索引但可能触发速率限制。',
1981
+ 'codexlens.concurrencyCustom': '自定义',
1982
+ 'codexlens.rotation': '多供应商轮训',
1983
+ 'codexlens.rotationDesc': '聚合多个 API 供应商和密钥进行并行嵌入生成',
1984
+ 'codexlens.rotationEnabled': '启用轮训',
1985
+ 'codexlens.rotationStrategy': '轮训策略',
1986
+ 'codexlens.strategyRoundRobin': '轮询',
1987
+ 'codexlens.strategyLatencyAware': '延迟感知',
1988
+ 'codexlens.strategyWeightedRandom': '加权随机',
1989
+ 'codexlens.targetModel': '目标模型',
1990
+ 'codexlens.targetModelHint': '所有供应商应支持的模型名称(例如 qwen3-embedding)',
1991
+ 'codexlens.cooldownSeconds': '冷却时间(秒)',
1992
+ 'codexlens.cooldownHint': '速率限制后的默认冷却时间(推荐 60 秒)',
1993
+ 'codexlens.rotationProviders': '轮训供应商',
1994
+ 'codexlens.addProvider': '添加供应商',
1995
+ 'codexlens.noRotationProviders': '未配置轮训供应商',
1996
+ 'codexlens.providerWeight': '权重',
1997
+ 'codexlens.maxConcurrentPerKey': '每密钥最大并发',
1998
+ 'codexlens.useAllKeys': '使用所有密钥',
1999
+ 'codexlens.selectKeys': '选择密钥',
2000
+ 'codexlens.configureRotation': '配置轮训',
2001
+ 'codexlens.configureInApiSettings': '在 API 设置中配置',
2002
+ 'codexlens.rotationSaved': '轮训配置保存成功',
2003
+ 'codexlens.endpointsSynced': '个端点已同步到 CodexLens',
2004
+ 'codexlens.syncFailed': '同步失败',
2005
+ 'codexlens.rotationDeleted': '轮训配置已删除',
2006
+ 'codexlens.totalEndpoints': '总端点数',
2007
+ 'codexlens.fullIndex': '全部',
2008
+ 'codexlens.vectorIndex': '向量',
2009
+ 'codexlens.ftsIndex': 'FTS',
2010
+ 'codexlens.fullIndexDesc': 'FTS + 语义搜索(推荐)',
2011
+ 'codexlens.vectorIndexDesc': '仅语义嵌入搜索',
2012
+ 'codexlens.ftsIndexDesc': '仅快速全文搜索',
2013
+ 'codexlens.indexTypeHint': '完整索引包含 FTS + 语义搜索。仅 FTS 更快但无 AI 搜索功能。',
2014
+ 'codexlens.maintenance': '维护',
1663
2015
  'codexlens.testSearch': '测试搜索',
1664
2016
  'codexlens.testFunctionality': '测试 CodexLens 功能',
1665
2017
  'codexlens.textSearch': '文本搜索',
@@ -1673,6 +2025,9 @@ const i18n = {
1673
2025
  'codexlens.runSearch': '运行搜索',
1674
2026
  'codexlens.results': '结果',
1675
2027
  'codexlens.resultsCount': '个结果',
2028
+ 'codexlens.resultLimit': '数量限制',
2029
+ 'codexlens.contentLength': '内容长度',
2030
+ 'codexlens.extraFiles': '额外文件',
1676
2031
  'codexlens.saveConfig': '保存配置',
1677
2032
  'codexlens.searching': '搜索中...',
1678
2033
  'codexlens.searchCompleted': '搜索完成',
@@ -1707,6 +2062,18 @@ const i18n = {
1707
2062
  'codexlens.cudaModeDesc': 'NVIDIA GPU(需要 CUDA Toolkit)',
1708
2063
  'common.recommended': '推荐',
1709
2064
  'common.unavailable': '不可用',
2065
+ 'common.auto': '自动',
2066
+
2067
+ // GPU 设备选择
2068
+ 'codexlens.selectGpuDevice': '选择 GPU 设备',
2069
+ 'codexlens.discrete': '独立显卡',
2070
+ 'codexlens.integrated': '集成显卡',
2071
+ 'codexlens.selectingGpu': '选择 GPU 中...',
2072
+ 'codexlens.gpuSelected': 'GPU 已选择',
2073
+ 'codexlens.resettingGpu': '重置 GPU 选择中...',
2074
+ 'codexlens.gpuReset': 'GPU 选择已重置为自动',
2075
+ 'codexlens.resetToAuto': '重置为自动',
2076
+
1710
2077
  'codexlens.modelManagement': '模型管理',
1711
2078
  'codexlens.loadingModels': '加载模型中...',
1712
2079
  'codexlens.downloadModel': '下载',
@@ -1758,6 +2125,8 @@ const i18n = {
1758
2125
  'codexlens.indexComplete': '索引完成',
1759
2126
  'codexlens.indexSuccess': '索引创建成功',
1760
2127
  'codexlens.indexFailed': '索引失败',
2128
+ 'codexlens.embeddingsFailed': '嵌入生成失败',
2129
+ 'codexlens.ftsSuccessEmbeddingsFailed': 'FTS 索引已创建,但嵌入生成失败',
1761
2130
 
1762
2131
  // CodexLens 安装
1763
2132
  'codexlens.installDesc': '基于 Python 的代码索引引擎',
@@ -1860,6 +2229,19 @@ const i18n = {
1860
2229
  'lang.windowsDisableSuccess': 'Windows 平台规范已禁用',
1861
2230
  'lang.windowsEnableFailed': '启用 Windows 平台规范失败',
1862
2231
  'lang.windowsDisableFailed': '禁用 Windows 平台规范失败',
2232
+ 'lang.installRequired': '请运行 "ccw install" 以启用此功能',
2233
+
2234
+ // CCW 安装状态
2235
+ 'status.installed': '已安装',
2236
+ 'status.incomplete': '不完整',
2237
+ 'status.notInstalled': '未安装',
2238
+ 'status.ccwInstall': 'CCW 工作流',
2239
+ 'status.ccwInstallDesc': '完整功能所需的工作流文件',
2240
+ 'status.required': '必需',
2241
+ 'status.filesMissing': '个文件缺失',
2242
+ 'status.missingFiles': '缺失文件',
2243
+ 'status.runToFix': '修复命令',
2244
+
1863
2245
  'cli.promptFormat': '提示词格式',
1864
2246
  'cli.promptFormatDesc': '多轮对话拼接格式',
1865
2247
  'cli.storageBackend': '存储后端',
@@ -2714,6 +3096,205 @@ const i18n = {
2714
3096
  'claudeManager.saved': 'File saved successfully',
2715
3097
  'claudeManager.saveError': 'Failed to save file',
2716
3098
 
3099
+
3100
+ // API Settings
3101
+ 'nav.apiSettings': 'API 设置',
3102
+ 'title.apiSettings': 'API 设置',
3103
+ 'apiSettings.providers': '提供商',
3104
+ 'apiSettings.customEndpoints': '自定义端点',
3105
+ 'apiSettings.cacheSettings': '缓存设置',
3106
+ 'apiSettings.addProvider': '添加提供商',
3107
+ 'apiSettings.editProvider': '编辑提供商',
3108
+ 'apiSettings.deleteProvider': '删除提供商',
3109
+ 'apiSettings.addEndpoint': '添加端点',
3110
+ 'apiSettings.editEndpoint': '编辑端点',
3111
+ 'apiSettings.deleteEndpoint': '删除端点',
3112
+ 'apiSettings.providerType': '提供商类型',
3113
+ 'apiSettings.apiFormat': 'API 格式',
3114
+ 'apiSettings.compatible': '兼容',
3115
+ 'apiSettings.customFormat': '自定义格式',
3116
+ 'apiSettings.apiFormatHint': '大多数供应商(DeepSeek、Ollama 等)使用 OpenAI 兼容格式',
3117
+ 'apiSettings.displayName': '显示名称',
3118
+ 'apiSettings.apiKey': 'API 密钥',
3119
+ 'apiSettings.apiBaseUrl': 'API 基础 URL',
3120
+ 'apiSettings.useEnvVar': '使用环境变量',
3121
+ 'apiSettings.enableProvider': '启用提供商',
3122
+ 'apiSettings.advancedSettings': '高级设置',
3123
+ 'apiSettings.basicInfo': '基本信息',
3124
+ 'apiSettings.endpointSettings': '端点设置',
3125
+ 'apiSettings.timeout': '超时时间(秒)',
3126
+ 'apiSettings.seconds': '秒',
3127
+ 'apiSettings.timeoutHint': '请求超时时间,单位秒(默认:300)',
3128
+ 'apiSettings.maxRetries': '最大重试次数',
3129
+ 'apiSettings.maxRetriesHint': '失败后最大重试次数',
3130
+ 'apiSettings.organization': '组织 ID',
3131
+ 'apiSettings.organizationHint': 'OpenAI 组织 ID(org-...)',
3132
+ 'apiSettings.apiVersion': 'API 版本',
3133
+ 'apiSettings.apiVersionHint': 'Azure API 版本(如 2024-02-01)',
3134
+ 'apiSettings.rpm': 'RPM 限制',
3135
+ 'apiSettings.tpm': 'TPM 限制',
3136
+ 'apiSettings.unlimited': '无限制',
3137
+ 'apiSettings.proxy': '代理服务器',
3138
+ 'apiSettings.proxyHint': 'HTTP 代理服务器 URL',
3139
+ 'apiSettings.customHeaders': '自定义请求头',
3140
+ 'apiSettings.customHeadersHint': '自定义 HTTP 请求头的 JSON 对象',
3141
+ 'apiSettings.invalidJsonHeaders': '自定义请求头 JSON 格式无效',
3142
+ 'apiSettings.searchProviders': '搜索供应商...',
3143
+ 'apiSettings.selectProvider': '选择供应商',
3144
+ 'apiSettings.selectProviderHint': '从列表中选择一个供应商来查看和管理其设置',
3145
+ 'apiSettings.noProvidersFound': '未找到供应商',
3146
+ 'apiSettings.llmModels': '大语言模型',
3147
+ 'apiSettings.embeddingModels': '向量模型',
3148
+ 'apiSettings.manageModels': '管理',
3149
+ 'apiSettings.addModel': '添加模型',
3150
+ 'apiSettings.multiKeySettings': '多密钥设置',
3151
+ 'apiSettings.noModels': '暂无模型配置',
3152
+ 'apiSettings.previewModel': '预览',
3153
+ 'apiSettings.modelSettings': '模型设置',
3154
+ 'apiSettings.deleteModel': '删除模型',
3155
+ 'apiSettings.endpointPreview': '端点预览',
3156
+ 'apiSettings.modelBaseUrlOverride': '基础 URL 覆盖',
3157
+ 'apiSettings.modelBaseUrlHint': '为此模型覆盖供应商的基础 URL(留空则使用供应商默认值)',
3158
+ 'apiSettings.providerUpdated': '供应商已更新',
3159
+ 'apiSettings.syncToCodexLens': '同步到 CodexLens',
3160
+ 'apiSettings.configSynced': '配置已同步到 CodexLens',
3161
+ 'apiSettings.preview': '预览',
3162
+ 'apiSettings.used': '已使用',
3163
+ 'apiSettings.total': '总计',
3164
+ 'apiSettings.testConnection': '测试连接',
3165
+ 'apiSettings.endpointId': '端点 ID',
3166
+ 'apiSettings.endpointIdHint': '用法: ccw cli -p "..." --model <端点ID>',
3167
+ 'apiSettings.endpoints': '端点',
3168
+ 'apiSettings.addEndpointHint': '创建用于 CLI 的自定义端点别名',
3169
+ 'apiSettings.endpointModel': '模型',
3170
+ 'apiSettings.selectEndpoint': '选择端点',
3171
+ 'apiSettings.selectEndpointHint': '从列表中选择一个端点以查看或编辑其设置',
3172
+ 'apiSettings.provider': '提供商',
3173
+ 'apiSettings.model': '模型',
3174
+ 'apiSettings.selectModel': '选择模型',
3175
+ 'apiSettings.noModelsConfigured': '该供应商未配置模型',
3176
+ 'apiSettings.cacheStrategy': '缓存策略',
3177
+ 'apiSettings.enableContextCaching': '启用上下文缓存',
3178
+ 'apiSettings.cacheTTL': 'TTL (分钟)',
3179
+ 'apiSettings.cacheMaxSize': '最大大小 (KB)',
3180
+ 'apiSettings.autoCachePatterns': '自动缓存文件模式',
3181
+ 'apiSettings.enableGlobalCaching': '启用全局缓存',
3182
+ 'apiSettings.cacheUsed': '已使用',
3183
+ 'apiSettings.cacheEntries': '条目数',
3184
+ 'apiSettings.clearCache': '清除缓存',
3185
+ 'apiSettings.noProviders': '未配置提供商',
3186
+ 'apiSettings.noEndpoints': '未配置端点',
3187
+ 'apiSettings.enabled': '已启用',
3188
+ 'apiSettings.disabled': '已禁用',
3189
+ 'apiSettings.cacheEnabled': '缓存已启用',
3190
+ 'apiSettings.cacheDisabled': '缓存已禁用',
3191
+ 'apiSettings.providerSaved': '提供商保存成功',
3192
+ 'apiSettings.providerDeleted': '提供商删除成功',
3193
+ 'apiSettings.apiBaseUpdated': 'API 基础 URL 更新成功',
3194
+ 'apiSettings.endpointSaved': '端点保存成功',
3195
+ 'apiSettings.endpointDeleted': '端点删除成功',
3196
+ 'apiSettings.cacheCleared': '缓存清除成功',
3197
+ 'apiSettings.cacheSettingsUpdated': '缓存设置已更新',
3198
+ 'apiSettings.embeddingPool': '高可用嵌入',
3199
+ 'apiSettings.embeddingPoolDesc': '自动轮训相同模型的供应商',
3200
+ 'apiSettings.targetModel': '目标模型',
3201
+ 'apiSettings.discoveredProviders': '发现的供应商',
3202
+ 'apiSettings.autoDiscover': '自动发现供应商',
3203
+ 'apiSettings.excludeProvider': '排除',
3204
+ 'apiSettings.defaultCooldown': '冷却时间(秒)',
3205
+ 'apiSettings.defaultConcurrent': '每密钥并发数',
3206
+ 'apiSettings.poolEnabled': '启用嵌入池',
3207
+ 'apiSettings.noProvidersFound': '未找到提供此模型的供应商',
3208
+ 'apiSettings.poolSaved': '嵌入池配置已保存',
3209
+ 'apiSettings.strategy': '策略',
3210
+ 'apiSettings.providerKeys': '密钥',
3211
+ 'apiSettings.selectTargetModel': '选择目标模型',
3212
+ 'apiSettings.confirmDeleteProvider': '确定要删除此提供商吗?',
3213
+ 'apiSettings.confirmDeleteEndpoint': '确定要删除此端点吗?',
3214
+ 'apiSettings.confirmClearCache': '确定要清除缓存吗?',
3215
+ 'apiSettings.connectionSuccess': '连接成功',
3216
+ 'apiSettings.connectionFailed': '连接失败',
3217
+ 'apiSettings.saveProviderFirst': '请先保存提供商',
3218
+ 'apiSettings.addProviderFirst': '请先添加提供商',
3219
+ 'apiSettings.failedToLoad': '加载 API 设置失败',
3220
+ 'apiSettings.toggleVisibility': '切换可见性',
3221
+ 'apiSettings.noProvidersHint': '添加 API 提供商以开始使用',
3222
+ 'apiSettings.noEndpointsHint': '创建自定义端点以快速访问模型',
3223
+ 'apiSettings.cache': '缓存',
3224
+ 'apiSettings.off': '关闭',
3225
+ 'apiSettings.used': '已用',
3226
+ 'apiSettings.total': '总计',
3227
+ 'apiSettings.cacheUsage': '使用率',
3228
+ 'apiSettings.cacheSize': '大小',
3229
+ 'apiSettings.endpointsDescription': '管理自定义 API 端点以快速访问模型',
3230
+ 'apiSettings.totalEndpoints': '总端点数',
3231
+ 'apiSettings.cachedEndpoints': '缓存端点数',
3232
+ 'apiSettings.cacheTabHint': '在主面板中配置全局缓存设置并查看统计信息',
3233
+ 'apiSettings.cacheDescription': '管理响应缓存以提高性能并降低成本',
3234
+ 'apiSettings.cachedEntries': '缓存条目',
3235
+ 'apiSettings.storageUsed': '已用存储',
3236
+ 'apiSettings.cacheActions': '缓存操作',
3237
+ 'apiSettings.cacheStatistics': '缓存统计',
3238
+ 'apiSettings.globalCache': '全局缓存',
3239
+
3240
+ // Multi-key management
3241
+ 'apiSettings.apiKeys': 'API 密钥',
3242
+ 'apiSettings.addKey': '添加密钥',
3243
+ 'apiSettings.keyLabel': '标签',
3244
+ 'apiSettings.keyValue': 'API 密钥',
3245
+ 'apiSettings.keyWeight': '权重',
3246
+ 'apiSettings.removeKey': '移除',
3247
+ 'apiSettings.noKeys': '未配置 API 密钥',
3248
+ 'apiSettings.primaryKey': '主密钥',
3249
+
3250
+ // Routing strategy
3251
+ 'apiSettings.routingStrategy': '路由策略',
3252
+ 'apiSettings.simpleShuffleRouting': '简单随机',
3253
+ 'apiSettings.weightedRouting': '权重分配',
3254
+ 'apiSettings.latencyRouting': '延迟优先',
3255
+ 'apiSettings.costRouting': '成本优先',
3256
+ 'apiSettings.leastBusyRouting': '最少并发',
3257
+ 'apiSettings.routingHint': '如何在多个 API 密钥间分配请求',
3258
+
3259
+ // Health check
3260
+ 'apiSettings.healthCheck': '健康检查',
3261
+ 'apiSettings.enableHealthCheck': '启用健康检查',
3262
+ 'apiSettings.healthInterval': '检查间隔(秒)',
3263
+ 'apiSettings.healthCooldown': '冷却时间(秒)',
3264
+ 'apiSettings.failureThreshold': '失败阈值',
3265
+ 'apiSettings.healthStatus': '状态',
3266
+ 'apiSettings.healthy': '健康',
3267
+ 'apiSettings.unhealthy': '异常',
3268
+ 'apiSettings.unknown': '未知',
3269
+ 'apiSettings.lastCheck': '最后检查',
3270
+ 'apiSettings.testKey': '测试密钥',
3271
+ 'apiSettings.testingKey': '测试中...',
3272
+ 'apiSettings.keyValid': '密钥有效',
3273
+ 'apiSettings.keyInvalid': '密钥无效',
3274
+
3275
+ // Embedding models
3276
+ 'apiSettings.embeddingDimensions': '向量维度',
3277
+ 'apiSettings.embeddingMaxTokens': '最大 Token',
3278
+ 'apiSettings.selectEmbeddingModel': '选择嵌入模型',
3279
+
3280
+ // Model modal
3281
+ 'apiSettings.addLlmModel': '添加 LLM 模型',
3282
+ 'apiSettings.addEmbeddingModel': '添加嵌入模型',
3283
+ 'apiSettings.modelId': '模型 ID',
3284
+ 'apiSettings.modelName': '显示名称',
3285
+ 'apiSettings.modelSeries': '模型系列',
3286
+ 'apiSettings.selectFromPresets': '从预设选择',
3287
+ 'apiSettings.customModel': '自定义模型',
3288
+ 'apiSettings.capabilities': '能力',
3289
+ 'apiSettings.streaming': '流式输出',
3290
+ 'apiSettings.functionCalling': '函数调用',
3291
+ 'apiSettings.vision': '视觉能力',
3292
+ 'apiSettings.contextWindow': '上下文窗口',
3293
+ 'apiSettings.description': '描述',
3294
+ 'apiSettings.optional': '可选',
3295
+ 'apiSettings.modelIdExists': '模型 ID 已存在',
3296
+ 'apiSettings.useModelTreeToManage': '使用模型树管理各个模型',
3297
+
2717
3298
  // Common
2718
3299
  'common.cancel': '取消',
2719
3300
  'common.optional': '(可选)',
@@ -2737,6 +3318,7 @@ const i18n = {
2737
3318
  'common.saveFailed': '保存失败',
2738
3319
  'common.unknownError': '未知错误',
2739
3320
  'common.exception': '异常',
3321
+ 'common.status': '状态',
2740
3322
 
2741
3323
  // Core Memory
2742
3324
  'title.coreMemory': '核心记忆',