Skip to content

Gap Analysis: DARE example CLI vs Claude Code/Codex CLI(可集成性差距) #135

Description

@zts212653

背景

在调研 DARE 接入外部编排平台(类似 Cat Café)时,我们发现 DARE 的 example CLI(examples/06-dare-coding-agent-mcp/cli.py)与 Claude Code / Codex CLI 这类“可被宿主系统稳定编排”的 CLI 存在接口层 gap

这不是在否定 DARE 的能力(A2A 路径已经可行),而是聚焦在:

  • 如果把 DARE example CLI 当作“可嵌入的外部 Agent CLI”
  • 目前和主流 CLI 在“可观测 + 可控制 + 可自动化”上的差异

关键 gap(对比 Claude Code / Codex CLI)

维度 Claude Code / Codex CLI(集成友好) DARE example CLI 现状 影响
输出协议 提供稳定 machine-readable 流(stream-json / --json print 人类可读文案为主([INFO]/[WARN]/[OK]),无稳定事件 schema 宿主很难可靠解析生命周期、工具事件、审批状态
控制面 宿主可通过 CLI flags / structured input 控制行为 审批/MCP 控制依赖 CLI 内部命令环(/approvals .../mcp ... 运行中外部编排很难自动化接管
输入模型 易于“非交互式编排” 主循环依赖 input("dare> ") + slash 命令解析 需要伪终端/人工输入,不适合 server-to-server 调度
审批接口 常有外部可调用接口或稳定协议面 审批 action 通过进程内 DirectClientChannel + TransportEnvelope 调用 外部系统无法直接复用审批能力(需深度嵌入 Python 进程)

代码证据(当前 example CLI)

  1. 交互输入主循环依赖 input("dare> ")

    • examples/06-dare-coding-agent-mcp/cli.py:991
  2. 输出主要是人类可读 print(...)

    • examples/06-dare-coding-agent-mcp/cli.py:148CLIDisplay
  3. 审批命令通过内部 Action envelope 调用

    • examples/06-dare-coding-agent-mcp/cli.py:538_invoke_approval_action
    • examples/06-dare-coding-agent-mcp/cli.py:544-546TransportEnvelope + EnvelopeKind.ACTION
  4. 运行中控制通过 slash 命令(非结构化控制面)

    • examples/06-dare-coding-agent-mcp/cli.py:798/approvals ... /mcp ...

建议(最小改造,不破坏现有 UX)

Phase 1(P1,低风险)

新增 --output-format ndjson(默认保持现状)

  • 事件建议:
    • session.started
    • model.response
    • tool.invoke
    • tool.result
    • approval.pending
    • approval.resolved
    • task.completed / task.failed

这样外部宿主至少可以稳定消费事件流。

Phase 2(P1)

新增结构化控制面(建议二选一):

  1. --control-port 暴露本地 HTTP/JSON-RPC 控制接口(审批、mcp reload/list、status)
  2. --control-stdin 接收 JSON 命令帧(避免依赖 dare> 文本命令)

这样外部系统可以在任务执行中做审批与热重载。

Phase 3(P2)

统一命令语义(interactive vs headless

  • interactive: 保留当前体验
  • headless: 禁止 input(),仅结构化 I/O

备注

  • DARE 的 A2A server(examples/05-dare-coding-agent-enhanced/a2a_serve.py)已经是很好的外部接入路径。
  • 本 issue 的目标是:如果团队希望 “example CLI 本身”也达到 Claude Code/Codex 那种集成友好度,需要补齐哪些最小能力。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions