niceeval 0.6.2 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/INDEX.md +23 -23
  2. package/README.zh.md +6 -6
  3. package/dist/agents/types.d.ts +2 -2
  4. package/dist/i18n/zh-CN.d.ts +3 -3
  5. package/dist/report/aggregate.d.ts +32 -26
  6. package/dist/report/aggregate.js +157 -76
  7. package/dist/report/built-in/index.d.ts +2 -0
  8. package/dist/report/built-in/index.js +8 -0
  9. package/dist/report/components.d.ts +91 -164
  10. package/dist/report/components.js +377 -114
  11. package/dist/report/compute.d.ts +86 -73
  12. package/dist/report/compute.js +592 -432
  13. package/dist/report/flag.d.ts +28 -17
  14. package/dist/report/flag.js +86 -16
  15. package/dist/report/format.d.ts +11 -11
  16. package/dist/report/format.js +17 -15
  17. package/dist/report/index.d.ts +16 -17
  18. package/dist/report/index.js +20 -22
  19. package/dist/report/load.js +3 -2
  20. package/dist/report/locale.d.ts +49 -34
  21. package/dist/report/locale.js +106 -58
  22. package/dist/report/metrics.d.ts +10 -3
  23. package/dist/report/metrics.js +46 -12
  24. package/dist/report/primitives.d.ts +42 -15
  25. package/dist/report/primitives.js +135 -26
  26. package/dist/report/react/AttemptList.d.ts +10 -8
  27. package/dist/report/react/AttemptList.js +18 -10
  28. package/dist/report/react/DeltaTable.js +19 -18
  29. package/dist/report/react/EvalList.d.ts +3 -3
  30. package/dist/report/react/EvalList.js +0 -0
  31. package/dist/report/react/ExperimentComparison.d.ts +4 -2
  32. package/dist/report/react/ExperimentComparison.js +5 -4
  33. package/dist/report/react/ExperimentList.d.ts +3 -3
  34. package/dist/report/react/ExperimentList.js +16 -15
  35. package/dist/report/react/MetricBars.js +5 -4
  36. package/dist/report/react/MetricLine.js +12 -5
  37. package/dist/report/react/MetricMatrix.js +1 -1
  38. package/dist/report/react/MetricScatter.js +54 -17
  39. package/dist/report/react/MetricTable.js +2 -12
  40. package/dist/report/react/ScopeSummary.d.ts +10 -0
  41. package/dist/report/react/ScopeSummary.js +17 -0
  42. package/dist/report/react/Scoreboard.js +6 -6
  43. package/dist/report/react/cell.js +2 -2
  44. package/dist/report/react/fixtures.d.ts +5 -9
  45. package/dist/report/react/fixtures.js +105 -149
  46. package/dist/report/react/index.d.ts +15 -5
  47. package/dist/report/react/index.js +18 -7
  48. package/dist/report/report.d.ts +137 -20
  49. package/dist/report/report.js +261 -34
  50. package/dist/report/text/faces.d.ts +17 -19
  51. package/dist/report/text/faces.js +225 -157
  52. package/dist/report/text/plot.js +1 -1
  53. package/dist/report/text/table.js +2 -2
  54. package/dist/report/tree.d.ts +90 -40
  55. package/dist/report/tree.js +252 -94
  56. package/dist/report/types.d.ts +245 -300
  57. package/dist/report/types.js +4 -3
  58. package/dist/report/web.d.ts +21 -5
  59. package/dist/report/web.js +42 -16
  60. package/dist/results/select.d.ts +38 -16
  61. package/dist/results/select.js +73 -25
  62. package/dist/results/types.d.ts +38 -14
  63. package/dist/shared/aggregate.d.ts +3 -2
  64. package/dist/shared/aggregate.js +5 -4
  65. package/docs-site/zh/README.md +44 -0
  66. package/docs-site/zh/examples/ai-agent-application.mdx +63 -0
  67. package/docs-site/zh/examples/coding-agent-extensions.mdx +57 -0
  68. package/docs-site/zh/examples/index.mdx +50 -0
  69. package/docs-site/zh/{concepts → explanation}/adapter.mdx +11 -11
  70. package/docs-site/zh/{concepts → explanation}/assert.mdx +7 -7
  71. package/docs-site/zh/{concepts → explanation}/drive.mdx +8 -8
  72. package/docs-site/zh/{concepts → explanation}/evals.mdx +4 -4
  73. package/docs-site/zh/{concepts → explanation}/experiment.mdx +8 -8
  74. package/docs-site/zh/{concepts → explanation}/hitl.mdx +8 -8
  75. package/docs-site/zh/{concepts → explanation}/judge.mdx +5 -5
  76. package/docs-site/zh/{concepts → explanation}/overview.mdx +5 -5
  77. package/docs-site/zh/{guides → explanation}/runner.mdx +1 -1
  78. package/docs-site/zh/{concepts → explanation}/tier.mdx +6 -6
  79. package/docs-site/zh/{guides → how-to}/agent-feedback-loop.mdx +7 -7
  80. package/docs-site/zh/{guides → how-to}/authoring.mdx +2 -2
  81. package/docs-site/zh/{guides → how-to}/connect-otel.mdx +6 -6
  82. package/docs-site/zh/{guides → how-to}/connect-your-agent.mdx +18 -18
  83. package/docs-site/zh/{guides → how-to}/custom-reports.mdx +6 -6
  84. package/docs-site/zh/{guides → how-to}/experiments.mdx +3 -3
  85. package/docs-site/zh/{guides → how-to}/publish-report.mdx +2 -2
  86. package/docs-site/zh/{guides → how-to}/sandbox-agent.mdx +2 -2
  87. package/docs-site/zh/{guides → how-to}/sandbox-providers.mdx +1 -1
  88. package/docs-site/zh/{guides → how-to}/viewing-results.mdx +6 -6
  89. package/docs-site/zh/{guides → how-to}/write-experiment.mdx +3 -3
  90. package/docs-site/zh/{guides → how-to}/write-send.mdx +13 -13
  91. package/docs-site/zh/index.mdx +23 -25
  92. package/docs-site/zh/introduction.mdx +8 -8
  93. package/docs-site/zh/reference/builtin-agents.mdx +5 -5
  94. package/docs-site/zh/reference/capabilities.mdx +6 -6
  95. package/docs-site/zh/reference/cli.mdx +9 -7
  96. package/docs-site/zh/reference/define-agent.mdx +1 -1
  97. package/docs-site/zh/reference/events.mdx +3 -3
  98. package/docs-site/zh/{guides → reference}/official-adapters.mdx +7 -7
  99. package/docs-site/zh/{guides → reference}/report-components.mdx +5 -5
  100. package/docs-site/zh/{guides → reference}/results-data.mdx +5 -5
  101. package/docs-site/zh/{guides → troubleshooting}/debug-sandbox.mdx +2 -2
  102. package/docs-site/zh/{guides → troubleshooting}/debugging.mdx +4 -2
  103. package/docs-site/zh/{quickstart.mdx → tutorials/quickstart.mdx} +5 -17
  104. package/package.json +6 -2
  105. package/src/agents/index.ts +2 -2
  106. package/src/agents/openai-compat.ts +1 -1
  107. package/src/agents/streaming.ts +2 -2
  108. package/src/agents/types.ts +3 -3
  109. package/src/cli.ts +42 -23
  110. package/src/context/context.ts +1 -1
  111. package/src/context/session.test.ts +1 -1
  112. package/src/context/session.ts +1 -1
  113. package/src/i18n/en.ts +18 -16
  114. package/src/i18n/zh-CN.ts +16 -15
  115. package/src/report/aggregate.ts +175 -87
  116. package/src/report/built-in/index.tsx +9 -0
  117. package/src/report/components.tsx +625 -285
  118. package/src/report/compute.ts +717 -515
  119. package/src/report/dual-render.test.tsx +738 -1148
  120. package/src/report/flag.ts +97 -33
  121. package/src/report/format.ts +18 -22
  122. package/src/report/index.ts +113 -58
  123. package/src/report/load.ts +3 -2
  124. package/src/report/locale.ts +120 -69
  125. package/src/report/metrics.ts +42 -12
  126. package/src/report/primitives.tsx +190 -45
  127. package/src/report/react/AttemptList.tsx +32 -20
  128. package/src/report/react/DeltaTable.tsx +63 -45
  129. package/src/report/react/EvalList.tsx +0 -0
  130. package/src/report/react/ExperimentComparison.tsx +12 -7
  131. package/src/report/react/ExperimentList.tsx +38 -26
  132. package/src/report/react/MetricBars.tsx +5 -4
  133. package/src/report/react/MetricLine.tsx +13 -8
  134. package/src/report/react/MetricMatrix.tsx +2 -2
  135. package/src/report/react/MetricScatter.tsx +74 -20
  136. package/src/report/react/MetricTable.tsx +4 -76
  137. package/src/report/react/ScopeSummary.tsx +86 -0
  138. package/src/report/react/Scoreboard.tsx +28 -10
  139. package/src/report/react/cell.tsx +2 -2
  140. package/src/report/react/enhance.js +57 -5
  141. package/src/report/react/fixtures.ts +109 -156
  142. package/src/report/react/index.tsx +24 -39
  143. package/src/report/react/render.test.tsx +139 -104
  144. package/src/report/react/styles.css +181 -91
  145. package/src/report/report.test.ts +761 -1031
  146. package/src/report/report.ts +425 -47
  147. package/src/report/text/faces.ts +257 -164
  148. package/src/report/text/plot.ts +1 -1
  149. package/src/report/text/table.ts +2 -2
  150. package/src/report/tree.ts +362 -104
  151. package/src/report/types.ts +257 -287
  152. package/src/report/web.ts +63 -20
  153. package/src/results/attempt-evidence.test.ts +4 -4
  154. package/src/results/attempt-evidence.ts +5 -5
  155. package/src/results/copy.ts +6 -6
  156. package/src/results/host-equivalence.test.ts +26 -14
  157. package/src/results/index.ts +10 -4
  158. package/src/results/open.ts +8 -4
  159. package/src/results/results.test.ts +4 -3
  160. package/src/results/select.ts +104 -34
  161. package/src/results/types.ts +36 -14
  162. package/src/runner/feedback/human.test.ts +1 -1
  163. package/src/runner/run.ts +1 -1
  164. package/src/sandbox/cli-commands.ts +2 -2
  165. package/src/scoring/judge.test.ts +1 -1
  166. package/src/shared/aggregate.ts +5 -4
  167. package/src/show/compose.ts +50 -67
  168. package/src/show/index.ts +107 -56
  169. package/src/show/render.ts +43 -27
  170. package/src/show/report-host.test.ts +188 -0
  171. package/src/show/report-host.ts +375 -0
  172. package/src/show/show.test.ts +86 -36
  173. package/src/view/app/App.test.tsx +69 -0
  174. package/src/view/app/App.tsx +144 -48
  175. package/src/view/app/components/AttemptModal.tsx +324 -63
  176. package/src/view/app/components/CodeView.tsx +10 -4
  177. package/src/view/app/i18n.ts +31 -17
  178. package/src/view/app/lib/artifact-url.ts +14 -3
  179. package/src/view/app/main.tsx +13 -8
  180. package/src/view/app/pages/{RunsPage.tsx → AttemptsPage.tsx} +6 -6
  181. package/src/view/app/types.ts +4 -1
  182. package/src/view/artifact-serving.test.ts +21 -1
  183. package/src/view/client-dist/app.css +1 -1
  184. package/src/view/client-dist/app.js +6 -6
  185. package/src/view/data.test.ts +9 -3
  186. package/src/view/data.ts +145 -49
  187. package/src/view/index.ts +48 -44
  188. package/src/view/server.ts +35 -15
  189. package/src/view/shared/types.ts +34 -5
  190. package/src/view/styles.css +224 -0
  191. package/src/view/view-report.test.ts +161 -57
  192. package/dist/report/built-ins/experiment-comparison.d.ts +0 -39
  193. package/dist/report/built-ins/experiment-comparison.js +0 -119
  194. package/dist/report/built-ins/index.d.ts +0 -2
  195. package/dist/report/built-ins/index.js +0 -2
  196. package/dist/report/react/GroupSummary.d.ts +0 -8
  197. package/dist/report/react/GroupSummary.js +0 -8
  198. package/dist/report/react/RunOverview.d.ts +0 -8
  199. package/dist/report/react/RunOverview.js +0 -12
  200. package/docs-site/zh/example/ai-agent-application.mdx +0 -152
  201. package/docs-site/zh/example/claude-code-codex-plugin.mdx +0 -167
  202. package/docs-site/zh/example/claude-code-codex-skill.mdx +0 -152
  203. package/docs-site/zh/example/showcase.mdx +0 -39
  204. package/src/report/built-in-user-parity.test.tsx +0 -597
  205. package/src/report/built-ins/experiment-comparison.tsx +0 -179
  206. package/src/report/built-ins/index.ts +0 -7
  207. package/src/report/react/GroupSummary.tsx +0 -66
  208. package/src/report/react/RunOverview.tsx +0 -109
  209. /package/docs-site/zh/{example/tier1-ai-sdk-v7.mdx → examples/integrations/ai-sdk-v7.mdx} +0 -0
  210. /package/docs-site/zh/{example/tier1-claude-sdk.mdx → examples/integrations/claude-sdk.mdx} +0 -0
  211. /package/docs-site/zh/{example/tier1-codex-sdk.mdx → examples/integrations/codex-sdk.mdx} +0 -0
  212. /package/docs-site/zh/{example/tier1-langgraph.mdx → examples/integrations/langgraph.mdx} +0 -0
  213. /package/docs-site/zh/{example/tier1-pi-sdk.mdx → examples/integrations/pi-sdk.mdx} +0 -0
  214. /package/docs-site/zh/{guides → how-to}/ci-integration.mdx +0 -0
  215. /package/docs-site/zh/{guides → how-to}/dataset-fanout.mdx +0 -0
  216. /package/docs-site/zh/{guides → how-to}/fixtures.mdx +0 -0
  217. /package/docs-site/zh/{guides → how-to}/reporters.mdx +0 -0
  218. /package/docs-site/zh/{guides → how-to}/scoring-guide.mdx +0 -0
@@ -1,152 +0,0 @@
1
- ---
2
- title: "评估你的 Skill 在 Claude Code / Codex 上的表现"
3
- sidebarTitle: "评估 Skill 效果"
4
- description: "用 NiceEval 对比有 Skill 和无 Skill 的 coding-agent 任务,通过真实 workspace、断言和 judge 衡量 Skill 是否真的提升结果。"
5
- ---
6
-
7
- Skill 的价值不只是“agent 最后答案对不对”,还包括它是否在正确场景遵循你的流程、是否避免反模式、是否稳定提升通过率、成本和耗时。[NiceEval](https://niceeval.com/) 的推荐做法是把 Skill 注入到 sandbox 里的真实 coding-agent 工作区,再与无 Skill baseline 对比。
8
-
9
- 当前可运行示例在 [coding-agent-skill](https://github.com/CorrectRoadH/coding-agent-skill),一个独立仓库。它包含两组实验:
10
-
11
- - Zod skill:自编写 `skills/zod.md`,验证 agent 是否用 Zod 做请求体和环境变量校验。
12
- - Ponytail plugin:迁移第三方 Ponytail benchmark,验证安全、复用和简洁性。
13
-
14
- ## 目录结构
15
-
16
- ```text
17
- coding-agent-skill/
18
- ├─ skills/
19
- │ ├─ zod.md
20
- │ └─ ponytail.md
21
- ├─ workspaces/
22
- │ └─ ts-starter/
23
- ├─ evals/
24
- │ ├─ api-validation.eval.ts
25
- │ ├─ config-schema.eval.ts
26
- │ ├─ ponytail-safe-path.eval.ts
27
- │ ├─ ponytail-csv-sum.eval.ts
28
- │ └─ ponytail-reuse.eval.ts
29
- └─ experiments/
30
- ├─ with-skill.ts
31
- ├─ baseline.ts
32
- ├─ ponytail.ts
33
- └─ ponytail-baseline.ts
34
- ```
35
-
36
- ## 定义 Skill 实验组
37
-
38
- Skill 是否注入属于 experiment 配置。示例在 sandbox setup 阶段把 `skills/zod.md` 写入工作区的 `CLAUDE.md`,让 Claude Code 启动后自动读取。
39
-
40
- ```ts
41
- import { defineExperiment } from "niceeval";
42
- import { claudeCodeAgent } from "niceeval/adapter";
43
- import { dockerSandbox } from "niceeval/sandbox";
44
- import { readFileSync } from "node:fs";
45
- import { dirname, join } from "node:path";
46
- import { fileURLToPath } from "node:url";
47
-
48
- const __dir = dirname(fileURLToPath(import.meta.url));
49
- const zodSkill = readFileSync(join(__dir, "../skills/zod.md"), "utf-8");
50
- const baseAgent = claudeCodeAgent();
51
-
52
- const zodAgent = {
53
- ...baseAgent,
54
- name: "claude-code+zod-skill",
55
- async setup(sb, ctx) {
56
- const cleanup = await baseAgent.setup?.(sb, ctx);
57
- await sb.writeFiles({ "CLAUDE.md": zodSkill });
58
- return cleanup;
59
- },
60
- } satisfies typeof baseAgent;
61
-
62
- export default defineExperiment({
63
- description: "claude-code + zod skill(本地注入)",
64
- agent: zodAgent,
65
- model: "claude-sonnet-4-6",
66
- sandbox: dockerSandbox(),
67
- runs: 3,
68
- earlyExit: false,
69
- budget: 10,
70
- evals: (id) => !id.startsWith("ponytail-"),
71
- });
72
- ```
73
-
74
- 对照组使用同样的 eval 过滤、模型、runs 和预算,只把 agent 换成未注入 Skill 的 `claudeCodeAgent()`。
75
-
76
- ## 写 eval
77
-
78
- `.eval.ts` 文件同时负责三件事:准备 workspace、发送真实任务、验证结果。下面是 Zod 请求体校验任务的简化版。
79
-
80
- ```ts
81
- import { defineEval } from "niceeval";
82
- import { excludes, includes } from "niceeval/expect";
83
-
84
- export default defineEval({
85
- description: "用 Zod 校验 POST /users 的请求体,失败时返回结构化错误",
86
-
87
- async test(t) {
88
- await t.sandbox.uploadDirectory("../workspaces/ts-starter");
89
-
90
- await t
91
- .send(
92
- `在 src/routes/users.ts 里实现 POST /users 路由。
93
- 要求:
94
- - 用 Zod 定义 CreateUserSchema
95
- - 用 .safeParse() 校验 req.body(不要用 .parse())
96
- - 校验失败返回 HTTP 422,body 为 { errors: result.error.issues }
97
- - 校验成功返回 HTTP 201`,
98
- )
99
- .then((turn) => turn.succeeded());
100
-
101
- const src = await t.sandbox.readSourceFiles({ extensions: ["ts"] });
102
- const route = src.fileMatching(/users/);
103
- const code = route?.content ?? "";
104
-
105
- t.check(code, includes(/z\.object\s*\(/));
106
- t.check(code, includes(/\.safeParse\s*\(/));
107
- t.check(code, includes(/422|UNPROCESSABLE/));
108
- t.check(code, excludes(/JSON\.parse/));
109
- t.sandbox.fileChanged("src/routes/users.ts");
110
-
111
- t.judge.autoevals
112
- .closedQA("代码是否正确使用了 Zod 的惯用校验模式?", { on: code })
113
- .atLeast(0.75);
114
- },
115
- });
116
- ```
117
-
118
- 优先验证最终产物和真实测试。只有当事件名稳定时,再把“是否加载 Skill”“是否调用某工具”作为硬断言。
119
-
120
- ## 运行
121
-
122
- ```bash
123
- git clone https://github.com/CorrectRoadH/coding-agent-skill.git
124
- cd coding-agent-skill
125
- pnpm install
126
-
127
- # Zod skill A/B 对比(各是独立实验文件,不是同一个 group,分开跑)
128
- pnpm exec niceeval exp with-skill
129
- pnpm exec niceeval exp baseline
130
-
131
- # Ponytail plugin:baseline / caveman / ponytail / yagni-oneliner 四臂对比
132
- pnpm exec niceeval exp ponytail-baseline
133
- pnpm exec niceeval exp caveman
134
- pnpm exec niceeval exp ponytail
135
- pnpm exec niceeval exp yagni-oneliner
136
-
137
- pnpm exec niceeval view
138
- ```
139
-
140
- ## 评什么
141
-
142
- - Skill 是否显著提高通过率。
143
- - 是否减少反模式,例如裸 `JSON.parse`、不安全路径拼接、重复造轮子。
144
- - 是否让 agent 更稳定地改对目标文件。
145
- - 成本和耗时是否仍在可接受范围。
146
- - 失败样本里 agent 是没读 Skill、读了没遵循,还是验证目标本身设计得不清楚。
147
-
148
- ## 下一步
149
-
150
- - [Fixtures](/zh/guides/fixtures) — 组织 sandbox workspace、任务和验证。
151
- - [Experiments](/zh/guides/experiments) — 做有 Skill / 无 Skill 的对照实验。
152
- - [评分指南](/zh/guides/scoring-guide) — 把最终结果和行为约束一起评分。
@@ -1,39 +0,0 @@
1
- ---
2
- title: "Showcase"
3
- sidebarTitle: "Showcase"
4
- description: "用 NiceEval 搭建评测的真实项目和线上网站,持续收录。"
5
- ---
6
-
7
- 这里收录用 [NiceEval](https://niceeval.com/) 搭建评测的真实项目和线上网站。每个案例都是可运行、可复现的完整仓库——不是摘录片段,点进源码仓库能看到完整的 eval、experiment 和 sandbox 配置。
8
-
9
- ## coding-agent-memory-evals
10
-
11
- Tape、Nowledge Mem、mem9、db9.ai、OpenClaw……coding agent 的记忆实现开始分化,但缺一个可复现的评测面来说清楚它们到底有没有用。[coding-agent-memory-evals](https://github.com/CorrectRoadH/coding-agent-memory-evals) 用 NiceEval 搭了这个 benchmark:同一批 coding 任务、同一个模型(`gpt-5.4`),只换 agent 的记忆机制——[bub](https://github.com/CorrectRoadH/coding-agent-memory-evals)(内置 [Tape](https://tape.systems/))对比无对应持久记忆的 codex。
12
-
13
- - 在线报告:[coding-agent-memory-evals.vercel.app](https://coding-agent-memory-evals.vercel.app/)
14
- - 源码仓库:[github.com/CorrectRoadH/coding-agent-memory-evals](https://github.com/CorrectRoadH/coding-agent-memory-evals)
15
-
16
- 主评分只看开发任务本身是否完成(build / tests / upstream verifier),不额外考“agent 是否记得某条事实”——记忆机制的价值体现在 duration、token、成本和 `pass^k` 这些副指标上。
17
-
18
- ### 案例
19
-
20
- 每条 eval 都把某个公开 benchmark 的原始任务和验证脚本原样接进来,不是重写的断言。
21
-
22
- | Eval | 来源 | 验证什么 |
23
- |---|---|---|
24
- | [`agent-029-use-cache-directive`](https://github.com/CorrectRoadH/coding-agent-memory-evals/blob/main/evals/memory/agent-029-use-cache-directive.eval.ts) | next-evals | Server Action 是否用 `use cache` + `revalidateTag` 做目录数据的最终一致刷新 |
25
- | [`agent-030-app-router-migration-hard`](https://github.com/CorrectRoadH/coding-agent-memory-evals/blob/main/evals/memory/agent-030-app-router-migration-hard.eval.ts) | next-evals | 复杂 Pages Router 应用整体迁移到 App Router,legacy 文件是否被删、legacy API 是否残留 |
26
- | [`agent-037-updatetag-cache`](https://github.com/CorrectRoadH/coding-agent-memory-evals/blob/main/evals/memory/agent-037-updatetag-cache.eval.ts) | next-evals | read-your-own-writes 场景下是否用 `updateTag` 而不是只用 `revalidateTag` |
27
- | [`terminal-cancel-async-tasks`](https://github.com/CorrectRoadH/coding-agent-memory-evals/blob/main/evals/memory/terminal-cancel-async-tasks.eval.ts) | [Terminal-Bench](https://www.tbench.ai/) | 实现可取消的并发受限异步任务运行器,跑原始 `pytest` 验证 |
28
- | [`repomod-hello-world-api`](https://github.com/CorrectRoadH/coding-agent-memory-evals/blob/main/evals/memory/repomod-hello-world-api.eval.ts) | RepoMod-Bench | 把 Flask API 迁移成 Java Spring Boot,起服务后跑上游隐藏 HTTP 测试 |
29
- | [`tool-call-observability`](https://github.com/CorrectRoadH/coding-agent-memory-evals/blob/main/evals/memory/tool-call-observability.eval.ts) | 自编写 smoke | agent 的 shell 工具调用是否被正确记录为标准事件 |
30
-
31
- ### 对比实验
32
-
33
- [`experiments/compare/`](https://github.com/CorrectRoadH/coding-agent-memory-evals/tree/main/experiments/compare) 是唯一一组可对比实验:钉死同一个模型(`gpt-5.4`)和同一个 sandbox(docker),只换 agent——[`bub-gpt-5.4.ts`](https://github.com/CorrectRoadH/coding-agent-memory-evals/blob/main/experiments/compare/bub-gpt-5.4.ts) vs. [`codex-gpt-5.4.ts`](https://github.com/CorrectRoadH/coding-agent-memory-evals/blob/main/experiments/compare/codex-gpt-5.4.ts),差异才能归因到记忆机制本身,而不是模型或运行环境。`niceeval exp compare` 跑整组,结果快照发布到线上报告。
34
-
35
- ## 下一步
36
-
37
- - [接入你的 Agent](/zh/guides/connect-your-agent) — 从零接入一个 coding agent adapter。
38
- - [Experiments](/zh/guides/experiments) — 组织可对比的实验矩阵。
39
- - [评估 Skill 效果](/zh/example/claude-code-codex-skill) — 同一套「有/无 X 对比」思路,换成对比 Skill。