Skip to content
Open
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
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ jobs:
- name: Test plugin distribution
run: npm run test:plugins

- name: Test capability diagnosis and loading reports
run: npm run test:diagnostics

- name: Validate npm package
run: npm run pack:dry-run

Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,15 @@ npm run test:manifest
npm run test:invocation
npm run test:continuation
npm run test:install-rules
npm run test:diagnostics
npm run verify:upstream
npm run pack:dry-run
```

`verify:upstream` checks the recorded capability mapping; it does not establish parity with the latest upstream version. `npx claude-everything-workflow verify` validates the published distribution rather than your local project. Neither command proves an agent's effectiveness on real tasks.

[Installed capability diagnosis and five-case loading samples](docs/capability-diagnostics.md): `cew doctor --host codex` / `cew loading --trace FILE --case small-fix`.

For contributions, describe the problem and expected behavior, keep the change focused, and include the checks you actually ran. See the [Git rules](rules/05-git-workflow.md).

## Acknowledgments
Expand Down
3 changes: 3 additions & 0 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,15 @@ npm run test:manifest
npm run test:invocation
npm run test:continuation
npm run test:install-rules
npm run test:diagnostics
npm run verify:upstream
npm run pack:dry-run
```

`verify:upstream` 检查已登记的上游能力映射,不代表与最新上游完全一致。`npx claude-everything-workflow verify` 检查已发布的分发包,而不是当前业务项目。两者都不能证明 Agent 的真实任务效果。

[实际能力诊断与五类加载采样](docs/capability-diagnostics.md):`cew doctor --host codex` / `cew loading --trace FILE --case small-fix`。

提交贡献时说明问题与预期行为,保持改动范围集中,并列出实际运行的检查。具体要求见 [Git 规则](rules/05-git-workflow.md)。

## 致谢
Expand Down
12 changes: 12 additions & 0 deletions bin/claude-everything-workflow.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@ function main() {
process.exit(0);
}

if (command === "loading") {
require("../scripts/diagnostics/loading").main(args);
return;
}

if (command === "doctor") {
require("../scripts/diagnostics/capabilities").main(args);
return;
}

if (command === "install") {
runInstall(args);
return;
Expand Down Expand Up @@ -95,6 +105,8 @@ function printHelp() {
Usage:
cew install [--claude-only|--codex-only] [--dry-run]
cew verify
cew doctor [--host all|codex|claude] [--json]
cew loading --trace FILE --case ID [--root DIR] [--json]

Examples:
npx claude-everything-workflow install
Expand Down
69 changes: 69 additions & 0 deletions docs/capability-diagnostics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# 实际能力诊断与加载采样

诊断沿用 `cew`,不修改个人文件,不修复或升级安装。它补充源码校验 `cew verify`,不替代真实任务验收。没有新增常驻规则、Hook 或技能路由。

## 只读检查安装

在当前源码目录执行,或把下面的 `node bin/claude-everything-workflow.js` 换成已安装的 `cew`:

```sh
node bin/claude-everything-workflow.js doctor --host codex
node bin/claude-everything-workflow.js doctor --host claude --json
node bin/claude-everything-workflow.js doctor --host codex --project /path/to/project --plugin-root /path/to/plugin --json
```

对照版本是运行命令所在的分发包或 checkout;不会联网推测“最新版”。报告记录该位置、包版本、正文与引用文件的 SHA-256 指纹。比较前仅统一 CRLF/LF 换行,不忽略其他正文差异。登记表相同也会独立比较每个技能正文。

默认检查两个宿主。`--host codex|claude` 限定宿主;`--home DIR` 使用 DIR 下的 `.codex` / `.claude`,便于隔离验证。未传 `--home` 时尊重 `CODEX_HOME`、`CLAUDE_CONFIG_DIR`。`--project` 默认当前调用目录,不是 CLI 包的目录。

检查项目和用户级技能目录、Codex 的 `.agents/skills`,以及宿主 `plugins/cache` 中能确认包名的 CEW 插件。插件缓存扫描最多六层、4000 个目录,不递归跟随目录软链接;自定义目录、marketplace checkout 或其他宿主位置用可重复的 `--plugin-root` 显式指定。扫描错误会作为 finding 报告。扫描不是宿主完整配置解析;禁用和旧缓存也可能出现。

| 字段 | 含义 |
| --- | --- |
| `DISCOVERED` / `NOT_FOUND` | 磁盘上发现或未发现入口 |
| `MATCH` / `DIFFERENT` / `NO_REFERENCE` | 内容与对照版本一致、有差异,或个人引用在分发包中没有对照;不判断旧安装还是个人修改 |
| `STATIC_READY` | 入口及直接、具体的本地引用可读,仅为静态前置条件 |
| `BLOCKED` / `UNVERIFIED` | 引用缺失、不可读,或引用超出可确认范围 |
| `selection: UNVERIFIED` | 未证明宿主实际选择了该副本 |
| `DUPLICATE_CANDIDATES` | 同一宿主有多份物理副本;不等于确认重复加载 |

相同物理文件的软链接别名会去重。规则路径沿用 `AGENTS.md`:项目优先,再用户目录;Claude 专项规则先保留个人 `rules/common`,再回退 `references/rules/common`。插件包里的规则不自动充当用户规则回退。

引用检查覆盖正文中具体的 Markdown 链接、代码格式文件路径和路由代码块内的文件路径;合并对照正文与实际正文里的引用,避免旧安装漏掉新依赖。它包含条件分支的潜在直接引用,不递归推断整个执行图,不解析脚本依赖、自然语言里的动态路径、系统工具、账号、权限或生产环境。因此 `STATIC_READY` 不是“已执行通过”,也不能保证每个条件分支可运行。实际正文的相对引用会结合候选技能目录解析;存在但没有分发对照的个人文件报告为 `NO_REFERENCE` / `UNVERIFIED`。分发正文的引用仍独立核对,避免同名根目录文件掩盖技能内的缺失依赖。差异只报告,不覆盖。

退出码:`0` 无发现项,`1` 有差异、缺失或重复候选,`2` 参数或诊断本身出错。缺少一个宿主的安装也会报告;只使用一个宿主时传 `--host`。

## 五类加载基线

[harness/loading/cases.json](../harness/loading/cases.json) 保存普通问答、小修复、正式设计、执行验收、建立验收能力五类自然语言请求。它是采样用例,不是第二套路由表。没有改变自然语言触发或安全、审查、验证规则。

```sh
codex exec --json '你的自然语言任务' > /private/local/trace.jsonl
node bin/claude-everything-workflow.js loading --trace /private/local/trace.jsonl --case small-fix --json
```

实际操作应在相应的隔离项目运行第一条命令。额外的 `--root DIR` 将实际安装或项目里的规则、技能及参考文件加入比对,可重复使用;默认仅对照当前包。读取有个人修改的安装时传入其宿主根目录,才能匹配那份正文。

报告只从 Codex CLI 的 `item.completed / command_execution / aggregated_output` 中匹配完整正文,输出逻辑路径、候选物理路径、内容指纹、读取次数、累计及重复字符量。项目 `.agents/skills/`、`.claude/skills/` 统一为 `skills/` 逻辑路径,再应用用例的禁止读取前缀;`candidatePaths` 保留实际位置。它不从命令字符串或文件名出现推测“已读”。CRLF/LF 归一后匹配;一个完整正文在输出里出现两次,计为两次。相同内容的候选副本不重复计费,也不能由此判断宿主选择。

**观测边界:** 宿主自动注入、部分读取、加行号或其他变形输出、其他工具类型及上下文压缩不在统计内。这是完整文件工具输出的下界,不是完整会话上下文账单。`actualFileTokens` 留空,字符数除以四只是粗略估算;宿主 usage 单独记录整个 turn 的用量,不归因到某份文件,也不据此声称节省量。

`NO_VIOLATION_OBSERVED` 只表示没有观察到该用例禁止的完整正文;不是任务或安全验收通过。缺少 `turn.completed` 是 `INSUFFICIENT_EVIDENCE`。仍要按用例的 `review` 核对最终行为、必要规则和验证证据。实际总 Token 节省须后续在相同任务、宿主和模型条件下做对照实测。

退出码:`0` 未观察到禁止读取,`1` 观察到禁止读取或会话不完整,`2` 输入/格式错误。输入目前仅支持 Codex CLI JSONL,Claude 轨迹未适配。

## 可选的真实模型采样

```sh
node scripts/diagnostics/sample-loading.js --output docs/superpowers/evidence/loading-run-1
# 只运行一种
node scripts/diagnostics/sample-loading.js --output docs/superpowers/evidence/loading-run-2 --case small-fix
```

这会消耗当前 Codex CLI 账号的模型额度,默认顺序启动五个独立会话,沿用当前宿主配置和技能,比对清单包含宿主根目录、用户共享的 `~/.agents/skills` 及临时项目;不会被 `verify`、诊断、测试或 CI 自动调用。它创建本次所属的临时 Git 项目,保留轨迹、错误、结果和工作成果用于复核。每次调用最多三分钟,可用 `--timeout-ms 1000..180000` 下调;模型调用失败即停止,不自动循环重试。输出目录必须尚不存在,避免覆盖历史证据。

采样项目只包含 Node 标准库、一个公开函数及测试;执行验收用例有现成入口,建立验收用例没有。为使完整读取可观测,项目说明要求用不截断的 `cat` 读取材料,每次最多三份,但不要求加载任何额外文件。这是受控采样,不能代表所有真实项目或桌面 App。自动报告的行为审核初始为 `NOT_RUN`,复核后另行记录,不把模型自报完成当作通过。

原始轨迹可能包含用户上下文和路径,只保存在本地忽略目录;长期报告只保留必要统计和证据指纹,不提交原始会话。复核后只清理输出中列明的本次临时项目,按项目约定保留证据;不删除用户的安装或其他任务工作区。

首轮实测结果见[五类加载基线](loading-baseline-2026-11-02.md),其中三类完整、两类超时;没有 Token 节省结论。
49 changes: 49 additions & 0 deletions docs/loading-baseline-2026-11-02.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# 五类任务的首轮加载采样(2026-11-02)

本轮取得五类实际 Codex CLI 轨迹:普通问答、小修复、执行验收完整结束;正式设计、建立验收能力在三分钟上限超时,属于不完整样本。没有观察到普通任务提前加载 Spec、ticket 或验收建设参考;这个结论只覆盖匹配到的完整正文,不代表所有实际加载行为。

## 环境与口径

- 对照:本地 CEW `0.2.5`,基线 `42dda80522ba96f0c02c2c3913eadf3d1f4d92a9`,本轮新增诊断与采样工具;没有修改技能、规则或路由正文。
- 宿主:macOS、`codex-cli 0.160.1`,沿用当前用户配置和技能;有效模型未在本次 CLI JSONL 中记录,不能据此建立跨模型比较。
- 每类一个独立会话和隔离的 Node 标准库项目;没有外部服务、账号操作或生产数据。
- 读入量来自完整正文在工具输出中的匹配,包含项目验收入口;同一输出位置的分发正文/个人较长变体不重复累计。自动注入、局部或变形读取不在统计内。
- 文件指纹和轨迹指纹按 LF 换行归一后计算 SHA-256。表内轨迹指纹仅展示前 12 位;本地原始报告保留全值。

## 实测结果

| 类别 | 行为审核 | 文件数 / 读取次数 | 观察到的字符量 | 重复字符量 | 轨迹指纹前缀 |
| --- | --- | --- | --- | --- | --- |
| 普通问答 | PASS | 0 / 0 | 0 | 0 | `b1f2a19a1721` |
| 小修复 | PASS | 8 / 8 | 14,450 | 0 | `eaa745e5f31d` |
| 正式设计 | BLOCKED | 8 / 8 | 20,749 | 0 | `7b2e17fe2a64` |
| 执行验收 | PASS | 7 / 7 | 6,990 | 0 | `366b8250dffa` |
| 建立验收能力 | BLOCKED | 9 / 9 | 17,467 | 0 | `095abeef3463` |

这里的 `PASS` 仅指本次小型采样任务,不能外推到实际产品、桌面 App 或所有项目。两项 `BLOCKED` 的字符量是中断前的下界,不能与完整任务作为等价成本比较。没有发布实测 Token 节省量;字符除以四的粗估值未作为性能结论。

## 逐类核查

- **普通问答:PASS。** 回答了 map/forEach 的区别与示例,没有工具调用,也没有观察到技能正文读取。宿主自动注入内容仍未统计。
- **小修复:PASS。** 读取路由、调试、TDD、基础/实现/Git/禁止规则与测试规则;先观察空数组回归失败,再增加初值,公开函数的两个测试通过。只修改实现和测试,差异检查通过;没有读取 Spec、ticket 或验收建设参考。
- **正式设计:BLOCKED。** 读取了 Spec 及其模板、自审参考,并保存草稿;采样超时,缺少 `turn.completed` 和最终待审交付。不得视为 Spec 审核流程通过,也没有用户批准。未观察到实施、拆票或验收建设材料。
- **执行验收:PASS。** 复用项目已有 Skill 和功能地图,`npm run verify` 两项公开函数用例通过,证据日志已回读,代码及设施没有改动;没有读取验收建设参考。
- **建立验收能力:BLOCKED。** 正确读取了验收建设参考,已有入口、地图和证据草稿;采样超时且缺少完整最终交付,不能把草稿称为已交付能力。未观察到 Spec 或 ticket 材料。

完整样本均没有重复完整正文读取。小修复与执行验收观察到禁止事项及测试规则,且真实测试与改动边界符合该小项目请求;这不证明所有安全约束在其他项目中均有效。因此本轮不据此缩减安全或验证要求,也不调整路由。

## 安装核查及工具验证

在 CEW 仓库作为目标项目时,Codex 和 Claude 各发现 20 个 CEW 技能,未发现正文、登记表、有效直接引用差异或重复候选。换成隔离采样项目后,Codex 用户级 `rules/02-implementation.md` 与分发包有差异,诊断如实报告;在 CEW 仓库中它由项目规则优先覆盖。Claude 的隔离项目检查没有发现项。所有差异只报告、未覆盖。此前报告的两个技能正文差异本次未复现,原因未追溯。此结果仍不证明宿主选择顺序、条件分支或外部工具可执行。

回归覆盖“登记表相同但正文不同”、缺失与个人引用、Claude 规则回退、重复候选/软链接、路由代码块引用、重复/重叠输出、格式错误与不完整轨迹。真实采样发现超时子进程可能返回退出码 0,工具现结合错误、终止信号和退出码判断失败,已有外部进程回归;不会把这种情况报告为成功。

这次两项超时发生于修正失败停止判定之前的同一轮采样,因此保留了后续类别的轨迹;修正后的采样器遇到这类失败会停止,不自动重试。这里不以重跑替换失败记录。

本轮新增 16 项诊断/采样测试、现有流程与安装校验通过;独立审查通过。打包后在独立目录安装生产依赖,CLI 的 `verify`、`doctor` 与 `loading` 冒烟通过。安装执行回归限于本机 Shell;PowerShell 清单已核对,未做 Windows 实机验收。

## 证据与限制

完整本地证据保存在当前任务工作区的 `docs/superpowers/evidence/loading-20261102/`,每类包含 `trace.jsonl`、`stderr.log`、`report.json`,总表为 `summary.json`;宿主诊断为相邻的 `doctor-codex-20261102.json`、`doctor-claude-20261102.json`,隔离项目检查为对应的 `doctor-*-isolated-20261102.json`。目录已被现有忽略规则排除,不提交原始会话或个人路径。临时项目位置见本地报告,保留供复核。

未做安装升级实机验收、Windows 实机验收、Claude 会话采样、桌面 App 验收或 Token 成本对照。下一轮若要评价长任务加载成本,需要让两项中断样本完整结束,再在相同模型、宿主和任务条件下比较;本轮不把这些未测项计为通过。
41 changes: 41 additions & 0 deletions harness/loading/cases.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"schemaVersion": 1,
"description": "Natural-language sampling cases, not a second routing policy. Assertions observe reads only; successful routing and behavior still need transcript review.",
"cases": [
{
"id": "question",
"label": "普通问答",
"prompt": "解释一下 JavaScript 的 Array.map 与 Array.forEach 的区别,给一个简短例子。",
"forbidden": ["skills/"],
"review": "直接回答;不因普通问答进入工程交付。"
},
{
"id": "small-fix",
"label": "小修复",
"prompt": "修复 src/total.js:total([]) 应返回 0,现在会抛错。补相称回归验证,只完成这个本地修复,不提交。",
"forbidden": ["skills/spec-gate/", "skills/to-tickets/", "skills/implement/references/ticket-delivery.md", "skills/feature-acceptance/references/project-verification.md"],
"review": "修复和回归验证完成;审查、测试与范围要求仍生效。"
},
{
"id": "formal-design",
"label": "正式设计",
"prompt": "为 total(values) 增加可选的 round 参数,写一份正式 Spec,先不实现。已决定默认不舍入,传 0 到 6 的整数时对最终结果舍入到对应小数位,其他值抛 RangeError;保留现有调用方式,不增加依赖。",
"forbidden": ["skills/to-tickets/", "skills/implement/references/ticket-delivery.md", "skills/feature-acceptance/references/project-verification.md"],
"review": "形成可审核 Spec,停在用户批准关口;不实施、不拆票。"
},
{
"id": "acceptance-run",
"label": "执行验收",
"prompt": "按项目现有验收入口验收 total 功能,沿用功能地图,仅报告真实命令和结果,不建立或维护验收基础设施。",
"forbidden": ["skills/spec-gate/", "skills/to-tickets/", "skills/implement/references/ticket-delivery.md", "skills/feature-acceptance/references/project-verification.md"],
"review": "复用现有入口;PASS/FAIL/BLOCKED/NOT RUN 与真实结果一致。"
},
{
"id": "acceptance-setup",
"label": "建立验收能力",
"prompt": "为这个小型 Node 项目建立最小的项目验收入口与功能地图,覆盖 total 的正常输入和空数组;沿用 node --test,不增加依赖或服务,不提交。",
"forbidden": ["skills/spec-gate/", "skills/to-tickets/", "skills/implement/references/ticket-delivery.md"],
"review": "建立并执行可重复验收,功能地图引用真实入口和证据。"
}
]
}
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
"test:install-rules": "node scripts/verify/install-rules.test.js",
"test:plugins": "node --test scripts/verify/plugin-distribution.test.js",
"verify:upstream": "node scripts/verify-upstream-capability-map.js",
"pack:dry-run": "npm pack --dry-run"
"pack:dry-run": "npm pack --dry-run",
"test:diagnostics": "node --test scripts/diagnostics/*.test.js"
},
"dependencies": {
"commonmark": "0.31.2",
Expand All @@ -39,6 +40,8 @@
"README.md",
"README.zh-CN.md",
"docs/plugins.md",
"docs/capability-diagnostics.md",
"docs/loading-baseline-2026-11-02.md",
"settings.json",
"agents/",
"bin/",
Expand Down
Loading
Loading