Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
# agent-plugins

`agent-plugins` 用 Git 保存可跨 Codex 与 Claude 恢复的 Agent Plugin 资产。当前先从方法 Skill 开始,建立来源、运行端差异、验证和回滚边界。
`agent-plugins` 是公开的 Codex/Claude Plugin 源码仓,保存可版本化、可审阅、可回滚的 Plugin、Skill、双端发现清单和来源符合性检查。仓库内容只证明源码状态;不证明任何机器已经安装或正在使用它。

## 当前状态
## 开始工作

- 本仓变更只由负责人当前指令,或本仓公开、自足且经明确激活的 Issue/PR 合同授权;当前入口清理见 [Issue #11](https://github.com/zaurakworks/agent-plugins/issues/11)。
- 先读本 README、对应 Plugin manifest 与合同明确引用的文档。私有旧仓链接、迁移前编号和发布记录只作可选历史来源,不能成为理解、复现或授权的前提。
- 开发、来源验证和本机安装是三个独立状态:修改源码不会自动安装,测试通过也不证明运行端生效。安装与卸载始终由使用者在目标运行端明确执行。

## 发布记录(历史)

本批按[关联 agent-control#258(决定块权威模板落地)修正事件](https://github.com/Eridanus117/agent-control/issues/258#issuecomment-5293496974)补齐关联 agent-plugins#77(决定块三句权威模板)遗漏的发布身份:`github-collaboration` 提升到 `0.3.16`,两端 manifest、两份 Marketplace、符合性版本声明与 README 版本总览同步更新;运行端重装与三端指纹验收必须在本版进入 `main` 后另行完成,不能由源仓合并推定。

Expand All @@ -22,7 +28,7 @@

本批按 clean-slate 迁仓修正发布身份:仓库所有权由 `Eridanus117` 迁至 `zaurakworks`,七个 Plugin 的 `author.name` 与 `repository` 字段、两份 Marketplace(Claude 与 Codex)、符合性版本声明与 README 版本总览同步更新,七个 Plugin 各递增一个修订号。**运行端重装与三端指纹验收必须在本版进入 `main` 后另行完成,不能由源仓合并推定。**

正文中指向 `Eridanus117/agent-control` 的 Issue 链接**不在本次改动范围**:那些是历史证据,老仓冻结后仍可读,指向它是正确的。
以下发布记录保留迁移前编号以便仓库维护者溯源;其中私有链接对公共协作者不可用,只是可选历史来源。当前行为、贡献要求和验收必须在本仓公开内容中自足表达。

仓库目前包含八个可安装 Plugin:`grilling` `0.1.2`、`self-improvement` `0.1.7`、`skill-maintenance` `0.1.0`、`knowledge-maintenance` `0.1.3`、`orchestrated-collaboration` `0.2.6`、`adaptive-problem-solving` `0.2.12`、`github-collaboration` `0.3.18` 与 `resource-observability` `0.2.4`。

Expand Down Expand Up @@ -58,7 +64,7 @@

仓库分别维护两端的原生发现清单:Codex 使用 `.agents/plugins/marketplace.json`,Claude 使用 `.claude-plugin/marketplace.json`。Plugin 正文可以共享,但不能因为两端都叫 Marketplace 就假设清单格式相同。

当前需求和授权只来自 `C:\Users\Morni\workspace\agent-control`。本仓旧 Issue、旧研究和既有设计文档不是默认权威,除非该仓的当前任务明确把它们列为待核验材料。
本仓当前需求与授权只来自负责人当前明确指令,或本仓公开、自足且经明确激活的 Issue/PR。旧 Issue、私有历史和既有研究默认只作待核验来源,不能自行恢复工作。

## 安装 `grilling`

Expand Down Expand Up @@ -165,17 +171,17 @@ node plugins/orchestrated-collaboration/tests/verify-three-party-review.test.ts

这个仓不取代:

- `agent-control` 中已经确认的当前权威、活动任务和授权边界;
- 使用本仓 Plugin 的项目合同、任务授权与产品政策;
- 判断内容能否成为可信知识的知识库门槛;
- 某台电脑上的安装缓存和用户配置。

## 从这里开始

- 当前目标、授权和边界:读取 `C:\Users\Morni\workspace\agent-control\README.md` 及其指向的当前任务;
- 当前目标、授权和边界:读取本仓公开、自足且经负责人明确激活的 Issue/PR;没有明确合同则只做当前请求的最小范围;
- 当前可安装内容:读取本 README 和对应 Plugin manifest;
- `issue-workflow` 的三种模式、验收场景走读和当前证据等级:[`docs/issue-workflow-walkthrough.md`](docs/issue-workflow-walkthrough.md);
- **每个 Skill 替你做什么、什么时候用、花掉多少复杂度预算:[`docs/skills-overview.md`](docs/skills-overview.md)**(生成产物,符合性测试钉住它不会漂);
- 「装了才算数」的部署方式、Skill 的失效条件、最少复核、退役路径与复杂度预算:[`docs/lifecycle.md`](docs/lifecycle.md)。其中「必须声明失效条件与最少复核步骤」「数量与语料总量不得净增」由本仓 CI 强制;
- [方法资产模型](docs/asset-model.md)、[符合性检查](docs/conformance.md)、旧 Issue 和 `codex-work`:只作为历史或待核验材料,不默认指导新工作。

不要从旧交付顺序自行恢复工作。只执行 `agent-control` 当前任务明确授权的改动。
不要从旧交付顺序、私有历史或开放状态自行恢复工作。跨仓项目调用本仓 Plugin 时,以调用方公开合同和本仓当前可用接口的交集为边界。
32 changes: 13 additions & 19 deletions docs/lifecycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

知识有失效条件、有最少复核步骤、复核做不到就退出当前知识。Skill 一直没有这一层:一旦发布就永远有效,没有任何机制问它「你还对吗」。

本文补这一层,只补这一层。资产的对象责任见 [`asset-model.md`](./asset-model.md),证据等级与行为场景见 [`conformance.md`](./conformance.md),版本化来源自洽由本仓 CI 强制,本机安装态由 `agent-control` 的 `tools/plugin_release` 检测。
本文补这一层,只补这一层。资产的对象责任见 [`asset-model.md`](./asset-model.md),证据等级与行为场景见 [`conformance.md`](./conformance.md),版本化来源自洽由本仓 CI 强制;本机安装态由使用者在目标 Codex/Claude 客户端查询并以真实新会话核验。

一条贯穿规则:**能落成检查就不写成文字。** 下面每条规则都标注它实际落在哪一层——只有第 4 层(文本)才依赖执行者自觉,而第 4 层的每一条都应被视为暂时状态。

Expand All @@ -24,26 +24,22 @@

| 位置 | 状态 | 谁动它 |
| --- | --- | --- |
| `workspace/agent-plugins` | 保持 `origin/main` 的干净检出 | 只有 `plugin_release sync` 快进它 |
| `workspace/agent-plugins-work/<分支>` | git worktree,随便改 | 所有开发在这里 |
| `<repo-root>` | 保持 `origin/main` 的干净检出 | 发布或安装时更新 |
| `<worktree-root>/<分支>` | Git worktree | 所有开发在这里 |

生产检出保持干净**不再是安全要求**——在它上面编辑不会立刻影响任何会话。它是**可判定性要求**:漂移检测要回答「装的是不是 `origin/main` 应有的内容」,而工作树停在特性分支时它不代表那个内容,检测就失明了。

新建开发 worktree:

```
git -C C:/Users/Morni/workspace/agent-plugins worktree add ../agent-plugins-work/<分支> -b <分支>
git -C <repo-root> worktree add <worktree-root>/<分支> -b <分支>
```

合并后**让新正文真正生效**:
合并后**让新正文真正生效**,按本仓 README 从 `<repo-root>` 添加 Marketplace,并在目标客户端显式安装或升级对应 Plugin。随后回读客户端的已安装列表,再用一个真实新会话核验实际 Skill 描述或行为。

```
python C:/Users/Morni/workspace/agent-control/tools/plugin_release/plugin_release.py sync --apply
```

`sync` 校验生产检出干净且在 `main`、快进、报告本次生效的行为变化、**把内容装进缓存**、指纹验收。第三步不是账目维护,**那就是部署本身**。
本仓不提供跨机器部署器,也不把其他仓库的本机脚本作为公共发布前提。使用方可以在自己的项目中自动化“更新干净检出 → 安装 → 回读 → 新会话验收”,但该自动化必须声明自己的路径、权限和失败边界,不能由源仓合并推定成功。

强制层次:`sync` 在检出不干净或不在 `main` 时直接拒绝(第 2 层);`plugin_release check --hook` 在会话启动时报缓存漂移,或在判不出时如实说判不出(第 2⁻ 层);「开发不要在生产检出里做」仍是纪律(第 4 层)——git 不阻止你在任何 worktree 里编辑。
开发检出与安装检出分离是可判定性要求,不是源码即生产的安全假设:工作树停在特性分支时,它不代表 `origin/main`,也不能用于证明已安装内容。

## 一、失效条件与最少复核

Expand All @@ -62,7 +58,7 @@ python C:/Users/Morni/workspace/agent-control/tools/plugin_release/plugin_releas

标记本身是 CI 可检查的(有 `suspect` 就必须同时有命中的失效条件与日期);「不得再被引用为判据」目前只能是第 4 层。这是本文已知最弱的一条,如实写在这里。

**复核节律不进 CI。** 让 CI 因为时间流逝变红,会把与本次改动无关的红色带进每个 PR。到期与否是本机时间事实,归 `plugin_release` 的本地报告,不归版本化来源。
**复核节律不进 CI。** 让 CI 因为时间流逝变红,会把与本次改动无关的红色带进每个 PR。到期与否是使用环境的时间事实,由使用方检查并记录,不由版本化来源臆测。

## 二、退役

Expand All @@ -74,15 +70,13 @@ python C:/Users/Morni/workspace/agent-control/tools/plugin_release/plugin_releas

**已安装端怎么办,是这一节的重点。**

从 Marketplace 移除**不会**卸载任何运行端上已安装的副本。证据:运行端从不主动清理旧版本缓存,Claude 端曾累积到 76 个版本目录,`claude plugin prune` 只处理自动安装的依赖。因此「从仓库删掉」等于「留下一个不再被维护、但仍会被加载的正文」——这比不删更危险。
从 Marketplace 移除不会卸载任何运行端上已安装的副本。因此仓库退役与使用端卸载是两个必须分别取证的动作:

退役必须是一条命令走完,任一步失败即中止:

```
python tools/plugin_release/plugin_release.py retire <插件> --apply
```
1. 本仓确认无路由入边,获得负责人批准,从 Codex/Claude 两份 Marketplace 移除并通过来源符合性检查;
2. 每个使用方按本仓 README 的卸载命令移除对应 Plugin,并回读目标客户端确认不再安装;
3. 无法访问的使用端明确记为未知,不能由源仓删除推定已经卸载。

它按顺序做:确认无路由入边 → 从两份 Marketplace 移除 → 从每一份物理缓存卸载 → 回读确认三处都不存在。最后一步是关键:**不确认卸载,就不算退役完成**。
仓库只能证明第 1 项。没有第 2 项的客户端回执,就不能声称该运行端已完成退役。

## 三、复杂度预算

Expand Down