背景
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 状态交叉核验;未调用供应商模型,也不将先前的逐供应商安装记录冒充本轮重新执行。
背景
CCCC 已有多种 Agent CLI 的探测和启动能力,但用户还需要在 CCCC 所在环境自行维护 CLI 软件。我们实现了一个独立的 CLI 管理扩展,希望作为通用功能提供给社区讨论。
这次先提交 Issue 和可审阅的 Fork 分支,不提交 PR;欢迎对功能范围、原生接入方式和后续贡献方式提出意见。
已实现的范围
已知边界
代码与验证
基于上游
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 状态交叉核验;未调用供应商模型,也不将先前的逐供应商安装记录冒充本轮重新执行。