@qwen-code/arena-agent 0.0.10-dev.8-test.0 → 0.0.10-test.0

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 (151) hide show
  1. package/.env.example +61 -10
  2. package/CHANGELOG.md +148 -17
  3. package/README.md +309 -46
  4. package/dist/agent.d.ts +20 -6
  5. package/dist/agent.js +353 -72
  6. package/dist/agent.js.map +1 -1
  7. package/dist/anthropic.d.ts +1 -1
  8. package/dist/anthropic.js +46 -57
  9. package/dist/anthropic.js.map +1 -1
  10. package/dist/arena-history.d.ts +12 -0
  11. package/dist/arena-history.js +119 -0
  12. package/dist/arena-history.js.map +1 -0
  13. package/dist/ask-user.js +44 -2
  14. package/dist/ask-user.js.map +1 -1
  15. package/dist/attachment-limits.d.ts +4 -0
  16. package/dist/attachment-limits.js +10 -0
  17. package/dist/attachment-limits.js.map +1 -0
  18. package/dist/attachments.d.ts +4 -2
  19. package/dist/attachments.js +9 -11
  20. package/dist/attachments.js.map +1 -1
  21. package/dist/brave-search.js +11 -7
  22. package/dist/brave-search.js.map +1 -1
  23. package/dist/canonical-data.d.ts +9 -0
  24. package/dist/canonical-data.js +12 -3
  25. package/dist/canonical-data.js.map +1 -1
  26. package/dist/cli.js +140 -40
  27. package/dist/cli.js.map +1 -1
  28. package/dist/code-tool-schema.d.ts +3 -0
  29. package/dist/code-tool-schema.js +92 -0
  30. package/dist/code-tool-schema.js.map +1 -0
  31. package/dist/code-tools.d.ts +2 -1
  32. package/dist/code-tools.js +103 -31
  33. package/dist/code-tools.js.map +1 -1
  34. package/dist/compaction-threshold.d.ts +3 -0
  35. package/dist/compaction-threshold.js +6 -0
  36. package/dist/compaction-threshold.js.map +1 -0
  37. package/dist/compaction.d.ts +24 -7
  38. package/dist/compaction.js +242 -66
  39. package/dist/compaction.js.map +1 -1
  40. package/dist/config.d.ts +17 -0
  41. package/dist/config.js +30 -5
  42. package/dist/config.js.map +1 -1
  43. package/dist/connector-errors.d.ts +16 -0
  44. package/dist/connector-errors.js +69 -0
  45. package/dist/connector-errors.js.map +1 -0
  46. package/dist/connector-files.d.ts +31 -0
  47. package/dist/connector-files.js +249 -0
  48. package/dist/connector-files.js.map +1 -0
  49. package/dist/connector-input.d.ts +10 -0
  50. package/dist/connector-input.js +79 -0
  51. package/dist/connector-input.js.map +1 -0
  52. package/dist/connector-mcp.d.ts +60 -0
  53. package/dist/connector-mcp.js +474 -0
  54. package/dist/connector-mcp.js.map +1 -0
  55. package/dist/connectors.d.ts +13 -0
  56. package/dist/connectors.js +69 -0
  57. package/dist/connectors.js.map +1 -0
  58. package/dist/fetch-page.js +2 -2
  59. package/dist/fetch-page.js.map +1 -1
  60. package/dist/history.d.ts +16 -5
  61. package/dist/history.js +73 -14
  62. package/dist/history.js.map +1 -1
  63. package/dist/image-choice.d.ts +23 -0
  64. package/dist/image-choice.js +190 -0
  65. package/dist/image-choice.js.map +1 -0
  66. package/dist/image-input-fallback.js +5 -0
  67. package/dist/image-input-fallback.js.map +1 -1
  68. package/dist/image-model.d.ts +6 -0
  69. package/dist/image-model.js +32 -0
  70. package/dist/image-model.js.map +1 -0
  71. package/dist/midturn-checkpoint-hook.d.ts +14 -1
  72. package/dist/midturn-checkpoint-hook.js.map +1 -1
  73. package/dist/mode.js +1 -1
  74. package/dist/mode.js.map +1 -1
  75. package/dist/model-capabilities.js +18 -8
  76. package/dist/model-capabilities.js.map +1 -1
  77. package/dist/model-router-media.js +55 -3
  78. package/dist/model-router-media.js.map +1 -1
  79. package/dist/model-stream.d.ts +16 -0
  80. package/dist/model-stream.js +129 -0
  81. package/dist/model-stream.js.map +1 -0
  82. package/dist/openai-responses.d.ts +2 -1
  83. package/dist/openai-responses.js +85 -88
  84. package/dist/openai-responses.js.map +1 -1
  85. package/dist/process-manager.js +9 -9
  86. package/dist/process-manager.js.map +1 -1
  87. package/dist/prompts.d.ts +0 -2
  88. package/dist/prompts.js +10 -60
  89. package/dist/prompts.js.map +1 -1
  90. package/dist/protocol.d.ts +5 -1
  91. package/dist/protocol.js +23 -2
  92. package/dist/protocol.js.map +1 -1
  93. package/dist/provider.d.ts +18 -0
  94. package/dist/provider.js +120 -51
  95. package/dist/provider.js.map +1 -1
  96. package/dist/repo.d.ts +1 -1
  97. package/dist/repo.js +26 -4
  98. package/dist/repo.js.map +1 -1
  99. package/dist/routify-web-fetch.js +2 -2
  100. package/dist/routify-web-fetch.js.map +1 -1
  101. package/dist/server.js +55 -27
  102. package/dist/server.js.map +1 -1
  103. package/dist/session-memory-prompts.d.ts +3 -1
  104. package/dist/session-memory-prompts.js +4 -2
  105. package/dist/session-memory-prompts.js.map +1 -1
  106. package/dist/side-query.js +5 -0
  107. package/dist/side-query.js.map +1 -1
  108. package/dist/spec.d.ts +5 -4
  109. package/dist/spec.js +31 -23
  110. package/dist/spec.js.map +1 -1
  111. package/dist/startup-config.d.ts +39 -0
  112. package/dist/startup-config.js +347 -0
  113. package/dist/startup-config.js.map +1 -0
  114. package/dist/startup-main-config.d.ts +63 -0
  115. package/dist/startup-main-config.js +94 -0
  116. package/dist/startup-main-config.js.map +1 -0
  117. package/dist/startup-tool-config.d.ts +8 -0
  118. package/dist/startup-tool-config.js +116 -0
  119. package/dist/startup-tool-config.js.map +1 -0
  120. package/dist/summary-compaction.d.ts +29 -0
  121. package/dist/{legacy-compaction.js → summary-compaction.js} +79 -14
  122. package/dist/summary-compaction.js.map +1 -0
  123. package/dist/tools.d.ts +5 -1
  124. package/dist/tools.js +195 -68
  125. package/dist/tools.js.map +1 -1
  126. package/dist/tui.js +26 -6
  127. package/dist/tui.js.map +1 -1
  128. package/dist/types.d.ts +21 -1
  129. package/dist/web/app.js +30 -5
  130. package/dist/web/app.js.map +1 -1
  131. package/dist/workspace.js +61 -13
  132. package/dist/workspace.js.map +1 -1
  133. package/docs/BINARY_DISTRIBUTION.md +44 -8
  134. package/docs/MODES_AND_RELEASES.md +79 -6
  135. package/docs/SDK.md +1 -0
  136. package/modes/code-arena/capture-provenance.json +57 -0
  137. package/modes/code-arena/full-stack/dependencies.lock.json +8670 -0
  138. package/modes/code-arena/full-stack/system-prompt.txt +1 -1
  139. package/modes/code-arena/full-stack/template/eslint.config.mjs +3 -4
  140. package/modes/code-arena/full-stack/template/postcss.config.mjs +2 -2
  141. package/modes/code-arena/full-stack/tools.json +186 -186
  142. package/modes/code-arena/html/system-prompt.txt +1 -1
  143. package/modes/code-arena/html/tools.json +123 -123
  144. package/modes/code-arena/react/dependencies.lock.json +2707 -0
  145. package/modes/code-arena/react/system-prompt.txt +4 -3
  146. package/modes/code-arena/react/tools.json +178 -184
  147. package/package.json +7 -2
  148. package/scripts/README.md +23 -4
  149. package/web/styles.css +22 -0
  150. package/dist/legacy-compaction.d.ts +0 -16
  151. package/dist/legacy-compaction.js.map +0 -1
package/.env.example CHANGED
@@ -13,6 +13,9 @@ OPENAI_API_KEY=
13
13
  # ARENA_OPENAI_API=auto
14
14
  # ARENA_OPENAI_API=responses
15
15
  # ARENA_OPENAI_API=chat
16
+ # Set false to omit reasoning encrypted_content and id from Responses input.
17
+ # Other reasoning fields and the complete local history are preserved.
18
+ # ARENA_RESPONSES_REPLAY_REASONING_STATE=true
16
19
 
17
20
  # Unified runtime mode. Canonical values are shown; full_stack/fullstack and
18
21
  # single_html/single-html remain accepted compatibility aliases.
@@ -20,6 +23,14 @@ ARENA_HARNESS_MODE=arena
20
23
  # ARENA_HARNESS_MODE=react
21
24
  # ARENA_HARNESS_MODE=html
22
25
  # ARENA_HARNESS_MODE=full-stack
26
+ # All modes use incremental message events for headless stream-json.
27
+ # Set full for consumers requiring a full messages snapshot on every event.
28
+ # ARENA_STREAM_HISTORY=full
29
+ # ARENA_CODE_STREAM_HISTORY remains a lower-priority compatibility alias.
30
+
31
+ # Headless configuration: a redacted startup record and actual request settings
32
+ # on stderr and in the session's startup-config.jsonl. Set false to disable both.
33
+ # ARENA_CONFIG_LOGGING=true
23
34
 
24
35
  # Native provider fallbacks used when OPENAI_BASE_URL/API_KEY are unset.
25
36
  # ANTHROPIC_BASE_URL=https://api.anthropic.com/v1
@@ -46,7 +57,8 @@ ARENA_HARNESS_MODE=arena
46
57
  # HARBOR_REMOTE_COMMAND_API_KEY=
47
58
 
48
59
  # Trace-compatible model settings.
49
- # ARENA_MAX_TURNS=500
60
+ # Agent Arena defaults to 250 model steps per turn; send a follow-up to continue.
61
+ # ARENA_MAX_TURNS=250
50
62
  # Code Arena compatibility alias used only when ARENA_MAX_TURNS is unset:
51
63
  # CODE_HARNESS_MAX_STEPS=50
52
64
  # ARENA_MAX_TOKENS=131072
@@ -57,6 +69,23 @@ ARENA_HARNESS_MODE=arena
57
69
  # ARENA_TOOL_CHOICE=auto
58
70
  # JSON array of exact tool names hidden from the model and rejected if called.
59
71
  # ARENA_DISALLOWED_TOOLS=["bash","write_file"]
72
+ # Agent Arena connectors through Merge MCP; opt-in, ignored by Code Arena.
73
+ # Enable the captured catalog in the Tool Pack; connect apps for the Registered
74
+ # User through Merge Link. The key and user must belong to the same environment.
75
+ # One configured Registered User is shared by all sessions of this process.
76
+ # Slugs: notion, google_calendar, google_drive, google_docs, google_sheets,
77
+ # google_slides, gmail, dropbox, supabase, vercel, linear.
78
+ # ARENA_CONNECTORS=["notion","google_drive","google_docs","google_sheets"]
79
+ # Optional host-provided authenticated-app snapshot, separate from conversation
80
+ # enablement. This does not authorize apps or query Merge. Explicit [] enables
81
+ # discovery with the captured no-connected-apps prompt. Omit both arrays to keep
82
+ # the connector-off baseline.
83
+ # ARENA_CONNECTED_CONNECTORS=["notion","google_drive","google_docs","google_sheets","gmail"]
84
+ # ARENA_MERGE_ACCESS_KEY=
85
+ # ARENA_MERGE_TOOL_PACK_ID=
86
+ # ARENA_MERGE_REGISTERED_USER_ID=
87
+ # ARENA_MERGE_API_BASE=https://ah-api.merge.dev
88
+ # ARENA_CONNECTOR_TIMEOUT_MS=60000
60
89
  # ARENA_THINKING_BUDGET=81920
61
90
  # ARENA_ENABLE_THINKING=true
62
91
  # ARENA_PRESERVE_THINKING=true
@@ -64,16 +93,22 @@ ARENA_HARNESS_MODE=arena
64
93
  # prompt fixtures and Code Arena prompts are unchanged.
65
94
  # ARENA_EXCLUDE_QWEN_FROM_SYSTEM_PROMPT=false
66
95
  # CLI equivalent: --exclude-qwen-from-system-prompt
67
- # Agent Arena hard-compacts at 250000 tokens for every model. It uses the most
68
- # recent provider-reported input usage plus a local estimate of newer messages,
69
- # falling back to a full local estimate when no reliable usage is available.
70
- # These compatibility settings remain available; Code Arena still uses
71
- # context window multiplied by the compaction ratio, which defaults to 0.7.
96
+ # Agent Arena compaction: rolling (default) or summary (historical full summary).
97
+ # Code Arena always uses summary and ignores this setting.
98
+ # ARENA_COMPACTION_MODE=rolling
99
+ # Agent Arena: threshold = min(250000, context window * ratio), default ratio 0.8.
100
+ # Each setting can be configured independently; invalid values use its default.
101
+ # Code Arena keeps independent controls (default window 1000000, ratio 0.7).
102
+ # Compaction counts use completed-request usage plus newer messages.
72
103
  # ARENA_CONTEXT_WINDOW=1000000
73
- # ARENA_CONTEXT_COMPACTION_RATIO=0.7
104
+ # ARENA_CONTEXT_COMPACTION_RATIO=0.8
105
+ # Restore Agent Arena background memory by default; set false to disable.
106
+ # CLI overrides: --restore-session-memory / --no-restore-session-memory.
107
+ # ARENA_RESTORE_SESSION_MEMORY=true
74
108
  # Provisional Agent Arena background-memory budget for newly archivable content.
109
+ # Uses request-usage deltas with local supplements; local counts omit tool-call IDs.
75
110
  # ARENA_MEMORY_UPDATE_TOKENS=24000
76
- # Agent Arena default: 131072; Code Arena default: 8192.
111
+ # Default: rolling memory 131072; summary mode and Code Arena 8192.
77
112
  # ARENA_COMPACTION_SUMMARY_MAX_TOKENS=131072
78
113
  # ARENA_EXTRA_BODY={"enable_thinking":true}
79
114
  # Transient model failures use full-jitter exponential backoff. The retry delay
@@ -134,9 +169,16 @@ ARENA_HARNESS_MODE=arena
134
169
 
135
170
  # Search, page reading, image generation, and speech through ModelRouter/Routify.
136
171
  ROUTIFY_API_KEY=
172
+ # Optional per-tool keys override ROUTIFY_API_KEY; unset or blank falls back.
173
+ # ROUTIFY_WEB_SEARCH_API_KEY=
174
+ # ROUTIFY_IMAGE_SEARCH_API_KEY=
175
+ # ROUTIFY_GENERATE_IMAGE_API_KEY=
176
+ # For an image proxy, keep the real MR key in ROUTIFY_API_KEY and set only
177
+ # ROUTIFY_GENERATE_IMAGE_API_KEY to the proxy key, with the base URL below.
137
178
  # ROUTIFY_WEB_SEARCH_URL=https://routify-pub.alibaba-inc.com/protocol/compatible-mode/res/v1/llm/context
138
179
  # ROUTIFY_IMAGE_SEARCH_URL=https://routify-pub.alibaba-inc.com/protocol/brave/res/v1/images/search
139
180
  # ROUTIFY_VERTEX_BASE_URL=https://routify-pub.alibaba-inc.com/protocol/vertex/v1beta
181
+ # ROUTIFY_OPENAI_BASE_URL=https://routify-pub.alibaba-inc.com/protocol/openai/v1
140
182
  # ARENA_WEB_SEARCH_MODEL=brave.llm-context
141
183
  # CODE_HARNESS_WEB_SEARCH_MODEL=brave.llm-context
142
184
  # Optional fetch_page/web_fetch path: Firecrawl first, then Jina Reader.
@@ -144,9 +186,18 @@ ROUTIFY_API_KEY=
144
186
  # Code Arena web_fetch content cap (UTF-8 bytes, including truncation notice).
145
187
  # Applies to local and Routify readers in all formats; must be a positive integer.
146
188
  # CODE_HARNESS_WEB_FETCH_MAX_BYTES=40000
147
- # ARENA_IMAGE_MODEL=gemini-3.1-flash-image
189
+ # Agent Arena single images randomly use Gemini or gpt-image-2 by default.
190
+ # Set this variable to pin a model (also overrides option one).
191
+ # ARENA_IMAGE_MODEL=gpt-image-2
192
+ # Second model for Agent Arena generate_image with offer_options=true.
193
+ # Defaults to gpt-image-2 (or Gemini when that is the primary).
194
+ # Without a user handler, save option one and continue; otherwise ask the user.
195
+ # ARENA_IMAGE_ALTERNATIVE_MODEL=gpt-image-2
148
196
  # ARENA_IMAGE_SIZE=1024*1024
149
- # CODE_HARNESS_IMAGE_MODEL=gemini-3.1-flash-image
197
+ # Code Arena randomly uses Sunburst or Flare.
198
+ # Set this variable to pin a model; otherwise an explicit ARENA_IMAGE_MODEL
199
+ # also pins Code Arena. Grok and Muse are not enabled.
200
+ # CODE_HARNESS_IMAGE_MODEL=gpt-image-2.5-sunburst
150
201
  # CODE_HARNESS_IMAGE_SIZE=1024*1024
151
202
  # ARENA_SPEECH_MODEL=gemini-3.1-flash-tts-preview
152
203
  # ARENA_SPEECH_VOICE=Kore
package/CHANGELOG.md CHANGED
@@ -12,23 +12,146 @@
12
12
 
13
13
  ## [Unreleased]
14
14
 
15
- ## [0.0.10-dev.8-test.0] - 2026-09-28
15
+ ## [0.0.10-test.0] - 2026-11-09
16
16
 
17
17
  ### Agent Arena
18
18
 
19
- - 修正上下文 token 重复估算。
20
- - 记忆更新支持 `ARENA_REASONING_EFFORT`。
19
+ - 压缩阈值对齐为上下文窗口的 80% 与 250,000 tokens 中的较小值,单独设置 `ARENA_CONTEXT_WINDOW` 即可适配小窗口模型。
20
+ - 达到压缩阈值但尚无可用记忆时继续运行,不再强制生成或等待记忆。
21
+ - 每轮默认最多 250 个模型步骤,`ARENA_MAX_TURNS` 可覆盖;达到上限保存进度,发送消息即可继续。
22
+ - `web_search` 各深度的候选数量、正文和片段预算对齐官方文档。
23
+ - 普通附件单文件上限调整为 25 MB,PDF 为 10 MB,每条消息合计仍为 50 MB。
24
+ - 按官方请求补齐会话记忆更新前缀及用户消息合并,修复长工具循环中更新被拒绝,并保留恢复记忆和图片上下文。
25
+
26
+ ### 通用
27
+
28
+ - Responses、Chat Completions 和 Anthropic Messages 的断流、空回复及临时错误按配置重试,不再将不完整回复误报为成功或执行未完成的工具调用。
29
+ - 摘要压缩、图片转文字及指标侧查询不再接受模型明确标记为未完成的内容。
30
+ - 兼容更多网关限流错误并避免重试明确的鉴权失败,保留 Chat Completions 的明确拒答,拦截 Responses 中前后冲突的工具调用。
31
+
32
+ ## [0.0.10-dev.16] - 2026-11-04
33
+
34
+ ### Agent Arena
35
+
36
+ - Repo 会话记住目标仓库,新增同级仓库后仍可继续和恢复;目标缺失或 Git 状态异常时明确报错。
37
+ - 对齐近期日志中的工作区、Repo 和记忆提示词,以及已有工具的声明顺序。
38
+ - `read_file` 支持 `offset`、`limit` 分页;`bash` 超时返回已有输出并允许命令继续运行,主动取消仍终止进程树。
39
+ - 对齐工具参数的默认值、实时与恢复历史格式,以及同批工具并发执行和结果顺序。
40
+ - 扩展 MCP 应用至 Google Drive、Docs、Sheets、Slides、Gmail、Dropbox、Supabase、Vercel 和 Linear,并对齐 Notion 工具、工作区文件传输及重复调用保护。
41
+ - 新增 `ARENA_CONNECTED_CONNECTORS`,区分已连接但未开启和未连接的应用。
42
+ - `generate_image` 单图默认随机使用 GPT Image 2 或 Gemini 3.1 Flash,`offer_options` 并行生成双图供选择,保存未选图片并支持中断后重试;第二模型可用 `ARENA_IMAGE_ALTERNATIVE_MODEL` 配置。
43
+ - Headless 未配置用户 handler 时,`generate_image` 的 `offer_options=true` 默认保存第一张候选图并继续执行。
44
+
45
+ ### Code Arena
46
+
47
+ - `generate_image` 默认随机使用 `gpt-image-2.5-sunburst` 或 `gpt-image-2.5-flare`。
48
+
49
+ ### 通用
50
+
51
+ - 新增 `ROUTIFY_WEB_SEARCH_API_KEY`、`ROUTIFY_IMAGE_SEARCH_API_KEY`、`ROUTIFY_GENERATE_IMAGE_API_KEY`,支持搜索与生图独立密钥,未设置或留空时继续使用 `ROUTIFY_API_KEY`。
52
+
53
+ ## [0.0.10-dev.15] - 2026-10-28
54
+
55
+ ### Agent Arena
56
+
57
+ - 后台记忆更新按服务端 token 用量差分判断新增预算,减少长签名造成的提前更新。
58
+ - 默认恢复同 session 的后台记忆,避免多轮调用重复更新;可用 `ARENA_RESTORE_SESSION_MEMORY=false` 或 `--no-restore-session-memory` 关闭。
59
+
60
+ ### 通用
61
+
62
+ - 本地上下文估算忽略工具调用 ID,避免内嵌长签名抬高计数。
63
+ - Headless 记录生效配置、脱敏输入及实际模型请求参数和工具列表,输出到 stderr 与会话的 `startup-config.jsonl`,可用 `ARENA_CONFIG_LOGGING=false` 关闭。
64
+
65
+ ## [0.0.10-dev.14] - 2026-10-26
66
+
67
+ ### 通用
68
+
69
+ - 修复 Qwen4 及后续代际的图片输入识别,默认仅支持文字和图片。
70
+ - 修复 Claude Fable/Mythos、Vertex 日期型号及 DeepSeek Flash 视觉型号的输入模态识别。
71
+
72
+ ## [0.0.10-dev.13] - 2026-10-23
73
+
74
+ ### Agent Arena
75
+
76
+ - 修复远程 `ask_user` 在配置较长 `ARENA_ASK_USER_TIMEOUT_MS` 后仍于 300 秒提前超时的问题,并显示底层连接错误原因。
77
+
78
+ ### Code Arena
79
+
80
+ - 对齐 Code Arena 官方 2026-10-19 更新日志:按官方契约声明工具的必填和可选参数,非 Responses 路径显式关闭严格模式;可选参数接受 `null` 并使用默认值。
81
+ - 对齐 Code Arena 官方 2026-10-20 更新日志:直连 OpenAI Responses 使用严格工具 schema,可选字段填写 `null` 时使用默认值。
82
+ - 根据最新回流修正 React 初始项目中文件列表的返回顺序。
83
+
84
+ ## [0.0.10-dev.12] - 2026-10-15
85
+
86
+ ### Agent Arena
87
+
88
+ - 摘要压缩接入服务端 token 用量,并支持长单轮工具任务。
89
+
90
+ ### Code Arena
91
+
92
+ - 摘要压缩接入服务端 token 用量,支持长单轮工具任务,并在续跑时恢复已应用的摘要。
93
+ - 固定 React 和 Full Stack 模板的完整安装依赖,避免上游新版本发布导致初始化失败,并保留已有项目的依赖锁。
94
+ - React 与 Full Stack 的命令执行支持毫秒级 `timeout`,默认 180 秒,并拒绝空命令;React 可执行 Codex 的 `shell_command` 调用。
95
+
96
+ ### 通用
97
+
98
+ - 压缩计数改善 SVG 等大工具输出的估算,避免重复计入已压缩内容。
99
+ - 模型因长度限制截断时保留部分输出并报告失败,避免将未完成的任务标为成功。
100
+ - 修复 Responses 多工具调用的事件错配,确保工具结果、文件展示和用户输入请求对应正确调用。
101
+
102
+ ## [0.0.10-dev.11] - 2026-10-11
103
+
104
+ ### Agent Arena
105
+
106
+ - 新增实验性 Notion、Google Calendar 接入,使用 `ARENA_CONNECTORS` 选择应用,并通过 `ARENA_MERGE_*` 配置已授权的 Merge 账号。
107
+ - Headless Hook 新增 `before_compaction` 事件,可按压缩次数在摘要式或 rolling session memory 压缩前快照暂停,续跑时延续计数。
108
+
109
+ ### Code Arena
110
+
111
+ - `generate_image` 默认模型改为 `gpt-image-2.5-sunburst`,继续通过 ModelRouter 调用。
112
+
113
+ ### 通用
114
+
115
+ - 修复 Claude Haiku 5.5 开启 thinking 时因旧参数格式报 400 的问题。
116
+ - 修复 Gemini 通过 Chat Completions 调用工具后因签名丢失而无法继续的问题。
117
+
118
+ ## [0.0.10-dev.10] - 2026-10-07
119
+
120
+ ### Agent Arena
121
+
122
+ - 新增 `ARENA_COMPACTION_MODE=summary`,可切换回摘要式压缩,默认仍为 `rolling`。
123
+ - 后台记忆写入 `history.json`,`--single-step` 默认恢复,普通续跑可用 `--restore-session-memory` 或 `ARENA_RESTORE_SESSION_MEMORY=true` 开启。
124
+ - `ARENA_CONTEXT_WINDOW` 与 `ARENA_CONTEXT_COMPACTION_RATIO` 同时配置有效值时按乘积压缩,否则阈值固定为 250k。
125
+ - 修复记忆中美元符号导致的提示词失真,补充更新失败与取消状态,并在任务结束和暂停时收束后台请求。
126
+
127
+ ### Code Arena
128
+
129
+ - Full Stack 与 HTML 提示词对齐已核验的历史请求。
130
+
131
+ ### 通用
132
+
133
+ - 新增 `ARENA_RESPONSES_REPLAY_REASONING_STATE=false`,可关闭 Responses 历史加密推理状态的回传。
134
+ - 四种模式统一降低 headless `stream-json` 长轨迹的日志量与接收端内存占用;依赖每条事件完整历史的消费者可用 `ARENA_STREAM_HISTORY=full` 恢复旧输出,兼容旧变量 `ARENA_CODE_STREAM_HISTORY`。
135
+
136
+ ## [0.0.10-dev.9] - 2026-09-30
137
+
138
+ ### Agent Arena
139
+
140
+ - 修正上下文 token 重复估算,记忆更新支持 `ARENA_REASONING_EFFORT`。
141
+ - 修复工具参数 JSON 非法时后续请求报 400、无法继续纠错的问题。
142
+ - 对齐空参数、搜索深度、URL 和重复选项 ID 的校验错误,修复旧会话续跑和 Responses 流中断后的恢复。
21
143
 
22
144
  ### Code Arena
23
145
 
24
- - React 默认步数上限从 50 提高到 75。
25
- - 视觉模型可通过 `read_file` 查看 10 MiB 以内的 PNG/JPEG 图片,工具提示同步修正。
146
+ - React 默认步数上限提高到 75,并改用 `bash` 安装依赖和构建。
147
+ - 视觉模型可通过 `read_file` 查看 10 MiB 以内的 PNG/JPEG 图片,并对齐文件读取描述与 MIME。
148
+ - 对齐工具参数校验和隐藏计划工具,修复 Full Stack 模板与依赖锁保留。
26
149
 
27
150
  ### 通用
28
151
 
29
152
  - Headless Hook 支持重复输出检测,可选择继续、快照后继续或快照退出。
30
153
  - 新增 `--single-step`,执行一轮后保存退出,可用 `--continue` 续跑。
31
- - 修复续跑时历史模型覆盖当前模型配置的问题。
154
+ - 修复续跑时历史模型覆盖当前模型配置、历史中途修正未及时保存的问题。
32
155
 
33
156
  ## [0.0.10-dev.8] - 2026-09-20
34
157
 
@@ -194,14 +317,22 @@
194
317
  - `bash` 用于一次性命令,区分超时与信号终止,并清理遗留后台进程;需要持续运行
195
318
  的任务改用进程工具。预览端口支持 E2B Host 探测及按需返回告警。
196
319
 
197
- [Unreleased]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.8-test.0...master
198
- [0.0.10-dev.8-test.0]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.8...v0.0.10-dev.8-test.0
199
- [0.0.10-dev.8]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.7...v0.0.10-dev.8
200
- [0.0.10-dev.7]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.6...v0.0.10-dev.7
201
- [0.0.10-dev.6]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.5...v0.0.10-dev.6
202
- [0.0.10-dev.5]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.4...v0.0.10-dev.5
203
- [0.0.10-dev.4]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.3...v0.0.10-dev.4
204
- [0.0.10-dev.3]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.2...v0.0.10-dev.3
205
- [0.0.10-dev.2]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.1...v0.0.10-dev.2
206
- [0.0.10-dev.1]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.0...v0.0.10-dev.1
207
- [0.0.10-dev.0]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.9-dev.34...v0.0.10-dev.0
320
+ [Unreleased]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-test.0&to=master&mergeBase=true
321
+ [0.0.10-test.0]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.16&to=v0.0.10-test.0&mergeBase=true
322
+ [0.0.10-dev.16]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.15&to=v0.0.10-dev.16&mergeBase=true
323
+ [0.0.10-dev.15]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.14&to=v0.0.10-dev.15&mergeBase=true
324
+ [0.0.10-dev.14]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.13&to=v0.0.10-dev.14&mergeBase=true
325
+ [0.0.10-dev.13]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.12&to=v0.0.10-dev.13&mergeBase=true
326
+ [0.0.10-dev.12]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.11&to=v0.0.10-dev.12&mergeBase=true
327
+ [0.0.10-dev.11]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.10&to=v0.0.10-dev.11&mergeBase=true
328
+ [0.0.10-dev.10]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.9&to=v0.0.10-dev.10&mergeBase=true
329
+ [0.0.10-dev.9]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.8&to=v0.0.10-dev.9&mergeBase=true
330
+ [0.0.10-dev.8]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.7&to=v0.0.10-dev.8&mergeBase=true
331
+ [0.0.10-dev.7]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.6&to=v0.0.10-dev.7&mergeBase=true
332
+ [0.0.10-dev.6]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.5&to=v0.0.10-dev.6&mergeBase=true
333
+ [0.0.10-dev.5]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.4&to=v0.0.10-dev.5&mergeBase=true
334
+ [0.0.10-dev.4]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.3&to=v0.0.10-dev.4&mergeBase=true
335
+ [0.0.10-dev.3]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.2&to=v0.0.10-dev.3&mergeBase=true
336
+ [0.0.10-dev.2]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.1&to=v0.0.10-dev.2&mergeBase=true
337
+ [0.0.10-dev.1]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.10-dev.0&to=v0.0.10-dev.1&mergeBase=true
338
+ [0.0.10-dev.0]: https://code.alibaba-inc.com/know-how/arena-harness/compare?from=v0.0.9-dev.34&to=v0.0.10-dev.0&mergeBase=true