# @amaster\.ai/pi-task-scheduler 中文文档

规范地址：https://npmcn.com/package/%40amaster.ai/pi-task-scheduler/

版本：0\.1\.37
npm 元数据更新时间：2026-11-09T02:51:38.608Z
中文译文更新时间：2026-11-09T06:02:22.391Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40amaster.ai/pi-task-scheduler
原文对照：https://npmcn.com/package/%40amaster.ai/pi-task-scheduler/?lang=original
项目主页：https://github.com/TGYD-helige/pi#readme
源码仓库：https://github.com/TGYD-helige/pi

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.7 MB，24 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：2 个
- peer 依赖：typebox \*，@earendil-works/pi-coding-agent \>=0\.79\.1
- 首次发布：2026-05-16T07:35:39.577Z
- 最新版本发布：2026-11-09T02:51:38.432Z
- 近 30 天下载量：5253（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：132（近 12 个月 132 个）

## 中文简介

可调用 LLM 工具的基于 cron 的计划任务管理的 P 扩展

## 安装

```sh
npm install @amaster.ai/pi-task-scheduler
```

也可以使用：`pnpm add @amaster.ai/pi-task-scheduler`、`yarn add @amaster.ai/pi-task-scheduler`、`bun add @amaster.ai/pi-task-scheduler`

## README

# @ amaster.ai/ pi- task- 排程器

![pi-task-scheduler preview](https://raw.githubusercontent.com/TGYD-helige/pi/master/packages/pi-task-scheduler/preview.png)

已排定的任务域类型,执行调度器,以及 pi 代理扩展.

软件包拥有调度解析,任务生命周期状态,流程本地计时器,跑车回调器,调度钩,以及用于自主任务管理的LLM可调用工具.

默认的 Pi 扩展跑取器会作为后续发送预定的提示:一个闲置的代理立即启动,而繁忙的代理则会在同一会话中排出后处理的提示.

## 存储

基于内置文件存储的包船( 默认, 外部依赖性为零 ) :

-   `JsonScheduledTaskStore` 持续执行 JSON 中带有原子写法的文件的任务
-   `FileSchedulerLock` ——基于PID的文件锁定,用于单所有者执行

用于数据库支持的存储(多租户,Prisma),使用 `@amaster.ai/pi-storage/scheduler` 用于执行与 `DbScheduledTaskStore` 财务报告和审定财务报表 `RedisSchedulerLock`。 。 。 .

### 默认( 文件存储)

```ts
import {
  PersistentTaskScheduler,
  JsonScheduledTaskStore,
  FileSchedulerLock,
} from "@amaster.ai/pi-task-scheduler";

const scheduler = new PersistentTaskScheduler({
  store: new JsonScheduledTaskStore("/var/lib/pi/tasks.json"),
  lock: new FileSchedulerLock("/var/lib/pi/tasks.lock"),
  runner: async (task, run) => {
    await runPrompt(task.prompt, { sessionId: run.sessionId });
  },
});

await scheduler.start();
```

### 自定义存储

执行 `ScheduledTaskStore` 财务报告和审定财务报表 `SchedulerLock` 用于任何后端(数据库、 Redis等)的接口 :

```ts
import { PersistentTaskScheduler } from "@amaster.ai/pi-task-scheduler";

const scheduler = new PersistentTaskScheduler({
  store: myCustomStore,   // implements ScheduledTaskStore
  lock: myCustomLock,     // implements SchedulerLock
  runner: async (task, run) => {
    await runPrompt(task.prompt, { sessionId: run.sessionId });
  },
});

await scheduler.start();
```

## 整合模式

软件包提供两条集成路径,取决于谁控制调度器生命周期.

### 模式1:扩展自动发现(独立/CLI)

当安装为 npm 依赖 `pi.extensions` 输入 `package.json`,运行时自动发现并加载扩展. 扩展创建自己的 `PersistentTaskScheduler` 以文件为基础的存储( e)`JsonScheduledTaskStore` + 键 `FileSchedulerLock`——完全自成一体,不需要外部基础设施.

```
pi.extensions → session_start → creates file-based scheduler → registers tools + commands
```

-   **存储**: 每届会议 `tasks-<session-hash>.json` 财务报告和审定财务报表 `scheduler-<session-hash>.lock` 文件在 `<agentDir>/data` (可通过以下方式配置基准目录: `dataDir`(中文(简体) )
-   **升级**: 匹配遗留任务 `tasks.json` 在第一次使用时复制 保留遗留文件
-   **生命周期**: 调度器开始于 `session_start`,停下来 `session_shutdown`
-   **图标**数字 : `/pi-scheduler-status`, (中文(简体) ), `/pi-scheduler-list`, (中文(简体) ), `/pi-scheduler-run-now`
-   **LLM 工具**数字 : `scheduler_create`, (中文(简体) ), `scheduler_list`, (中文(简体) ), `scheduler_get`, (中文(简体) ), `scheduler_update`, (中文(简体) ), `scheduler_delete`, (中文(简体) ), `scheduler_run_now`

通过设置密钥配置 `pi-scheduler`数字 :

项目 `.pi/settings.json` 数值只有在项目信任被接受之后才被加载,而不是环境插入。 用户和代理设置保留了环境插值.

```json
{
  "pi-scheduler": {
    "dataDir": "/custom/path"
  }
}
```

### 模式2:依赖性导入(主机控制)

当主机进程拥有调度器实例(例如由数据库支持)时,它绕过扩展并直接使用注册工具 `createSchedulerTools`数字 :

```ts
import { createSchedulerTools } from "@amaster.ai/pi-task-scheduler/tools";
import { PersistentTaskScheduler } from "@amaster.ai/pi-task-scheduler";

const scheduler = new PersistentTaskScheduler({
  store: myStore,
  lock: myLock,
  runner,
});
await scheduler.start();

// Returns ToolDefinition[] — register via your tool injection mechanism
const tools = createSchedulerTools(scheduler);
```

在这种模式下,自动发现的扩展应被过滤出,以防止双重工具注册. 主机独立管理调度器启动/停止.

```
host creates scheduler → createSchedulerTools(scheduler) → tools injected into runtime
                       → extension filtered from auto-discovery
```

### 选择模式

|  | 扩展(模式1) | 依赖性(模式2) |
| --- | --- | --- |
| 存储 | 基于文件( JSON) | 主机控制 |
| 排程寿命周期 | 扩展管理 | 主机管理 |
| 工具注册 | 扩展登记册 | 东道国登记册 |
| 多租户 | 没有 | 对 |
| 使用大小写 | CLI / 独立代理 | 服务器/ 自定义主机 |

## 时间安排

任务支持三种调度类型:

-   `interval`: 长度字符串, 如 `30s`, (中文(简体) ), `10m`, (中文(简体) ), `1h`,或 `1d`
-   `once`: ISO 时间戳或相对值,例如 `+5m`
-   `cron`: 5/6-字段克龙表达式和一个RRULA小子集

排程器不会在进程中断时间后追赶丢失的运行 。 当它开始时,它会为启用的任务登记未来的计时器.

## 钩子

虎克是最佳的可观察回调. 如果一钩投出,调度器会吞入错误并保持任务状态的权威.

## 结构化结果(Pi 0.99+)

调度工具声明 `outputSchema`列表返回 `{ tasks, total, truncated }`; 创建/获取/更新/运行 现在返回 `{ task, truncated }`; 删除返回 `{ taskId, deleted, truncated }`当任务记录没有标记时,结构化的任务提示已完成 `truncated`,即使可读摘要仅显示前100个字符。 超大任务记录省略了快取并保存了任务ID以供更新/删除. 获取包括已存储的任务元数据和运行历史标识符/状态/时间戳,不包括原始执行错误消息. 缺少任务、 错误的时间表和后端失败返回 `{ error, truncated }` 与 `isError: true`。现有的会话范围同样适用于脚本.

```javascript
const result = await tools.scheduler_list({});
if (result.error || result.truncated) throw new Error("Inspect the complete task list first");
for (const task of result.tasks.filter(t => t.enabled && t.name === "Daily check")) {
  text(await tools.scheduler_update({ taskId: task.id, enabled: false }));
}
```

结构化输出限于12个KiB,而顶级列表则限于100个完整的记录. `truncated: true` 表示省略的记录; `total` 保留已有的原始数。 超大小记录,带有 `id` 保留完整的ID和小分级元数据,省略大字段,并携带 `truncated: true` 在记录和信封上;呼叫者必须在重新使用内容进行更新之前检查该旗帜。 没有记录ID的超大小结果返回打出输出限制错误,而不是剪接路径或内容. 当发生这种情况时, 写入可能已经完成: 在重试前检查保存状态 。 可读文本和渲染器细节是独立限定的.

## 常见问题

### @amaster\.ai/pi-task-scheduler 是什么？

可调用 LLM 工具的基于 cron 的计划任务管理的 P 扩展

### 如何安装 @amaster\.ai/pi-task-scheduler？

在项目目录运行 npm install @amaster\.ai/pi-task-scheduler，或使用 pnpm add / yarn add / bun add。

### @amaster\.ai/pi-task-scheduler 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @amaster\.ai/pi-task-scheduler 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @amaster\.ai/pi-task-scheduler 可以商用吗？

@amaster\.ai/pi-task-scheduler 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @amaster\.ai/pi-task-scheduler 的下载量有多少？

根据 npm 官方下载统计，@amaster\.ai/pi-task-scheduler 在 2026/10/06 – 2026/11/04 这 30 天内被下载 5,253 次，日均约 175 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @amaster\.ai/pi-task-scheduler 还在维护吗？

最新版本 0\.1\.37 发布于 2026/11/09（今天）；至今共发布 132 个版本，其中过去 12 个月发布了 132 个；首次发布于 2026/05/16。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

