PocketCoder-A1:基于Claude的自主开发代理,实现通宵自动化编程
PocketCoder-A1是一款CLI工具,配备Web仪表板,可自主执行开发任务。该代理以会话模式运行,保存状态,通过Claude CLI或API执行代码,并验证结果:包括pytest、py_compile和文件检查。支持Claude Max、Claude API和Ollama提供商。通过pip安装,可在任何项目上运行,仪表板位于localhost:7331。
采用纯Python构建,无框架依赖:包含15个模块,7086行代码。HTTP服务器基于http.server,JSON使用标准模块,文件操作通过pathlib。外部依赖极少:playwright用于端到端测试,anthropic/ollama为可选。
架构与启动Claude CLI
代理在启动前捕获验证基线,组装提示,以子进程形式启动Claude CLI,并实时解析NDJSON。关键启动标志:
import os, subprocess
env = os.environ.copy()
env.pop("CLAUDECODE", None)
proc = subprocess.Popen(
["claude", "-p", prompt,
"--dangerously-skip-permissions",
"--no-session-persistence",
"--max-turns", "25",
"--verbose",
"--output-format", "stream-json"],
cwd=str(project_dir),
env=env,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True,
bufsize=1,
)
| 标志 | 用途 |
|------|---------|
| -p prompt | 非交互模式 |
| --dangerously-skip-permissions | 自动确认tool_use |
| --no-session-persistence | 不保存会话 |
| --max-turns 25 | 迭代限制 |
| --output-format stream-json | NDJSON流 |
解析器对事件进行分类:tool_use(读取—蓝色,Bash—紫色,思考—黄色)。rate_limit_event指标通过AJAX每2–3秒更新仪表板。
三级结果验证
会话结束后,代理不会停留在“已完成”状态。验证流程包括:
- 第一级(阻塞性): 编译所有.py文件,运行pytest,检查文件存在性,验证任务中的success_criteria。失败则重试并注入错误信息。
- 第二级(警告性): ruff检查、构建、git差异—记录日志。
- 第三级(防循环): 启动前基线错误检查。最多尝试5次,否则标记为阻塞并移至下一任务。
错误信息会注入提示中:“验证失败,尝试2/5,阻塞性:测试2项失败。”
提供商与任务管理
| 提供商 | 机制 | 要求 |
|----------|-----------|--------------|
| claude-max | CLI子进程,Stream-JSON,原生工具 | Claude Max订阅 |
| claude-api | Anthropic SDK,代理循环,6种工具 | API密钥 |
| ollama | 文本流,无工具调用 | 本地Ollama |
任务创建方式有三种:
- CLI:
pca task add。 - 仪表板快速添加。
- AI转换:原始文本→结构化任务,含优先级和标准。
状态:待处理、进行中、已完成、已阻塞。拖放调整优先级。生命周期:代理自动选择下一任务。
实际案例:为epotos-templates添加提供商
epotos-templates项目用于文档处理。任务:克隆仓库,添加提供商切换Ollama→DeepSeek。
- AI转换将原始文本转为5个带标准的任务。
- 代理启动:claude-api,实时日志显示思考/BASH/读取。
- 会话后—验证,成功则显示绿色勾选标记。
- 自动过渡到下一任务:分析ollama.ts、ai-client.ts,grep端口。
每会话进度从0/5到2/5任务,提供详细工具调用日志。
关键要点:
- 自主操作:设置任务—离开,返回已验证代码。
- 三级验证防止误报。
- 实时仪表板,含NDJSON解析和令牌指标。
- 通过统一管道支持多提供商。
- 开源,7086行纯Python代码,无框架依赖。
安装:pip install pocketcoder-a1,pca init /path/to/project,pca ui。适合中高级开发者,希望利用LLM订阅实现通宵自动化。
— Editorial Team
暂无评论。