使用说明
Crescent
Playwright for terminals — programmatic terminal control and inspection for AI agents
Rust库和MCP服务器,为AI代理提供对终端会话的完全语义访问。启动进程、发送击键和鼠标事件、读取结构化网格状态、截屏并等待输出模式——所有这些都通过干净的异步API或模型上下文协议实现。
特性
- 会话管理:启动、调整大小和关闭由真实PTY支持的多个并发终端会话
- 结构化网格检查:将终端读取为包含字符、颜色和属性(粗体、斜体、下划线)的二维单元格网格
- 屏幕截图渲染:通过自动系统字体检测生成PNG屏幕截图
- 完全输入支持:键入文本,发送带有修饰符的键(ctrl/alt/shift),单击(左/中/右),然后滚动
- 图案等待:异步等待正则表达式模式出现在终端输出中,并具有可配置的超时
- MCP服务器:10个工具MCP服务器通过stdio直接集成AI代理
- 交叉平台的:通过以下方式在macOS和Linux上工作
portable-pty
安装
# Build from source
git clone https://github.com/plyght/crescent.git
cd crescent
cargo build --release
MCP服务器二进制文件将位于 target/release/crescent-mcp.
用法
作为MCP服务器
Crescent通过stdio传输公开了10个工具。将MCP客户端指向二进制文件:
{
"command": "/path/to/crescent-mcp"
}
工具:
| 工具 | 说明 |
|---|---|
terminal_launch |
启动会话(命令、列、行) |
terminal_type |
在会话中键入UTF-8文本 |
terminal_key |
发送带有可选修饰符的按键 |
terminal_click |
在行/列处发送鼠标点击 |
terminal_scroll |
上下滚动N行 |
terminal_resize |
调整会话大小 |
terminal_grid |
获取结构化单元格数据、光标和尺寸 |
terminal_screenshot |
捕获base64编码的PNG |
terminal_wait_for |
阻塞,直到出现正则表达式模式 |
terminal_close |
结束会话 |
作为图书馆
use crescent::{Session, SessionManager, RendererConfig};
let manager = SessionManager::new();
let id = manager.launch("zsh", 80, 24).await?;
let session = manager.get(&id).await?;
session.type_text("echo hello\n")?;
session.wait_for("hello", Some(5000)).await?;
let grid = session.grid()?;
let png = session.screenshot(&RendererConfig::default())?;
配置
| 变量 | 目的 |
|---|---|
CRESCENT_FONT |
自定义等宽字体(.ttf/.otf)的路径。回到系统字体(Menlo、SF Mono、DejaVu Sans Mono等) |
RUST_LOG |
控制MCP服务器的日志详细程度(默认值: info,记录到stderr) |
建筑
crates/
crescent/ Core library
src/
session.rs PTY lifecycle, background reader, session manager
grid.rs 2D grid extraction from vt100 screen state
input.rs Key/mouse/scroll encoding to escape sequences
renderer.rs PNG rendering with system font detection
wait.rs Async regex pattern polling
crescent-mcp/ MCP server
src/
main.rs Tool definitions, stdio transport, session routing
发展
cargo build
cargo test
需要Rust 1.70+。关键依赖项:便携式pty、vt100、rmcp、ab_glyph、image、tokio、ratatui。
许可证
MIT许可证