# pi-trellis-guard

[English](README.md) | 中文

一个 [pi](https://pi.dev) 扩展，把 Trellis 子 agent 留在 Trellis 自己的路径上：

1. **回合预算**：Trellis 拉起的子进程是完整 pi 会话，不吃 pi-subagents 的 `max_turns`。子进程需设置 `TRELLIS_SUBAGENT_CHILD=1`。策略与 pi-subagents 相同：到 `maxTurns` 时 steer 收束提示，再跑 `graceTurns` 还不收口就 abort。
2. **路由拦截**：`trellis-*` agent 文件会被 [pi-subagents](https://www.npmjs.com/package/@gotgenes/pi-subagents) 扫到。经 `subagent` 调用会丢掉 Trellis 的任务上下文注入。这类调用会被拦截，应改用 `trellis_subagent`。

## 安装

```bash
# 从 npm 安装
pi install npm:@lll9p/pi-trellis-guard

# 从源码安装
pi install .
```

然后 `/reload`。

需要 **pi** ≥ 0.84.3。

回合预算只在子进程带有 `TRELLIS_SUBAGENT_CHILD=1` 时生效。Trellis spawn 时必须设置该变量；未设置时只启用路由拦截。

## 配置

项目配置覆盖全局。文件不存在则用默认值。扩展不会自动创建这些文件。

```
.pi/extensions/pi-trellis-guard/config.json
~/.pi/agent/extensions/pi-trellis-guard/config.json
```

```json
{
  "maxTurns": 100,
  "graceTurns": 5
}
```

| 选项 | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| `maxTurns` | 正整数 | `100` | 到达该回合后 steer 收束提示。非法值会被忽略。 |
| `graceTurns` | 正整数 | `5` | `maxTurns` 之后再给的回合数，用尽后 abort。非法值会被忽略。 |

## 测试

```bash
bun test
```

## 许可证

MIT
