Cangjie Magic控制台打印:输出格式化与颜色支持

【免费下载链接】CangjieMagic 基于仓颉编程语言构建的 LLM Agent DSL,其主要特点包括:声明式 DSL、支持 MCP 协议,支持任务智能规划等。 【免费下载链接】CangjieMagic 项目地址: https://gitcode.com/Cangjie-TPC/CangjieMagic

引言

在AI Agent开发过程中,清晰直观的控制台输出对于调试和监控Agent执行流程至关重要。Cangjie Magic作为基于仓颉编程语言构建的LLM Agent DSL,提供了强大的控制台打印功能,支持丰富的输出格式化和颜色显示。本文将深入解析Cangjie Magic的控制台打印机制,帮助开发者充分利用这一功能提升开发效率。

核心组件架构

Cangjie Magic的控制台打印功能主要由以下核心组件构成:

mermaid

颜色支持系统

ANSI转义序列基础

Cangjie Magic使用标准的ANSI转义序列来实现终端颜色显示:

const BEGIN = "\u{1b}["
const RESET = "\u{1b}[0m"

颜色枚举定义

系统预定义了7种常用颜色和样式:

颜色枚举 ANSI代码 描述
Color.Red 31 红色文本
Color.Green 32 绿色文本
Color.Yellow 33 黄色文本
Color.Blue 34 蓝色文本
Color.Magenta 35 洋红色文本
Color.Cyan 36 青色文本
Color.Bold 1 粗体样式

颜色扩展方法

通过扩展String类型,提供了便捷的颜色操作方法:

// 单色设置
"重要信息".withColor(Color.Red)

// 多色组合
"警告文本".withColors([Color.Yellow, Color.Bold])

// 快捷方法
"强调内容".bold()

标签系统与颜色映射

Cangjie Magic使用标签系统来标识不同类型的Agent输出,并为每种标签分配了特定的颜色:

标签类型 标签格式 对应颜色 用途描述
THOUGHT <thinking> 蓝色 Agent思考过程
ACTION <action> 绿色 工具调用动作
OBSERVATION <observation> 蓝色 观察结果
ANSWER <answer> 蓝色 最终答案
INFO <info> 绿色 信息提示
PLAN <plan> 红色 计划制定
FAIL <fail> 未定义 失败情况

ConsolePrinter实现解析

核心打印逻辑

ConsolePrinter类负责处理Agent执行过程中的各种事件,并根据事件类型应用相应的颜色:

public class ConsolePrinter <: EventStreamVisitor {
    private func getTagColor(tag: String): Color {
        if (tag == Tag.PLAN) {
            return Color.Red
        } else if (tag == Tag.INFO || tag == Tag.ACTION) {
            return Color.Green
        } else {
            return Color.Blue
        }
    }
}

事件处理机制

ConsolePrinter实现了两种主要的事件处理方法:

NotifyEvent处理

override public func on(event: NotifyEvent): Unit {
    let tag = event.tag
    let tagColor = getTagColor(tag)
    getStdOut().writeln(tag.withColor(tagColor))
    getStdOut().writeln(event.content.trimAscii())
    getStdOut().writeln(tag.close.withColor(tagColor))
}

ToolCallEvent处理

override public func on(event: ToolCallEvent): Unit {
    let tag = Tag.ACTION
    let tagColor = getTagColor(tag)
    getStdOut().writeln(tag.withColor(tagColor))
    getStdOut().writeln(event.toolRequest)
    getStdOut().writeln(tag.close.withColor(tagColor))
}

使用示例与实践

基础颜色使用

import magic.utils.{Color, Colorful}

// 单色文本输出
println("错误信息".withColor(Color.Red))
println("成功提示".withColor(Color.Green))

// 组合样式
println("重要警告".withColors([Color.Yellow, Color.Bold]))

// 快捷方法
println("强调内容".bold())

Agent输出监控

import magic.interaction.ConsolePrinter
import magic.core.agent.AsyncAgentResponse

// 启用详细输出模式
ConsolePrinter.print(asyncResponse, verbose: true)

// 标准输出模式(仅显示最终结果)
ConsolePrinter.print(asyncResponse, verbose: false)

自定义颜色映射

开发者可以扩展ConsolePrinter来自定义颜色方案:

class CustomConsolePrinter <: ConsolePrinter {
    override private func getTagColor(tag: String): Color {
        match (tag) {
            case Tag.PLAN => Color.Magenta
            case Tag.ACTION => Color.Cyan
            case Tag.INFO => Color.Yellow
            case _ => Color.Blue
        }
    }
}

最佳实践指南

1. 颜色使用原则

场景 推荐颜色 说明
错误信息 Red 引起注意的重要问题
成功提示 Green 操作成功完成
警告信息 Yellow 需要注意的情况
普通信息 Blue 一般性信息输出
强调内容 Bold 需要特别关注的内容

2. 输出格式优化

// 良好的格式示例
println("[INFO] ".withColor(Color.Green) + "进程启动完成")
println("[WARN] ".withColor(Color.Yellow) + "内存使用率较高")
println("[ERROR] ".withColor(Color.Red) + "文件读取失败")

// 结构化输出
val status = if (success) "✓" else "✗"
val color = if (success) Color.Green else Color.Red
println("${status.withColor(color)} 任务执行完成")

3. 性能考虑

虽然颜色输出提供了更好的可读性,但在高性能场景中应注意:

  • 避免在循环中频繁创建颜色字符串
  • 考虑使用条件判断控制颜色输出开关
  • 对于大量输出,可以先构建完整字符串再一次性输出

兼容性说明

Cangjie Magic的颜色系统基于ANSI转义序列,在大多数现代终端中都能正常工作,包括:

  • Linux/macOS终端(支持ANSI颜色)
  • Windows Terminal(支持ANSI颜色)
  • 主流IDE的控制台(IntelliJ IDEA、VS Code等)

对于不支持ANSI颜色的环境,系统会自动回退到无颜色输出模式。

总结

Cangjie Magic的控制台打印系统提供了一个强大而灵活的输出格式化框架,通过颜色支持和标签系统,开发者可以:

  1. 清晰区分不同类型的Agent输出
  2. 快速识别关键信息和错误状态
  3. 提升调试效率通过可视化的执行流程
  4. 自定义扩展满足特定项目的需求

掌握这些功能将显著提升你在Cangjie Magic平台上的开发体验和效率。无论是简单的信息输出还是复杂的Agent监控,颜色格式化都能为你的应用增添专业性和可读性。

通过合理运用颜色编码和输出格式化,你可以构建出既美观又实用的控制台界面,让Agent的执行过程变得更加透明和可控。

【免费下载链接】CangjieMagic 基于仓颉编程语言构建的 LLM Agent DSL,其主要特点包括:声明式 DSL、支持 MCP 协议,支持任务智能规划等。 【免费下载链接】CangjieMagic 项目地址: https://gitcode.com/Cangjie-TPC/CangjieMagic

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐