Files
pikasTech-unidesk/AGENTS.md
T

19 KiB
Raw Blame History

UniDesk Agent Index

UniDesk 是一个以主 server 为统一入口的分布式工作平台;本文件是项目顶级索引,也承担 scripts/cli.ts 的 CLI 使用说明入口。

Critical Git / Multi-Repo Sync Rule

  • UniDesk 同时存在 main server、D601 ~/cq-deploy 和其他 provider worktree 等多个开发/部署实例;Git remote 是长期 source of truth,本地部署实例只能视为运行副本或缓存。
  • 任何开发、文档或部署配置变更开始前,必须先在当前 worktree 执行 git status 并从主线拉取最新源码:git pull --ff-only origin master;若本地并行变更或远端推进导致不能快进,必须当即分清来源并解决冲突后再继续。
  • 任何需要保留的代码、文档或配置变更,在完成必要自测/部署验证后必须立刻按 git-spec 提交并 push 到 remote;禁止让未推送的本地修改成为部署真相或后续任务依赖。
  • 提交前必须用 git statusgit diff 区分并只提交当前任务相关文件,保留并避开并行任务产生的无关修改;所有 UniDesk agent 变更只允许在 master 上开发并 git push origin master,禁止新建、切换到或推送其他分支;长期规则见 docs/reference/arch.md
  • release/v1 是规划中的稳定维护线,不是普通 feature/fix 分支;创建、更新或启用必须作为显式 release operation,先满足 docs/reference/release-governance.md 和 GitHub issue #6 的 CLI/CI/CD/文档条件。当前常规 agent 任务仍按 master-only 规则执行。

Critical Provider Gateway Upgrade Rule

  • src/components/provider-gateway 有任何代码或行为变更时,必须在同一变更集中递增 src/components/provider-gateway/package.json 的版本号,并在升级后通过 frontend 或 debug health 确认目标节点上报新版本;权威规则见 docs/reference/provider-gateway.md
  • provider.upgrade 预检、执行升级和远程更新记录必须显式显示指定 Provider 的 gateway 版本号,不能只把版本放进原始 JSON;前端和 E2E 要求见 docs/reference/provider-gateway.mdTEST.md
  • 计算节点 provider-gateway 容器的重建/升级必须走带 sleep-and-validate 回滚保护的 provider.upgrade mode=schedule 远程升级路径或前端等价调度;禁止通过 bun scripts/cli.ts ssh <providerId> 同步执行 docker compose up --build provider-gateway 这类自重建命令,权威规则见 docs/reference/provider-gateway.md
  • Host SSH / WSL SSH 透传只能用于节点诊断、前置条件修复和升级后验证,不能作为计算节点 provider-gateway 自身的重建/升级通道;部署验收必须同时证明远程升级和 SSH 透传可用,测试门禁见 TEST.md

Critical Native k3s Runtime Rule

  • 所有计算资源节点上的 k3s server、控制平面、agent 和 worker 必须原生安装在 host OS 或 WSL 发行版内,禁止用 Docker/Compose/rancher/k3s 长驻容器承载 k3s;权威规则见 docs/reference/arch.mddocs/reference/microservices.mddocs/reference/deploy.md
  • k3sctl-adapter 是 UniDesk 到 k3s 的控制桥,必须作为 UniDesk 直管服务运行在 k3s 故障域外,不得改成 k3s 代管服务;权威规则见 docs/reference/arch.mddocs/reference/microservices.md

CLI

  • bun scripts/cli.ts help:输出所有可用命令的 JSON 索引,详细规范见 docs/reference/cli.md
  • bun scripts/cli.ts --main-server-ip <ip> <command>:默认通过公网 frontend 登录态远程执行调试、用户服务(底层命令名 microservice)、Code Queue 查询与节点自测命令,不要求主 server SSH key,详细规范见 docs/reference/cli.md
  • bun scripts/cli.ts config show:校验并展示根目录 config.json,配置来源规则见 docs/reference/config.md
  • bun scripts/cli.ts check [--full|--files|--scripts-typecheck|--components|--compose|--logs|--rust]:默认只运行轻量配置和 TypeScript 语法检查;Rust backend-core 检查只能在 D601 CI/dev execution 中用 UNIDESK_D601_RUST_CHECK=1 开启,规则见 docs/reference/dev-environment.md
  • bun scripts/cli.ts server start:以异步 job 启动 database、backend-core、frontend、provider-gateway、code-queue-mgr 和主 server 用户服务,部署规则见 docs/reference/deployment.md
  • bun scripts/cli.ts server status:查询固定端口、swap 摘要、容器状态、健康检查和访问 URL,包含生产 frontend、dev frontend proxy 和 provider ingress,判定标准见 docs/reference/deployment.mddocs/reference/dev-environment.md
  • bun scripts/cli.ts server swap status|ensure [--path /swapfile] [--size 2GiB] [--dry-run]:以 JSON 查看或幂等创建主 server swapfileensure 输出 before/after、动作、持久化状态和 degraded/failed 详情,规则见 docs/reference/deployment.md
  • bun scripts/cli.ts server logs [--tail-bytes N]:分页返回文件日志与 Docker 日志尾部并带截断元数据,日志规则见 docs/reference/observability.md
  • bun scripts/cli.ts server rebuild <backend-core|frontend|dev-frontend-proxy|provider-gateway|todo-note|code-queue-mgr|project-manager|baidu-netdisk|oa-event-flow>:以 build-first、Compose lock、no-deps force-recreate 和 post-up validation 的异步 job 重建主 server Compose 内单个服务;对 database、File Browser、Code Queue 执行面、k3sctl-adapter 或未知对象返回结构化 unsupported-server-rebuild,规则见 docs/reference/deployment.mddocs/reference/cicd-standardization.md
  • bun scripts/cli.ts provider attach <providerId> [--master-server URL] [--up] [--force]:在新增计算节点上生成两项配置的 provider-gateway 挂载包;默认只需要主 server URL(默认 http://74.48.78.17/)和唯一 Provider ID,生成的 Compose 固定 Docker socket、pid: "host"restart: always、只读 /workspace、SSH 维护私钥挂载和 loopback egress proxy 端口,规则见 docs/reference/provider-gateway.md
  • bun scripts/cli.ts ssh <providerId> [ssh-like args...]:通过 provider-gateway 的 Host SSH / WSL SSH 维护桥打开近似原生 ssh 的交互会话或远端命令,并在远端 PATH 注入 apply_patchglobskill-discoverapply-patchpyskills、结构化 findglobargv 子命令用于避免远端补丁、Python stdin、skill 发现与常用只读命令的嵌套转义问题,使用规则见 docs/reference/cli.mddocs/reference/provider-gateway.md
  • bun scripts/cli.ts microservice list/status/health/diagnostics/tunnel-self-test/proxy:管理和验证挂载在主 server、计算节点 Docker 或 k3s 控制面上的用户服务,proxy 支持受控 JSON bodyOA Event Flow/Todo Note/Baidu Netdisk/Code Queue Manager on main-server、k3s Control/Code Queue 执行面/MDTODO/Decision Center/FindJob/Pipeline/MET Nonlinear on D601 的规则见 docs/reference/microservices.md
  • bun scripts/cli.ts decision upload/list/show/health:通过 backend-core 用户服务代理上传会议记录/决议 Markdown、列出记录和查看详情;Decision Center 运行在 D601 k3s,规则见 docs/reference/microservices.md
  • bun scripts/cli.ts decision diary import/list/months/show:把带日期标题的工作日志 Markdown 拆成 YYYY-MM/YYYY-MM-DD.md 日记条目并写入 PostgreSQL,规则见 docs/reference/microservices.md
  • bun scripts/cli.ts deploy check/plan/apply [--file deploy.json|--env dev|prod] [--service <id>]:按根目录 deploy.jsonorigin/master:deploy.json#environments.<env> 的服务 repo 和 commit 期望状态校验或更新用户服务;--env dev 开放 D601 backend-core rollout、reviewed registry artifact consumers 和 D601 direct consumer validationfindjob/pipeline 是 D601 direct pull-only 样板,met-nonlinear dry-run blockedk3sctl-adapter supervisor-onlycode-queue prod unsupported,规则见 docs/reference/deploy.mddocs/reference/dev-environment.md
  • bun scripts/cli.ts dev-env validate [--manifest path] [--kubectl-dry-run] / dev-env prewarm-images:离线校验 D601 unidesk-dev 生产隔离护栏和 dev workload manifests,或把开发底座基础镜像预热到 D601 原生 k3s containerd,规则见 docs/reference/deploy.mddocs/reference/microservices.md
  • bun scripts/cli.ts artifact-registry plan|render|status|health|install|deploy-backend-core|deploy-service:管理 D601 host-managed CNCF Distribution registry,并通过短生命周期 relay 或 D601 pull/import 做 commit-pinned pull-only artifact CDdeploy-backend-core 是 deprecated 兼容名,findjob/pipeline 支持 D601 direct dev/prodmet-nonlineark3sctl-adapter 只给受限计划路径,code-queue 只支持 dev,规则见 docs/reference/artifact-registry.md
  • bun scripts/cli.ts ci install/status/run/publish-backend-core/publish-user-service/run-dev-e2e/logs:在 D601 原生 k3s 上安装和运行 Tekton CI,支持每 commit 检查、Code Queue 只读性能门禁、CI.json catalog 驱动的 backend-core 与 user-service commit-pinned 镜像发布和手动触发的 origin/master:deploy.json#environments.dev 临时 namespace e2ecatalog/producer/consumer 分工见 docs/reference/cicd-standardization.mdrun-dev-e2e 的 Git 控制 runner、短 launcher 和 no-CD 边界见 docs/reference/dev-ci-runner.mdTekton 规则见 docs/reference/ci.md
  • bun scripts/cli.ts codex deploy <commitId>:旧 Code Queue 兼容部署入口已禁用,原因是它会绕过受控部署边界直连 D601 部署 Code Queue;规则见 docs/reference/codex-deploy.md
  • bun scripts/cli.ts codex submit [prompt] [--prompt-file path|--prompt-stdin] [--queue <id>]:通过 backend-core 私有代理提交 Code Queue 任务;控制面默认走主 server code-queue-mgr 写入 PostgreSQL--dry-run 可只检查请求体不入队,规则见 docs/reference/cli.md
  • bun scripts/cli.ts codex task <taskId>:按 Code Queue 任务 ID 查询初始 prompt、最后 assistant message、工具调用摘要、attempt/judge/error 和耗时,便于新任务引用历史 session。
  • bun scripts/cli.ts codex judge <taskId> --attempt <n> [--dry-run]:按指定 task/attempt 用与队列 worker 相同的上下文构建和 MiniMax judge 调用路径单步复现完成判定;--dry-run 只输出 prompt/payload 诊断。
  • bun scripts/cli.ts codex interrupt|cancel <taskId>:通过 Code Queue 私有代理中断运行任务或取消 queued/retry_wait 任务,规则见 docs/reference/cli.md
  • bun scripts/cli.ts server stop:以异步 job 停止固定 Compose 项目中的全部 UniDesk 服务,停止后用 server status 复核。
  • bun scripts/cli.ts job list [--limit N] / bun scripts/cli.ts job status latest [--tail-bytes N]:分页查询 .state/jobs/ 中的异步任务状态,状态输出只读日志尾部并保留完整日志路径,job 机制见 docs/reference/cli.md
  • bun scripts/cli.ts debug health / bun scripts/cli.ts debug dispatch / bun scripts/cli.ts debug task:通过 Docker 内网 core、真实 HTTP、WebSocket、系统指标、Docker 状态和 Host SSH 维护桥流程调试健康检查、任务下发与任务结果,调试规则见 docs/reference/cli.md
  • bun scripts/cli.ts e2e run [--only pattern[,pattern...]] [--skip pattern[,pattern...]]:支持按 check/prefix/wildcard 选择性执行公网 production frontend/dev frontend/provider ingress、内网 core/database、provider-gateway 自接入与 Playwright 验证;日常迭代先跑当前问题对应的最小检查集,最终交付再跑全量回归,验收规则见 docs/reference/e2e.md

Runtime

  • bunTypeScript 运行时固定使用 Bun,组件入口和 CLI 都直接运行 .ts 文件,约束见 docs/reference/config.md
  • docker-compose.yml:主 server 统一编排 core、frontend、dev-frontend-proxy、database、本机 provider gateway、Todo Note 后端、Baidu Netdisk 后端、OA Event Flow 后端和轻量 Code Queue Manager 控制面;Code Queue 执行面、MDTODO、ClaudeQQ 和 Decision Center 由 D601 k3s/k8s 控制面代管,并经 k3sctl-adapter 的 Kubernetes API service proxy 单一路径接入,服务拓扑见 docs/reference/deployment.mddocs/reference/dev-environment.md
  • src/components/frontend:前端源码固定使用 TypeScript + Reactapp.tsx 只做 shell/router,左侧主模块与顶部子标签统一编译为模块前缀路由:/ops/<tab>//nodes/<tab>//tasks/<tab>//config/<tab>/,只有用户服务使用 /app/<tab>/ 深链接,运行总览包含通用性能面板,资源监控含曲线和进程资源排序表,Todo Note、FindJob、Pipeline、MET Nonlinear、Baidu Netdisk、Code Queue、MDTODO、Decision Center、OA Event Flow、k3s Control 等业务页必须拆到独立 TSX 模块,界面规则见 docs/reference/frontend.md
  • backend-core / frontend performancebackend-core 暴露 /api/performancefrontend 暴露同源 /api/frontend-performance 并在 /ops/performance/ 汇总组件请求、失败请求、内部操作和慢操作,规则见 docs/reference/observability.mdbackend-core 当前为 Rust 服务,结构见 docs/reference/repo-tree.mdRust 编译边界见 docs/reference/dev-environment.md
  • Unified OA event flowoa-event-flow 是独立主 server 用户服务,提供事件表、按 tag 订阅和 Trace/STEP 统计中心,Code Queue 与 Pipeline 都必须接入统一事件流;共享契约见 docs/reference/oa-event-flow.mdPipeline 专有控制流规则见 docs/reference/pipeline-oa-event-flow.md
  • src/components/provider-gateway:当前主 server 74.48.78.17 也作为 provider gateway 接入 UniDesk,外部节点通过 ws://74.48.78.17:18082/ws/provider 接入,必须以 restart: always 部署 always-enabled 远程升级、sleep-and-validate 回滚保护和 Host SSH / WSL SSH 透传并完成自测,部署与 Playwright 公网前端验证方法见 docs/reference/provider-gateway.md
  • microservices:用户服务配置命名仍保留 microservices;用户服务指挂载在 UniDesk 核心服务上的用户业务能力,支持 unidesk-directinternal-sidecark3sctl-managed 部署模式;code-queue-mgr 是主 server 内部 sidecar 控制面,D601 Code Queue 是执行面;k3s 代管必须使用标准 k3s/k8s 对象和 Kubernetes API service proxy,禁止业务容器直连、NodePort 和隐藏 fallback;缺少这些服务时核心仍可运行。主 server 本地开发边界固定为只开发 UniDesk frontend 和已登记的内部 sidecar 控制面;非 UniDesk 核心业务后端、Dockerfile、GPU/训练调试必须在目标计算节点通过 SSH 透传或 k3s 控制面完成,Todo Note 这类明确写入主 server 的例外需单独登记,规则见 docs/reference/microservices.md
  • docs/reference/e2e.md:交付前必须执行的自测门禁、Playwright 登录、资源监控进程排序、JSON 展示断言和数据库命名卷持久化要求。

Architecture Docs

  • docs/reference/arch.md:UniDesk 分布式工作平台的长期架构约束。
  • docs/reference/repo-tree.md:仓库结构目标与组件边界。
  • docs/reference/strategy-governance.md:UniDesk 外部收益约束、短长期收益划分和需求审视准则;战略分析记录见 GitHub issue #7。
  • docs/reference/code-queue-supervision.md:Code Queue 居中调度、并发队列拆分、运行中监控、基础设施缺陷分流和验收收口规则。
  • docs/reference/observability.md:服务日志、任务活性、通用性能指标 API 和性能面板的可观测性规则。
  • docs/reference/microservices.md:用户服务(兼容命名 microservice)的配置、代理、安全边界、unidesk-direct/k3sctl-managed 部署模式、Todo Note/Baidu Netdisk on main-server、k3s Control/Code Queue/MDTODO/Decision Center/FindJob/Pipeline/MET Nonlinear on D601 和验证规则。
  • docs/reference/windows-passthrough.mdWSL provider 通过 SSH 透传调用 Windows cmd/PowerShell、Keil、COM 串口和 Windows 侧 skill 的长期规则。
  • docs/reference/constar-d601.mdD601 上 ConStart/constar 固件工作区的 UniDesk SSH 入口、WSL skill wrapper、Keil 编译下载和串口/JSON-RPC 验证简要引导。
  • docs/reference/oa-event-flow.md:统一 OA 事件流微服务、事件表、tag 订阅、Trace/STEP 统计中心和前端可见性规则。
  • docs/reference/pipeline-oa-event-flow.mdPipeline/OA 事件流、审核/无审核流转、单步调试、甘特图渲染和最终去残留规则。
  • docs/reference/pipeline-model-proxy.mdPipeline v2 model proxy 链路架构、D601 宿主 proxy 服务部署、harness token 注入规则和 smoke test 验证流程。
  • docs/reference/deploy.mddeploy.json desired-state、target-side build、一次性构建 proxy、直管/代管服务部署 executor 和 live commit 验证规则。
  • docs/reference/devops-hygiene.mdGit-backed deployment truth、dirty worktree/manual repair 边界、受限手动操作和 CI 私有仓库 source-auth 规则。
  • docs/reference/cicd-standardization.mdCI.json catalog、CI producer summary、blocked/upstream-image 服务、File Browser 上游镜像例外、legacy CI/CD 路径分类和 CD consumer 分工。
  • docs/reference/release-governance.mdrelease/v1 稳定维护线、master 集成线、CI/CD server 版本固定、master CLI 兼容和 feature flag 治理规则;决策记录见 GitHub issue #6。
  • docs/reference/artifact-registry.mdD601 host-managed CNCF Distribution registry、loopback-only 边界和 backend-core artifact CD 目标流程。
  • docs/reference/user-service-delivery.md:用户服务默认交付流程、CI 镜像构建与 registry、Baidu Netdisk 主 server 直管微服务样板、dev 自动测试、prod 拉镜像部署和 Decision Center 产品化需求管理规则。
  • docs/reference/dev-environment.mdD601 unidesk-dev persistent dev 环境、18083 dev frontend proxy、deploy apply --env dev 服务范围和 Rust backend-core 只在 D601 编译的边界。
  • docs/reference/ci.mdD601 k3s Tekton CI、只读主数据库性能门禁和 CLI 入口规则。
  • docs/reference/code-queue-supervision.md:Code Queue 长任务波次的并发窗口、轮询、终态读取、阻塞拆分和 supervisor 边界。
  • docs/reference/dev-ci-runner.mdci run-dev-e2e 的 Git 控制 runner、短 launcher、结果目录和 no-CD 边界。
  • docs/reference/codex-deploy.mdD601 Code Queue 旧 codex deploy <commitId> 入口禁用原因、受控部署边界和后续 CD 目标行为。
  • reference:兼容旧路径的符号链接,指向 docs/reference/