diff --git a/docs/integration/README.md b/docs/integration/README.md
index 609d9c4..caef09a 100644
--- a/docs/integration/README.md
+++ b/docs/integration/README.md
@@ -19,7 +19,7 @@
| 4 | `[../sk-lifecycle.md](../sk-lifecycle.md)` | SK 来源、快照、写权边界(**单点真相**) |
| 5 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §2–§3 | 身份、调用方式、RBAC |
| 6 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §4 | 多租户与隔离 |
-| 7 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §5 | 一键部署、SK 绑定、控制面 API |
+| 7 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §5 | 一键部署、`sk_sources`、**运行时绑定**、**SK 访问策略**、控制面 API |
| 8 | `[./orchestration-plan-contract.md](./orchestration-plan-contract.md)` | 模型提案对象与平台裁决规则 |
| 9 | `[./agnet-platform-api-design.md](./agnet-platform-api-design.md)` §6–§7 | 运行态、聚合视图、事件流(双轨) |
| 10 | `[./Heicode-登录接口对接文档.md](./Heicode-登录接口对接文档.md)` | 已上线认证接口契约(login / me / refresh / logout) |
diff --git a/docs/integration/acceptance-matrix.md b/docs/integration/acceptance-matrix.md
index f2eb52c..ce461aa 100644
--- a/docs/integration/acceptance-matrix.md
+++ b/docs/integration/acceptance-matrix.md
@@ -24,6 +24,8 @@
| A08 | 回调安全 | callback 签名错误 | 模拟篡改签名 | 拒绝处理并记审计 |
| A09 | 事件流 | SSE 断线后续传 | 已产生事件、支持 `Last-Event-ID` | 重连后补齐丢失窗口事件 |
| A10 | 子输出流 | 会话订阅 `sub_agent.output` | 会话内子 agent 正在运行 | 客户端收到 `output_delta` 流式事件 |
+| A11 | 运行时绑定 | 部署携带非法 `runtime_execution` 引用 | principal 不属于租户或未授权 | 拒绝,`RUNTIME_BINDING_INVALID` |
+| A12 | SK 策略 | `sk_access_policy` 与租户策略冲突 | 显式拒绝覆盖必需快照路径 | 拒绝,`SK_POLICY_REJECTED` |
## 3. 验收字段(每条事件必须)
diff --git a/docs/integration/agnet-platform-api-design.md b/docs/integration/agnet-platform-api-design.md
index e4f92ab..bf15b57 100644
--- a/docs/integration/agnet-platform-api-design.md
+++ b/docs/integration/agnet-platform-api-design.md
@@ -131,6 +131,8 @@ Tenant(租户)
| **团队成员** | 部署配置须 **显式包含团队成员**(至少:`user_id`、组织内角色、是否纳入该 Agnet 团队)。成员关系由 Manager/Agnet 持久化,供 **RBAC、配额与审计**;团队管理员经 **Manager 控制面**维护名单(增删改须审计)。 |
| **成员所用模型** | 须能声明 **各成员默认使用的模型/路由**(如 `default_model_id`、`provider_profile_id` 或与 Manager **模型策略**对齐的引用)。支持「团队缺省 + 成员覆盖」;未授权模型 **不得**在执行路径上静默生效。 |
| **子 agent(Agnet 平台内)与 SK** | 本文所称 **子 Agnet / 子 agent** 均指 **Agnet 平台内部的子智能体/子执行单元**(由 Agnet 编排与实例化),非 Heicode 自研运行时。部署配置须支持为 **指定子 agent** 绑定 **SK 输入源**;运行态下该子 agent **只读**白名单内的 SK 内容。 |
+| **云上 / 运行时权限(须随部署传参)** | 用户在 **Heicode Manager** 中为子 agent 配置的 **执行环境绑定**(例如专用虚拟机池、云 identity / 服务账号引用、网络或资源配额策略 ID)**必须**出现在 **部署请求体**(或等价的平台编排参数)中,由 **Agnet 调度与强制执行**;不得假设「仅在控制台勾选、不传平台即可生效」。缺省值与继承规则(编队级 → 子 agent 覆盖)须在联合 RFC 中写死。 |
+| **SK 访问策略(允许 / 禁止,须随部署传参)** | 除 **`sk_sources` 解析出的快照正文**外,须支持显式声明 **SK 工具/技能命名空间或路径的允许集与拒绝集**(或引用租户级策略模板 ID)。部署完成后,平台将 **物化**各子 agent 的 **有效 SK 策略**:快照内容 ∩ 允许规则 − 拒绝规则;子 agent 运行时 **不得**调用策略外的 SK 工具入口(与 §12 校验一致)。 |
| **SK 与 Git / 上传 MD** | **SK 正文资产以 Git 仓库为统一事实源**(用户指定的远端/连接与分支、路径规则由集成约定)。同时允许用户 **上传 Markdown 等文件** 作为 **补充 SK 源**(租户内对象存储/制品 ID)。Agnet 执行前将两类来源 **解析为不可变快照**(commit SHA / upload version),再注入子 agent 上下文。 |
| **SK 文件仅在 Heicode 中编辑** | Git 侧 SK 的 **创建、修改、删除** 经 **Heicode 客户端**提交到仓库(或 Heicode 发起变更后再同步);**上传类 SK** 的 **新增/替换** 仅通过 **Heicode 提供的入口**(Manager 可做登记与透传,**不提供 SK 正文在线编辑器**)。**Agnet 平台与子 agent 对 SK 均只读**;若 Agnet 控制台出现可直接改 SK 正文的 API/UI,视为 **违背产品边界**。 |
@@ -158,13 +160,25 @@ Tenant(租户)
"sub_agents": [
{
"role_template": "sub_reviewer",
- "sk_file_refs": ["sk_review_policy.md", "sk_api_bar.yaml"]
+ "sk_file_refs": ["sk_review_policy.md", "sk_api_bar.yaml"],
+ "runtime_execution": {
+ "profile_id": "exec_profile_vm_dedicated",
+ "cloud_principal_refs": ["cp_az_mi_ci_readonly"],
+ "network_policy_ref": "net_tenant_isolated"
+ },
+ "sk_access_policy": {
+ "policy_ref": "tenant_sk_policy_default",
+ "deny_skill_ids": ["sk_admin_dest_env"],
+ "inherit_deployment_defaults": true
+ }
}
],
"parameters": { "unit_overrides": {} }
}
```
+- `**runtime_execution`(推荐)**:承载 **子 agent 云上执行绑定**(VM/池、云 SA/MI、网络策略等);字段名可映射为 Agnet 内部模型,但 **语义不得省略**——Manager 收集的配置必须可达 Agnet。
+- `**sk_access_policy`(推荐)**:与 **`sk_sources` 快照**配合,声明 **允许/拒绝** 的技能 ID、路径前缀或租户策略引用;平台在部署落账时计算 **effective policy** 并下发给运行时。
- `**sk_sources`(推荐显式建模)**:替代或细化纯路径数组 `sk_file_refs`; 每个元素标明来源类型,便于 Agnet 实现拉取与快照。
**部署请求体中 SK 绑定扩展示意**
@@ -195,8 +209,10 @@ Tenant(租户)
| 类别 | 要求 |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| **部署与编队** | 实现 `**POST /deployments`**(或 `**POST /teams/deployments`**)可接收 **成员、成员模型、子 agent 模板及 `sk_sources`**;返回 `**deployment_id**`、实例/子 agent 标识,供 Callback 与观测关联。 |
+| **部署与编队** | 实现 `**POST /deployments`**(或 `**POST /teams/deployments`**)可接收 **成员、成员模型、子 agent 模板、`sk_sources`、`runtime_execution`、`sk_access_policy`**(字段名可等价映射);返回 `**deployment_id**`、实例/子 agent 标识,供 Callback 与观测关联。 |
| **SK 快照只读** | 对每个 `deployment_id` / `sub_agent_id`,Agnet 须能记录 **已解析的 SK 快照**(Git:`commit_sha` + 路径哈希;Upload:`artifact_id` + 版本)。运行注入 **仅此快照**,不得在执行中「瞒报版本」拉未授权路径。 |
+| **运行时绑定落账** | 部署请求中的 **`runtime_execution`(或等价字段)** 必须持久化,并在 **实例化子 agent** 时绑定到实际执行环境(VM、identity、网络隔离等);观测 API 能回答「该实例使用了哪套运行时绑定」。 |
+| **SK 策略物化** | 部署接受后,Agnet 必须能输出 **每个子 agent 的生效 SK 策略**(快照哈希 + `sk_access_policy` 解析结果),供 Manager **Git 来源 / 审计**页展示「允许 / 禁止 SK」结论与追溯。 |
| **Git 拉取** | Agnet 须支持 **按租户注册 Git 凭据/连接**(`connection_id` 或等价),由用户在 **Heicode/Manager 流程**中授权;**Agnet 不提供 Git 写接口用于改 SK**——写操作发生在 Git 远端或经 Heicode 提交后,Agnet 仅 **fetch + checkout 指定 ref**。 |
| **上传制品** | 若支持 `type: "upload"`:Agnet(或与 Manager 分工)须提供 `**artifact_id`** 的只读获取(如 `GET /sk-artifacts/{artifact_id}/content` 或预签名 URL),**无 `PUT` 修改正文**于 Agnet 控制台;上传入口 **仅** Heicode 侧发起、Agnet 存只读副本。 |
| **刷新策略** | 约定 **何时重新解析 SK**(如新 commit、用户触发刷新、部署新版本);须可通过 API 或事件暴露 `**sk_snapshot_refreshed`**,便于 Heicode 提示「已用新版本 SK」。 |
@@ -204,7 +220,7 @@ Tenant(租户)
- `**sk_file_refs`**(若保留简化字段):视为 **相对某默认 Git 根**或 **由 Manager 展开为 `sk_sources`** 前的简写;联合 RFC 须声明展开规则。
-- **验收**:部署完成后,Manager 可展示「团队成员—模型—**Agnet 子 agent**—SK 源(Git ref / 上传件)—快照版本」;Git 更新或 Heicode 重新上传后,按刷新策略在后续运行使用新快照。
+- **验收**:部署完成后,Manager 可展示「团队成员—模型—**Agnet 子 agent**—SK 源(Git ref / 上传件)—快照版本—**运行时绑定**—**生效 SK 策略**」;Git 更新或 Heicode 重新上传后,按刷新策略在后续运行使用新快照。
### 5.1 部署编队
@@ -413,6 +429,8 @@ Tenant(租户)
3. `default_model_id` 在组织策略允许范围
4. `sk_sources` 可解析且无越权路径
5. 预算上限(tokens / cost / duration)未超策略阈值
+6. 若请求包含 **`runtime_execution`**:`profile_id` / `cloud_principal_refs` 等引用 **属于本租户且已授权**,否则 **拒绝部署**(错误码建议 `RUNTIME_BINDING_INVALID`)。
+7. 若请求包含 **`sk_access_policy`**:须与租户默认策略合并并 **物化为可执行的生效边界**;非法组合(例如引用禁止的技能 ID、与快照路径冲突)返回 **403** / `SK_POLICY_REJECTED`。
---
@@ -453,6 +471,8 @@ Tenant(租户)
| `POLICY_REJECTED` | 平台策略拒绝执行提案 |
| `MODEL_NOT_ALLOWED` | 模型未授权 |
| `SK_SOURCE_UNRESOLVABLE` | SK 源不可解析或不可读 |
+| `RUNTIME_BINDING_INVALID` | 云上 / 运行时绑定引用无效或未授权 |
+| `SK_POLICY_REJECTED` | SK 允许 / 拒绝策略与快照或租户策略冲突 |
| `BUDGET_EXCEEDED` | 超预算 |
| `FORBIDDEN_CROSS_TENANT` | 跨租户访问拒绝 |
| `DEPLOYMENT_CONFLICT` | 幂等或状态冲突 |
diff --git a/docs/integration/orchestration-plan-contract.md b/docs/integration/orchestration-plan-contract.md
index 9b38ec7..04646a2 100644
--- a/docs/integration/orchestration-plan-contract.md
+++ b/docs/integration/orchestration-plan-contract.md
@@ -42,7 +42,17 @@
"role_template": "AG-DEV",
"goal": "按拆解清单完成实现与自测",
"default_model_id": "mdl_claude_sonnet",
- "sk_sources": []
+ "sk_sources": [],
+ "runtime_execution": {
+ "profile_id": "exec_profile_vm_pool_ci",
+ "cloud_principal_refs": ["cp_az_mi_build"],
+ "network_policy_ref": "net_project_default"
+ },
+ "sk_access_policy": {
+ "policy_ref": "tenant_sk_policy_default",
+ "deny_skill_ids": ["sk_cross_env_admin"],
+ "inherit_deployment_defaults": true
+ }
}
],
"constraints": {
@@ -71,6 +81,8 @@
| `agents[].goal` | 是 | 该角色目标 |
| `agents[].default_model_id` | 否 | 建议模型;最终由平台策略裁决 |
| `agents[].sk_sources` | 否 | SK 来源列表 |
+| `agents[].runtime_execution` | 否 | **须在转为部署请求时保留**:子 agent 云上执行绑定(VM/池、云 principal、网络策略等),与 [`agnet-platform-api-design.md`](./agnet-platform-api-design.md) §5.0 一致 |
+| `agents[].sk_access_policy` | 否 | **须在转为部署请求时保留**:SK 允许 / 禁止规则(引用或内联),与快照合并后由平台物化为生效策略 |
| `constraints.allowed_model_ids` | 否 | 允许模型白名单 |
| `metadata.tenant_id` | 是 | 顶层隔离键 |
| `metadata.project_id` | 是 | 项目标识 |
@@ -85,6 +97,8 @@ Agnet 在执行前必须做下列校验:
3. 模型授权:`default_model_id` 在组织与项目策略允许范围内
4. SK 边界:`sk_sources` 可解析、可读、无越权路径
5. 预算约束:`max_tokens` / `max_cost_usd` / `max_duration_sec` 不超策略上限
+6. 运行时边界:若存在 `runtime_execution`,其引用须为本租户已授权的执行档案 / 云 principal(否则 `RUNTIME_BINDING_INVALID`)
+7. SK 策略:若存在 `sk_access_policy`,合并后须一致且可执行(否则 `SK_POLICY_REJECTED`)
## 5. 典型拒绝码
@@ -93,13 +107,15 @@ Agnet 在执行前必须做下列校验:
| `POLICY_REJECTED` | 平台策略拒绝执行 |
| `MODEL_NOT_ALLOWED` | 模型未授权 |
| `SK_SOURCE_UNRESOLVABLE` | SK 源无法解析或无权限读取 |
+| `RUNTIME_BINDING_INVALID` | 云上 / 运行时绑定无效或未授权 |
+| `SK_POLICY_REJECTED` | SK 允许 / 拒绝策略冲突 |
| `BUDGET_EXCEEDED` | 预算超限 |
| `FORBIDDEN_CROSS_TENANT` | 跨租户访问拒绝 |
| `DEPLOYMENT_CONFLICT` | 幂等冲突或状态冲突 |
## 6. 对接建议
-- `orchestration_plan` 建议由 Manager 转换成 Agnet `POST /deployments` 标准 payload
+- `orchestration_plan` 建议由 Manager **无损映射**为 Agnet `POST /deployments` 标准 payload;**`runtime_execution` / `sk_access_policy` 不得在进入部署链路时丢弃**,否则子 agent 无法获得用户在 Manager 配置的权限与 SK 边界
- 拒绝时应返回 `error.code` + `request_id` + `correlation_id`
- 接受后返回 `deployment_id`,并通过事件流持续反馈执行状态
diff --git a/docs/sk-lifecycle.md b/docs/sk-lifecycle.md
index 7cff44a..650b2fa 100644
--- a/docs/sk-lifecycle.md
+++ b/docs/sk-lifecycle.md
@@ -120,10 +120,12 @@ Agnet 不需要、也不应该提供针对 SK 正文的 `PUT` / `PATCH`:写操
- 团队成员列表与组织内角色
- 各成员所用模型 / `provider_profile_id`
- 子 agent 模板与 `sk_sources`
+- **用户在 Manager 配置的子 agent 云上 / 运行时权限**(如 `runtime_execution`:VM 池、云 principal、网络策略等),**必须随部署请求传给 Agnet**,不得在链路中丢弃
+- **SK 允许 / 禁止策略**(如 `sk_access_policy`),与快照合并后的生效边界须由平台落账,子 agent 仅能在该边界内消费 SK
部署完成后 Manager 应能展示:
-`团队成员 → 模型 → Agnet 子 agent → SK 源(Git ref / 上传件)→ 快照版本`
+`团队成员 → 模型 → Agnet 子 agent → SK 源(Git ref / 上传件)→ 快照版本 → 运行时绑定 → 生效 SK 策略`
未授权模型 **不得** 在执行路径上静默生效。
diff --git a/heicode/web/default/src/features/agnet-console/pages.tsx b/heicode/web/default/src/features/agnet-console/pages.tsx
index 603b4a6..3bc0348 100644
--- a/heicode/web/default/src/features/agnet-console/pages.tsx
+++ b/heicode/web/default/src/features/agnet-console/pages.tsx
@@ -620,7 +620,7 @@ export function AgnetAuditPage() {
}
// =============================================================================
-// Git sources — SK 正文以 Git 为准;此处为绑定说明 + 运行时解析锚点列表
+// Git sources — 绑定代码/SK 仓库与云上权限 → 部署 → 展示各部署的快照锚点(SK 正文仍以 Git 为准)
// =============================================================================
export function AgnetSKSourcesPage() {
@@ -672,6 +672,19 @@ export function AgnetSKSourcesPage() {
{t('Git sources binding explainer')}
+
+
+ {t('Git sources workflow title')}
+
+
+ - {t('Git sources workflow step 1')}
+ - {t('Git sources workflow step 2')}
+ - {t('Git sources workflow step 3')}
+ - {t('Git sources workflow step 4')}
+ - {t('Git sources workflow step 5')}
+
+
+
{!effectiveDeployment ? (
(
`Auth request failed (${res.status})`
throw new Error(message)
}
- return data
+ return data as T
}
// ============================================================================
diff --git a/heicode/web/default/src/features/home/components/hero-terminal-demo.tsx b/heicode/web/default/src/features/home/components/hero-terminal-demo.tsx
index 0c86e28..f1a862b 100644
--- a/heicode/web/default/src/features/home/components/hero-terminal-demo.tsx
+++ b/heicode/web/default/src/features/home/components/hero-terminal-demo.tsx
@@ -35,7 +35,7 @@ const MODELS: ModelConfig[] = [
id: 'gemini-pro',
name: 'gemini-2.5-pro',
response:
- 'Heicode Manager binds Git-backed SK sources and rolls Agnet runs, events, resolved anchors, and audit into one tenant-scoped control plane.',
+ 'Bind Git code and SK tool repos, allocate cloud permissions for sub-agents, then deploy—runs inherit SK allow/deny policy with hashed anchors, events, and audit on one tenant-scoped control plane.',
tokens: 29,
latency: 156,
badgeClass:
diff --git a/heicode/web/default/src/features/home/components/sections/cta.tsx b/heicode/web/default/src/features/home/components/sections/cta.tsx
index 39256fe..5855911 100644
--- a/heicode/web/default/src/features/home/components/sections/cta.tsx
+++ b/heicode/web/default/src/features/home/components/sections/cta.tsx
@@ -1,6 +1,5 @@
import { Link } from '@tanstack/react-router'
import { ArrowRight } from 'lucide-react'
-import { useTranslation } from 'react-i18next'
import { Button } from '@/components/ui/button'
import { AnimateInView } from '@/components/animate-in-view'
@@ -10,8 +9,6 @@ interface CTAProps {
}
export function CTA(props: CTAProps) {
- const { t } = useTranslation()
-
if (props.isAuthenticated) {
return null
}
diff --git a/heicode/web/default/src/features/home/components/sections/features.tsx b/heicode/web/default/src/features/home/components/sections/features.tsx
index c100fc0..f7da8d3 100644
--- a/heicode/web/default/src/features/home/components/sections/features.tsx
+++ b/heicode/web/default/src/features/home/components/sections/features.tsx
@@ -8,7 +8,6 @@ import {
Users,
HeartHandshake,
} from 'lucide-react'
-import { useTranslation } from 'react-i18next'
import { AnimateInView } from '@/components/animate-in-view'
interface FeaturesProps {
@@ -16,8 +15,6 @@ interface FeaturesProps {
}
export function Features(_props: FeaturesProps) {
- const { t } = useTranslation()
-
const features = [
{
id: 'fast',
diff --git a/heicode/web/default/src/features/home/components/sections/how-it-works.tsx b/heicode/web/default/src/features/home/components/sections/how-it-works.tsx
index 4a9b231..c2f5db9 100644
--- a/heicode/web/default/src/features/home/components/sections/how-it-works.tsx
+++ b/heicode/web/default/src/features/home/components/sections/how-it-works.tsx
@@ -1,10 +1,7 @@
import { Settings, Zap, BarChart3 } from 'lucide-react'
-import { useTranslation } from 'react-i18next'
import { AnimateInView } from '@/components/animate-in-view'
export function HowItWorks() {
- const { t } = useTranslation()
-
const steps = [
{
num: '1',
diff --git a/heicode/web/default/src/features/home/components/sections/stats.tsx b/heicode/web/default/src/features/home/components/sections/stats.tsx
index 57a9661..e6196b0 100644
--- a/heicode/web/default/src/features/home/components/sections/stats.tsx
+++ b/heicode/web/default/src/features/home/components/sections/stats.tsx
@@ -1,5 +1,4 @@
import { useRef, useEffect, useCallback } from 'react'
-import { useTranslation } from 'react-i18next'
interface CounterProps {
end: number
@@ -70,8 +69,6 @@ interface StatsProps {
}
export function Stats(_props: StatsProps) {
- const { t } = useTranslation()
-
const stats = [
{ end: 100, suffix: 'K+', label: '已编排任务' },
{ end: 50, suffix: '+', label: '接入租户' },
diff --git a/heicode/web/default/src/features/usage-logs/components/columns/common-logs-columns.tsx b/heicode/web/default/src/features/usage-logs/components/columns/common-logs-columns.tsx
index ee63468..3ec11fb 100644
--- a/heicode/web/default/src/features/usage-logs/components/columns/common-logs-columns.tsx
+++ b/heicode/web/default/src/features/usage-logs/components/columns/common-logs-columns.tsx
@@ -21,7 +21,7 @@ import {
StatusBadge,
type StatusBadgeProps,
} from '@/components/status-badge'
-import type { UsageLog } from '../../data/schema'
+import type { UsageLog } from '../../usage-log-schema'
import {
formatModelName,
getFirstResponseTimeColor,
diff --git a/heicode/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx b/heicode/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx
index ce0ef23..116c93f 100644
--- a/heicode/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx
+++ b/heicode/web/default/src/features/usage-logs/components/dialogs/details-dialog.tsx
@@ -29,7 +29,7 @@ import { Label } from '@/components/ui/label'
import { ScrollArea } from '@/components/ui/scroll-area'
import { StatusBadge, type StatusBadgeProps } from '@/components/status-badge'
import { DynamicPricingBreakdown } from '@/features/pricing/components/dynamic-pricing-breakdown'
-import type { UsageLog } from '../../data/schema'
+import type { UsageLog } from '../../usage-log-schema'
import {
parseLogOther,
getParamOverrideActionLabel,
diff --git a/heicode/web/default/src/features/usage-logs/components/usage-logs-table.tsx b/heicode/web/default/src/features/usage-logs/components/usage-logs-table.tsx
index 3fd340b..c51150c 100644
--- a/heicode/web/default/src/features/usage-logs/components/usage-logs-table.tsx
+++ b/heicode/web/default/src/features/usage-logs/components/usage-logs-table.tsx
@@ -132,7 +132,7 @@ export function UsageLogsTable({ logCategory }: UsageLogsTableProps) {
const isLoadingData = isLoading || (isFetching && !data)
const table = useReactTable({
- data: logs as Record[],
+ data: logs as unknown as Record[],
columns: columns as ColumnDef>[],
state: {
columnFilters,
diff --git a/heicode/web/default/src/features/usage-logs/lib/format.ts b/heicode/web/default/src/features/usage-logs/lib/format.ts
index 82d1ca4..59b1851 100644
--- a/heicode/web/default/src/features/usage-logs/lib/format.ts
+++ b/heicode/web/default/src/features/usage-logs/lib/format.ts
@@ -4,7 +4,7 @@ import {
parseTiersFromExpr,
type ParsedTier,
} from '@/features/pricing/lib/billing-expr'
-import type { UsageLog } from '../data/schema'
+import type { UsageLog } from '../usage-log-schema'
import type { LogOtherData } from '../types'
const PARAM_OVERRIDE_ACTION_MAP: Record = {
diff --git a/heicode/web/default/src/features/usage-logs/types.ts b/heicode/web/default/src/features/usage-logs/types.ts
index 9fcda22..7d5d20e 100644
--- a/heicode/web/default/src/features/usage-logs/types.ts
+++ b/heicode/web/default/src/features/usage-logs/types.ts
@@ -1,7 +1,7 @@
/**
* Type definitions for usage logs
*/
-import type { UsageLog } from './data/schema'
+import type { UsageLog } from './usage-log-schema'
// ============================================================================
// Log Category Types
diff --git a/heicode/web/default/src/features/usage-logs/usage-log-schema.ts b/heicode/web/default/src/features/usage-logs/usage-log-schema.ts
new file mode 100644
index 0000000..0c62507
--- /dev/null
+++ b/heicode/web/default/src/features/usage-logs/usage-log-schema.ts
@@ -0,0 +1,24 @@
+/**
+ * API row shape for common (chat/relay) usage logs from the Manager backend.
+ * Kept permissive: optional fields mirror partial responses and legacy rows.
+ */
+export interface UsageLog {
+ id?: number
+ user_id: number
+ username?: string
+ type: number
+ channel: number
+ channel_name?: string
+ token_name?: string
+ model_name: string
+ group?: string
+ other: string
+ quota: number
+ use_time: number
+ prompt_tokens: number
+ completion_tokens: number
+ is_stream: boolean
+ request_id?: string
+ content?: string
+ ip?: string
+}
diff --git a/heicode/web/default/src/hooks/use-sidebar-data.ts b/heicode/web/default/src/hooks/use-sidebar-data.ts
index 899f073..1487bdb 100644
--- a/heicode/web/default/src/hooks/use-sidebar-data.ts
+++ b/heicode/web/default/src/hooks/use-sidebar-data.ts
@@ -21,7 +21,7 @@ import { type SidebarData } from '@/components/layout/types'
* - 平台是管理后台:登录后默认仅展示 Code delivery cockpit + 个人入口;
* - 不再向普通用户暴露 Playground / API Keys / Models 等开发者控制台条目;
* - Usage logs 作为交付链路的一环,归并进 Code delivery 分组;
- * - Git sources:SK 正文以 Git 为准;此处仅登记连接与展示运行时解析锚点(commit / 制品),不提供正文编辑;
+ * - Git sources:先绑定代码与 SK 工具仓库并分配子 Agent 云上权限,部署后在此查看快照锚点;SK 正文仍以 Git 为准,不提供 Markdown 编辑;
* - 所有 admin/root 管理类入口(Channels/Models/Tenants/Redemption/...)
* 收纳进 "系统设置" workspace(点击进入 /system-settings 后才出现)。
*
diff --git a/heicode/web/default/src/i18n/locales/en.json b/heicode/web/default/src/i18n/locales/en.json
index 3535f48..2956a5d 100644
--- a/heicode/web/default/src/i18n/locales/en.json
+++ b/heicode/web/default/src/i18n/locales/en.json
@@ -1605,10 +1605,16 @@
"Get Started": "Get Started",
"Git binding": "Git binding",
"Git sources": "Git sources",
- "Git sources binding explainer": "Skill (SK) content lives in Git. Manager does not edit Markdown here—register repository connections and refs via the Heicode client or your deployment plan sk_sources. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.",
- "Git sources subtitle": "Bind Git repositories for SK, then review immutable snapshot anchors tied to each deployment.",
+ "Git sources binding explainer": "Skill (SK) definitions live in Git. Manager does not edit Markdown here—register code repos, SK tool repos, and refs via the Heicode client or your deployment plan sk_sources. Allocate cloud permissions for sub-agents (VMs, roles, scopes) in the same plan; deploy sub-agents after bindings exist so each run inherits allow/deny SK policy. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.",
+ "Git sources subtitle": "Bind Git code and SK tool repositories, attach cloud permissions for sub-agents, deploy, then review snapshot anchors per deployment.",
+ "Git sources workflow title": "Typical setup flow",
+ "Git sources workflow step 1": "Bind your team’s Git repositories that hold application code and delivery context.",
+ "Git sources workflow step 2": "Bind SK tool repositories (skills registry) your tenant is allowed to draw from.",
+ "Git sources workflow step 3": "Allocate cloud capacity and permissions for sub-agents—for example dedicated VMs, roles, and API scopes.",
+ "Git sources workflow step 4": "Deploy sub-agents; the deployment wires bound sources and policies into that run.",
+ "Git sources workflow step 5": "After deployment, each sub-agent receives its effective SK allow / deny policy from the control plane.",
"Git-backed SK sources": "Git-backed SK sources",
- "Git-backed SK sources description": "Immutable snapshots from bound Git refs and uploads—wired into each run for audit.",
+ "Git-backed SK sources description": "Bind repos and capacity first; immutable snapshots after each deployment show which SK lineage actually ran under tenant policy.",
"GitHub": "GitHub",
"Give the group a recognizable name and optional description.": "Give the group a recognizable name and optional description.",
"Give this group a recognizable name.": "Give this group a recognizable name.",
@@ -1775,7 +1781,7 @@
"Inspect": "Inspect",
"Inspect events": "Inspect events",
"Inspect Git sources": "Inspect Git sources",
- "Inspect Git sources description": "Review resolved anchors (commit / artifact hash) from your bound repositories.",
+ "Inspect Git sources description": "Follow bind → allocate cloud permissions → deploy, then review anchors and lineage for each deployment.",
"Inspect SK lineage": "Inspect SK lineage",
"Inspect user prompts": "Inspect user prompts",
"Instance": "Instance",
@@ -2176,9 +2182,9 @@
"No deployment available for events.": "No deployment available for events.",
"No deployment available for SK snapshots.": "No deployment available for SK snapshots.",
"No deployment for Git sources": "No deployment selected yet",
- "No deployment for Git sources hint": "Create a deployment whose plan includes sk_sources pointing at your Git repository—resolved anchors will appear here.",
+ "No deployment for Git sources hint": "Finish binding code/SK repos and sub-agent cloud permissions in your plan, then create a deployment—resolved anchors appear here.",
"No resolved snapshots yet": "No resolved snapshots yet",
- "No resolved snapshots hint": "Resolve snapshots from the control plane after Git-backed sk_sources are configured.",
+ "No resolved snapshots hint": "Once repos, cloud permissions, and deployment are in place, the control plane resolves snapshot anchors for auditing.",
"No deployments available. Create one to get started.": "No deployments available. Create one to get started.",
"No Deployments Found": "No Deployments Found",
"No deployments match the current filter": "No deployments match the current filter",
@@ -3106,7 +3112,7 @@
"Sign in": "Sign in",
"Sign In": "Sign In",
"Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.",
- "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.",
+ "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to bind repositories and cloud permissions, deploy sub-agents, and review Git-bound snapshot anchors for tenants under your account.",
"Sign in to your workspace": "Sign in to your workspace",
"Sign in with Passkey": "Sign in with Passkey",
"Sign out": "Sign out",
diff --git a/heicode/web/default/src/i18n/locales/fr.json b/heicode/web/default/src/i18n/locales/fr.json
index 1d7877e..05504ec 100644
--- a/heicode/web/default/src/i18n/locales/fr.json
+++ b/heicode/web/default/src/i18n/locales/fr.json
@@ -1605,10 +1605,16 @@
"Get Started": "Commencer",
"Git binding": "Git binding",
"Git sources": "Git sources",
- "Git sources binding explainer": "Skill (SK) content lives in Git. Manager does not edit Markdown here—register repository connections and refs via the Heicode client or your deployment plan sk_sources. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.",
- "Git sources subtitle": "Bind Git repositories for SK, then review immutable snapshot anchors tied to each deployment.",
+ "Git sources binding explainer": "Skill (SK) definitions live in Git. Manager does not edit Markdown here—register code repos, SK tool repos, and refs via the Heicode client or your deployment plan sk_sources. Allocate cloud permissions for sub-agents (VMs, roles, scopes) in the same plan; deploy sub-agents after bindings exist so each run inherits allow/deny SK policy. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.",
+ "Git sources subtitle": "Bind Git code and SK tool repositories, attach cloud permissions for sub-agents, deploy, then review snapshot anchors per deployment.",
+ "Git sources workflow title": "Typical setup flow",
+ "Git sources workflow step 1": "Bind your team’s Git repositories that hold application code and delivery context.",
+ "Git sources workflow step 2": "Bind SK tool repositories (skills registry) your tenant is allowed to draw from.",
+ "Git sources workflow step 3": "Allocate cloud capacity and permissions for sub-agents—for example dedicated VMs, roles, and API scopes.",
+ "Git sources workflow step 4": "Deploy sub-agents; the deployment wires bound sources and policies into that run.",
+ "Git sources workflow step 5": "After deployment, each sub-agent receives its effective SK allow / deny policy from the control plane.",
"Git-backed SK sources": "Git-backed SK sources",
- "Git-backed SK sources description": "Immutable snapshots from bound Git refs and uploads—wired into each run for audit.",
+ "Git-backed SK sources description": "Bind repos and capacity first; immutable snapshots after each deployment show which SK lineage actually ran under tenant policy.",
"GitHub": "GitHub",
"Give the group a recognizable name and optional description.": "Donnez au groupe un nom reconnaissable et une description facultative.",
"Give this group a recognizable name.": "Donnez un nom reconnaissable à ce groupe.",
@@ -1775,7 +1781,7 @@
"Inspect": "Inspect",
"Inspect events": "Inspect events",
"Inspect Git sources": "Inspect Git sources",
- "Inspect Git sources description": "Review resolved anchors (commit / artifact hash) from your bound repositories.",
+ "Inspect Git sources description": "Follow bind → allocate cloud permissions → deploy, then review anchors and lineage for each deployment.",
"Inspect SK lineage": "Inspect SK lineage",
"Inspect user prompts": "Inspecter les invites utilisateur",
"Instance": "Instance",
@@ -2176,9 +2182,9 @@
"No deployment available for events.": "No deployment available for events.",
"No deployment available for SK snapshots.": "No deployment available for SK snapshots.",
"No deployment for Git sources": "No deployment selected yet",
- "No deployment for Git sources hint": "Create a deployment whose plan includes sk_sources pointing at your Git repository—resolved anchors will appear here.",
+ "No deployment for Git sources hint": "Finish binding code/SK repos and sub-agent cloud permissions in your plan, then create a deployment—resolved anchors appear here.",
"No resolved snapshots yet": "No resolved snapshots yet",
- "No resolved snapshots hint": "Resolve snapshots from the control plane after Git-backed sk_sources are configured.",
+ "No resolved snapshots hint": "Once repos, cloud permissions, and deployment are in place, the control plane resolves snapshot anchors for auditing.",
"No deployments available. Create one to get started.": "Aucun déploiement disponible. Créez-en un pour commencer.",
"No Deployments Found": "Aucun déploiement trouvé",
"No deployments match the current filter": "No deployments match the current filter",
@@ -3106,7 +3112,7 @@
"Sign in": "Se connecter",
"Sign In": "Se connecter",
"Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.",
- "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.",
+ "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to bind repositories and cloud permissions, deploy sub-agents, and review Git-bound snapshot anchors for tenants under your account.",
"Sign in to your workspace": "Sign in to your workspace",
"Sign in with Passkey": "Se connecter avec Passkey",
"Sign out": "Se déconnecter",
diff --git a/heicode/web/default/src/i18n/locales/ja.json b/heicode/web/default/src/i18n/locales/ja.json
index 2d37018..913c241 100644
--- a/heicode/web/default/src/i18n/locales/ja.json
+++ b/heicode/web/default/src/i18n/locales/ja.json
@@ -1605,10 +1605,16 @@
"Get Started": "開始する",
"Git binding": "Git binding",
"Git sources": "Git sources",
- "Git sources binding explainer": "Skill (SK) content lives in Git. Manager does not edit Markdown here—register repository connections and refs via the Heicode client or your deployment plan sk_sources. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.",
- "Git sources subtitle": "Bind Git repositories for SK, then review immutable snapshot anchors tied to each deployment.",
+ "Git sources binding explainer": "Skill (SK) definitions live in Git. Manager does not edit Markdown here—register code repos, SK tool repos, and refs via the Heicode client or your deployment plan sk_sources. Allocate cloud permissions for sub-agents (VMs, roles, scopes) in the same plan; deploy sub-agents after bindings exist so each run inherits allow/deny SK policy. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.",
+ "Git sources subtitle": "Bind Git code and SK tool repositories, attach cloud permissions for sub-agents, deploy, then review snapshot anchors per deployment.",
+ "Git sources workflow title": "Typical setup flow",
+ "Git sources workflow step 1": "Bind your team’s Git repositories that hold application code and delivery context.",
+ "Git sources workflow step 2": "Bind SK tool repositories (skills registry) your tenant is allowed to draw from.",
+ "Git sources workflow step 3": "Allocate cloud capacity and permissions for sub-agents—for example dedicated VMs, roles, and API scopes.",
+ "Git sources workflow step 4": "Deploy sub-agents; the deployment wires bound sources and policies into that run.",
+ "Git sources workflow step 5": "After deployment, each sub-agent receives its effective SK allow / deny policy from the control plane.",
"Git-backed SK sources": "Git-backed SK sources",
- "Git-backed SK sources description": "Immutable snapshots from bound Git refs and uploads—wired into each run for audit.",
+ "Git-backed SK sources description": "Bind repos and capacity first; immutable snapshots after each deployment show which SK lineage actually ran under tenant policy.",
"GitHub": "GitHub",
"Give the group a recognizable name and optional description.": "グループに認識しやすい名前とオプションの説明を付けます。",
"Give this group a recognizable name.": "このグループに認識しやすい名前を付けます。",
@@ -1775,7 +1781,7 @@
"Inspect": "Inspect",
"Inspect events": "Inspect events",
"Inspect Git sources": "Inspect Git sources",
- "Inspect Git sources description": "Review resolved anchors (commit / artifact hash) from your bound repositories.",
+ "Inspect Git sources description": "Follow bind → allocate cloud permissions → deploy, then review anchors and lineage for each deployment.",
"Inspect SK lineage": "Inspect SK lineage",
"Inspect user prompts": "ユーザープロンプトの検査",
"Instance": "インスタンス",
@@ -2176,9 +2182,9 @@
"No deployment available for events.": "No deployment available for events.",
"No deployment available for SK snapshots.": "No deployment available for SK snapshots.",
"No deployment for Git sources": "No deployment selected yet",
- "No deployment for Git sources hint": "Create a deployment whose plan includes sk_sources pointing at your Git repository—resolved anchors will appear here.",
+ "No deployment for Git sources hint": "Finish binding code/SK repos and sub-agent cloud permissions in your plan, then create a deployment—resolved anchors appear here.",
"No resolved snapshots yet": "No resolved snapshots yet",
- "No resolved snapshots hint": "Resolve snapshots from the control plane after Git-backed sk_sources are configured.",
+ "No resolved snapshots hint": "Once repos, cloud permissions, and deployment are in place, the control plane resolves snapshot anchors for auditing.",
"No deployments available. Create one to get started.": "利用可能なデプロイメントがありません。開始するには1つ作成してください。",
"No Deployments Found": "デプロイメントが見つかりません",
"No deployments match the current filter": "No deployments match the current filter",
@@ -3106,7 +3112,7 @@
"Sign in": "ログイン",
"Sign In": "ログイン",
"Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.",
- "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.",
+ "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to bind repositories and cloud permissions, deploy sub-agents, and review Git-bound snapshot anchors for tenants under your account.",
"Sign in to your workspace": "Sign in to your workspace",
"Sign in with Passkey": "Passkeyでログイン",
"Sign out": "ログアウト",
diff --git a/heicode/web/default/src/i18n/locales/ru.json b/heicode/web/default/src/i18n/locales/ru.json
index 60771bb..eaf32cb 100644
--- a/heicode/web/default/src/i18n/locales/ru.json
+++ b/heicode/web/default/src/i18n/locales/ru.json
@@ -1605,10 +1605,16 @@
"Get Started": "Начать",
"Git binding": "Git binding",
"Git sources": "Git sources",
- "Git sources binding explainer": "Skill (SK) content lives in Git. Manager does not edit Markdown here—register repository connections and refs via the Heicode client or your deployment plan sk_sources. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.",
- "Git sources subtitle": "Bind Git repositories for SK, then review immutable snapshot anchors tied to each deployment.",
+ "Git sources binding explainer": "Skill (SK) definitions live in Git. Manager does not edit Markdown here—register code repos, SK tool repos, and refs via the Heicode client or your deployment plan sk_sources. Allocate cloud permissions for sub-agents (VMs, roles, scopes) in the same plan; deploy sub-agents after bindings exist so each run inherits allow/deny SK policy. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.",
+ "Git sources subtitle": "Bind Git code and SK tool repositories, attach cloud permissions for sub-agents, deploy, then review snapshot anchors per deployment.",
+ "Git sources workflow title": "Typical setup flow",
+ "Git sources workflow step 1": "Bind your team’s Git repositories that hold application code and delivery context.",
+ "Git sources workflow step 2": "Bind SK tool repositories (skills registry) your tenant is allowed to draw from.",
+ "Git sources workflow step 3": "Allocate cloud capacity and permissions for sub-agents—for example dedicated VMs, roles, and API scopes.",
+ "Git sources workflow step 4": "Deploy sub-agents; the deployment wires bound sources and policies into that run.",
+ "Git sources workflow step 5": "After deployment, each sub-agent receives its effective SK allow / deny policy from the control plane.",
"Git-backed SK sources": "Git-backed SK sources",
- "Git-backed SK sources description": "Immutable snapshots from bound Git refs and uploads—wired into each run for audit.",
+ "Git-backed SK sources description": "Bind repos and capacity first; immutable snapshots after each deployment show which SK lineage actually ran under tenant policy.",
"GitHub": "GitHub",
"Give the group a recognizable name and optional description.": "Дайте группе узнаваемое имя и необязательное описание.",
"Give this group a recognizable name.": "Дайте этой группе узнаваемое имя.",
@@ -1775,7 +1781,7 @@
"Inspect": "Inspect",
"Inspect events": "Inspect events",
"Inspect Git sources": "Inspect Git sources",
- "Inspect Git sources description": "Review resolved anchors (commit / artifact hash) from your bound repositories.",
+ "Inspect Git sources description": "Follow bind → allocate cloud permissions → deploy, then review anchors and lineage for each deployment.",
"Inspect SK lineage": "Inspect SK lineage",
"Inspect user prompts": "Просмотр запросов пользователя",
"Instance": "Экземпляр",
@@ -2176,9 +2182,9 @@
"No deployment available for events.": "No deployment available for events.",
"No deployment available for SK snapshots.": "No deployment available for SK snapshots.",
"No deployment for Git sources": "No deployment selected yet",
- "No deployment for Git sources hint": "Create a deployment whose plan includes sk_sources pointing at your Git repository—resolved anchors will appear here.",
+ "No deployment for Git sources hint": "Finish binding code/SK repos and sub-agent cloud permissions in your plan, then create a deployment—resolved anchors appear here.",
"No resolved snapshots yet": "No resolved snapshots yet",
- "No resolved snapshots hint": "Resolve snapshots from the control plane after Git-backed sk_sources are configured.",
+ "No resolved snapshots hint": "Once repos, cloud permissions, and deployment are in place, the control plane resolves snapshot anchors for auditing.",
"No deployments available. Create one to get started.": "Нет доступных развертываний. Создайте одно, чтобы начать.",
"No Deployments Found": "Развертывания не найдены",
"No deployments match the current filter": "No deployments match the current filter",
@@ -3106,7 +3112,7 @@
"Sign in": "Войти",
"Sign In": "Войти",
"Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.",
- "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.",
+ "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to bind repositories and cloud permissions, deploy sub-agents, and review Git-bound snapshot anchors for tenants under your account.",
"Sign in to your workspace": "Sign in to your workspace",
"Sign in with Passkey": "Войти с Passkey",
"Sign out": "Выйти",
diff --git a/heicode/web/default/src/i18n/locales/vi.json b/heicode/web/default/src/i18n/locales/vi.json
index 6265ae5..2dd828c 100644
--- a/heicode/web/default/src/i18n/locales/vi.json
+++ b/heicode/web/default/src/i18n/locales/vi.json
@@ -1605,10 +1605,16 @@
"Get Started": "Bắt đầu",
"Git binding": "Git binding",
"Git sources": "Git sources",
- "Git sources binding explainer": "Skill (SK) content lives in Git. Manager does not edit Markdown here—register repository connections and refs via the Heicode client or your deployment plan sk_sources. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.",
- "Git sources subtitle": "Bind Git repositories for SK, then review immutable snapshot anchors tied to each deployment.",
+ "Git sources binding explainer": "Skill (SK) definitions live in Git. Manager does not edit Markdown here—register code repos, SK tool repos, and refs via the Heicode client or your deployment plan sk_sources. Allocate cloud permissions for sub-agents (VMs, roles, scopes) in the same plan; deploy sub-agents after bindings exist so each run inherits allow/deny SK policy. Below lists immutable snapshot anchors (Git commit / upload artifact) resolved for auditing.",
+ "Git sources subtitle": "Bind Git code and SK tool repositories, attach cloud permissions for sub-agents, deploy, then review snapshot anchors per deployment.",
+ "Git sources workflow title": "Typical setup flow",
+ "Git sources workflow step 1": "Bind your team’s Git repositories that hold application code and delivery context.",
+ "Git sources workflow step 2": "Bind SK tool repositories (skills registry) your tenant is allowed to draw from.",
+ "Git sources workflow step 3": "Allocate cloud capacity and permissions for sub-agents—for example dedicated VMs, roles, and API scopes.",
+ "Git sources workflow step 4": "Deploy sub-agents; the deployment wires bound sources and policies into that run.",
+ "Git sources workflow step 5": "After deployment, each sub-agent receives its effective SK allow / deny policy from the control plane.",
"Git-backed SK sources": "Git-backed SK sources",
- "Git-backed SK sources description": "Immutable snapshots from bound Git refs and uploads—wired into each run for audit.",
+ "Git-backed SK sources description": "Bind repos and capacity first; immutable snapshots after each deployment show which SK lineage actually ran under tenant policy.",
"GitHub": "GitHub",
"Give the group a recognizable name and optional description.": "Đặt cho nhóm một cái tên dễ nhận biết và mô tả tùy chọn.",
"Give this group a recognizable name.": "Hãy đặt cho nhóm này một cái tên dễ nhận biết.",
@@ -1775,7 +1781,7 @@
"Inspect": "Inspect",
"Inspect events": "Inspect events",
"Inspect Git sources": "Inspect Git sources",
- "Inspect Git sources description": "Review resolved anchors (commit / artifact hash) from your bound repositories.",
+ "Inspect Git sources description": "Follow bind → allocate cloud permissions → deploy, then review anchors and lineage for each deployment.",
"Inspect SK lineage": "Inspect SK lineage",
"Inspect user prompts": "Kiểm tra lời nhắc của người dùng",
"Instance": "Phiên bản",
@@ -2176,9 +2182,9 @@
"No deployment available for events.": "No deployment available for events.",
"No deployment available for SK snapshots.": "No deployment available for SK snapshots.",
"No deployment for Git sources": "No deployment selected yet",
- "No deployment for Git sources hint": "Create a deployment whose plan includes sk_sources pointing at your Git repository—resolved anchors will appear here.",
+ "No deployment for Git sources hint": "Finish binding code/SK repos and sub-agent cloud permissions in your plan, then create a deployment—resolved anchors appear here.",
"No resolved snapshots yet": "No resolved snapshots yet",
- "No resolved snapshots hint": "Resolve snapshots from the control plane after Git-backed sk_sources are configured.",
+ "No resolved snapshots hint": "Once repos, cloud permissions, and deployment are in place, the control plane resolves snapshot anchors for auditing.",
"No deployments available. Create one to get started.": "Không có triển khai nào khả dụng. Tạo một cái để bắt đầu.",
"No Deployments Found": "Không tìm thấy triển khai nào",
"No deployments match the current filter": "No deployments match the current filter",
@@ -3106,7 +3112,7 @@
"Sign in": "Đăng nhập",
"Sign In": "Đăng nhập",
"Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.",
- "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.",
+ "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "Sign in to bind repositories and cloud permissions, deploy sub-agents, and review Git-bound snapshot anchors for tenants under your account.",
"Sign in to your workspace": "Sign in to your workspace",
"Sign in with Passkey": "Đăng nhập bằng Passkey",
"Sign out": "Đăng xuất",
diff --git a/heicode/web/default/src/i18n/locales/zh.json b/heicode/web/default/src/i18n/locales/zh.json
index c802d77..f420015 100644
--- a/heicode/web/default/src/i18n/locales/zh.json
+++ b/heicode/web/default/src/i18n/locales/zh.json
@@ -1605,10 +1605,16 @@
"Get Started": "开始使用",
"Git binding": "Git 绑定",
"Git sources": "Git 来源",
- "Git sources binding explainer": "Skill(SK)正文以 Git 仓库为唯一事实源。Manager 不在此编辑 Markdown:请在 Heicode 客户端或部署计划的 sk_sources 中登记仓库连接与引用。下列为运行时解析得到的不可变快照锚点(Git commit / 上传制品),供审计追溯。",
- "Git sources subtitle": "为 SK 绑定 Git 仓库后,在此查看与各次部署关联的快照锚点。",
+ "Git sources binding explainer": "Skill(SK)定义以 Git 为唯一事实源。Manager 不在此编辑 Markdown:请在 Heicode 客户端或部署计划的 sk_sources 中登记代码仓库、SK 工具仓库与引用;并在同一计划中为子 Agent 分配云上权限(虚拟机、角色、API 范围等)。完成绑定后再部署子 Agent,使每次运行继承允许的 SK 与被禁止的 SK 策略。下列为运行时解析得到的不可变快照锚点(Git commit / 上传制品),供审计追溯。",
+ "Git sources subtitle": "绑定代码与 SK 工具仓库、为子 Agent 分配云上权限并部署后,在此按部署查看快照锚点。",
+ "Git sources workflow title": "典型配置顺序",
+ "Git sources workflow step 1": "绑定团队用于应用代码与交付上下文的 Git 仓库。",
+ "Git sources workflow step 2": "绑定 SK 工具仓库(技能来源),声明租户可引用的工具集。",
+ "Git sources workflow step 3": "为子 Agent 分配云上资源与权限(如独立虚拟机、角色与其他访问边界)。",
+ "Git sources workflow step 4": "部署子 Agent;部署会把已绑定的来源与策略写入该次运行。",
+ "Git sources workflow step 5": "部署完成后,子 Agent 从控制面获知生效的允许 SK 与禁止 SK。",
"Git-backed SK sources": "基于 Git 的 SK 来源",
- "Git-backed SK sources description": "来自已绑定 Git 引用与上传制品的不可变快照,并注入每次运行以供审计。",
+ "Git-backed SK sources description": "先完成仓库与云上能力绑定;每次部署后的不可变快照反映在该租户策略下实际运行的 SK 血缘。",
"GitHub": "GitHub",
"Give the group a recognizable name and optional description.": "为该分组提供一个可识别的名称和可选的描述。",
"Give this group a recognizable name.": "为此分组提供一个可识别的名称。",
@@ -1775,7 +1781,7 @@
"Inspect": "查看",
"Inspect events": "查看事件",
"Inspect Git sources": "查看 Git 来源与快照",
- "Inspect Git sources description": "查看已绑定仓库解析出的锚点(commit / 制品哈希)。",
+ "Inspect Git sources description": "按「绑定 → 分配云上权限 → 部署」完成后,在此查看各次部署的锚点与血缘。",
"Inspect SK lineage": "追溯 SK 血缘",
"Inspect user prompts": "检查用户提示",
"Instance": "实例",
@@ -2176,9 +2182,9 @@
"No deployment available for events.": "暂无可查看事件的部署。",
"No deployment available for SK snapshots.": "暂无可查看 SK 快照的部署。",
"No deployment for Git sources": "暂无可关联的部署",
- "No deployment for Git sources hint": "请在编排计划的 sk_sources 中指向 Git 仓库并创建部署后,此处会显示解析锚点。",
+ "No deployment for Git sources hint": "在计划中完成代码/SK 仓库与子 Agent 云上权限的配置并创建部署后,此处会显示解析锚点。",
"No resolved snapshots yet": "尚无已解析的快照",
- "No resolved snapshots hint": "在配置好基于 Git 的来源后,由控制面触发快照解析即可在此查看。",
+ "No resolved snapshots hint": "仓库、云上权限与部署就绪后,由控制面解析快照锚点即可在此审计追溯。",
"No deployments available. Create one to get started.": "没有可用的部署。创建一个开始吧。",
"No Deployments Found": "未找到部署",
"No deployments match the current filter": "没有符合当前筛选条件的部署",
@@ -3106,7 +3112,7 @@
"Sign in": "登录",
"Sign In": "登录",
"Sign in to operate Agnet deployments, inspect events, and audit SK snapshots for every tenant under your account.": "登录后即可操作 Agnet 部署、查看事件,并审计你账号下各租户的 SK 快照。",
- "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "登录后即可操作部署、查看事件,并审阅你账号下各租户与 Git 绑定的快照锚点。",
+ "Sign in to operate deployments and review Git-bound snapshot anchors for tenants under your account.": "登录后即可绑定仓库与云上权限、部署子 Agent,并审阅你账号下各租户与 Git 绑定的快照锚点。",
"Sign in to your workspace": "登录到你的工作空间",
"Sign in with Passkey": "使用 Passkey 登录",
"Sign out": "登出",