在 AI 代理系统的开发中,Continuous Claude 作为一个强大的 CLI 工具,通过连续循环运行 Claude Code 来自动化代码生成和 Git 工作流。然而,要处理外部依赖如 API 调用或数据库交互,仅靠内置工具往往不足。这时,集成外部工具调用机制成为关键,它能让代理在执行循环中动态访问实时数据,同时保持跨迭代的持久状态,避免上下文丢失。
观点上,这种集成不仅扩展了 Continuous Claude 的能力边界,还能构建更具 agentic 特性的系统。例如,在一个持续开发项目中,代理可能需要查询外部天气 API 来生成相关代码,或从数据库拉取用户数据进行测试。证据显示,Claude Code CLI 支持工具调用,通过 --allowedTools 标志允许指定如 Bash 或自定义工具的使用。在 Continuous Claude 的脚本中,这些标志可以直接传递给底层 claude 命令,确保工具在每个迭代中可用。
要实现集成,首先需理解 Claude 的工具调用框架。Claude 支持函数式工具调用,用户可以定义 JSON 格式的工具描述,包括名称、描述和参数 schema。这些工具通过 MCP (Model Context Protocol) 协议暴露给模型。Continuous Claude 的设计允许在提示中注入工具上下文,并在 SHARED_TASK_NOTES.md 文件中记录工具使用历史。例如,一个简单的 API 调用工具可以定义为:
{
"name": "call_api",
"description": "调用外部 REST API 获取数据",
"parameters": {
"type": "object",
"properties": {
"url": {"type": "string", "description": "API 端点"},
"method": {"type": "string", "enum": ["GET", "POST"]},
"headers": {"type": "object"}
}
}
}
在 Continuous Claude 的使用中,通过 --mcp-config 加载此工具配置。命令示例:continuous-claude --prompt "使用 call_api 查询用户数据并更新代码" --allowedTools "call_api" --mcp-config tools.json --max-runs 10。这样,在循环的每个迭代,Claude 会根据提示决定是否调用工具,并将结果注入上下文。
对于数据库交互,类似地定义一个 DB 工具,如使用 SQLite 或 PostgreSQL 的查询接口。工具实现需在外部服务器运行 MCP 服务器,处理实际的数据库连接。证据来自 Claude 文档,MCP 允许模型与外部服务通信,而不限于本地文件操作。这避免了在提示中硬编码敏感信息,如 API 密钥,可通过环境变量注入。
持久状态是集成中的核心挑战。Continuous Claude 已内置 SHARED_TASK_NOTES.md 来传递任务笔记,但工具状态需额外管理。一种可落地方式是让工具读写一个共享状态文件,如 state.json,记录上一次 API 响应或 DB 查询结果。在提示中指示 Claude:“在调用工具前,检查 state.json 中的上一次结果;调用后,更新文件以供下一迭代使用。” 这确保了跨迭代的连续性,例如在多步数据处理中,第一迭代查询 API,第二迭代基于结果更新数据库。
风险与限制包括工具失败导致循环中断,以及状态文件竞争(concurrency issues)。为此,引入重试机制:在 Continuous Claude 的脚本中,包裹 claude 调用以捕获工具错误,并记录到笔记中。参数建议:设置 --max-turns 5 以限制单迭代工具调用轮数,避免无限循环;使用 --dangerously-skip-permissions 仅在测试环境中启用,以加速开发但注意安全。
可落地参数与清单:
-
工具定义:使用 JSON schema 定义 2-3 个核心工具(API 调用、DB 查询、状态更新)。参数包括超时阈值(e.g., 30s for API)。
-
配置传递:在 continuous-claude 命令中添加 --allowedTools "call_api,query_db" 和 --mcp-config path/to/tools.json。
-
状态管理:创建 state.json,结构为 {"last_api_result": {...}, "db_session": "id"}。提示中包含:“维护 state.json 的原子更新,使用锁机制如果多线程。”
-
监控点:日志工具调用次数、成本(通过 --max-cost 预算);设置 webhook 通知 PR 合并时检查状态一致性。
-
回滚策略:如果工具失败,迭代结束时回滚状态文件到备份;阈值:连续 3 次失败则暂停循环。
示例场景:在构建一个用户管理系统时,第一迭代:调用 API 获取用户列表,写入 state.json;第二迭代:基于列表查询 DB 验证数据,生成测试代码;第三迭代:更新 DB 并合并 PR。整个过程保持状态持久,代理像人类开发者一样逐步推进。
这种集成方式使 Continuous Claude 从简单循环工具演变为全栈代理框架。开发者可根据项目规模调整工具集,例如在 monorepo 中并行使用 worktrees 运行不同工具子代理。
资料来源:基于 https://github.com/anandchowdhary/continuous-claude 的官方文档,以及 Claude Code CLI 的工具调用指南。