Pi Agent Harness 项目介绍
Pi Agent Harness 项目介绍
项目定位
Pi 是由 Earendil Works 开源的 AI 编程助手 Monorepo,提供从底层 LLM API 统一封装到上层交互式编码 CLI 的完整技术栈。
它解决的是一类问题:如何让一个 Agent 在长时间运行中可靠地与多个 LLM 提供商交互、管理不断增长的上下文、在运行中被外部”转向”,并支持可插拔的技能系统。
核心能力
- Agent 运行时(pi-agent-core):事件驱动的 Agent 循环,支持流式响应、并行/串行工具执行、steering/followup 消息队列、
beforeToolCall/afterToolCall生命周期钩子 - 统一 LLM API(pi-ai):封装 OpenAI、Anthropic、Google、Bedrock、Mistral、Cloudflare 等 15+ 提供商,统一的
streamSimple接口、OAuth 设备码登录、prompt 缓存亲和性 - 编码 Agent CLI(pi-coding-agent):交互式编码助手,支持 read/bash/edit/write/grep/find/ls 等核心工具、SKILL.md 技能系统、JSONL 会话持久化、上下文自动压缩
- 终端 UI 库(pi-tui):差分渲染的 TUI 组件库,包含编辑器、输入框、选择列表、Markdown 渲染、图片显示
技术栈
| 维度 | 选择 |
|---|---|
| 语言 | TypeScript(Node.js 22+,支持 Bun) |
| 构建 | esbuild + shx |
| 类型检查 | TypeScript 5.9(erasable syntax,Node strip-only) |
| Lint/Format | Biome 2.3 |
| 测试 | Vitest |
| 包管理 | npm workspaces(monorepo) |
| Schema | TypeBox(运行时类型验证) |
| 会话存储 | JSONL + 内存双后端 |
| CI/CD | GitHub Actions + npm trusted publishing |
架构概览
快速体验
# 从源码运行git clone https://github.com/earendil-works/pi.gitcd pinpm install --ignore-scriptsnpm run build./pi-test.sh # 启动交互模式
# 或直接使用 npm(发布版)npx @earendil-works/pi-coding-agent -p "解释这段代码"教程导读
本教程分为 AI 应用 和 开发工程 两个维度:
AI 应用教程 从项目出发,抽象出 Agent 设计的通用知识,涵盖:
- Agent 核心循环的 steering/followup 消息队列架构
- 工具调用的并行/串行执行与生命周期钩子
- 上下文压缩与分支摘要策略
- 基于 SKILL.md 的技能系统
- 树状会话管理与 JSONL 持久化
- 多提供商 LLM API 统一抽象
开发工程教程 聚焦项目的具体工程实践:
- TypeScript monorepo 的分层构建与 erasable syntax
- npm 依赖供应链加固
- 可配置的 resolveConfigValue 系统
- TUI 差分渲染组件库
- 本地发布 smoke test 流程