Skip to content

feat(template): 完善 AI 员工模板部署与外部服务验收#267

Merged
Xy718 merged 30 commits into
NoDeskAI:mainfrom
Shayne0330:fix/agent-template-sync
May 28, 2026
Merged

feat(template): 完善 AI 员工模板部署与外部服务验收#267
Xy718 merged 30 commits into
NoDeskAI:mainfrom
Shayne0330:fix/agent-template-sync

Conversation

@Shayne0330
Copy link
Copy Markdown
Collaborator

Summary

本 PR 同步 AI 员工模板部署链路的阶段性修复,并补充 P2A 外部服务调用验收包。

主要包含:

  • 修复模板部署进度、恢复/取消回放、部署权限校验和完成态竞态。
  • 强制确认模板部署布局,避免员工自动落位冲突。
  • 补齐模板部署加入办公室失败统计和回看访问逻辑。
  • 增加 p2a_external_service_agent 测试包,用于验证 Agent Bundle 内 skill 脚本调用外部 HTTP 服务。

Why

我们正在分层落地 AI 员工能力包:

  1. 简单员工包部署。
  2. 员工包内 skill 调用外部服务。
  3. 后续再推进带 secretRef/tokenRef 的鉴权型外部服务。

当前 PR 固化前两层中已经在测试服务器跑通的部分。

Validation

  • 已部署到测试服务器 10.4.182.163 的 K8s 环境。
  • 控制面健康检查通过:/api/v1/health => ok
  • backend / portal / llm-proxy 已更新到测试镜像 sync-553041e
  • 在赛博办公室黑板发消息触发 P2A 员工,员工成功执行 Agent Bundle 内 external-service-probe 脚本并调用 https://api.github.com/zen,随后将 JSON 结果回复黑板。
  • 本地相关 ruff:通过。
  • 本地重点 pytest:79 passed, 6 skipped
  • portal Docker build:通过。

Notes

  • 全量 ruff check . 仍会命中历史 Alembic 迁移里的旧 Union[...] 写法,本 PR 未改这些无关历史文件。
  • 第三层“带鉴权的外部服务员工包”还未作为真实服务完成验收,建议后续独立 PR 推进。

@Shayne0330
Copy link
Copy Markdown
Collaborator Author

第三层 P4 鉴权引用验收已补充并在测试 K8s 环境通过。

范围:

  • Agent Bundle secretRefs / tokenRef 解析与校验
  • 部署时通过后端环境变量物化同 namespace K8s Secret
  • Agent Pod 通过 secretKeyRef 注入 OAUTH_ACCESS_TOKEN
  • ConfigMap 不包含真实 token 明文
  • P4 fixture 使用 mock OAuth broker 验证运行时调用链

本地验证:

  • pytest tests/test_agent_bundle_service.py tests/test_deploy_service_docker_urls.py -q -> 76 passed, 1 skipped

服务器验收:

  • 部署实例:P4鉴权验收05261759
  • 实例 ID:da2f0619-3794-4e11-8b86-6172a18fd528
  • Namespace:nodeskclaw-default-p4-auth-live-0526175907
  • 已加入工作空间:c0c73017-5efe-4522-a808-2a1b5d3d98e4
  • 运行结果:bundle 脚本调用 mock-oauth-broker 返回 ok=true,并确认携带 tokenRef=mock-oauth-token/access_token

@Shayne0330
Copy link
Copy Markdown
Collaborator Author

补充完整测试结果(2026-05-26):

后端单测:

  • tests/test_agent_bundle_service.py tests/test_deploy_service_docker_urls.py tests/test_k8s_resource_builder.py -> 77 passed, 1 skipped
  • tests/test_deploy_progress_auth.py tests/test_deploy_rebuild_pipeline.py tests/test_workspace_agent_node_card_sync.py tests/test_workspace_hex_position.py tests/test_workspace_deploy_progress.py tests/test_workspace_template_deploy_layout.py -> 27 passed, 5 skipped

前端验证:

  • vitest run src/utils/instanceFlow.test.ts src/utils/templateDeployLayout.test.ts src/utils/workspaceConversations.test.ts -> 14 passed
  • vue-tsc -b && vite build -> passed(仅已有 chunk size / dynamic import warnings)

服务器功能验收:

  • 系统 Pod:backend / portal / llm-proxy 均 Running
  • P4 员工实例:da2f0619-3794-4e11-8b86-6172a18fd528,状态 running/healthy
  • P4 员工已加入办公室 c0c73017-5efe-4522-a808-2a1b5d3d98e4,SSE connected = true
  • K8s Secret mock-oauth-token 存在,OAUTH_ACCESS_TOKEN 通过 secretKeyRef 注入
  • ConfigMap 未包含真实 token 明文
  • Bundle 脚本 skills/oauth-probe/scripts/probe_oauth.py 调用 mock OAuth broker 成功,返回 ok=true

UI 验收:

  • 模板详情页可展示 P4 模板、Bundle 技能与 Bundle 文件
  • 工作空间页可看到 P4 鉴权验收员工已加入,在线统计正常

未覆盖:

  • 未跑整个仓库的全量 pytest(本轮覆盖 PR 相关测试集)
  • 未接真实 OAuth/外部业务服务,P4 仍是 mock broker 验收
  • 未验证 P5 视频复刻真实链路

@Xy718
Copy link
Copy Markdown
Contributor

Xy718 commented May 27, 2026

维护者补充(2026-05-28):

当前 P4 secretRef / tokenRef 实现口径已调整,以这条评论为准:

  • 不再通过后端环境变量或 sourceEnv 物化 Secret;Bundle config 里的 sourceEnvsource 等字段会被拒绝。
  • 鉴权值需要预先放在 K8s Secret 中;部署前会校验目标 namespace 或平台 namespace,异步部署创建实例 namespace 后只复制所需 key 到实例 namespace。
  • 部署读取旧的 agent_bundle_manifest 时也会重新净化 secretRefs;如果历史数据里残留 source.value 这类明文字段,会在创建部署资源前失败。

前面评论中“通过后端环境变量物化同 namespace K8s Secret”的描述已经过时,后续验收和运维准备请按上面口径执行。

Copy link
Copy Markdown
Contributor

@Xy718 Xy718 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved. 当前 head CI 通过,未发现 P0/P1 blocker;剩余 env_vars 与 secret_env_refs 同名冲突按 follow-up issue 跟进。

@Xy718 Xy718 marked this pull request as ready for review May 28, 2026 10:56
@Xy718 Xy718 merged commit 03c2012 into NoDeskAI:main May 28, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants