@qwen-code/arena-agent 0.0.10-dev.1 → 0.0.10-dev.10
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.
- package/.env.example +57 -14
- package/CHANGELOG.md +228 -0
- package/README.md +228 -50
- package/dist/agent.d.ts +28 -2
- package/dist/agent.js +341 -106
- package/dist/agent.js.map +1 -1
- package/dist/anthropic.js +23 -22
- package/dist/anthropic.js.map +1 -1
- package/dist/ask-user.js +2 -0
- package/dist/ask-user.js.map +1 -1
- package/dist/attachments.js +4 -3
- package/dist/attachments.js.map +1 -1
- package/dist/brave-search.js +1 -3
- package/dist/brave-search.js.map +1 -1
- package/dist/canonical-data.js +2 -2
- package/dist/canonical-data.js.map +1 -1
- package/dist/cli.js +184 -36
- package/dist/cli.js.map +1 -1
- package/dist/code-tools.d.ts +8 -2
- package/dist/code-tools.js +709 -117
- package/dist/code-tools.js.map +1 -1
- package/dist/compaction.d.ts +49 -3
- package/dist/compaction.js +382 -186
- package/dist/compaction.js.map +1 -1
- package/dist/config.d.ts +17 -2
- package/dist/config.js +47 -5
- package/dist/config.js.map +1 -1
- package/dist/fetch-page.js +9 -33
- package/dist/fetch-page.js.map +1 -1
- package/dist/file-edit.d.ts +8 -0
- package/dist/file-edit.js +63 -0
- package/dist/file-edit.js.map +1 -0
- package/dist/history.d.ts +16 -3
- package/dist/history.js +117 -19
- package/dist/history.js.map +1 -1
- package/dist/legacy-compaction.d.ts +20 -0
- package/dist/legacy-compaction.js +209 -0
- package/dist/legacy-compaction.js.map +1 -0
- package/dist/midturn-checkpoint-hook.d.ts +31 -0
- package/dist/midturn-checkpoint-hook.js +38 -0
- package/dist/midturn-checkpoint-hook.js.map +1 -0
- package/dist/mock.js +5 -0
- package/dist/mock.js.map +1 -1
- package/dist/mode.js +4 -2
- package/dist/mode.js.map +1 -1
- package/dist/model-router-media.d.ts +1 -0
- package/dist/model-router-media.js +71 -1
- package/dist/model-router-media.js.map +1 -1
- package/dist/openai-responses.js +2 -0
- package/dist/openai-responses.js.map +1 -1
- package/dist/process-manager.js +2 -1
- package/dist/process-manager.js.map +1 -1
- package/dist/prompts.d.ts +2 -0
- package/dist/prompts.js +6 -2
- package/dist/prompts.js.map +1 -1
- package/dist/protocol.d.ts +5 -1
- package/dist/protocol.js +24 -2
- package/dist/protocol.js.map +1 -1
- package/dist/provider.d.ts +12 -5
- package/dist/provider.js +60 -52
- package/dist/provider.js.map +1 -1
- package/dist/repetitive-output.d.ts +12 -0
- package/dist/repetitive-output.js +80 -0
- package/dist/repetitive-output.js.map +1 -0
- package/dist/replay-responses.d.ts +17 -0
- package/dist/replay-responses.js +100 -0
- package/dist/replay-responses.js.map +1 -0
- package/dist/routify-web-fetch.js +20 -7
- package/dist/routify-web-fetch.js.map +1 -1
- package/dist/sandbox-file-write.d.ts +10 -0
- package/dist/sandbox-file-write.js +58 -0
- package/dist/sandbox-file-write.js.map +1 -0
- package/dist/server.js +17 -5
- package/dist/server.js.map +1 -1
- package/dist/session-memory-prompts.d.ts +5 -0
- package/dist/session-memory-prompts.js +7 -0
- package/dist/session-memory-prompts.js.map +1 -0
- package/dist/snapshot-client.d.ts +10 -0
- package/dist/snapshot-client.js +39 -0
- package/dist/snapshot-client.js.map +1 -0
- package/dist/spec.js +18 -10
- package/dist/spec.js.map +1 -1
- package/dist/speech-audio.d.ts +9 -0
- package/dist/speech-audio.js +130 -0
- package/dist/speech-audio.js.map +1 -0
- package/dist/speech-model.d.ts +3 -0
- package/dist/speech-model.js +8 -0
- package/dist/speech-model.js.map +1 -0
- package/dist/tools.d.ts +5 -0
- package/dist/tools.js +378 -132
- package/dist/tools.js.map +1 -1
- package/dist/tui.js +13 -10
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +28 -3
- package/dist/voice-registry.d.ts +2 -0
- package/dist/voice-registry.js +10 -2
- package/dist/voice-registry.js.map +1 -1
- package/dist/web-fetch-output.d.ts +9 -0
- package/dist/web-fetch-output.js +38 -0
- package/dist/web-fetch-output.js.map +1 -0
- package/dist/workspace.d.ts +2 -0
- package/dist/workspace.js +11 -6
- package/dist/workspace.js.map +1 -1
- package/docs/BINARY_DISTRIBUTION.md +27 -16
- package/docs/MODES_AND_RELEASES.md +28 -5
- package/docs/SDK.md +5 -0
- package/modes/code-arena/capture-provenance.json +57 -0
- package/modes/code-arena/full-stack/system-prompt.txt +1 -1
- package/modes/code-arena/full-stack/template/eslint.config.mjs +3 -4
- package/modes/code-arena/full-stack/template/postcss.config.mjs +2 -2
- package/modes/code-arena/full-stack/tools.json +186 -186
- package/modes/code-arena/html/system-prompt.txt +1 -1
- package/modes/code-arena/html/tools.json +123 -123
- package/modes/code-arena/react/system-prompt.txt +4 -3
- package/modes/code-arena/react/template/package.json +4 -4
- package/modes/code-arena/react/template/src/App.tsx +1 -1
- package/modes/code-arena/react/template/src/main.tsx +1 -1
- package/modes/code-arena/react/template/tsconfig.json +6 -0
- package/modes/code-arena/react/template/vite.config.ts +1 -0
- package/modes/code-arena/react/tools.json +178 -184
- package/package.json +14 -4
- package/scripts/README.md +62 -0
- package/scripts/check-changelog.mjs +66 -0
- package/vendor/audio/darwin-arm64/FFmpeg.LICENSE +502 -0
- package/vendor/audio/darwin-arm64/LAME.LICENSE +481 -0
- package/vendor/audio/darwin-arm64/Opus.LICENSE +44 -0
- package/vendor/audio/darwin-arm64/ffmpeg.gz +0 -0
- package/vendor/audio/darwin-arm64/manifest.json +39 -0
- package/vendor/audio/darwin-x64/FFmpeg.LICENSE +502 -0
- package/vendor/audio/darwin-x64/LAME.LICENSE +481 -0
- package/vendor/audio/darwin-x64/Opus.LICENSE +44 -0
- package/vendor/audio/darwin-x64/ffmpeg.gz +0 -0
- package/vendor/audio/darwin-x64/manifest.json +39 -0
- package/vendor/audio/linux-arm64/FFmpeg.LICENSE +502 -0
- package/vendor/audio/linux-arm64/LAME.LICENSE +481 -0
- package/vendor/audio/linux-arm64/Opus.LICENSE +44 -0
- package/vendor/audio/linux-arm64/ffmpeg.gz +0 -0
- package/vendor/audio/linux-arm64/manifest.json +39 -0
- package/vendor/audio/linux-x64/FFmpeg.LICENSE +502 -0
- package/vendor/audio/linux-x64/LAME.LICENSE +481 -0
- package/vendor/audio/linux-x64/Opus.LICENSE +44 -0
- package/vendor/audio/linux-x64/ffmpeg.gz +0 -0
- package/vendor/audio/linux-x64/manifest.json +39 -0
- package/vendor/audio/sources/build-audio-encoder.sh +76 -0
- package/vendor/audio/sources/ffmpeg-7.0.2.tar.xz +0 -0
- package/vendor/audio/sources/lame-3.100.tar.gz +0 -0
- package/vendor/audio/sources/opus-1.5.2.tar.gz +0 -0
- package/vendor/audio/sources/pkgconf-2.3.0.tar.xz +0 -0
- package/vendor/audio/sources/sources.lock.json +30 -0
- package/vendor/audio/win32-x64/FFmpeg.LICENSE +502 -0
- package/vendor/audio/win32-x64/LAME.LICENSE +481 -0
- package/vendor/audio/win32-x64/Opus.LICENSE +44 -0
- package/vendor/audio/win32-x64/ffmpeg.gz +0 -0
- package/vendor/audio/win32-x64/manifest.json +39 -0
package/.env.example
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
# Model name. Provider prefixes
|
|
2
|
-
# when LITELLM_PROXY_URL is configured.
|
|
1
|
+
# Model name. Provider prefixes select the protocol and are stripped before sending.
|
|
3
2
|
OPENAI_MODEL=openai/qwen-latest-series-invite-beta-v92
|
|
4
3
|
# OPENAI_MODEL=anthropic/claude-sonnet-4-20250514
|
|
5
4
|
# OPENAI_MODEL=gemini/gemini-2.5-pro
|
|
@@ -14,6 +13,9 @@ OPENAI_API_KEY=
|
|
|
14
13
|
# ARENA_OPENAI_API=auto
|
|
15
14
|
# ARENA_OPENAI_API=responses
|
|
16
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
|
|
17
19
|
|
|
18
20
|
# Unified runtime mode. Canonical values are shown; full_stack/fullstack and
|
|
19
21
|
# single_html/single-html remain accepted compatibility aliases.
|
|
@@ -21,16 +23,16 @@ ARENA_HARNESS_MODE=arena
|
|
|
21
23
|
# ARENA_HARNESS_MODE=react
|
|
22
24
|
# ARENA_HARNESS_MODE=html
|
|
23
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.
|
|
24
30
|
|
|
25
31
|
# Native provider fallbacks used when OPENAI_BASE_URL/API_KEY are unset.
|
|
26
32
|
# ANTHROPIC_BASE_URL=https://api.anthropic.com/v1
|
|
27
33
|
# ANTHROPIC_API_KEY=
|
|
28
34
|
# GEMINI_API_KEY=
|
|
29
35
|
|
|
30
|
-
# LiteLLM Proxy (takes precedence over OPENAI_BASE_URL).
|
|
31
|
-
# LITELLM_PROXY_URL=http://127.0.0.1:4000/v1
|
|
32
|
-
# LITELLM_API_KEY=
|
|
33
|
-
|
|
34
36
|
# Direct OpenAI-compatible DashScope endpoint:
|
|
35
37
|
# OPENAI_MODEL=qwen3.7-max
|
|
36
38
|
# Default model used by the reproduction scripts:
|
|
@@ -44,6 +46,12 @@ ARENA_HARNESS_MODE=arena
|
|
|
44
46
|
# OPENAI_BASE_URL=https://dashscope.aliyuncs.com/apps/anthropic/v1
|
|
45
47
|
# OPENAI_API_KEY=
|
|
46
48
|
|
|
49
|
+
# Headless checkpoint controls: export in the launcher environment, not this
|
|
50
|
+
# workspace .env. Configuring a Hook automatically enables repetition detection.
|
|
51
|
+
# ARENA_MIDTURN_CHECKPOINT_HOOK=/absolute/path/policy.mjs
|
|
52
|
+
# HARBOR_REMOTE_COMMAND_BASE_URL=http://harbor-host:port
|
|
53
|
+
# HARBOR_REMOTE_COMMAND_API_KEY=
|
|
54
|
+
|
|
47
55
|
# Trace-compatible model settings.
|
|
48
56
|
# ARENA_MAX_TURNS=500
|
|
49
57
|
# Code Arena compatibility alias used only when ARENA_MAX_TURNS is unset:
|
|
@@ -51,6 +59,7 @@ ARENA_HARNESS_MODE=arena
|
|
|
51
59
|
# ARENA_MAX_TOKENS=131072
|
|
52
60
|
# ARENA_TEMPERATURE=1
|
|
53
61
|
# OpenAI-compatible: reasoning_effort; native Anthropic: output_config.effort.
|
|
62
|
+
# Allowed: low, medium, high, xhigh, max, ultra.
|
|
54
63
|
# ARENA_REASONING_EFFORT=max
|
|
55
64
|
# ARENA_TOOL_CHOICE=auto
|
|
56
65
|
# JSON array of exact tool names hidden from the model and rejected if called.
|
|
@@ -62,11 +71,23 @@ ARENA_HARNESS_MODE=arena
|
|
|
62
71
|
# prompt fixtures and Code Arena prompts are unchanged.
|
|
63
72
|
# ARENA_EXCLUDE_QWEN_FROM_SYSTEM_PROMPT=false
|
|
64
73
|
# CLI equivalent: --exclude-qwen-from-system-prompt
|
|
65
|
-
#
|
|
66
|
-
#
|
|
74
|
+
# Agent Arena compaction: rolling (default) or summary (historical full summary).
|
|
75
|
+
# Code Arena always uses summary and ignores this setting.
|
|
76
|
+
# ARENA_COMPACTION_MODE=rolling
|
|
77
|
+
# Agent Arena: threshold is 250000 unless BOTH variables below have valid
|
|
78
|
+
# values, in which case threshold = context window * ratio.
|
|
79
|
+
# Code Arena keeps independent controls (default window 1000000, ratio 0.7).
|
|
80
|
+
# Rolling counts use completed-request usage plus newer messages; summary
|
|
81
|
+
# mode uses the historical local token estimate.
|
|
67
82
|
# ARENA_CONTEXT_WINDOW=1000000
|
|
68
|
-
# ARENA_CONTEXT_COMPACTION_RATIO=0.
|
|
69
|
-
#
|
|
83
|
+
# ARENA_CONTEXT_COMPACTION_RATIO=0.25
|
|
84
|
+
# Restore Agent Arena background memory: unset defaults to --single-step only.
|
|
85
|
+
# CLI overrides: --restore-session-memory / --no-restore-session-memory.
|
|
86
|
+
# ARENA_RESTORE_SESSION_MEMORY=true
|
|
87
|
+
# Provisional Agent Arena background-memory budget for newly archivable content.
|
|
88
|
+
# ARENA_MEMORY_UPDATE_TOKENS=24000
|
|
89
|
+
# Default: rolling memory 131072; summary mode and Code Arena 8192.
|
|
90
|
+
# ARENA_COMPACTION_SUMMARY_MAX_TOKENS=131072
|
|
70
91
|
# ARENA_EXTRA_BODY={"enable_thinking":true}
|
|
71
92
|
# Transient model failures use full-jitter exponential backoff. The retry delay
|
|
72
93
|
# is capped by ARENA_MODEL_RETRY_MAX_MS and honors Retry-After when present.
|
|
@@ -80,6 +101,11 @@ ARENA_HARNESS_MODE=arena
|
|
|
80
101
|
# false, the optional fallback model converts Arena read_file images to text.
|
|
81
102
|
# ARENA_MODEL_SUPPORTS_IMAGE_INPUT=false
|
|
82
103
|
# ARENA_IMAGE_INPUT_FALLBACK_MODEL=qwen3.7-plus
|
|
104
|
+
# Optional independent fallback endpoint. Supported protocols are
|
|
105
|
+
# openai-chat-completions, openai-responses, and anthropic-messages.
|
|
106
|
+
# ARENA_IMAGE_INPUT_FALLBACK_BASE_URL=https://generativelanguage.googleapis.com/v1beta/openai
|
|
107
|
+
# ARENA_IMAGE_INPUT_FALLBACK_API_KEY=your-fallback-api-key
|
|
108
|
+
# ARENA_IMAGE_INPUT_FALLBACK_PROTOCOL=openai-chat-completions
|
|
83
109
|
# Inline image budget before downscaling: max pixels per edge and max 28x28
|
|
84
110
|
# patches. Images within both limits are sent unchanged; larger ones are
|
|
85
111
|
# downscaled to fit and re-encoded as JPEG. Defaults match the captured
|
|
@@ -128,12 +154,15 @@ ROUTIFY_API_KEY=
|
|
|
128
154
|
# CODE_HARNESS_WEB_SEARCH_MODEL=brave.llm-context
|
|
129
155
|
# Optional fetch_page/web_fetch path: Firecrawl first, then Jina Reader.
|
|
130
156
|
# CODE_HARNESS_ROUTIFY_WEB_FETCH_ENABLED=false
|
|
131
|
-
#
|
|
157
|
+
# Code Arena web_fetch content cap (UTF-8 bytes, including truncation notice).
|
|
158
|
+
# Applies to local and Routify readers in all formats; must be a positive integer.
|
|
159
|
+
# CODE_HARNESS_WEB_FETCH_MAX_BYTES=40000
|
|
160
|
+
# ARENA_IMAGE_MODEL=gemini-3.1-flash-image
|
|
132
161
|
# ARENA_IMAGE_SIZE=1024*1024
|
|
133
|
-
# CODE_HARNESS_IMAGE_MODEL=gemini-
|
|
162
|
+
# CODE_HARNESS_IMAGE_MODEL=gemini-3.1-flash-image
|
|
134
163
|
# CODE_HARNESS_IMAGE_SIZE=1024*1024
|
|
135
|
-
# ARENA_SPEECH_MODEL=
|
|
136
|
-
# ARENA_SPEECH_VOICE=
|
|
164
|
+
# ARENA_SPEECH_MODEL=gemini-3.1-flash-tts-preview
|
|
165
|
+
# ARENA_SPEECH_VOICE=Kore
|
|
137
166
|
|
|
138
167
|
# start_process automatically checks E2B preview hosts when E2B_SANDBOX_ID is
|
|
139
168
|
# present. For another preview proxy, use {port} and optionally {sandboxId}:
|
|
@@ -145,6 +174,20 @@ ROUTIFY_API_KEY=
|
|
|
145
174
|
# CODE_HARNESS_MEDIA_CACHE_DIR=/tmp/code-harness-media-cache
|
|
146
175
|
# CODE_HARNESS_MEDIA_CACHE_TTL_MS=86400000
|
|
147
176
|
|
|
177
|
+
# Advertise apply_patch to the model. Off by default: the tool stays out of
|
|
178
|
+
# the tool list but the executor still accepts calls to it.
|
|
179
|
+
# CODE_HARNESS_APPLY_PATCH_TOOL=false
|
|
180
|
+
|
|
181
|
+
# Replay-time canned tool responses: a JSON file of
|
|
182
|
+
# {"entries": [{tool, arguments, output}, ...]}; matching calls return the
|
|
183
|
+
# recorded output verbatim, others fall through to real execution.
|
|
184
|
+
# Only nondeterministic network/media tools are replayable (web_search,
|
|
185
|
+
# web_fetch, fetch_page, fetch_media, image_search, generate_image,
|
|
186
|
+
# generate_speech); recorded entries for other tools are ignored with a
|
|
187
|
+
# diagnostic, and every miss is logged on stderr with an exit-time hit-rate
|
|
188
|
+
# summary.
|
|
189
|
+
# CODE_HARNESS_REPLAY_RESPONSES=
|
|
190
|
+
|
|
148
191
|
# Full Stack build_and_start runtime. PostgreSQL and psql are environment
|
|
149
192
|
# prerequisites, matching the captured sandbox baseline.
|
|
150
193
|
# CODE_HARNESS_PREVIEW_PORT=3000
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
记录影响 CLI 使用的功能、修复、配置和兼容性变化,四种运行模式和各分发包共用版本号。
|
|
4
|
+
每个版本按影响范围分为 **Agent Arena**、**Code Arena**(React、HTML、Full Stack)
|
|
5
|
+
和**通用**;共同的模型连接、CLI 和历史记录变化只记在通用部分,无变更的分类省略。
|
|
6
|
+
从 `0.0.10-dev.0` 开始补录,历史条目按相邻 Git 标签之间的提交整理;日期采用
|
|
7
|
+
标签对应发布提交的日期。最新标签之后的变更放在 `Unreleased`,不计入已发布版本。
|
|
8
|
+
|
|
9
|
+
每次发布(包括 dev 预发布)前,将本次变更整理到与 `package.json` 版本一致的
|
|
10
|
+
`## [版本号] - YYYY-MM-DD` 条目,并保留顶部 `Unreleased` 供后续记录。
|
|
11
|
+
发布步骤见[发版流程](docs/MODES_AND_RELEASES.md#发布节奏)。
|
|
12
|
+
|
|
13
|
+
## [Unreleased]
|
|
14
|
+
|
|
15
|
+
## [0.0.10-dev.10] - 2026-10-07
|
|
16
|
+
|
|
17
|
+
### Agent Arena
|
|
18
|
+
|
|
19
|
+
- 新增 `ARENA_COMPACTION_MODE=summary`,可切换回摘要式压缩,默认仍为 `rolling`。
|
|
20
|
+
- 后台记忆写入 `history.json`,`--single-step` 默认恢复,普通续跑可用 `--restore-session-memory` 或 `ARENA_RESTORE_SESSION_MEMORY=true` 开启。
|
|
21
|
+
- `ARENA_CONTEXT_WINDOW` 与 `ARENA_CONTEXT_COMPACTION_RATIO` 同时配置有效值时按乘积压缩,否则阈值固定为 250k。
|
|
22
|
+
- 修复记忆中美元符号导致的提示词失真,补充更新失败与取消状态,并在任务结束和暂停时收束后台请求。
|
|
23
|
+
|
|
24
|
+
### Code Arena
|
|
25
|
+
|
|
26
|
+
- Full Stack 与 HTML 提示词对齐已核验的历史请求。
|
|
27
|
+
|
|
28
|
+
### 通用
|
|
29
|
+
|
|
30
|
+
- 新增 `ARENA_RESPONSES_REPLAY_REASONING_STATE=false`,可关闭 Responses 历史加密推理状态的回传。
|
|
31
|
+
- 四种模式统一降低 headless `stream-json` 长轨迹的日志量与接收端内存占用;依赖每条事件完整历史的消费者可用 `ARENA_STREAM_HISTORY=full` 恢复旧输出,兼容旧变量 `ARENA_CODE_STREAM_HISTORY`。
|
|
32
|
+
|
|
33
|
+
## [0.0.10-dev.9] - 2026-09-30
|
|
34
|
+
|
|
35
|
+
### Agent Arena
|
|
36
|
+
|
|
37
|
+
- 修正上下文 token 重复估算,记忆更新支持 `ARENA_REASONING_EFFORT`。
|
|
38
|
+
- 修复工具参数 JSON 非法时后续请求报 400、无法继续纠错的问题。
|
|
39
|
+
- 对齐空参数、搜索深度、URL 和重复选项 ID 的校验错误,修复旧会话续跑和 Responses 流中断后的恢复。
|
|
40
|
+
|
|
41
|
+
### Code Arena
|
|
42
|
+
|
|
43
|
+
- React 默认步数上限提高到 75,并改用 `bash` 安装依赖和构建。
|
|
44
|
+
- 视觉模型可通过 `read_file` 查看 10 MiB 以内的 PNG/JPEG 图片,并对齐文件读取描述与 MIME。
|
|
45
|
+
- 对齐工具参数校验和隐藏计划工具,修复 Full Stack 模板与依赖锁保留。
|
|
46
|
+
|
|
47
|
+
### 通用
|
|
48
|
+
|
|
49
|
+
- Headless Hook 支持重复输出检测,可选择继续、快照后继续或快照退出。
|
|
50
|
+
- 新增 `--single-step`,执行一轮后保存退出,可用 `--continue` 续跑。
|
|
51
|
+
- 修复续跑时历史模型覆盖当前模型配置、历史中途修正未及时保存的问题。
|
|
52
|
+
|
|
53
|
+
## [0.0.10-dev.8] - 2026-09-20
|
|
54
|
+
|
|
55
|
+
### Agent Arena
|
|
56
|
+
|
|
57
|
+
- 所有模型的 rolling compaction 改为在上下文达到固定 250,000 tokens 时触发;
|
|
58
|
+
优先使用主模型返回的 input usage,并本地估算其后增量。保留
|
|
59
|
+
`ARENA_CONTEXT_COMPACTION_RATIO` 供 Code Arena 及后续策略使用。
|
|
60
|
+
|
|
61
|
+
### Code Arena
|
|
62
|
+
|
|
63
|
+
- 上下文摘要式压缩的默认触发比例从 80% 调整为 70%;显式设置
|
|
64
|
+
`ARENA_CONTEXT_COMPACTION_RATIO` 时仍使用配置值。
|
|
65
|
+
- `grep` 返回的匹配行及前后文每行最多保留 2,000 个字符,避免超长单行
|
|
66
|
+
占用过多上下文。
|
|
67
|
+
|
|
68
|
+
### 通用
|
|
69
|
+
|
|
70
|
+
- Headless CLI 支持通过 `ARENA_MIDTURN_CHECKPOINT_HOOK` 加载 JavaScript Hook,
|
|
71
|
+
在工具调用名称或参数校验命中规则时先持久化当前 history,再请求 Harbor
|
|
72
|
+
Snapshot;Snapshot 完成后再将触发 Hook 的 assistant message 写入 history,
|
|
73
|
+
并继续执行本轮。Harbor 连接使用 `HARBOR_REMOTE_COMMAND_BASE_URL` 和
|
|
74
|
+
`HARBOR_REMOTE_COMMAND_API_KEY`,Snapshot 请求会携带触发 Hook 的 event。
|
|
75
|
+
新增 `arena --continue --session-id <id>`,可从未完成的 user/tool 边界继续
|
|
76
|
+
当前 turn,且不会追加新的 user message。
|
|
77
|
+
- 修复 Node.js 26 内置 fetch 与 npm `undici` dispatcher 不兼容导致模型请求持续
|
|
78
|
+
报 `UND_ERR_INVALID_ARG` 的问题。
|
|
79
|
+
|
|
80
|
+
## [0.0.10-dev.7] - 2026-09-12
|
|
81
|
+
|
|
82
|
+
### Code Arena
|
|
83
|
+
|
|
84
|
+
- `fetch_media` 修正 Pexels 图片推荐尺寸与缩略图选择;视频优先选择高分辨率 MP4,
|
|
85
|
+
补齐 `videoFile` 元数据及视频封面,运行错误保留历史错误前缀。
|
|
86
|
+
- 默认 Agent、命令行和交互终端直接发送对应模式的历史提示词,不再自动追加本地
|
|
87
|
+
工作区说明;SDK 显式传入 `workspaceContext` 时仍可附加说明。
|
|
88
|
+
- React 文件编辑保留原换行,重复匹配时替换首处;找不到原文时返回错误。
|
|
89
|
+
`apply_patch` 在写入前拒绝同一补丁内重复操作同一路径。
|
|
90
|
+
- React 修正文件列表的根目录别名及 500 条上限、子目录 glob 匹配和 grep 上下文
|
|
91
|
+
分组;大文本读取采用约 40 KB 的头尾截断。
|
|
92
|
+
- React 安装依赖时拒绝版本范围,保留依赖锁文件,并修正非法包名和生图额度
|
|
93
|
+
耗尽时的错误返回。
|
|
94
|
+
- 三种 Code Arena 模式的 `web_fetch` 正文默认限制为 40,000 UTF-8 字节,支持
|
|
95
|
+
`CODE_HARNESS_WEB_FETCH_MAX_BYTES` 配置;修复 Routify 的 text/html 格式读取。
|
|
96
|
+
- Full Stack 的 `bash` 省略 `workdir` 时默认在项目根目录执行;非法工作目录
|
|
97
|
+
返回历史对应的详细错误,公开工具 schema 保持不变。
|
|
98
|
+
|
|
99
|
+
### 通用
|
|
100
|
+
|
|
101
|
+
- 支持 `CODE_HARNESS_REPLAY_RESPONSES` 按工具名和参数回放已录制的网络/媒体返回,
|
|
102
|
+
未命中时执行真实工具;本地文件和进程工具始终真实执行。
|
|
103
|
+
- 移除 LiteLLM 专用路由及 `LITELLM_PROXY_URL`、`LITELLM_API_KEY` 配置。
|
|
104
|
+
模型连接统一使用 `OPENAI_BASE_URL` / `OPENAI_API_KEY`(兼容
|
|
105
|
+
`ARENA_API_BASE` / `ARENA_API_KEY`),通过 Chat Completions、Responses 或
|
|
106
|
+
Anthropic Messages 协议调用。使用旧 LiteLLM 环境变量的部署需迁移连接配置。
|
|
107
|
+
- Chat Completions 按配置传递 thinking 参数,不再因端点 URL 过滤这些参数,
|
|
108
|
+
保留 reasoning effort 与 thinking budget 的优先级。
|
|
109
|
+
|
|
110
|
+
## [0.0.10-dev.6] - 2026-09-10
|
|
111
|
+
|
|
112
|
+
### Agent Arena
|
|
113
|
+
|
|
114
|
+
- 新增 Gemini TTS,默认语音模型改为 `gemini-3.1-flash-tts-preview`;支持 WAV、
|
|
115
|
+
MP3 和 Ogg Opus。npm 包携带音频编码器,SEA 二进制内嵌编码器,运行时无需下载
|
|
116
|
+
或安装系统 ffmpeg;设置 `ARENA_SPEECH_MODEL=doubao-tts` 可继续使用豆包。
|
|
117
|
+
- 上下文压缩采用官方 dump 形式的 `role: "compaction"` 历史记录,保留全部原始
|
|
118
|
+
消息;续跑从最后一条有效压缩记录恢复上下文。后台记忆更新只保存在内存中,
|
|
119
|
+
不再单独持久化 `session_memory`。
|
|
120
|
+
- 限制 bash 输出缓冲区,避免长输出触发字符串大小溢出。
|
|
121
|
+
|
|
122
|
+
### Code Arena
|
|
123
|
+
|
|
124
|
+
- Full Stack 默认模型 step 上限提高到 75。
|
|
125
|
+
|
|
126
|
+
### 通用
|
|
127
|
+
|
|
128
|
+
- 支持 `ARENA_REASONING_EFFORT=ultra`,通过所选模型协议传递该推理档位。
|
|
129
|
+
- 默认图片生成模型由 `gemini-2.5-flash-image` 改为 `gemini-3.1-flash-image`。
|
|
130
|
+
- 本地图片附件和 Web 上传图片只加入附件清单,由模型按需调用 `read_file` 查看;
|
|
131
|
+
网络图片仍可直接作为多模态输入。
|
|
132
|
+
- 运行时生成的开头 system prompt 不再写入历史、增量日志或返回的 messages。
|
|
133
|
+
新会话及续跑均根据当前工作区和 Git 状态重新生成;兼容读取旧版带 system 前缀
|
|
134
|
+
的历史,也支持直接续跑以 user 消息开头的官方历史。
|
|
135
|
+
|
|
136
|
+
## [0.0.10-dev.5] - 2026-09-09
|
|
137
|
+
|
|
138
|
+
### Agent Arena
|
|
139
|
+
|
|
140
|
+
- Agent Arena 引入按章节增量更新的 session memory,在后台更新记忆,达到上下文
|
|
141
|
+
阈值时才回注;失败保留原上下文。默认新增对话更新阈值为 24,000 tokens,记忆
|
|
142
|
+
输出上限为 131,072 tokens;Code Arena 继续使用原有完整摘要流程。
|
|
143
|
+
- 对齐 Agent Arena 文件分页的偏移、空白和 CRLF、沙箱文件创建行为,以及进程
|
|
144
|
+
日志尾部的空行。bash 和进程工具使用历史对应的 C locale。
|
|
145
|
+
- 修复图片搜索结果的来源页面 URL、下载回退和历史选择结果;媒体工具保留工作区
|
|
146
|
+
绝对路径。
|
|
147
|
+
- 网页搜索按深度返回 3 / 5 / 10 条结果,修复最高深度只返回 8 条的限制。
|
|
148
|
+
- 对齐仓库提示词变量、工作区快照和已关闭仓库会话的续跑处理。
|
|
149
|
+
|
|
150
|
+
### Code Arena
|
|
151
|
+
|
|
152
|
+
- Code Arena 支持执行 `apply_patch`,包含新增、修改及删除文件;默认不向模型
|
|
153
|
+
展示,设置 `CODE_HARNESS_APPLY_PATCH_TOOL=true` 后加入工具列表。
|
|
154
|
+
- Code Arena 文件编辑原样保留替换文本,容忍缩进差异;重复提交且替换
|
|
155
|
+
内容已存在的编辑返回成功。`glob_files` 未传路径时使用工作区根目录;
|
|
156
|
+
`apply_patch` 的 Add File 内容不额外追加换行。
|
|
157
|
+
|
|
158
|
+
## [0.0.10-dev.4] - 2026-09-03
|
|
159
|
+
|
|
160
|
+
### Agent Arena
|
|
161
|
+
|
|
162
|
+
- 对齐 Agent Arena 大文本读取的整行首尾截断,以及 bash 与文件工具对真实路径、
|
|
163
|
+
`/tmp`、`/var/tmp` 的处理。
|
|
164
|
+
|
|
165
|
+
### Code Arena
|
|
166
|
+
|
|
167
|
+
- 对齐 Code Arena 文件编辑匹配、文件读取与列表默认值、glob/grep 的返回及错误
|
|
168
|
+
行为,并修复 Full Stack grep 的上下文分组。
|
|
169
|
+
|
|
170
|
+
## [0.0.10-dev.3] - 2026-09-02
|
|
171
|
+
|
|
172
|
+
### Code Arena
|
|
173
|
+
|
|
174
|
+
- React 初始模板更新 React、Vite 和 Node 类型依赖。
|
|
175
|
+
|
|
176
|
+
### 通用
|
|
177
|
+
|
|
178
|
+
- CLI 支持 `--file <path>` 读取 UTF-8 提示词文件,与 `-p` / `--prompt` 互斥,
|
|
179
|
+
方便传入超过命令行参数长度限制的提示词;两个命令入口和单文件二进制均可使用。
|
|
180
|
+
|
|
181
|
+
## [0.0.10-dev.2] - 2026-08-31
|
|
182
|
+
|
|
183
|
+
### Agent Arena
|
|
184
|
+
|
|
185
|
+
- 图片理解 fallback 可独立配置 base URL、API key 和协议,支持 Chat Completions、
|
|
186
|
+
Responses 及 Anthropic Messages;仅配置 fallback model 时仍继承主模型连接。
|
|
187
|
+
|
|
188
|
+
### 通用
|
|
189
|
+
|
|
190
|
+
- Anthropic 流式工具调用收到空 delta 时保留已有 input,避免参数被清空。
|
|
191
|
+
|
|
192
|
+
## [0.0.10-dev.1] - 2026-08-28
|
|
193
|
+
|
|
194
|
+
### Agent Arena
|
|
195
|
+
|
|
196
|
+
- 对齐 Arena v2 工具参数校验、运行时错误和进程工具返回格式。
|
|
197
|
+
|
|
198
|
+
### 通用
|
|
199
|
+
|
|
200
|
+
- headless 和 daemon 改为逐步追加 `history.json.journal.jsonl`,回合结束后再生成
|
|
201
|
+
`history.json`;异常退出可恢复已完成步骤。TUI 快照按消息流式序列化,避免长
|
|
202
|
+
历史构造超大 JSON 字符串;SSE 缓存同时限制条数和字节量。
|
|
203
|
+
|
|
204
|
+
## [0.0.10-dev.0] - 2026-08-28
|
|
205
|
+
|
|
206
|
+
### Agent Arena
|
|
207
|
+
|
|
208
|
+
- 更新 Agent Arena v2 提示词和工具定义,工具从 11 个扩展为 15 个。
|
|
209
|
+
新增 `start_process`、`get_process_output`、`stop_process` 管理跨调用后台
|
|
210
|
+
进程,支持等待日志、端口或退出状态,并将进程日志写入 `.arena/processes/`。
|
|
211
|
+
- 新增 `add_voice` 音色注册及试听选择,`generate_speech` 使用稳定的 `voice_id`;
|
|
212
|
+
无交互的 headless 模式可注册默认虚拟音色。
|
|
213
|
+
- headless 和 TUI 开放 `present_file` 工具,校验生成文件并返回工具结果。
|
|
214
|
+
- `bash` 用于一次性命令,区分超时与信号终止,并清理遗留后台进程;需要持续运行
|
|
215
|
+
的任务改用进程工具。预览端口支持 E2B Host 探测及按需返回告警。
|
|
216
|
+
|
|
217
|
+
[Unreleased]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.10...master
|
|
218
|
+
[0.0.10-dev.10]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.9...v0.0.10-dev.10
|
|
219
|
+
[0.0.10-dev.9]: https://gitlab.alibaba-inc.com/know-how/arena-harness/-/compare/v0.0.10-dev.8...v0.0.10-dev.9
|
|
220
|
+
[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
|
|
221
|
+
[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
|
|
222
|
+
[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
|
|
223
|
+
[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
|
|
224
|
+
[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
|
|
225
|
+
[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
|
|
226
|
+
[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
|
|
227
|
+
[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
|
|
228
|
+
[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
|