拓冰建站拓冰建站
首页 / 资讯中心 / 正文

cli-anything-anygen 实战指南:用自然语言驱动 AnyGen OpenAPI 生成幻灯片、文档与图表

cli-anything-anygen 实战指南用自然语言驱动 AnyGen OpenAPI 生成幻灯片、文档与图表【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anythingcli-anything-anygen 是 CLI-Anything 生态中面向 AnyGen 云服务的一体化命令行工具它把「鉴权 → 上传参考文件 → 多轮需求分析 → 创建任务 → 轮询 → 下载产物」这一整条 REST API 工作流封装为少量有状态的命令让 AI Agent 与高级用户可以直接用自然语言提示词生成专业 PPTPPTX、文档DOCX、SmartDraw 图表、网站与数据分析报告。阅读本文后你将掌握该 CLI 的安装配置、四大命令组与 REPL 会话的完整用法、任务全生命周期与--json机器可读输出模式并能依据底层源码理解其轮询、落盘与文件校验机制。本文主体来自 anygen/agent-harness/cli_anything/anygen/skills/SKILL.md并结合仓库内实现进行源码级印证。背景为什么 AnyGen 需要一个 CLI 包装层AnyGen 是一个完全运行在服务端的异步内容生成平台你提交任务、服务端在队列中渲染、完成后你可下载结果文件。它与本地 GUI 软件不同没有可被直接调用的本地二进制程序因此 CLI 扮演的是「结构化 HTTP 客户端」而非本地进程控制器。这一点在 anygen/agent-harness/ANYGEN.md 的架构说明中有明确描述。从架构与源码结构看该 CLI 的价值主要体现在编排多步 HTTP 工作流Agent 难以自行拼装「auth → upload → prepare → create → poll → download」链路而 CLI 用一个task run命令即可完成全生命周期结构化输出--json让 Agent 可以解析 task_id、status 与本地文件路径交互式探索REPL 会话支持 tab 补全、历史记录与 undo/redo便于人工摸索任务类型与参数。安装与前置条件SKILL.md 声明该 CLI 随cli-anything-anygen包一起分发安装命令为pip install cli-anything-anygen前置条件均可在 anygen/agent-harness/setup.py 中核实Python 3.10python_requires3.10运行时依赖click8.0.0、requests2.28.0、prompt-toolkit3.0.0后者用于交互式 REPLAnyGen 账户与 API Key格式sk-xxx需在 AnyGen 服务后台的 Integration 设置中创建anygen云服务可用CLI 本身不捆绑本地渲染引擎所有生成均在云端完成。包安装后会自动注册控制台命令入口为 anygen/agent-harness/cli_anything/anygen/anygen_cli.py 中的main()见 setup.py 的entry_points。API Key 配置与解析优先级源码 anygen_backend.py 中定义了明确的密钥解析顺序get_api_keyL63-L70--api-key sk-xxxCLI 选项最高优先级ANYGEN_API_KEY环境变量配置文件~/.config/anygen/config.json。对应到配置命令# 推荐写入配置文件 cli-anything-anygen config set api_key sk-xxx # 或使用环境变量 export ANYGEN_API_KEYsk-xxx从源码实现看配置目录为~/.config/anygen/config.jsonsave_config会以0600权限落盘以保护密钥anygen_backend.py L55-L60_make_auth_token会自动为裸sk-…前缀补上Bearer因此你无需手工拼装鉴权头。config命令组中可配置的 key 由 CLI 限定为api_key与default_language两种见 anygen_cli.py 中config set的click.Choice校验config get输出密钥时会做掩码显示只保留前 10 位。快速上手基础命令一览SKILL.md 给出的基础用法如下# 显示帮助 cli-anything-anygen --help # 启动交互式 REPL 会话 cli-anything-anygen # 创建新项目 cli-anything-anygen project new -o project.json # 以 JSON 输出运行供 Agent 消费 cli-anything-anygen --json project info -p project.json其中 REPL 模式是「不带任何子命令直接调用」时的默认行为CLI 顶层click.group(invoke_without_commandTrue)在检测到没有子命令时自动ctx.invoke(repl)anygen_cli.py L115-L116进入带 tab-completion 与历史记录的交互会话会话内可用help查看命令、用quit/exit退出。需要说明的是SKILL.md 示例中的project new / project info是对「以 JSON 文件保存与查看任务状态」这一状态模型的描述在 anygen_cli.py 当前实现的命令组中实际由task系列的 create/status/list 以及本地 JSON 落盘机制承担同等职责详见下文「状态管理」小节。请以实际安装版本中--help列出的命令为准。四大命令组详解SKILL.md 将全部功能划分为 Task、File、Config、Session 四个命令组下表完整继承其定义Task — 任务全生命周期命令说明create创建生成任务status查询任务状态非阻塞poll轮询直到任务完成阻塞download下载已完成任务的生成文件thumbnail下载已完成任务的缩略图run完整工作流create → poll → downloadlist列出本地缓存的任务记录prepare创建任务前的多轮需求分析File — 参考文件上传命令说明upload上传参考文件获取 file_tokenConfig — 配置管理命令说明set设置配置项api_key / default_languageget获取某个配置项不传 key 则显示全部delete删除某个配置项path显示配置文件路径Session — 会话管理命令说明status显示会话状态历史数、可否 undo/redo 等history显示命令历史默认取最近 20 条可用--limit调整undo撤销上一条命令redo重做最近一条被撤销的命令任务参数详解与来源映射task create与task run共享同一组选项参数定义可直接对照 anygen_backend.py 中create_taskL195-L268的请求体构造逻辑参数短选项说明约束 / 默认--operation-o操作类型必填click.Choice限定为chat/slide/doc/storybook/data_analysis/website/smart_draw大小写不敏感--prompt-p内容描述必填--language-l语言建议zh-CN/en-US可选--slide-count-cPPT 页数仅 slide 操作生效--template-tPPT 模板仅 slide 操作生效--ratio-r画幅比例click.Choice限定16:9/4:3仅 slide 生效--export-format-f导出格式如 pptx/image/thumbnail/docx/drawio/excalidraw可选--file-token—上传得到的文件令牌multipleTrue可重复传入--style-s风格偏好可选值得注意的两个实现细节style不会被单独放入请求体而是以{prompt}\n\nStyle requirement: {style}的形式拼接进 prompt后提交anygen_backend.py L221-L223slide_count/template/ratio只在operation slide时才进入请求体L232-L238用于其他操作类型会被静默忽略。端到端示例从参考文件到成品 PPTSKILL.md 之外anygen/agent-harness/cli_anything/anygen/README.md 提供了一套完整可复现的工作流与命令组定义一一对应# 1. 配置 API Key cli-anything-anygen config set api_key sk-xxx # 2. 上传参考数据文件得到 file_token cli-anything-anygen file upload ./quarterly_data.pdf # 输出: ✓ Uploaded: quarterly_data.pdf → token: tk_abc123 # 3. 多轮需求分析prepare 会追问澄清多轮后返回 ready 建议参数 cli-anything-anygen task prepare --message I need a quarterly review slide deck --save conv.json cli-anything-anygen task prepare --message Focus on revenue growth, 10 slides --input conv.json --save conv.json # 4. 一步完成 create → poll → download cli-anything-anygen task run \ --operation slide \ --prompt Quarterly business review... \ --file-token tk_abc123 \ --slide-count 10 \ --style business formal \ --output ./output/也可以拆分为逐步执行便于 Agent 在每步之间检查状态cli-anything-anygen task create --operation slide --prompt ... # Task ID: task_xxx cli-anything-anygen task poll task_xxx --output ./output/ # ✓ Downloaded: ./output/presentation.pptx (2,048,576 bytes) cli-anything-anygen --json task status task_xxx # 校验最终状态关于prepare的多轮语义可从 anygen_cli.py 的task_prepareL272-L324读到它支持--input conv.json载入历史会话、--save conv.json保存会话保存内容含messages / file_tokens / status / suggested_task_params当服务端返回statusready与suggested_task_params时其中会给出建议的operation供下一步task run直接使用。支持的操作类型与可下载产物SKILL.md 与 README 共同定义了下述操作类型。其中slide、doc、smart_draw三种是可下载产物型操作代码中的DOWNLOADABLE_OPERATIONS集合见 anygen_backend.py L39chat/storybook/data_analysis/website只返回任务 URL 供在线查看OperationAPI Value输出格式可下载文件幻灯片 / PPTslidePPTX是文档 / DOCXdocDOCX是SmartDraw 图表smart_drawdrawio / excalidraw是通用对话chat—否仅任务 URLStorybookstorybook—否仅任务 URL数据分析data_analysis—否仅任务 URL网站website—否仅任务 URLtask run的--output仅在操作属于可下载集合时才触发下载逻辑anygen_backend.pyrun_full_workflowL432-L434对chat等操作命令会打印任务 URL 供浏览器查看。状态管理会话、历史与 JSON 落盘SKILL.md 明确该 CLI 是有状态的stateful状态管理包含三方面Undo/Redo提供多级命令历史新增命令记录时清空 redo 栈形成「撤销后可重做、新操作打断重做链」的标准语义项目/任务持久化任务元数据以 JSON 形式落盘会话追踪记录每次修改与变更。从源码看状态被分散在三处 JSON 文件中均在用户主目录下会话文件~/.cli-anything-anygen/session.json由 core/session.py 的Session类维护含history与redo_stack两段record()在每次成功命令后自动保存undo()弹出历史并压入 redo 栈redo()反向操作保存采用带fcntl排他锁的原子写_locked_save_json防止并发损坏。CLI 默认展示最近 20 条session history的--limit默认值任务记录目录~/.cli-anything-anygen/tasks/每个任务一个task_id.json由 core/task.py 维护字段包含version/task_id/operation/prompt/status/created_at/completed_at/output/local_file/metadatatask list即读取该目录并按修改时间倒序展示配置文件~/.config/anygen/config.json见上文。这种「会话 任务 配置」分离的落盘设计使 Agent 在多次调用之间依然可以task list找回历史任务、session undo回退误操作。双输出模式与 AI Agent 使用规范所有命令都支持两种输出格式人类可读默认键值树、进度符号与彩色文本机器可读--json在子命令前加全局 flag输出结构化 JSON。# 人类可读 cli-anything-anygen project info -p project.json # Agent 消费的 JSON cli-anything-anygen --json project info -p project.json对照实际实现示例见 anygen_cli.py L48-L59 的output()JSON 模式下所有结果包括错误都json.dumps到 stdout 并可被json.loads错误处理装饰器handle_errorL85-L98捕获FileNotFoundError/ValueError/RuntimeError/TimeoutError后在 JSON 模式输出{error: ..., type: ...}否则把错误写入stderr并以退出码 1 终止REPL 模式不退出进程。SKILL.md 因此为程序化使用场景列出五条铁律在 REPL/脚本中务必遵守始终使用--json以获得可解析输出检查退出码—— 0 表示成功非 0 表示出错出错时解析 stderr读取错误消息文件操作用绝对路径导出操作后验证产物确实存在。底层原理异步任务的轮询与下载闭环了解「CLI 之后发生了什么」有助于排查问题与设计调用频率。任务生命周期核心在 anygen_backend.pyCreateL195-L268POST /v1/openapi/tasks请求体含auth_tokenBearer sk-…、operation、prompt及可选参数返回task_id与task_urlPollL291-L328循环GET /v1/openapi/tasks/{id}默认轮询间隔 3 秒、最长 20 分钟常量POLL_INTERVAL3、MAX_POLL_TIME1200。超时抛TimeoutError任务failed抛RuntimeError进度变化时回调on_progress(status, pct)CLI 中逐行打印● status: pct%DownloadL333-L377仅当任务completed且有file_url时执行若目标目录已存在同名文件会按name_1.ext、name_2.ext规则自动避让而不是覆盖随后返回本地路径、文件名与字节数校验导出的 PPTX/DOCX 本质是 OOXML ZIPcore/export.py 的verify_file()提供了本地格式校验能力——PPTX/DOCX/XLSX 检查PK\x03\x04ZIP 头与[Content_Types].xml、PDF 检查%PDF-魔数、PNG 检查 8 字节头、SVG/drawio 检查 XML 标签、JSON 尝试反序列化。从渲染缺口的评估看见 ANYGEN.md由于全部渲染在服务端完成CLI 是薄编排层主要风险集中在网络与 API 可用性上SmartDraw 产物若要本地转 PNG 可能需要额外的 Chromium 渲染步骤。测试覆盖与质量保障SKILL.md 提到的测试细节在 anygen/agent-harness/cli_anything/anygen/tests/TEST.md 中有完整清点共9 个测试类、63 个用例。单元测试 test_core.py6 类、45 例全程 Mock HTTP、无需 API Key。覆盖配置加载与密钥优先级、任务创建参数构造与非法操作拒绝、状态查询与本地记录同步、轮询超时/失败/进度回调、Session 的 undo/redo 与损坏文件容错、PPTX/DOCX/PDF/PNG/SVG 导出校验等E2E 测试 test_full_e2e.py3 类、18 例需要真实ANYGEN_API_KEY。覆盖 slide 与 doc 的 create→poll→download 真实链路、产物为合法 OOXML ZIP、文件大小合理、以及通过--help/--json/子命令的 CLI 子进程级调用。本地运行测试# 单元测试无需 API Key python3 -m pytest cli_anything/anygen/tests/test_core.py -v # E2E 测试需 ANYGEN_API_KEY ANYGEN_API_KEYsk-xxx python3 -m pytest cli_anything/anygen/tests/test_full_e2e.py -v对于真实使用场景TEST.md 还给出三条可复盘的验收路径季度经营汇报 PPTupload → prepare → create slide → poll → download 后验证 OOXML、技术设计文档DOCX 完整性校验、系统架构图smart_draw 产物为合法 drawio XML 或 excalidraw JSON。继续深入完整命令参考与示例工作流anygen/agent-harness/cli_anything/anygen/README.md平台架构、API 端点与请求/响应体定义anygen/agent-harness/ANYGEN.md测试方法论与覆盖清单anygen/agent-harness/cli_anything/anygen/tests/TEST.mdCLI 入口实现anygen_cli.py命令组注册与 REPLHTTP 后端utils/anygen_backend.py状态管理core/session.py 与 core/task.py文件校验core/export.py打包与版本当前版本 1.0.0见 anygen/agent-harness/setup.py【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门