makecindy / makecindy/cindy

feat(plugin): 自动化任务绑定发起插件 + 插件管理自己绑定的那条任务

Open
#1,737 2 comments 0 reactions 1 assignee Claimed by @zqchris View on GitHub
feature
Dominant language
TypeScript
Stars
2.7k
Forks
395
Avg merge
21h 48m
Merged PRs (30d)
776

Description

> 承接已合流程中的 #1715(`feat(plugin): 插件可请用户新建自动化(agent.schedule 加档)`)。
> 那个 PR 只做了链路第一步:**插件请用户打开预填好的创建面板**。本 issue 是第二步。

## 目标

**自动化任务创建时绑定发起插件;绑定关系本身即授权边界** —— 插件可以查询和管理**自己绑定的那条**任务,看不到用户的其它自动化。

## 为什么需要

插件的自动化是**为它自己的 UI 服务的**:prompt 里会要求 AI 按插件约定的结构(比如 JSON)返回,插件拿这个结构去渲染自己的页面。

因此插件必须能在自己面板上显示

> 已开启 · 每小时 · 下次 15:00

并让用户**就地**改时间、暂停、关掉 —— 而不是让用户跑去自动化页找那条任务。

签字门看板、Codex 重置管家都是这个形态。

## 范围

- **绑定落库**:schedule 上记录发起插件 id(新增 DB 列 + migration)
- **插件查询自己绑定的任务**:是否有效、下次运行时间、频率、上次运行结果
- **插件管理自己绑定的任务**:改时间 / 改频率 / 暂停 / 关掉
- 权限归在现有的 `agent.schedule` 档下(「可以请你新建自动化」自然延伸到「管它自己请求的那条」),**装入确认文案要把「能改」说出口**

## 明确的边界

**不支持用户手动建的任务事后绑定到插件。**

理由(产品决策):插件的自动化 prompt 是它自己定的格式,用户手写的任务满足不了它的 UI 要求 —— 绑定关系只能在「插件发起创建」这条路径上建立。

## 落点提示(#1715 调研所得,可直接用)

| 要做什么 | 落点 / 先例 |
|---|---|
| 绑定字段 | `Schedule` 加可选字段 + `apps/desktop/src/main/localDb/schema.ts` 新列 + `mapper.ts` + `maker-shared` 跨端类型。可选字段的形态照 `silentWhenIdle` |
| 绑定写入时机 | `SchedulerPage` 的 `handleSubmit`:插件 intent 打开的表单,保存时把 `intent.ghostId` 一并写入。intent 已带 `ghostId`(`pluginScheduleCreateIntent.ts`) |
| 插件侧接口 | 管子上行请求,形态照 `scheduleSlot.ts`(#1715 新增)与 `previewSlot.ts` |
| 权限校验 | 每次查/改都要重查:插件仍装着、仍启用、仍声明 `agent.schedule`、**且该任务的绑定 id === 调用方 id** |
| 调度侧读写 | `packages/maker-scheduler` 的 `update` / `pause` / `resume` 已经齐备(`packages/lizi-mcps/src/scheduler/` 有现成调用形态),不要自造 |

## 依赖与顺序

- 依赖 #1715 先合(`agent.schedule` 权限档、intent 链路都在里面)
- #1715 已把按旧理解写的「刻意不给查询通道」全部改掉了(commit `6500ef42`),代码与手册里现在写的是「绑定与查改由后续版本提供」,不会自相矛盾

## 做的时候注意(#1715 踩过的坑)

1. **改插件基座 → 走白名单确认门**,需放行人明确 Approve,不看 diff 大小
2. **migration 进 main 就拆不掉**(仓规红线),schema 一次定对
3. **存量兼容红线**:不声明 `agent.schedule` 的插件,权限清单与内容清单必须逐字不变,加回归测试钉住
4. `features/scheduler/` 目录下**注释里写 PR 号要用 `review #1234` 的语序** —— `scheduler-ci-guard` 的色值白名单会把「井号 + 4 位数字」当成 RGBA 简写色值,只豁免紧跟 `PR ` / `review ` 的写法(#1715 在这上面红过一次 CI)
5. 新增窗口/入口判据时**按约定收口,别用黑名单枚举** —— #1715 的主壳窗口判据被 review 连推三轮(面板窗 → 会话副窗 → utility 窗)才收敛

## 参考

- PR #1715
- 意图契约(含完整设计推演与被推翻的 v1 方向):`~/Code/Github/cindy-design-drafts/plugin-prc-intent-v2.md`,同一份也在 worktree 的 `.git/.../cindy-intent.md`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.