• 控制台「运行日志」看不到 LLM 逐字输出,不是坏了,是引擎按设计不存:
    
    1. **引擎根本不消费流式 chunk**:defaultAgentExecutor 的 onAcpEvent 只处理
       session/result(累 usage)与 mock/files,文本 chunk 一个字都不接。
    2. **事件里的自由文本截断到 600 字**(EVENT_TEXT_MAX),graph-engine.js 那段注释
       写了三条理由:完整输出无上限而 getRunState 每次轮询 SELECT * 全量回传;
       完整产物已有地址(output_ref)不该有第二个真相源;fail_reason 是选边的匹配键
       不能掺自由文本。
    所以 stream.log / timeline.ndjson 里只有结构化事件 + 短摘要。
    
    但 Claude CLI 自己把完整会话写在
      ~/.claude/projects/<cwd 路径的 / 换成 ->/<sessionId>.jsonl
    而 agent 的 cwd 就是 data/companies/<公司>/agents/<角色>,目录名可推。
    这个脚本把那份 jsonl 渲染成可读的实时流:
    
      node scripts/tail-agent.js <公司>                  列出哪些角色有 transcript
      node scripts/tail-agent.js <公司> <角色>            跟看(增量轮询,Ctrl+C 退出)
      node scripts/tail-agent.js <公司> <角色> --last 40  只看最后 40 条
    
    只渲染 assistant 的 text 当「LLM 输出」:user 侧的 text 是喂进去的东西(提示词全文、
    每轮注入的 <env_status>),跟看时纯噪音 —— 第一版没滤,实测满屏 env_status。
    user 侧只留 tool_result(agent 到底读到了什么,这个有用)。
    
    在运行中的实例上验过:mycompany/sdd-planning 正在跑时列表、--last、跟看三种都对,
    角色名写错时明确报「目录不存在 + 先跑列表看有哪些」,不静默空跑。
    
    ponytail: projects 目录名按 CLI 现行的「/ → -」规则推导,规则变了会找不到目录
    (会明说,不会假装没输出)。
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
    yibo authored
     
    Browse File »