huggingface/tau

GitHub: huggingface/tau

Tau 是一个极简的终端编程代理,既可作为代码助手执行读写和命令操作,也可作为教学示例帮助开发者理解如何构建智能体。

Stars: 955 | Forks: 117

Tau — a Python coding-agent harness inspired by Pi

一个小巧、易读的终端 coding agent —— 也是关于如何构建 coding agent 的实用示例。

文档 · 快速开始 · 架构 · PyPI · 路线图

## 什么是 Tau? **Tau 是一个运行在你终端中的 coding agent。** 你可以输入诸如 “解释这个 repo”、“添加测试”或“修复此 stack trace”之类的请求;Tau 能够读取文件、 编辑代码、运行命令,并在流式传输其执行过程的同时保留持久的会话历史。 Tau 也是一个旨在供人阅读的项目。它是一个教学项目,帮助你在不必从庞大生产级 代码库起步的情况下,理解 coding-agent 系统的架构。 ``` tau_coding → tau_agent → tau_ai ``` - `tau_ai` 将各种 model provider 转换为 Tau 的 provider 中立流。 - `tau_agent` 拥有可移植的“大脑”:messages、tools、events、loop、harness 以及 session 原语。 - `tau_coding` 将这个“大脑”封装为一个真正的 coding 应用:CLI、TUI、文件/shell 工具、 provider 配置、项目指令、skills 以及存储在磁盘上的 sessions。 重要的边界在于: ``` AgentHarness = reusable brain CodingSession = coding-agent environment TUI = one possible frontend ``` 核心层不知道 Textual、Rich、本地配置路径、斜杠命令或渲染的存在。前端负责消费 events。 ## 安装 Tau 已在 PyPI 上发布,包名为 `tau-ai`,并会安装一个 `tau` 命令。 它要求 Python 3.12 或更高版本。 ``` uv tool install tau-ai tau --version ``` 没有 `uv`?可以使用 `pipx` 或 `pip` 进行安装: ``` pipx install tau-ai # 或 python -m pip install tau-ai ``` 如果你更偏好使用 `uv`,可以通过以下命令安装: ``` curl -LsSf https://astral.sh/uv/install.sh | sh ``` 对于本地开发: ``` git clone https://github.com/alejandro-ao/tau.git cd tau uv sync --dev uv run tau --version ``` ## 快速开始 从你希望它处理的项目中运行 Tau: ``` cd my-project tau ``` 然后输入请求并按 **Enter** 键: ``` explain what this project does ``` 单次打印模式适用于脚本和快速 prompt: ``` tau -p "summarize the architecture" tau --cwd /path/to/project -p "find the CLI entry point" ``` Tau 需要一个 model provider。启动 Tau 并使用 `/login` 连接一个: ``` tau ``` ``` /login /login openai /login openai-codex /model ``` 内置目录位于 `src/tau_coding/data/catalog.toml` 中;你可以通过添加一个具有相同 schema 的 `~/.tau/catalog.toml` 文件来 加入你自己的 providers 和 models — 无需修改任何代码。 ## Tau 能做什么 - 交互式 Textual TUI 和非交互式打印模式。 - 内置 coding 工具:`read`、`write`、`edit` 和 `bash`。 - 位于 `~/.tau/sessions/` 下的持久化 JSONL sessions,支持恢复和分支。 - 用于登录、model 选择、sessions、压缩、导出、主题 等的斜杠命令。 - 来自 `AGENTS.md`、`.tau/` 和 `.agents/` 资源的项目指令。 - 用户 skills 和 prompt 模板。 - Context 核算、手动压缩以及可选的自动压缩。 - 针对 Rich、纯文本、JSON、 transcripts 以及 自定义前端的 provider 中立事件渲染。 ## 设计理念 Tau 遵循以下几项原则: - **小层胜过魔法。** 每个包只负责一项工作,并且可以独立阅读。 - **Events 即契约。** Providers、renderers、TUI 以及自定义 前端在一个类型化的 event stream 上交汇。 - **核心保持可移植。** 可复用的 harness 不依赖于 CLI、 Textual、Rich 或 Tau 的文件布局。 - **Tools 是普通的类型化函数。** 一个 tool 就是一个 schema 加上一个 返回结构化结果的 async 执行器。 - **Sessions 是持久且可检查的。** 历史记录是只追加的 JSONL;活动 context 可以在不重写记录的情况下被压缩。 - **文档跟随实现。** 公开文档解释最终结果; `dev-notes/` 保留了逐阶段构建日志。 ## 将 Tau 作为库使用 ``` from tau_agent import AgentHarness, AgentHarnessConfig harness = AgentHarness( AgentHarnessConfig( provider=provider, model="my-model", system="You are a helpful coding agent.", tools=tools, ) ) async for event in harness.prompt("Explain this package"): print(event) ``` 因为 harness 发出 events 而不是直接渲染 UI,所以相同的 core 可以驱动内置 TUI、打印模式,或者由你自己构建的前端。 ## 开发 ``` uv sync --dev uv run pytest uv run ruff check . uv run ruff format --check . uv run mypy ``` 从检出目录运行 Tau: ``` uv run tau uv run tau -p "explain this repo" ``` 运行 Hugo 文档站点: ``` cd website hugo server -D ``` 打开 。使用 `hugo --minify` 构建。 ## 文档 用户文档发布在 并存放在 `website/content/` 中。 有用的入口点: - [什么是 Tau?](https://twotimespi.dev/what-is-tau/) - [快速开始](https://twotimespi.dev/quickstart/) - [核心概念](https://twotimespi.dev/concepts/) - [架构概览](https://twotimespi.dev/internals/architecture/) - [Agent 循环与事件](https://twotimespi.dev/internals/agent-loop/) - [CLI 参考](https://twotimespi.dev/reference/cli/) Tau 正在积极开发中。实现路线图在 [GitHub issue #1](https://github.com/alejandro-ao/tau/issues/1) 中追踪。 ## 许可证 Tau 采用 [MIT License](LICENSE) 发布。
标签:安全规则引擎, 逆向工具