main — CLI 入口点

main — CLI 入口点#

源码:src/cclark/main.py

pyproject.toml 中定义的 CLI 脚本:

[project.scripts]
cclark = "cclark.main:main"

启动命令:

cclark

启动序列#

  1. 加载 ~/.unified-icc/config.yaml 或环境变量回退配置。

  2. 为默认 app 创建 FeishuClientFeishuAdapter

  3. 启动 UnifiedICC,连接 tmux、启动 session monitor、加载持久化状态。

  4. 注册 gateway 回调,把 AgentMessageEvent / StatusEvent 转换为飞书文本或卡片。

  5. 调用 set_handlers(gateway, adapter),让 message handler 能创建窗口、转发文本、发送回复。

  6. 启动 FeishuWSClient 长连接以接收飞书消息事件。

  7. 启动本地 health endpoint。

网关回调#

on_message 处理智能体输出:

  • thinking 消息进入 ThinkingCardStreamer

  • verbose on 时 regular output 进入 VerboseCardStreamer

  • verbose off 时 regular output 发送为普通文本。

  • marker-wrapped thinking 内容会被防御性拦截,避免作为普通文本泄漏。

on_status 处理终端交互状态:

  • Claude permission prompt 渲染为 Claude needs input 飞书卡片。

  • 当前 card action callback 尚未接入;用户通过普通回复卡片中列出的编号选择, 编号数量由 Claude 当前终端 prompt 决定。

关闭行为#

关闭时会停止 Feishu WebSocket、停止 unified-icc gateway、flush state,并关闭 httpx client。 shutdown 过程是幂等的,避免信号和 server stop 同时触发重复 flush。