From 1c18fd67225c70a979b963e3063d1692f55099b5 Mon Sep 17 00:00:00 2001 From: saladday <1203511142@qq.com> Date: Fri, 25 Sep 2026 16:35:31 +0000 Subject: [PATCH 1/3] Correct stale Web docs on startup configuration and /v1 extensions The System page and deployment checks now read GET /core/v1/sandbox/deployment, /v1 carries Core additions only as x_agents_core fields, and the console has no read of per-harness model provider defaults. --- docs/web/README.md | 2 +- docs/web/admin-metrics-backend-requirements.md | 16 ++++++++-------- .../admin-metrics-backend-requirements.zh-CN.md | 4 ++-- docs/web/architecture.md | 7 ++++--- docs/web/core-connection.md | 6 +++--- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/web/README.md b/docs/web/README.md index 64e47222c..66d6704bf 100644 --- a/docs/web/README.md +++ b/docs/web/README.md @@ -21,7 +21,7 @@ management client, and it sends nothing to `/v1`. | Monitor | Sandbox metrics | Node capacity and hosted Runtime CPU and memory across Projects | | Monitor | Session log | Every Session, opening one Session's read-only conversation, trace and Turns; a self-hosted Session's page also manages its executor credentials | | Resources | Agents, Environment templates, Skills, Files, Vaults | Inspection and permitted deletion | -| Platform | Projects and keys, Nodes, System | Project and key lifecycle, sandbox deployment and nodes, Core startup configuration | +| Platform | Projects and keys, Nodes, System | Project and key lifecycle; sandbox deployment and nodes; the sandbox configuration every Project shares: provider, sandbox size, Runtime or E2B template build, idle suspension, Core address and maintenance | Missing data is shown as missing (—), never as zero. How each figure is read and bounded is recorded in [management interface coverage](protocol-coverage.md). diff --git a/docs/web/admin-metrics-backend-requirements.md b/docs/web/admin-metrics-backend-requirements.md index 0fa4bec4b..4437381bb 100644 --- a/docs/web/admin-metrics-backend-requirements.md +++ b/docs/web/admin-metrics-backend-requirements.md @@ -14,9 +14,9 @@ the browser work. ## Two classes of Core interface -1. **Public Agents API** (`/v1/**`): must stay identical to the pinned OpenAI - Agents API and its documented Core extensions. Metrics work must not add - fields, routes or behavior here. +1. **Public Agents API** (`/v1/**`): serves only the pinned official OpenAI + Agents API routes; Core additions appear only as `x_agents_core` fields. + Metrics work must not add fields, routes or behavior here. 2. **Web API** (`/core/v1/**`, including `/core/v1/sandbox/**` for sandbox administration): called by the console server and operator scripts with the Core key. Every endpoint proposed below belongs here; `services/core-console` @@ -130,11 +130,11 @@ reads every hosted Session by ID (bounded at 100 per refresh). An ### P2 — Deployment configuration writes -The console can only read whether each harness has a model endpoint configured -at startup. A Web API write (for example -`PUT /core/v1/deployment/model-providers/{harness}`, write-only credentials) -would let operators set deployment defaults. It must keep the precedence -Session → Agent → deployment and never return secrets. +The console cannot read or change the deployment's per-harness model provider +defaults; Core takes them from `AGENTS_API_EXECUTION_OPTIONS_FILE`. A Web API +write (for example `PUT /core/v1/deployment/model-providers/{harness}`, +write-only credentials) would let operators set deployment defaults. It must +keep the precedence Session → Agent → deployment and never return secrets. ### P2 — Keys diff --git a/docs/web/admin-metrics-backend-requirements.zh-CN.md b/docs/web/admin-metrics-backend-requirements.zh-CN.md index bd9d383ec..c0aa67fab 100644 --- a/docs/web/admin-metrics-backend-requirements.zh-CN.md +++ b/docs/web/admin-metrics-backend-requirements.zh-CN.md @@ -6,7 +6,7 @@ ## Core 的两类接口 -1. **面向用户的 Agents API**(`/v1/**`):必须与锁定版本的 OpenAI Agents API 及已记录的 Core 扩展保持一致。指标相关工作不得在这里新增字段、路由或行为。 +1. **面向用户的 Agents API**(`/v1/**`):只提供锁定版本的 OpenAI Agents API 官方路由;Core 的补充只以 `x_agents_core` 字段出现。指标相关工作不得在这里新增字段、路由或行为。 2. **Web API**(`/core/v1/**`,包括沙箱管理用的 `/core/v1/sandbox/**`):由控制台服务端和运维脚本用 Core Key 调用。下文提议的所有接口都属于这一类;`services/core-console` 按前缀转发 `/core/v1/*`,新增接口无需改动代理。 ## 控制台目前如何计算 @@ -87,7 +87,7 @@ ### P2:部署配置写入 -控制台目前只能读到每个执行引擎在启动时是否配置了模型端点。Web API 的写接口(例如 `PUT /core/v1/deployment/model-providers/{harness}`,凭据只写)可以让运维设置部署默认值。优先级必须保持“Session → Agent → 部署”,且绝不返回密钥。 +控制台无法读取或修改各执行引擎的部署默认模型 provider,Core 从 `AGENTS_API_EXECUTION_OPTIONS_FILE` 读取它们。Web API 的写接口(例如 `PUT /core/v1/deployment/model-providers/{harness}`,凭据只写)可以让运维设置部署默认值。优先级必须保持“Session → Agent → 部署”,且绝不返回密钥。 ### P2:密钥 diff --git a/docs/web/architecture.md b/docs/web/architecture.md index 9113d930c..c38169a94 100644 --- a/docs/web/architecture.md +++ b/docs/web/architecture.md @@ -93,7 +93,8 @@ visible until the administrator checks state and decides how to proceed. Issued key plaintext must not enter browser storage or logs. Key issuance recovery follows the administrator contract. -Startup configuration describes configured support. It does not prove a reachable -model, valid provider credentials or execution readiness. Runtime observations, -usage coverage and audit history must retain the distinctions defined by Core. +The sandbox deployment read (`GET /core/v1/sandbox/deployment`) describes the saved +selection. It does not prove a reachable model, valid provider credentials or +execution readiness. Runtime observations, usage coverage and audit history must +retain the distinctions defined by Core. Native execution ownership remains governed by [CONTRIBUTING.md](../../CONTRIBUTING.md). diff --git a/docs/web/core-connection.md b/docs/web/core-connection.md index 54c4ebb9b..feb1445b1 100644 --- a/docs/web/core-connection.md +++ b/docs/web/core-connection.md @@ -81,9 +81,9 @@ work. Ordinary metadata reads cannot recover plaintext. The Core key must fail on `/v1`; `/v1` through the console stays 404. 4. Cross-origin management writes must be rejected. Audit actor labels must ignore a forged browser header. -5. Runtime observations and history report execution state separately from startup - configuration. Neither a login nor a successful configuration read proves model - or sandbox readiness. +5. Runtime observations and history report execution state separately from the + sandbox deployment read (`GET /core/v1/sandbox/deployment`). Neither a login nor + a successful deployment read proves model or sandbox readiness. A console login failure belongs to console authentication. An upstream 401 on a management request points to the console's Core key or Core connection. A resource From 292427efe84b25c5ed09b4e74fdcec72c2666510 Mon Sep 17 00:00:00 2001 From: saladday <1203511142@qq.com> Date: Fri, 25 Sep 2026 16:36:36 +0000 Subject: [PATCH 2/3] Drop unused stale Web copy and describe the System page in the tour The Agent form and the sandbox manager's Disconnect admin control were removed with the console rebuild; their locale keys still claimed startup-enabled harnesses. The tour now says System shows the shared sandbox configuration. --- apps/web/src/i18n/locales/en/agents.ts | 18 ------------------ apps/web/src/i18n/locales/en/onboarding.ts | 2 +- apps/web/src/i18n/locales/en/pages.ts | 1 - apps/web/src/i18n/locales/zh-CN/agents.ts | 6 ------ apps/web/src/i18n/locales/zh-CN/onboarding.ts | 2 +- apps/web/src/i18n/locales/zh-CN/pages.ts | 1 - 6 files changed, 2 insertions(+), 28 deletions(-) diff --git a/apps/web/src/i18n/locales/en/agents.ts b/apps/web/src/i18n/locales/en/agents.ts index ea0397d6e..d673dfb0e 100644 --- a/apps/web/src/i18n/locales/en/agents.ts +++ b/apps/web/src/i18n/locales/en/agents.ts @@ -57,24 +57,6 @@ export const agents = { noMatch: "No matching Agents", noSaved: "No saved Agents", trySearch: "Try another name, model, or ID.", emptyHelp: "Create an Agent to see it here.", clearSearch: "Clear search", columns: { agent: "Agent", model: "Model", harness: "Harness", tools: "Tools", updated: "Updated", actions: "Actions" }, coreDefaultHarness: "Core default", copyId: "Copy Agent ID {{id}}", copied: "Copied", unavailableHelp: "Why a Session cannot start", }, - form: { - name: "Name", namePlaceholder: "Repository builder", nameHelp: "Optional. Agent Core accepts at most 128 Unicode characters.", instructions: "Instructions", instructionsPlaceholder: "Describe how this Agent should work…", - harness: "Harness", coreStartup: "Core startup", coreDefault: "{{name}} · Core default", notEnabled: "{{name}} · Not enabled", noHarness: "No harness enabled", harnessHelp: "Only harnesses enabled when this Core process started are selectable. Selection does not prove Runtime, provider, or model readiness.", - model: "Model", webSuggestions: "Web suggestions", configured: "Configured suggestions", default: "Default", previouslyUsed: "Previously used by saved Agents", customModel: "Custom model ID…", modelHelp: "Choose a Web suggestion or enter an ID configured for your runtime.", customModelLabel: "Custom model ID", modelFallback: "a model ID", modelNote: "Model choices are editable Web-side suggestions, not a discovered Core catalog. Saving {{model}} does not prove the current executor can run it.", - generation: "Generation", advancedSettings: "Advanced saved settings", compatibleDefaults: "Session-compatible defaults", textFormat: "Text format", text: "Text", jsonPreserved: "JSON schema · preserved", textFormatHelp: "Current Web-created Sessions use text. Existing JSON schemas are preserved read-only and block Session start.", reasoningEffort: "Reasoning effort", coreDefaultValue: "Core default", textVerbosity: "Text verbosity", reasoningSummary: "Reasoning summary", serviceTier: "Service tier", - existingProfileHelp: "Agent Core can save these settings, but the current Session contract rejects explicit reasoning, non-auto service tiers, and non-text formats. Low or high verbosity also needs a compatible Codex model. Saving an incompatible value disables Start Session in this Web.", createProfileHelp: "Creation is locked to the current Session-compatible profile: text format, Core-default reasoning, medium verbosity, and service tier auto. Agent Core can store other values, but this Web cannot start a Session with most of them yet.", - tools: "Tools", coreExecution: "Core-owned execution only", functionBoundary: "Functions cause Core to emit a function_call. An external application, or the existing Function result form, must perform the business action and submit agent.session.input.tool_result with the exact Turn and call identity. This Web does not execute Functions.", mcpBoundary: "HTTP MCP discovery and calls run on trusted Core service compute. A self_hosted Workspace can run executor commands, but MCP never runs in this browser or that executor. Anonymous and Vault-backed static bearer service-origin HTTP MCP are configurable when the complete Core catalog is loaded.", - readOnlyToolLabel: "Read-only saved tool", readOnlyTool: "Read-only saved tool", readOnlyHelp: "It is preserved unchanged. Web Search, Code Mode commands/files, credentials, OAuth, stdio, headers, and unknown tool variants cannot be enabled or edited here.", - function: "Function", remove: "Remove", description: "Description", descriptionPlaceholder: "Look up a customer record", parameters: "Parameters JSON Schema", parametersHelp: "Must be a JSON object. Functions are always non-deferred; at most 64 unique Function names are allowed, with each name limited to 512 UTF-8 bytes.", - vaultMcp: "Vault bearer HTTP MCP", anonymousMcp: "Anonymous HTTP MCP", serverLabel: "Server label", authentication: "Authentication", anonymous: "Anonymous", selectedCredentialHelp: "A selected Credential determines and locks the exact MCP destination.", catalogUnavailable: "Credential catalog unavailable. Only anonymous MCP can be configured.", serverUrl: "Server URL", allowedTools: "Allowed tools", allTools: "All advertised tools", listedTools: "Only the listed tools", allowedToolsLabel: "Allowed tools for {{name}}", mcpServer: "MCP server", allowedToolsHelp: "Omitted or null permits all advertised tools. An empty listed value serializes as an empty list and permits none.", required: "Require this server for Core execution", mcpWriteHelp: "Writes always use transport.type=http and connection_origin=service. Tokens are managed write-only in Vaults and never enter this form. Headers, request metadata, OAuth, stdio, and client-origin connections remain unsupported.", addFunction: "Add Function", addMcp: "Add HTTP MCP", - metadata: "Metadata", metadataHelp: "JSON object with at most 16 string pairs; keys are limited to 64 characters and values to 512. Never store secrets in Agent metadata.", - }, - setup: { - requestPreview: "Request preview", previewHelp: "Uses placeholders only. The connected Core credential is never read into this preview.", savedDefinition: "Saved definition", agentId: "Agent ID", updated: "Updated", multiAgent: "Multi-agent", enabledSaved: "Enabled · saved configuration", disabled: "Disabled", - guideTitle: "Get started creating an Agent", steps: { define: "Define an Agent", defineHelp: "Choose a startup-enabled harness, model, and instructions; the Web keeps generation settings on the current Session-safe profile.", save: "Save the definition", saveHelp: "Core becomes the durable source of truth for the saved Agent.", start: "Start a Session", startHelp: "Choose a supported Environment profile, create an idle Session, and subscribe before sending input.", exchange: "Exchange events", exchangeHelp: "A real Turn still requires a compatible worker, executor, model, and provider." }, - breadcrumb: "Breadcrumb", newAgent: "New Agent", sections: "Agent setup sections", setup: "Setup", sessions: "Sessions", sessionsTitle: "Session history is available from the Sessions product view", definition: "Agent definition", - updatedNotice: "Agent definition updated.", savedNotice: "Agent definition saved as {{id}}.", readinessBoundary: "This does not prove execution readiness.", startUnavailable: "Start Session is unavailable. {{reason}}", back: "Back to Agents", delete: "Delete Agent", saving: "Saving…", saveChanges: "Save changes", saved: "Agent saved", saveDefinition: "Save Agent definition", startSession: "Start Session", - }, details: { id: "ID", created: "Created", updated: "Updated", model: "Model", name: "Name", instructions: "Instructions", metadata: "Metadata", notSet: "Not set", none: "None", blocked: "This Agent can be saved, but the known Core Session profile cannot start it: {{reason}}", runtimeBoundary: "Saved advanced configuration is not runtime proof. Model, provider, host, tools, and conditional verbosity still require executor validation.", advanced: "Advanced configuration · read only", tools: "Tools", reasoning: "Reasoning", text: "Text", serviceTier: "Service tier", multiAgent: "Multi-agent", functionTool: "Function {{name}}", mcpTool: "{{auth}} service-origin HTTP MCP {{name}}", serviceOriginMcp: "service-origin HTTP MCP", vaultBearer: "Vault bearer", anonymous: "Anonymous", readOnly: "{{label}} · read only", diff --git a/apps/web/src/i18n/locales/en/onboarding.ts b/apps/web/src/i18n/locales/en/onboarding.ts index c46c11175..551d75378 100644 --- a/apps/web/src/i18n/locales/en/onboarding.ts +++ b/apps/web/src/i18n/locales/en/onboarding.ts @@ -42,7 +42,7 @@ export const onboarding = { points: [ "Projects and keys: create projects, issue project API keys shown once, revoke or archive.", "Nodes: add your machines with one command and watch their capacity.", - "System: the Core build and how it was started.", + "System: the sandbox configuration every project shares.", ], }, }, diff --git a/apps/web/src/i18n/locales/en/pages.ts b/apps/web/src/i18n/locales/en/pages.ts index e268a1c4f..314f72834 100644 --- a/apps/web/src/i18n/locales/en/pages.ts +++ b/apps/web/src/i18n/locales/en/pages.ts @@ -7,5 +7,4 @@ export const pages = { sessions: { title: "Sessions", subtitle: "Conversations", recover: "Recover durable state" }, templates: { title: "Environment Templates", subtitle: "Reusable configuration for managed Sessions.", newTemplate: "New Template" }, vaults: { title: "Vaults", subtitle: "Core-owned static bearer credentials for exact HTTPS MCP destinations.", refresh: "Refresh Vaults", create: "New Vault" }, - sandbox: { title: "Hosted Sandbox Manager", subtitle: "Deployment provider, runtime nodes and Session allocations.", disconnect: "Disconnect admin" }, } as const; diff --git a/apps/web/src/i18n/locales/zh-CN/agents.ts b/apps/web/src/i18n/locales/zh-CN/agents.ts index 47c7144a9..349779c07 100644 --- a/apps/web/src/i18n/locales/zh-CN/agents.ts +++ b/apps/web/src/i18n/locales/zh-CN/agents.ts @@ -48,12 +48,6 @@ export const agents: TranslationShape = { listLabel: "Agent", create: "创建 Agent", untitled: "未命名 Agent", editLabel: "编辑 {{name}}({{id}})", opening: "正在打开最新定义…", startLabel: "使用 {{name}}({{id}})启动 Session", unavailable: "不可用", startSession: "启动 Session", sessionUnavailable: "Session 不可用:{{reason}}", noMatch: "没有匹配的 Agent", noSaved: "没有已保存的 Agent", trySearch: "请尝试其他名称、模型或 ID。", emptyHelp: "创建 Agent 后会显示在这里。", clearSearch: "清除搜索", columns: { agent: "Agent", model: "模型", harness: "执行框架", tools: "工具", updated: "更新时间", actions: "操作" }, coreDefaultHarness: "Core 默认", copyId: "复制 Agent ID {{id}}", copied: "已复制", unavailableHelp: "无法启动 Session 的原因", }, - form: { - name: "名称", namePlaceholder: "仓库构建助手", nameHelp: "可选。Agent Core 最多接受 128 个 Unicode 字符。", instructions: "指令", instructionsPlaceholder: "描述此 Agent 应如何工作…", harness: "执行框架", coreStartup: "Core 启动配置", coreDefault: "{{name}} · Core 默认", notEnabled: "{{name}} · 未启用", noHarness: "未启用执行框架", harnessHelp: "只能选择此 Core 进程启动时启用的执行框架。选择结果不能证明运行时、provider 或模型已就绪。", model: "模型", webSuggestions: "Web 建议", configured: "已配置建议", default: "默认", previouslyUsed: "已保存 Agent 使用过", customModel: "自定义模型 ID…", modelHelp: "选择 Web 建议,或输入为你的运行时配置的 ID。", customModelLabel: "自定义模型 ID", modelFallback: "模型 ID", modelNote: "模型选项是可编辑的 Web 侧建议,不是从 Core 发现的目录。保存 {{model}} 不能证明当前 executor 可以运行它。", generation: "生成配置", advancedSettings: "高级已保存设置", compatibleDefaults: "兼容 Session 的默认值", textFormat: "文本格式", text: "文本", jsonPreserved: "JSON schema · 已保留", textFormatHelp: "当前由 Web 创建的 Session 使用文本。现有 JSON schema 会以只读方式保留,并阻止启动 Session。", reasoningEffort: "推理强度", coreDefaultValue: "Core 默认", textVerbosity: "文本详细程度", reasoningSummary: "推理摘要", serviceTier: "服务层级", existingProfileHelp: "Agent Core 可以保存这些设置,但当前 Session 合约会拒绝显式推理、非 auto 服务层级和非文本格式。低或高详细程度还需要兼容的 Codex 模型。保存不兼容值会在此 Web 中禁用“启动 Session”。", createProfileHelp: "创建时锁定为当前兼容 Session 的配置:文本格式、Core 默认推理、medium 详细程度和 auto 服务层级。Agent Core 可以存储其他值,但此 Web 目前无法用其中大多数配置启动 Session。", tools: "工具", coreExecution: "仅由 Core 执行", functionBoundary: "Function 会让 Core 发出 function_call。外部应用或现有 Function 结果表单必须执行具体业务操作,并使用精确的 Turn 和调用标识提交 agent.session.input.tool_result。此 Web 不执行 Function。", mcpBoundary: "HTTP MCP 发现和调用在受信任的 Core 服务计算环境中运行。self_hosted 工作区可以运行 executor 命令,但 MCP 绝不会在此浏览器或该 executor 中运行。完整 Core 目录加载后,可以配置匿名及由 Vault 静态 bearer 支持的 service-origin HTTP MCP。", readOnlyToolLabel: "只读的已保存工具", readOnlyTool: "只读的已保存工具", readOnlyHelp: "它会保持原样。此处不能启用或编辑 Web Search、Code Mode 命令/文件、Credential、OAuth、stdio、请求头及未知工具类型。", function: "Function", remove: "移除", description: "描述", descriptionPlaceholder: "查询客户记录", parameters: "参数 JSON Schema", parametersHelp: "必须是 JSON 对象。Function 始终为非延迟加载;最多允许 64 个名称唯一的 Function,每个名称最多 512 个 UTF-8 字节。", vaultMcp: "Vault bearer HTTP MCP", anonymousMcp: "匿名 HTTP MCP", serverLabel: "服务标签", authentication: "认证", anonymous: "匿名", selectedCredentialHelp: "所选 Credential 会确定并锁定精确的 MCP 目标。", catalogUnavailable: "Credential 目录不可用,只能配置匿名 MCP。", serverUrl: "服务 URL", allowedTools: "允许的工具", allTools: "所有已公布工具", listedTools: "仅列出的工具", allowedToolsLabel: "{{name}} 允许的工具", mcpServer: "MCP 服务", allowedToolsHelp: "省略或 null 会允许所有已公布工具。空的列表值会序列化为空列表,即不允许任何工具。", required: "Core 执行必须使用此服务", mcpWriteHelp: "写入始终使用 transport.type=http 和 connection_origin=service。令牌由 Vault 以只写方式管理,绝不会进入此表单。请求头、请求元数据、OAuth、stdio 和 client-origin 连接仍不受支持。", addFunction: "添加 Function", addMcp: "添加 HTTP MCP", metadata: "元数据", metadataHelp: "最多 16 组字符串键值的 JSON 对象;键最多 64 个字符,值最多 512 个字符。切勿在 Agent 元数据中保存密钥。", - }, - setup: { - requestPreview: "请求预览", previewHelp: "仅使用占位符。已连接 Core 的凭据绝不会读入此预览。", savedDefinition: "已保存定义", agentId: "Agent ID", updated: "更新时间", multiAgent: "多 Agent", enabledSaved: "已启用 · 已保存配置", disabled: "已禁用", guideTitle: "开始创建 Agent", steps: { define: "定义 Agent", defineHelp: "选择启动时启用的执行框架、模型和指令;Web 会将生成设置保持在当前 Session 安全配置。", save: "保存定义", saveHelp: "Core 将成为已保存 Agent 的持久事实来源。", start: "启动 Session", startHelp: "选择支持的环境配置,创建空闲 Session,并在发送输入前完成订阅。", exchange: "交换事件", exchangeHelp: "真实 Turn 仍需要兼容的 worker、executor、模型和 provider。" }, breadcrumb: "面包屑", newAgent: "新建 Agent", sections: "Agent 设置分区", setup: "设置", sessions: "Session", sessionsTitle: "Session 历史可在“Session”产品视图中查看", definition: "Agent 定义", updatedNotice: "Agent 定义已更新。", savedNotice: "Agent 定义已保存为 {{id}}。", readinessBoundary: "这不能证明执行已就绪。", startUnavailable: "无法启动 Session。{{reason}}", back: "返回 Agent", delete: "删除 Agent", saving: "保存中…", saveChanges: "保存更改", saved: "Agent 已保存", saveDefinition: "保存 Agent 定义", startSession: "启动 Session", - }, details: { id: "ID", created: "创建时间", updated: "更新时间", model: "模型", name: "名称", instructions: "指令", metadata: "元数据", notSet: "未设置", none: "无", blocked: "此 Agent 可以保存,但已知的 Core Session 配置无法启动它:{{reason}}", runtimeBoundary: "已保存的高级配置不能证明运行时可用。模型、provider、主机、工具和条件性详细程度仍需 executor 验证。", advanced: "高级配置 · 只读", tools: "工具", reasoning: "推理", text: "文本", serviceTier: "服务层级", multiAgent: "多 Agent", functionTool: "Function {{name}}", mcpTool: "{{auth}} 服务来源 HTTP MCP {{name}}", serviceOriginMcp: "服务来源 HTTP MCP", vaultBearer: "Vault bearer", anonymous: "匿名", readOnly: "{{label}} · 只读", deletePrompt: "从 Agent Core 删除 {{name}}?", deleteBefore: "从 Agent Core 删除", deleteAfter: "?", exactId: "精确 Agent ID:{{id}}", exactIdLabel: "精确 Agent ID:", deleteWarning: "只有在 Core 确认成功后才会移除已保存的 Agent。现有 Session 会保留持久化的 Agent 快照。", deleteTitle: "删除 Agent?", cancel: "取消", deleting: "删除中…", }, diff --git a/apps/web/src/i18n/locales/zh-CN/onboarding.ts b/apps/web/src/i18n/locales/zh-CN/onboarding.ts index 7d077b141..7a2bfdd8f 100644 --- a/apps/web/src/i18n/locales/zh-CN/onboarding.ts +++ b/apps/web/src/i18n/locales/zh-CN/onboarding.ts @@ -42,7 +42,7 @@ export const onboarding = { points: [ "项目与 key:创建项目,签发只显示一次的项目 API Key,撤销或归档。", "节点:一条命令接入你的机器,随时看容量。", - "系统:Core 的构建版本和启动配置。", + "系统:所有项目共用的沙箱配置。", ], }, }, diff --git a/apps/web/src/i18n/locales/zh-CN/pages.ts b/apps/web/src/i18n/locales/zh-CN/pages.ts index 6f851bf87..200fc8aa2 100644 --- a/apps/web/src/i18n/locales/zh-CN/pages.ts +++ b/apps/web/src/i18n/locales/zh-CN/pages.ts @@ -7,5 +7,4 @@ export const pages = { sessions: { title: "Session", subtitle: "对话", recover: "恢复持久状态" }, templates: { title: "环境模板", subtitle: "用于托管 Session 的可复用配置。", newTemplate: "新建模板" }, vaults: { title: "Vault", subtitle: "由 Core 管理、仅用于精确 HTTPS MCP 目标的静态 bearer Credential。", refresh: "刷新 Vault", create: "新建 Vault" }, - sandbox: { title: "托管沙箱管理", subtitle: "管理部署 provider、运行时节点和 Session 分配。", disconnect: "断开管理员连接" }, } as const; From fb4daeab22d56ce2efb949a2e8abe1334e9ec3a2 Mon Sep 17 00:00:00 2001 From: saladday <1203511142@qq.com> Date: Fri, 25 Sep 2026 16:40:13 +0000 Subject: [PATCH 3/3] Describe the read-only Agents page in its subtitle The console lists each project's Agents and their details; it no longer creates, edits or tries them. --- apps/web/src/i18n/locales/en/pages.ts | 2 +- apps/web/src/i18n/locales/zh-CN/pages.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/web/src/i18n/locales/en/pages.ts b/apps/web/src/i18n/locales/en/pages.ts index 314f72834..07e482e2b 100644 --- a/apps/web/src/i18n/locales/en/pages.ts +++ b/apps/web/src/i18n/locales/en/pages.ts @@ -3,7 +3,7 @@ export const pages = { agents: "Agents", sessions: "Sessions", runtime: "Runtime", connectionSettings: "Connection settings", backend: { label: "Agent Core backend is not ready. Open Docker startup guide", title: "Agent Core backend is not ready", detail: "Web is running, but its local `/v1` proxy cannot reach a ready Core{{failure}}. Start the Docker backend, then test the connection.", openGuide: "Open startup guide", networkFailure: "network failure", collectionFailed: "Collection request failed." }, }, - agents: { title: "Agents", subtitle: "Saved Agents in this project. Callers create Sessions with an Agent ID; here you can create, edit and try them." }, + agents: { title: "Agents", subtitle: "Saved Agents in each project, with their model, harness, tools and usage." }, sessions: { title: "Sessions", subtitle: "Conversations", recover: "Recover durable state" }, templates: { title: "Environment Templates", subtitle: "Reusable configuration for managed Sessions.", newTemplate: "New Template" }, vaults: { title: "Vaults", subtitle: "Core-owned static bearer credentials for exact HTTPS MCP destinations.", refresh: "Refresh Vaults", create: "New Vault" }, diff --git a/apps/web/src/i18n/locales/zh-CN/pages.ts b/apps/web/src/i18n/locales/zh-CN/pages.ts index 200fc8aa2..011634c92 100644 --- a/apps/web/src/i18n/locales/zh-CN/pages.ts +++ b/apps/web/src/i18n/locales/zh-CN/pages.ts @@ -3,7 +3,7 @@ export const pages = { agents: "Agent", sessions: "Session", runtime: "运行时", connectionSettings: "连接设置", backend: { label: "Agent Core 后端未就绪。打开 Docker 启动指南", title: "Agent Core 后端未就绪", detail: "Web 正在运行,但本地 /v1 代理无法连接已就绪的 Core{{failure}}。请启动 Docker 后端,然后测试连接。", openGuide: "打开启动指南", networkFailure: "网络故障", collectionFailed: "数据收集请求失败。" }, }, - agents: { title: "Agent", subtitle: "这个项目里保存的 Agent。调用方可以用 Agent ID 创建 Session;在这里可以新建、编辑和试运行。" }, + agents: { title: "Agent", subtitle: "各项目保存的 Agent,及其模型、执行框架、工具和用量。" }, sessions: { title: "Session", subtitle: "对话", recover: "恢复持久状态" }, templates: { title: "环境模板", subtitle: "用于托管 Session 的可复用配置。", newTemplate: "新建模板" }, vaults: { title: "Vault", subtitle: "由 Core 管理、仅用于精确 HTTPS MCP 目标的静态 bearer Credential。", refresh: "刷新 Vault", create: "新建 Vault" },