AI Agents SDK:建立安全可靠的文档设计、开发、测试、发布一体自动化
用久了 AI,恨不得将所有的工作都安排给它。
按现有成型的产品方案,就是把今天的任务汇总成一个 TODO list,/loop 一下,就可以刷刷视频、看看热搜、喝杯咖啡摸摸鱼,下班前验收一下,一天就轻轻松松过去了。
我没有这样试过:第一,我消费不起这个量级的 token;第二,我认为 Agent 无法高效、安全地完成这么长的工作流。
如何解决这个问题?
拆分流程,一个流程一个 Agent
开发者的日常工作流程可以分为:开发文档设计、编码、review、bug 修复、测试、部署测试环境。据此便可以拆分为六个角色,每个角色都有一份系统提示词,有各自的职能范围、权限、边界:写文档的就不要去写代码,测试只需要把 bug 反馈给修复 bug 的角色,流程随之转向;测试通过之后再流转到部署。bug 有可能是测试部门手工录入 TAPD,这个时候就需要有一个定时任务去抓取,分配给 bug 修复的角色。
即使 Claude Code、Codex、Cursor Agent、Workbuddy 等这一类 Agent 工具能完成以上任务,开发者自始至终都只是扮演一个监工的角色。
使用 Agent SDK 赋予角色的读写和执行能力
以 Cursor Agent SDK 为例:
options = AgentOptions(
api_key=api_key,
model=model,
mode="agent",
local=LocalAgentOptions(
cwd=workdir,
setting_sources=["user", "project"],
),
)
api_key 在 https://cursor.com/dashboard/api?section=user-keys#user-api-keys 中设置。

mode 有 agent、plan 两种模式。plan 用于编写执行文档(只对 plan 的文档有读写权限);agent 拥有修改代码和执行命令的权限。
local 的 cwd 是项目目录,setting_sources 存放 SKILL 和 Agent 等配置。
记录 Agent 输入输出日志,有迹可循
开发者最害怕的是一条命令执行下去,半天没响应。使用流式输出,每截取一个 chunk 就写入日志文件。
try:
with Agent.create(options) as agent:
cursor_agent_id = getattr(agent, "agent_id", "") or new_session_id
logger.info("cwd=%s model=%s mode=agent agent_id=%s", workdir, model, cursor_agent_id)
run = agent.send(effective_prompt)
run_id = getattr(run, "id", "") or ""
if run_id:
logger.info("run_id=%s", run_id)
# 流式输出,与 claude agent 行为一致便于日志/Tee 接收
try:
for message in run.messages():
_collect_cursor_status_message(message, status_messages)
msg_type = getattr(message, "type", "")
if msg_type == "assistant":
inner = getattr(message, "message", message)
content = getattr(inner, "content", None) or []
for block in content:
block_type = getattr(block, "type", "")
# text/tool_use/tool_result/thinking...
...
else:
# system/error/result 等其它消息打印类型即可
logger.debug("[CursorMsg.%s] %s", msg_type or "unknown", _truncate(str(message)))
except Exception as stream_err: # noqa: BLE001
# 流式异常不直接判定失败,等 wait() 拿最终结果
logger.info("stream interrupted: %s", stream_err)
result = run.wait()
用状态机把角色关联起来
角色之间可以流转,单个角色可以重复触发,角色任务可以按条件并发,hook 角色记录日志、发送警报等。
状态可编程的好处:可以用代码的条件控制流程转向,定时获取任务,触发任务分发,并控制角色处理任务的并发能力。
flowchart TD Doc[文档设计] --> Code[编码] Code --> Review[Review] Review -->|不通过| Code Review -->|通过| Test[测试] Test -->|发现 Bug| BugFix[Bug 修复] BugFix --> Test Test -->|通过| Deploy[部署]
不必担心这个产品如此复杂的编码工作,大胆的设计,然后全部交给 AI,像编写一个工具一样去实现一个产品。
总而言之,AI 时代,人人都可以上线自己的产品。