| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
style: cargo fmt --all(全仓格式化,为把 fmt 检查转成阻塞门做准备) 纯格式化,无行为变更。93 个文件、407 处 diff —— 这笔债从来没还过,导致 cargo fmt 在这棵树上是不可用的:任何人跑一次都会顺手改掉 90 多个无关文件, 于是没人敢跑,债继续滚。check.yml 里 fmt 检查挂着 continue-on-error 也正是 因为它第一次跑就是红的。 唯一一处非纯格式化的改动:background.rs 里 bash_start 参数错误消息所在的 match arm,rustfmt 在长字符串字面量上不收敛(cargo fmt 不改、--check 却 一直报),手工落成它要求的块形式并把字面量拆成续行。已用 rustc 实测拼接结果 与原字符串逐字节相同。这是把 fmt 设成阻塞门的前提 —— 否则 CI 会永久红。 验证:cargo fmt --all -- --check 退出 0;cargo check --workspace --all-targets 0 error;cargo test --workspace 全绿。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DZ6k3GPfpuJZg28kysCv4v | 1 个月前 | |
fix(security): 移除 AtomgitBashGate——裸 bash AtomGit API 调用不再拦截 真机反馈:模型用 curl 查 AtomGit API(判断某模型是否存在,只读/公开)被 门控 deny_turn 终止了整个回合。分析后这个门控是过度拦截: - 它 blanket 拦所有含 api.atomgit.com 的 bash 命令,误伤只读/公开无鉴权 GET(既不泄凭证也做不了破坏),还用 deny_turn 直接杀回合——而拦截消息却 让模型"改用 atomgit_api 工具",回合已死无法自我纠正,自相矛盾。 - 真正要防的凭证外泄已由通用 CredentialBashGate 覆盖:它检测任何 *_token 标识符,$ATOMGIT_TOKEN 命中;破坏性写操作因必须带凭证 → 同样被挡。 所以 AtomgitBashGate 的凭证 marker 分支是冗余的。 改动:删除整个 AtomgitBashGate(文件 + 主/子代理/team 三处注册 + 导出); persona 从"禁止用 bash/curl 构造 AtomGit API 请求"软化为"凭证/写操作优先用 typed 工具、绝不经 shell 传凭证、只读公开查询可用 bash";删除断言拦截的 smoke 测试;更新子/team 中间件计数(3→2)。 净效果:只读/公开 API 查询能跑,不再误杀回合;凭证防护由 CredentialBashGate 接管,安全边界不削弱。capabilities 848 + coding 全绿(3 个既有 provider::retry 环境失败与本改动无关)。未真机验。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 1 个月前 | |
refactor(persona/verify): drop per-round status reminder; don't force verify when attended Two related cleanups that cut redundant reminders and over-forced behavior. A. Remove the per-round StatusReminderHook date/status tail. - The current date now comes SOLELY from the persona's frozen date anchor (cache-stable, present every round incl. round 1), so no ephemeral <system-reminder> tail rides each request. StatusReminderHook is dropped from the production hook chain (type kept, just unregistered). - persona: SYSTEM REMINDERS / MCP blocks now tell the model NOT to acknowledge or echo reminders ("已记录 / noted / continuing") -- read silently and act. - recall.rs doc, cache_prefix.rs (no date-tail stripping needed -- history is a pure byte prefix again), full_assembly.rs updated accordingly. B. Attended (interactive) runs do not FORCE the post-edit verify cadence. - CodingAgentConfig::interactive + is_attended(); VerifyCadenceHook::attended() + an ATOMCODE_VERIFY override (should_suppress_verify / parse_verify_env). Attended -> a present human can request a check; unattended / headless / scheduled keep forcing. Wired in parts.rs + assemble.rs; ACP sets interactive = true (mirrors its request_timeout = None). - persona: VERIFY skips pure styling / whitespace / copy edits; PROGRESS SIGNPOSTS / OUTPUT scoped to multi-step work with silent trivial calls allowed (drop the "silence is worse than one plain line" push). Mirrors codex's "hold off on tests in interactive modes; run them proactively only when unattended". Tests: verify-suppression unit tests (env + attendedness matrix); cache_prefix / full_assembly reflect the removed reminder tail; persona signpost assertions updated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 1 个月前 | |
refactor(persona/verify): drop per-round status reminder; don't force verify when attended Two related cleanups that cut redundant reminders and over-forced behavior. A. Remove the per-round StatusReminderHook date/status tail. - The current date now comes SOLELY from the persona's frozen date anchor (cache-stable, present every round incl. round 1), so no ephemeral <system-reminder> tail rides each request. StatusReminderHook is dropped from the production hook chain (type kept, just unregistered). - persona: SYSTEM REMINDERS / MCP blocks now tell the model NOT to acknowledge or echo reminders ("已记录 / noted / continuing") -- read silently and act. - recall.rs doc, cache_prefix.rs (no date-tail stripping needed -- history is a pure byte prefix again), full_assembly.rs updated accordingly. B. Attended (interactive) runs do not FORCE the post-edit verify cadence. - CodingAgentConfig::interactive + is_attended(); VerifyCadenceHook::attended() + an ATOMCODE_VERIFY override (should_suppress_verify / parse_verify_env). Attended -> a present human can request a check; unattended / headless / scheduled keep forcing. Wired in parts.rs + assemble.rs; ACP sets interactive = true (mirrors its request_timeout = None). - persona: VERIFY skips pure styling / whitespace / copy edits; PROGRESS SIGNPOSTS / OUTPUT scoped to multi-step work with silent trivial calls allowed (drop the "silence is worse than one plain line" push). Mirrors codex's "hold off on tests in interactive modes; run them proactively only when unattended". Tests: verify-suppression unit tests (env + attendedness matrix); cache_prefix / full_assembly reflect the removed reminder tail; persona signpost assertions updated. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 1 个月前 | |
Auto-commit at turn #1 (385 files changed) | 3 个月前 | |
feat(eval): add reliable headless model benchmarking Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
fix(approval): 「总是允许」在当前 session 真正生效 + 新增 [permissions] 预授权 bash 的「本会话总是允许」此前是个空承诺,两条独立路径各占一半: 1. BashTool::always_grant_scope 按归一化命令授予,命令差一个参数就重新弹框。 2. BashWorkspaceGate 的 Unresolvable 类(cd 后接相对路径 / $() / 未展开 $var)走 prompt_unremembered:每次都问且从不记录答案 —— 对这一整类命令 「总是允许」是彻底的空操作。用户报的 cd '…/下载/' && python3 … 正是这一类。 审批面板的文案还单独判了一次 tool == "bash",而生产唯一调用点传的是 PascalCase 显示名 "Bash",该分支永不命中:用户看到「本会话总是允许 Bash」,store 记的却只是 那一条命令。单测传的是小写,所以测试一直是绿的。 本次改动: - always_grant_scope:普通命令改为工具级;参数命中敏感路径时保持 per-command - BashWorkspaceGate 新增 prompt_unresolvable:仍然问(fail-closed 是对「要不要问」, 不该是对「问完记不记」),但 Always 会被记住;敏感目标仍走 prompt_unremembered - TUI 的审批标签与会话缓存键统一从 always_grant_scope 推导,结构上杜绝再次漂移 同时新增配置级预授权 [permissions] allow/deny(规则语法兼容 Claude Code),挂在 所有硬安全闸门(turn policy / plan mode / 凭证守卫 / 敏感路径守卫 / CC PreToolUse) 之后、便利 gate 与审批提示之前;deny 优先于 allow,allow 永不作用于敏感路径参数。 测试:新增 always_allow_bash.rs 与 permission_rules_e2e.rs 真实装配端到端用例; 其中两条核心用例在旧实现上以「两条命令都弹框」失败,新实现通过。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DZ6k3GPfpuJZg28kysCv4v | 1 个月前 | |
feat(eval): add reliable headless model benchmarking Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
feat(eval): add reliable headless model benchmarking Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
fix(coding): preserve runtime identity from project config Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
style: cargo fmt --all(全仓格式化,为把 fmt 检查转成阻塞门做准备) 纯格式化,无行为变更。93 个文件、407 处 diff —— 这笔债从来没还过,导致 cargo fmt 在这棵树上是不可用的:任何人跑一次都会顺手改掉 90 多个无关文件, 于是没人敢跑,债继续滚。check.yml 里 fmt 检查挂着 continue-on-error 也正是 因为它第一次跑就是红的。 唯一一处非纯格式化的改动:background.rs 里 bash_start 参数错误消息所在的 match arm,rustfmt 在长字符串字面量上不收敛(cargo fmt 不改、--check 却 一直报),手工落成它要求的块形式并把字面量拆成续行。已用 rustc 实测拼接结果 与原字符串逐字节相同。这是把 fmt 设成阻塞门的前提 —— 否则 CI 会永久红。 验证:cargo fmt --all -- --check 退出 0;cargo check --workspace --all-targets 0 error;cargo test --workspace 全绿。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DZ6k3GPfpuJZg28kysCv4v | 1 个月前 | |
feat(eval): add reliable headless model benchmarking Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 个月前 | |
Merge remote-tracking branch 'origin/release/v5.0.1' into release/v5.0.1_1 # Conflicts: # crates/atomcode-bridge/src/runtime.rs # crates/atomcode-bridge/src/schedule_wakeup.rs # crates/atomcode-cli/src/main.rs # crates/atomcode-coding/src/assemble.rs # crates/atomcode-coding/src/parts.rs # crates/atomcode-core/src/agent/mod.rs # crates/atomcode-tuix/src/event_loop/mod.rs | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 个月前 | ||
| 2 个月前 | ||
| 3 个月前 |