Skip to content

feat(cli): 支持查看可用 Agent 配置 - #980

Merged
xerrors merged 4 commits into
xerrors:mainfrom
Yuchuan925:feat/xhome-54-yuxi-cli
Aug 28, 2026
Merged

feat(cli): 支持查看可用 Agent 配置#980
xerrors merged 4 commits into
xerrors:mainfrom
Yuchuan925:feat/xhome-54-yuxi-cli

Conversation

@Yuchuan925

Copy link
Copy Markdown
Collaborator

变更说明

  • 任务类型:feature
  • 目标与非目标:新增 yuxi agent listyuxi agent show <slug>,让登录用户发现当前可调用的主 Agent,并查看服务端按角色过滤后的模型、Skills、提示词、工具等配置;不新增管理能力、不复制后端权限规则、不改变 Agent 运行语义。
  • substantial / trivial 判断:substantial。新增 CLI 用户契约、服务端 discovery 能力声明、负向边界和公开文档,已完成 spec-loop 决策记录与独立 Review。

工程主张与 Owner

  • agent list 只展示当前用户可见的主 Agent,并标识服务端给出的默认 Agent。可见性和默认顺序由 GET /api/agentAgentRepository.list_visible 拥有,CLI 只渲染响应。
  • agent show <slug> 只展示 GET /api/agent/{slug} 授权后返回的配置;不存在或无权访问继续由后端返回 404,CLI 不调用管理接口、不自行扩大资源范围。
  • --json 输出可直接被脚本解析的无 ANSI 原始 JSON;人类可读模式区分资源默认范围与显式空列表,并保留未知配置字段。
  • 新命令由 /api/system/discoverycli.agent_list / cli.agent_show 声明兼容性;旧服务端缺少能力时显式拒绝。
  • 决策记录:docs/develop-guides/decisions/implemented/2026-08-27-cli-agent-inspection.md

验证情况

当前用户可发现可见 Agent 与默认标识

  • 失败面:CLI 扩大服务端范围、遗漏默认标识、空列表伪装为错误、远端文本被 Rich markup 解释。
  • 语义 Owner:GET /api/agentyuxi_cli.agent.run_agent_list
  • 直接证据 / 命令:cd packages/yuxi-cli && UV_PYTHON=3.13 uv run --group test pytest -q
  • 负向案例:未登录、缺失 cli.agent_list、畸形 payload、空列表、包含 Rich 标记的远端名称。
  • 结果:Passed(CLI 共 107 passed)。

可查看授权后的 Agent 详细配置

  • 失败面:绕过详情授权、混淆默认资源与显式空列表、丢失其余配置、JSON 含 ANSI、404 被改写。
  • 语义 Owner:GET /api/agent/{slug}yuxi_cli.agent.run_agent_show
  • 直接证据 / 命令:CLI 107 tests;test_chat_router.py::test_agent_detail_filters_configurable_items_by_role;隐藏 Agent 真实 HTTP 探针。
  • 负向案例:未登录、缺失 cli.agent_show、Agent/config/context 畸形、服务端 404、强制终端环境下 JSON 解析。
  • 结果:Passed(integration 1 passed,隐藏 Agent 返回 HTTP 404)。

服务端声明 CLI 查询能力

  • 失败面:新 CLI 对旧服务端静默调用未知契约,或 LITE 错误关闭无需知识库运行时的 Agent 查询。
  • 语义 Owner:backend/server/routers/system_router.py
  • 直接证据 / 命令:cd backend && UV_PYTHON=3.13 uv run --group test pytest test/unit -m "not slow"
  • 负向案例:CLI 测试删除任一能力时在兼容性检查处失败;unit/integration 断言两项 discovery 能力。
  • 结果:Passed(1590 passed;定点 router 4 passed)。

工程契约与用户文档保持可验证

  • 失败面:决策记录未收敛、文档入口不可发现或构建失败。
  • 语义 Owner:engineering contracts、docs/intro/cli.md
  • 直接证据 / 命令:python3 scripts/verify_engineering_contracts.pypython3 -m unittest scripts.test_verify_engineering_contractscd docs && pnpm run build
  • 负向案例:proposed decision 遗留、决策/导航契约破坏、文档链接或构建错误。
  • 结果:Passed(工程契约通过,61 tests;docs build 通过并保留既有构建警告)。

简化 / 删除验收

不涉及。本变更复用现有认证 Agent API 与 repository 可见性 Owner,没有新增 CLI 专用路由、权限副本、配置项或兼容层。

独立语义 Review

全新上下文 Reviewer 覆盖了 xhome #54 需求、完整 diff、Agent 资源选择语义、授权/404 负向证据与测试结果。首次发现空列表语义需要按字段区分、详情 payload/404 负向证据不足,均已修复;最终定点复核确认原始 JSON 无 ANSI 且可解析,结论为无发现、无未解决项。

未验证范围与风险

  • 未在已发布的 CLI 安装包或外部部署环境执行端到端命令;当前证据覆盖 worktree 完整 CLI tests、修改后端的本地完整 unit、现有真实 API 权限 integration 与 HTTP 404。
  • 规范要求的容器命令因容器内 /usr/local/lib/python3.13/site-packages/__editable__.yuxi-0.7.2b2.pth 无删除权限而无法同步;--no-sync fallback 在当前主工作区容器基线上为 1569 passed、40 skipped,不作为本工作树改动的替代证据。
  • 完整 CLI ruff check src tests 命中既有 PYI034、PIE810、B008 等基线问题;本次新增 Agent 实现与测试的定点 uvx ruff format/check 已 Passed。

事故反馈

不涉及高影响逃逸缺陷;这是新增可发现性能力。

界面变更

不涉及 Web 界面;仅新增终端表格与 JSON 输出。

关联事项

xhome #54 Yuxi-CLI。

补充说明

无数据迁移和配置迁移。Agent 可见性及角色过滤继续由后端现有接口拥有。

@xerrors
xerrors merged commit e8e6920 into xerrors:main Aug 28, 2026
7 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