Commit Graph

294 Commits

Author SHA1 Message Date
changxv
78a411462b fix: replace "Codex" to "codeagent" in dev-plan-generator subagent 2025-12-16 12:32:18 +08:00
alex
9471a981e3 fix: 修復 win python install.py 2025-12-16 12:29:50 +08:00
cexll
3d27d44676 chore(ci): integrate git-cliff for automated changelog generation
- Add cliff.toml configuration matching current CHANGELOG.md format
- Replace awk script with npx git-cliff in release workflow
- Add `make changelog` command for one-click CHANGELOG updates
- Use git-cliff --current flag to generate release notes per version

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
v5.2.4
2025-12-16 10:47:18 +08:00
ben
6a66c9741f Merge pull request #70 from cexll/fix/prevent-codeagent-infinite-recursion
fix(codeagent): 防止 Claude backend 无限递归调用
2025-12-16 10:37:45 +08:00
cexll
a09c103cfb fix(codeagent): 防止 Claude backend 无限递归调用
通过设置 --setting-sources="" 禁用所有配置源(user, project, local),
避免被调用的 Claude 实例加载 ~/.claude/CLAUDE.md 和 skills,
从而防止再次调用 codeagent 导致的循环超时问题。

修改内容:
- backend.go: ClaudeBackend.BuildArgs 添加 --setting-sources="" 参数
- backend_test.go: 更新 4 个测试用例以匹配新的参数列表
- main_test.go: 更新 2 个测试用例以匹配新的参数列表

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
2025-12-16 10:27:21 +08:00
ben
1dec763e26 Merge pull request #69 from cexll/myclaude-master-20251215-073053-338465000
fix(executor): isolate log files per task in parallel mode
2025-12-16 10:20:30 +08:00
cexll
f57ea2df59 chore: bump version to 5.2.4
Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
2025-12-16 10:17:47 +08:00
cexll
d215c33549 fix(executor): isolate log files per task in parallel mode
Previously, all parallel tasks shared the same log file path, making it
difficult to debug individual task execution. This change creates a
separate log file for each task using the naming convention:
codeagent-wrapper-{pid}-{taskName}.log

Changes:
- Add withTaskLogger/taskLoggerFromContext for per-task logger injection
- Modify executeConcurrentWithContext to create independent Logger per task
- Update printTaskStart to display task-specific log paths
- Extract defaultRunCodexTaskFn for proper test hook reset
- Add runCodexTaskFn reset to resetTestHooks()

Test coverage: 93.7%

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
2025-12-16 10:05:54 +08:00
swe-agent[bot]
b3f8fcfea6 update CHANGELOG.md 2025-12-15 22:23:34 +08:00
ben
806bb04a35 Merge pull request #65 from cexll/fix/issue-64-buffer-overflow
fix(parser): 修复 bufio.Scanner token too long 错误
2025-12-15 14:22:03 +08:00
swe-agent[bot]
b1156038de test: 同步测试中的版本号至 5.2.3
修复 CI 失败:将 main_test.go 中的版本期望值从 5.2.2 更新为 5.2.3,
与 main.go 中的实际版本号保持一致。

修改文件:
- codeagent-wrapper/main_test.go:2693 (TestVersionFlag)
- codeagent-wrapper/main_test.go:2707 (TestVersionShortFlag)
- codeagent-wrapper/main_test.go:2721 (TestVersionLegacyAlias)

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
v5.2.3
2025-12-15 14:13:03 +08:00
swe-agent[bot]
0c93bbe574 change version 2025-12-15 13:23:26 +08:00
swe-agent[bot]
6f4f4e701b fix(parser): 修复 bufio.Scanner token too long 错误 (#64)
## 问题
- 执行 rg 等命令时,如果匹配到 minified 文件,单行输出可能超过 10MB
- 旧实现使用 bufio.Scanner,遇到超长行会报错并中止整个解析
- 导致后续的 agent_message 无法读取,任务失败

## 修复
1. **parser.go**:
   - 移除 bufio.Scanner,改用 bufio.Reader + readLineWithLimit
   - 超长行(>10MB)会被跳过但继续处理后续事件
   - 添加 codexHeader 轻量级解析,只在 agent_message 时完整解析

2. **utils.go**:
   - 修复 logWriter 内存膨胀问题
   - 添加 writeLimited 方法限制缓冲区大小

3. **测试**:
   - parser_token_too_long_test.go: 验证超长行处理
   - log_writer_limit_test.go: 验证日志缓冲限制

## 测试结果
-  TestParseJSONStream_SkipsOverlongLineAndContinues
-  TestLogWriterWriteLimitsBuffer
-  完整测试套件通过

Fixes #64

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
2025-12-15 13:19:51 +08:00
swe-agent[bot]
ff301507fe test: Fix tests for ClaudeBackend default --dangerously-skip-permissions
- Update TestClaudeBuildArgs_ModesAndPermissions expectations
- Update TestBackendBuildArgs_ClaudeBackend expectations
- Update TestClaudeBackendBuildArgs_OutputValidation expectations
- Update version tests to expect 5.2.2

ClaudeBackend now defaults to adding --dangerously-skip-permissions
for automation workflows.

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
v5.2.2
2025-12-13 21:53:38 +08:00
swe-agent[bot]
93b72eba42 chore(v5.2.2): Bump version and clean up documentation
- Update version to 5.2.2 in README.md, README_CN.md, and codeagent-wrapper/main.go
- Remove non-existent documentation links from README.md (architecture.md, GITHUB-WORKFLOW.md, enterprise-workflow-ideas.md)
- Add coverage.out to .gitignore

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
2025-12-13 21:43:49 +08:00
swe-agent[bot]
b01758e7e1 fix codeagent backend claude no auto 2025-12-13 21:42:17 +08:00
swe-agent[bot]
c51b38c671 fix install.py dev fail 2025-12-13 21:41:55 +08:00
swe-agent[bot]
b227fee225 fix codeagent claude and gemini root dir v5.2.1 2025-12-13 16:56:53 +08:00
swe-agent[bot]
2b7569335b update readme 2025-12-13 15:29:12 +08:00
swe-agent[bot]
9e667f0895 feat(v5.2.0): Complete skills system integration and config cleanup
Core Changes:
- **Skills System**: Added codeagent, product-requirements, prototype-prompt-generator to skill-rules.json
- **Config Cleanup**: Removed deprecated gh module from config.json
- **Workflow Update**: Changed memorys/CLAUDE.md to use codeagent skill instead of codex

Details:
- config.json:88-119: Removed gh module (github-workflow directory doesn't exist)
- skills/skill-rules.json:24-114: Added 3 new skills with keyword/pattern triggers
  - codeagent: multi-backend, parallel task execution
  - product-requirements: PRD, requirements gathering
  - prototype-prompt-generator: UI/UX design specifications
- memorys/CLAUDE.md:3,24-25: Updated Codex skill → Codeagent skill

Verification:
- All skill activation tests PASS
- codeagent skill triggers correctly on keyword match

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
v5.2.0
2025-12-13 13:25:21 +08:00
swe-agent[bot]
4759eb2c42 chore(v5.2.0): Update CHANGELOG and remove deprecated test files
- Added Skills System Enhancements section to CHANGELOG
- Documented new skills: codeagent, product-requirements, prototype-prompt-generator
- Removed deprecated test files (tests/test_*.py)
- Updated release date to 2025-12-13

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
2025-12-13 13:21:59 +08:00
swe-agent[bot]
edbf168b57 fix(codeagent-wrapper): fix race condition in stdout parsing
修复 GitHub Actions CI 中的测试失败问题。

问题分析:
在 TestRun_PipedTaskSuccess 测试中,当脚本运行很快时,cmd.Wait()
可能在 parseJSONStreamInternal goroutine 开始读取之前就返回,
导致 stdout 管道被过早关闭,出现 "read |0: file already closed" 错误。

解决方案:
将 parseJSONStreamInternal goroutine 的启动提前到 cmd.Start() 之前。
这确保解析器在进程启动前就 ready,避免竞态条件。

测试结果:
- 本地所有测试通过 ✓
- 覆盖率保持 93.7% ✓

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
2025-12-13 13:20:49 +08:00
swe-agent[bot]
9bfea81ca6 docs(changelog): remove GitHub workflow related content
GitHub workflow features have been removed from the project.

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
2025-12-13 13:01:06 +08:00
swe-agent[bot]
a9bcea45f5 Merge rc/5.2 into master: v5.2.0 release improvements 2025-12-13 12:56:37 +08:00
swe-agent[bot]
8554da6e2f feat(v5.2.0): Improve release notes and installation scripts
**Main Changes**:
1. release.yml: Extract version release notes from CHANGELOG.md
2. install.bat: codex-wrapper → codeagent-wrapper
3. README.md: Update multi-backend architecture description
4. README_CN.md: Sync Chinese description
5. CHANGELOG.md: Complete v5.2.0 release notes in English

Generated with swe-agent-bot

Co-Authored-By: swe-agent-bot <agent@swe-agent.ai>
2025-12-13 12:53:28 +08:00
ben
b2f941af5f Merge pull request #53 from cexll/rc/5.2
feat: Enterprise Workflow with Multi-Backend Support (v5.2)
2025-12-13 12:38:38 +08:00
swe-agent[bot]
6861a9d057 remove docs 2025-12-13 12:37:45 +08:00
swe-agent[bot]
18189f095c remove docs 2025-12-13 12:36:12 +08:00
swe-agent[bot]
f1c306cb23 add prototype prompt skill 2025-12-13 12:33:02 +08:00
swe-agent[bot]
0dc6df4e71 add prd skill 2025-12-13 12:32:37 +08:00
swe-agent[bot]
21bb45a7af update memory claude 2025-12-13 12:32:15 +08:00
swe-agent[bot]
e7464d1286 remove command gh flow 2025-12-13 12:32:06 +08:00
swe-agent[bot]
373d75cc36 update license 2025-12-13 12:31:49 +08:00
swe-agent[bot]
0bbcc6c68e fix(codeagent-wrapper): add worker limit cap and remove legacy alias
- Add maxParallelWorkersLimit=100 cap for CODEAGENT_MAX_PARALLEL_WORKERS
- Remove scripts/install.sh (codex-wrapper legacy alias no longer needed)
- Fix README command example: /gh-implement -> /gh-issue-implement
- Add TestResolveMaxParallelWorkers unit test for limit validation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 22:06:23 +08:00
swe-agent[bot]
3c6f22ca48 fix(codeagent-wrapper): use -r flag for gemini backend resume
Gemini CLI uses -r <session_id> for session resume, not --session-id.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 15:35:39 +08:00
swe-agent[bot]
87016ce331 fix(install): clarify module list shows default state not enabled
Renamed "Enabled" column to "Default" and added hint explaining
the meaning of the checkmark.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 15:14:41 +08:00
swe-agent[bot]
86d18ca19a fix(codeagent-wrapper): use -r flag for claude backend resume
Claude CLI uses `-r <session_id>` for resume, not `--session-id`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 15:10:17 +08:00
swe-agent[bot]
4edd2d2d2d fix(codeagent-wrapper): remove binary artifacts and improve error messages
- Remove committed binaries from git tracking (codeagent-wrapper, *.test)
- Remove coverage.out from tracking (generated by CI)
- Update .gitignore to exclude build artifacts
- Add task block index to parallel config error messages for better debugging

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 14:41:54 +08:00
swe-agent[bot]
ef47ed57e9 test(codeagent-wrapper): 添加 ExtractRecentErrors 单元测试
测试覆盖:
- 空日志文件
- 无错误日志
- 单个错误
- ERROR 和 WARN 混合
- maxEntries 截断
- nil logger
- 空路径
- 不存在的文件

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 14:27:50 +08:00
swe-agent[bot]
b2e3f416bc fix(codeagent-wrapper): 异常退出时显示最近错误信息
- 添加 Logger.ExtractRecentErrors() 方法提取最近 ERROR/WARN 日志
- 修改退出逻辑:失败时先输出错误再删除日志文件

Closes #56

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 14:25:22 +08:00
swe-agent[bot]
7231c6d2c4 fix(install): op_run_command 实时流式输出
- 使用 Popen + selectors 替代 subprocess.run(capture_output=True)
- stdout/stderr 实时打印到终端,同时记录到日志
- 用户可以看到命令执行的实时进度
- 修复 issue #55: bash install.sh 执行过程不可见的问题

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 13:22:00 +08:00
swe-agent[bot]
fa342f98c2 feat(install): 添加终端日志输出和 verbose 模式
- 新增 --verbose/-v 参数启用详细日志输出
- 安装过程中显示模块进度 [n/total]
- 安装完成后显示摘要统计
- write_log 在 verbose 模式下同时输出到终端
- 修复 issue #55: 方便 debug 安装脚本执行问题

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 11:55:51 +08:00
swe-agent[bot]
90478d2049 fix(codeagent-wrapper): 修复权限标志逻辑和版本号测试
修复 GitHub Action CI 失败的两个问题:

1. backend.go - 修正 Claude 后端权限标志逻辑,将 `if !cfg.SkipPermissions` 改为 `if cfg.SkipPermissions`,确保只在显式请求时才添加 --dangerously-skip-permissions
2. main_test.go - 更新版本测试用例期望值从 5.1.0 到 5.2.0,匹配当前版本常量

所有测试通过 ✓

🤖 Generated with [SWE Agent Bot](https://swe-agent.ai)

Co-Authored-By: SWE-Agent-Bot <noreply@swe-agent.ai>
2025-12-11 16:16:23 +08:00
swe-agent[bot]
e1ad08fcc1 feat(codeagent-wrapper): 完整多后端支持与安全优化
修复 PR #53 中发现的问题,实现完整的多后端功能:

**多后端功能完整性**
- Claude/Gemini 后端支持 workdir (-C) 和 resume (--session-id) 参数
- 并行模式支持全局 --backend 参数和任务级 backend 配置
- 后端参数映射统一,支持 new/resume 两种模式

**安全控制**
- Claude 后端默认启用 --dangerously-skip-permissions 以支持自动化
- 通过 CODEAGENT_SKIP_PERMISSIONS 环境变量控制权限检查
- 不同后端行为区分:Claude 默认跳过,Codex/Gemini 默认启用

**并发控制**
- 新增 CODEAGENT_MAX_PARALLEL_WORKERS 环境变量限制并发数
- 实现 fail-fast context 取消机制
- Worker pool 防止资源耗尽,支持并发监控日志

**向后兼容**
- 版本号统一管理,提供 codex-wrapper 兼容脚本
- 所有默认行为保持不变
- 支持渐进式迁移

**测试覆盖**
- 总体覆盖率 93.4%(超过 90% 要求)
- 新增后端参数、并行模式、并发控制测试用例
- 核心模块覆盖率:backend.go 100%, config.go 97.8%, executor.go 96.4%

**文档更新**
- 更新 skills/codeagent/SKILL.md 反映多后端和安全控制
- 添加 CHANGELOG.md 记录重要变更
- 更新 README 版本说明和安装脚本

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-11 16:09:33 +08:00
swe-agent[bot]
cf2e4fefa4 fix(codeagent-wrapper): 重构信号处理逻辑避免重复 nil 检查
改进信号转发函数的可读性和可维护性:
- 提取 signalNotifyFn 和 signalStopFn 的默认值设置
- 消除嵌套的 nil 检查
- 保持相同的功能行为

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-10 16:29:32 +08:00
swe-agent[bot]
d7bb28a9ce feat(dev-workflow): 替换 Codex 为 codeagent 并添加 UI 自动检测
主要变更:
- 全量替换 Codex → codeagent skill 引用
- 添加 UI 自动检测机制(Step 2 分析阶段)
- 实现 backend 分流:后端任务用 codex,UI 任务用 gemini
- 修正 agent 名称:develop-doc-generator → dev-plan-generator
- 更新命令格式为实际的 codeagent-wrapper API
- 放宽 UI 判断标准:样式文件 OR 前端组件(覆盖更多场景)

文件变更:
- dev-workflow/commands/dev.md: 更新 6 步工作流定义
- dev-workflow/README.md: 更新文档和示例
- dev-workflow/agents/dev-plan-generator.md: 更新输入参数说明

保持向后兼容:
- 6 步工作流结构不变
- 90% 测试覆盖率要求不变

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-10 16:29:11 +08:00
swe-agent[bot]
b41b223fc8 refactor(pr-53): 调整文件命名和技能定义
1. 回滚 skills/codex/SKILL.md 至使用 codex-wrapper
   - codeagent-wrapper 已由独立技能 skills/codeagent/SKILL.md 提供
   - 保持向后兼容性和职责分离

2. 重命名命令文件为语义化名称
   - gh-implement.md → gh-issue-implement.md
   - 更新命令标识从 /gh-implement 到 /gh-issue-implement
   - 提升命令意图的清晰度

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-09 17:19:23 +08:00
swe-agent[bot]
a86ee9340c fix(ci): 移除 .claude 配置文件验证步骤
.claude/ 目录在 .gitignore 中被忽略,这些用户特定配置文件
不应该存在于仓库中,也不需要被 CI 检查。

Fixes #53

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-09 17:10:18 +08:00
swe-agent[bot]
c6cd20d2fd fix(parallel): 修复并行执行启动横幅重复打印问题
修复 GitHub Actions 失败的测试 TestRunParallelStartupLogsPrinted。

问题根源:
- 在 main.go 中有重复的启动横幅和日志路径打印逻辑
- executeConcurrent 内部也添加了相同的打印逻辑
- 导致横幅和任务日志被打印两次

修复内容:
1. 删除 main.go 中 --parallel 处理中的重复打印代码(行 184-194)
2. 保留 executeConcurrent 中的 printTaskStart 函数,实现:
   - 在任务启动时立即打印日志路径
   - 使用 mutex 保护并发打印,确保横幅只打印一次
   - 按实际执行顺序打印任务信息

测试结果:
- TestRunParallelStartupLogsPrinted: PASS
- TestRunNonParallelOutputsIncludeLogPathsIntegration: PASS
- TestRunStartupCleanupRemovesOrphansEndToEnd: PASS

影响范围:
- 修复了 --parallel 模式下的日志输出格式
- 不影响非并行模式的执行

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-09 17:02:59 +08:00
swe-agent[bot]
132df6cb28 fix(merge): 修复master合并后的编译和测试问题
在重构代码后合并master分支时需要的适配:

1. **接口定义恢复** (executor.go)
   - 添加 commandRunner 和 processHandle 接口
   - 实现 realCmd 和 realProcess 适配器
   - 添加 newCommandRunner 测试钩子

2. **TaskResult扩展** (config.go)
   - 添加 LogPath 字段支持日志路径跟踪
   - 在 generateFinalOutput 中输出 LogPath

3. **原子变量适配** (main.go, executor.go)
   - forceKillDelay 从int改为 atomic.Int32
   - 添加测试钩子: cleanupLogsFn, signalNotifyFn, signalStopFn
   - 添加 stdout 关闭原因常量

4. **功能函数添加**
   - runStartupCleanup: 启动时清理旧日志
   - runCleanupMode: --cleanup 模式处理
   - forceKillTimer 类型和 terminateCommand 函数
   - terminateProcess nil 安全检查

5. **测试适配** (logger_test.go, main_test.go)
   - 将 *exec.Cmd 包装为 &realCmd{cmd}
   - 修复 forwardSignals 等函数调用

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-09 16:24:15 +08:00