Skip to content

功能建议:原生 CLI 管理(受管安装、更新、卸载与自动更新计划,附实现) #101

Description

@miaolinopenvox

背景

CCCC 已有多种 Agent CLI 的探测和启动能力,但用户还需要在 CCCC 所在环境自行维护 CLI 软件。我们实现了一个独立的 CLI 管理扩展,希望作为通用功能提供给社区讨论。

这次先提交 Issue 和可审阅的 Fork 分支,不提交 PR;欢迎对功能范围、原生接入方式和后续贡献方式提出意见。

已实现的范围

  • 在原生 Web“设置 → 全局 → CLI 管理”中安装、更新、卸载受管 CLI,沿用现有页面风格与中英日文案。
  • 覆盖现有 17 个有已知安装来源的 Agent CLI;Web Model 和 Custom 不属于通用软件安装对象,因此仅从本管理页排除,不影响它们原有的 Runtime 功能。
  • 使用 mise 及明确的供应商发行来源提供隔离安装;CCCC 运行环境需要预先提供 mise。
  • 默认启动优先使用经过验证的受管版本;无受管记录时继续原生外部探测;显式程序路径不被全局默认覆盖。更新仅影响后续启动,不中断现有 Actor。
  • 外部安装不被接管、更新或删除;卸载仅限有归属记录的受管目录,保留登录、原生会话、Group、Actor 和操作记录。CCCC 启动者正在使用时拒绝卸载。
  • 实例内串行执行软件操作,提供持久化操作记录和原生文件日志的脱敏尾部视图。
  • 自动更新计划沿用已有 interval/cron/at 表单合同,周期默认 03:00、初始关闭,只更新已受管的软件。星期编号转换只在新模块内部完成,不修改工作组自动化的公共 cron 解释。
  • 安装/更新验证失败不切换当前选择;中断状态明确记录;管理状态损坏不使原生 Runtime 目录整体不可用。启动边界仍拒绝损坏的受管状态。
  • 沿用既有全局管理权限、CSRF、操作注册、持久化锁及进程树管理,不引入第二套调度框架、外部通知 Webhook 或会议业务概念。

已知边界

  • 真实供应商包安装及同版本更新的既有证据限 Linux x86_64;不宣称所有操作系统、所有架构、跨版本更新、供应商登录或真实模型会话均已验证。
  • 卸载失败可能已经移除部分文件,会保留受管记录并明确报错,不承诺文件级回滚;可重试卸载或更新修复。
  • 使用保护覆盖 CCCC 启动的进程,不扫描或终止其他终端任意启动的程序。
  • 本功能不提供手动版本回切、周期清理旧版本、账户登录管理或 CCCC 自身更新。

代码与验证

基于上游 0c1d10a1,整理为一个独立功能提交,不包含 Mattermost 连接器、治理文档或内部部署资料。

本轮在该上游基线重新执行 363 项自动化检查,全部通过;1 项需要真实供应商下载的测试按既定规则跳过。包含 CLI 生命周期、Actor 启动、DeepSeek 原路径等价性、Runtime 故障隔离、原生调度锁、Claude 语音会话、HTTP 权限及前端/三语检查。npm run check、生产前端构建、Rust 格式检查及 cargo build -p cccc --bin cccc 通过。

同一构建的隔离实例完成真实浏览器复核:17 项管理清单、默认 03:00 且未启用、周日计划保存和页面重载、正确下次执行时间、移除计划、受控安装失败及操作日志、390px 窄屏。操作与只读 HTTP 状态交叉核验;未调用供应商模型,也不将先前的逐供应商安装记录冒充本轮重新执行。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions