极致素材驱动智能体平台开发手册

底座:Claude Agent SDK 技能:Agent Skills(SKILL.md) 规格:Action Spec / Workflow Spec 多模型:Model Gateway 更新:2025-12-31

平台愿景与“极致简化”原则

目标:打造一个任意素材上传后,平台能够自动理解素材类型与意图线索,并以最少的问题引导用户得到结果产物(会议纪要 / PPT / 图文报告 / 表格分析 / 视频摘要等)。

一句话定义:“一处上传入口 + 一个素材分析器(Orchestrator)+ N 个专业智能体(Workers)”,让用户只做选择题,不做填空题。

极致简化 1:默认自动化

除非用户反对,否则自动做“最合理的下一步”。UI 首屏只给 3 个动作按钮 + “更多”。

极致简化 2:渐进式追问

只问缺失且关键的参数;能推断就不问(例如语言、时区、时长、风格)。

极致简化 3:产物导向

平台不是聊天机器人,而是“产物工厂”:每次运行必须产出可下载/可预览的 Artifact。

极致简化 4:可复用能力

把能力拆成 Skill(可组合),把流程写成 Spec(可配置),把模型接入收敛到 Gateway(可替换)。

你提到“可学习 Manus 但要更进一步”。更进一步的关键不是 UI 细节,而是“素材 → 意图 → 规划 → 执行 → 验证 → 交付”的闭环稳定性与可扩展性。

核心概念:Asset / IR / Skill / Spec / Agent

Asset(素材)

用户上传的原始文件及其衍生数据(预览图、转写文本、抽帧等)。平台的一切从 Asset 开始。

IR(中间表示)

对素材的结构化描述:类型、元数据、抽取内容、片段索引、可检索摘要等。让智能体不必“读原文件”。

Skill(技能包)

可复用能力单元。建议采用 Agent Skills 标准:一个目录 + SKILL.md(指令/资源/脚本)。

Spec(规格/说明书)

声明式描述“要交付什么、需要哪些参数、调用哪些技能/模型/智能体、如何验收”。

Agent(智能体)

执行实体。分为 Orchestrator(分析与编排)与 Worker(专业产出:PPT/视频/表格/图片等)。

Artifact(产物)

可交付结果:markdown/docx/pdf/pptx/xlsx/mp4/png…以及结构化 JSON(任务清单、摘要等)。

关键分层:IR 让“素材理解”可重复;Skill 让“能力复用”可组合;Spec 让“流程配置”可治理;Agent 让“执行”可扩展;Gateway 让“模型替换”可控。

总体架构:一处上传,多智能体协作

推荐采用“上传即触发”的闭环:上传 → 解析 → 推荐 → 追问 → 运行 → 交付。

架构草图(文字版)
[Web / App]
  └─ Upload Component
       ├─ 预览/限制/进度
       └─ 调用 API: /assets/upload

[API Gateway]
  ├─ Auth / Quota / Audit
  ├─ Asset Service (对象存储 + 元数据 DB)
  ├─ Analyzer Service (确定性解析:时长/尺寸/文本/行列/字幕)
  └─ Orchestrator Service (Claude Agent SDK runtime)
        ├─ Action Recommender (候选动作 + 排序)
        ├─ Slot Filler (最少追问)
        ├─ Planner (选 Skill/Spec/模型)
        ├─ Runner (调用 Worker Agents / MCP tools)
        └─ Verifier (验收/回滚/重试)

[Worker Agents]
  ├─ ppt-agent
  ├─ video-agent
  ├─ image-agent
  ├─ spreadsheet-agent
  └─ doc-agent
      

为什么需要“素材分析器”作为统一入口?

  • 用户不需要知道平台有哪些智能体:只要上传素材就行。
  • 平台可以根据素材自动路由到最合适的智能体/模型组合。
  • 多个素材可组合:例如“录音 + PPT + Excel”生成“复盘报告 + 行动项 + 新 PPT”。
不要把“分析器”做成一个超级智能体,硬塞所有能力。正确做法是:分析器负责“识别与编排”,能力沉淀在 Skills 与 Workers 中。

素材接入:支持格式与提取能力

支持的文件格式(10 大类)

类别 扩展名(示例) 功能
图片 jpg / png / gif / webp / svg / heic … 预览 + 尺寸提取
视频 mp4 / mov / avi / mkv / webm … 时长 + 尺寸提取
音频 mp3 / wav / ogg / flac / aac … 时长提取
文档 pdf / doc / docx / ppt / pptx … 文本提取
文本 txt / md / html / xml / log … 内容提取
数据 xlsx / xls / csv / json / yaml … 行列解析
字幕 srt / vtt / ass / ssa / lrc … 字幕解析
压缩包 zip / rar / 7z / tar / gz … 识别(可选:列目录/抽样提取)
代码 js / ts / py / java / go / rs … 内容提取(可语法高亮/索引)
其他 所有其他格式 基础信息(文件名/大小/hash/MIME)

上传组件特性(前端)

  • 拖拽上传 + 点击上传
  • 自动文件类型检测
  • 内容自动提取(文本 / 字幕 / 数据)
  • 元数据提取(尺寸 / 时长 / 行列数)
  • 帧角色选择器(首帧 / 尾帧,用于视频生成)
  • 可配置(最大文件数、大小限制、允许类型等)
  • 紧凑模式支持

后端解析建议:确定性优先

解析层建议尽量确定性(ffprobe/exif/pdf解析/表格读取),只在需要理解时才调用 LLM。 这样更快、更便宜、更可测试。

智能“素材分析器”设计:推荐动作 + 智能追问

目标

  • 输入:一个或多个 Asset(及其 IR)
  • 输出:Top-N 可执行动作(Action Candidates),并能对每个动作继续追问补齐参数
  • 原则:少问先给选项默认可直接开跑

Action Candidate(候选动作)结构

{
  "id": "audio.meeting_minutes",
  "title": "生成会议纪要",
  "why": "检测到多人对话音频,包含时间戳与议题切换",
  "needed_slots": [
    { "key": "language", "type": "enum", "options": ["中文","英文"], "default": "中文" },
    { "key": "style", "type": "enum", "options": ["正式","精简","可执行"], "default": "可执行" }
  ],
  "outputs": ["markdown", "docx", "tasks.json"],
  "confidence": 0.83
}
    

推荐算法:规则 + LLM 排序(两段式)

  1. 规则召回:根据文件类型、MIME、时长/页数/行列数、字幕存在等,快速召回可能动作(ActionSpec 触发器)。
  2. LLM 重排:将少量候选 + IR 摘要输入给模型做排序与理由生成(可要求结构化输出)。
最佳实践:召回阶段“宁多勿漏”,重排阶段“宁少勿杂”。让 UI 永远只露出 3 个最相关动作。

智能追问(Slot Filling)策略

  • 优先做选择题:用按钮/单选代替输入框。
  • 一问一要点:每次只问一个 slot,减少认知负担。
  • 可推断不问:比如素材语言可用语言检测;输出格式默认 markdown + 可导出。
  • 可撤销:用户随时切换动作或修改参数,平台保留运行草稿。

多素材协同:组合意图(Composite Intent)

当用户上传多文件时,分析器要识别“互补关系”:

  • 视频 + 字幕 → 更快生成摘要/章节
  • 音频 + PPT → 生成“讲解版 PPT + 讲稿 + QA”
  • Excel + PDF → 生成“对账报告/差异说明”
  • 图片 + 文本 → 生成“图文海报/小红书笔记/产品页”

Claude Agent SDK 作为执行底座:工具、权限、MCP、结构化输出

平台的 Orchestrator 推荐基于 Claude Agent SDK 执行:它提供“带工具的 agent loop”,可读写文件、执行命令、连接 MCP 工具,并支持长任务的上下文管理与部署建议。

你可以把 Agent SDK 看作“可编程的 Claude Code 引擎”,在你的服务里跑起来,然后通过工具调用把它接入平台的能力与智能体网络。

关键能力一览(你会在平台用到的)

  • 工具与 Agent Loop:流式消息 + 工具调用 + 观察结果 + 决策下一步。
  • 权限:通过 allowed_tools / permission_mode 控制能做什么、是否需要人工批准。
  • MCP:连接外部工具与服务(stdio / HTTP / SSE / in-process)。
  • Skills:.claude/skills/ 自动发现并在需要时调用(“Skill” 工具)。
  • 结构化输出:用 JSON Schema 强制返回格式,减少解析与重试。
  • 文件 checkpointing:跟踪 Write/Edit 修改,支持回滚。
最小可运行示例(Python):用于 Orchestrator 的“计划 + 执行 + 产物”骨架
# 伪代码:展示结构(不是完整可运行工程)
from claude_agent_sdk import query, ClaudeAgentOptions

async def run_orchestrator(user_prompt: str):
    options = ClaudeAgentOptions(
        allowed_tools=["Read", "Write", "Edit", "Glob", "Grep", "Bash", "Skill"],
        permission_mode="acceptEdits",
        setting_sources=["user", "project"]  # 让 .claude/skills 可用
    )

    async for msg in query(prompt=user_prompt, options=options):
        # 1) 记录 stream(用于前端实时展示)
        # 2) 解析 tool call / tool result
        # 3) result 收敛到 artifact 输出
        yield msg
      

MCP:把“平台能力”工具化

让 Orchestrator 通过 MCP 调用平台内部服务(分析、检索、调度 Worker、写入产物),比“让模型自己写代码去调 HTTP API”更可靠。

示例(TypeScript):定义一个自定义 MCP 工具(如:asset_analyze)
// 关键点:在 Agent SDK 里用 createSdkMcpServer + tool 定义工具
import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";
import { z } from "zod";

const platformServer = createSdkMcpServer({
  name: "platform",
  version: "1.0.0",
  tools: [
    tool(
      "asset_analyze",
      "Analyze uploaded assets and return structured IR",
      { asset_id: z.string() },
      async ({ asset_id }) => {
        // TODO: call your internal analyzer service
        return { content: [{ type: "text", text: JSON.stringify({ asset_id, ok: true }) }] };
      }
    )
  ]
});

// 使用 MCP 工具:注意 MCP 需要 streaming input(prompt 不能是纯字符串)
async function* promptStream() {
  yield { type: "user", message: { role: "user", content: "Analyze asset 123 and recommend actions" } };
}

for await (const msg of query({
  prompt: promptStream(),
  options: {
    mcpServers: { "platform": platformServer },
    allowedTools: ["mcp__platform__asset_analyze", "Skill", "Read"]
  }
})) {
  console.log(msg);
}
      
建议:平台内部服务都通过 MCP 工具暴露给 Orchestrator。 这样你可以强类型、可审计、可限流,并且把权限策略统一放在“工具层”。

结构化输出:让“推荐动作/计划”可机器执行

强烈建议:分析器的关键产出(Action Candidates、Plan、Artifact Manifest)都通过结构化输出返回。 这样前端与下游 Worker 不需要猜测模型输出。

示例:Action Candidates 的 JSON Schema(简化版)
{
  "type": "object",
  "properties": {
    "candidates": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": { "type": "string" },
          "title": { "type": "string" },
          "why": { "type": "string" },
          "confidence": { "type": "number" }
        },
        "required": ["id","title","confidence"],
        "additionalProperties": false
      }
    }
  },
  "required": ["candidates"],
  "additionalProperties": false
}
      

Checkpointing:产物写入可回滚

生成 PPT/文档/代码这类“写文件”的任务,务必开启 checkpointing:一旦模型写坏,可回滚到安全状态再重试。

Skill 体系:Agent Skills 标准、组织方式与最佳实践

推荐采用 Agent Skills(开放标准)作为技能包格式

每个 Skill 是一个目录,至少包含 SKILL.md(YAML frontmatter + Markdown body),可选带 scripts/references/assets/

示例:一个会议纪要 Skill 的 SKILL.md(示意)
---
name: meeting-minutes
description: Turn an audio transcript into structured meeting minutes with decisions, action items, owners, and deadlines. Use when the user uploads audio/video of a meeting or asks for minutes, summary, or action items.
license: Proprietary
metadata:
  owner: "platform-team"
  version: "1.0"
compatibility: Requires transcript text in IR. Optional access to calendar attendees.
---

## Goal
Produce a clear meeting minutes document:
- Agenda
- Key discussion points
- Decisions
- Action items (owner, due date)
- Open questions

## Input
- transcript (plain text with timestamps if possible)
- optional: speaker map, meeting title, date

## Output
- minutes.md
- tasks.json (structured)

## Instructions
1) Read transcript, identify topic shifts.
2) Extract decisions and action items; do not invent owners or dates.
3) If missing critical info, ask user one question at a time.
      

在 Agent SDK 中启用 Skills

  • 把 Skills 放在项目目录的 .claude/skills/(团队共享)或 ~/.claude/skills/(个人)。
  • 在 SDK options 里开启 setting_sources / settingSources 并把 "Skill" 加入 allowed tools。
  • 注意:allowed-tools frontmatter 字段在 Claude Code CLI 中支持,但在 SDK 使用时以 allowedTools 为准。
技能组织建议:
  • 按产物类型分:ppt/*、doc/*、media/*、data/*、image/*
  • 按行业分:sales/*、finance/*、education/*、legal/*
  • 按平台能力分:platform/*(工具使用规范、权限与审计说明)

Skill 编写最佳实践(为“极致简化”服务)

  • description 写清触发关键词:让模型更容易自动调用。
  • 把长资料放到 references/:减少上下文占用,按需加载。
  • 给出“最小追问策略”:明确什么情况下才需要问用户。
  • 输出标准化:明确产物结构、文件名、字段格式,便于 Spec 组合。

Spec 体系:Action Spec / Workflow Spec(声明式任务说明书)

Skill 解决“怎么做”,Spec 解决“做什么、何时做、需要什么参数、交付什么产物、如何验收”。建议把 Spec 当成产品与工程的“契约”。

Action Spec(推荐动作的声明)

面向用户:上传后能看到的动作按钮,就是 Action Spec 的实例化。

示例:audio.meeting_minutes.action.yaml
id: audio.meeting_minutes
title: 生成会议纪要
description: 将会议音频/视频转写并生成结构化会议纪要与行动项
triggers:
  any_of:
    - category: audio
    - category: video
slots:
  - key: language
    type: enum
    options: [中文, English]
    default: 中文
    ask: 输出语言?
  - key: detail_level
    type: enum
    options: [精简, 标准, 很详细]
    default: 标准
    ask: 纪要详细程度?
outputs:
  - type: artifact
    format: markdown
    name: minutes.md
  - type: artifact
    format: json
    name: tasks.json
pipeline:
  - step: transcribe
    uses: skill/media-transcribe
    model: gateway.asr.default
  - step: minutes
    uses: skill/meeting-minutes
    model: gateway.text.reasoning
verification:
  - check: schema
    target: tasks.json
    schema_ref: schemas/tasks.schema.json
      

Workflow Spec(跨智能体编排的 DAG)

面向系统:一个复杂任务往往需要多个 Worker 与多种模型协同。

示例:video.summary_to_ppt.workflow.yaml
id: video.summary_to_ppt
title: 视频摘要并生成 PPT
triggers:
  any_of:
    - category: video
inputs:
  assets: required
slots:
  - key: tone
    type: enum
    options: [商务, 科普, 轻松]
    default: 商务
    ask: 演示风格?
dag:
  nodes:
    - id: extract_frames
      agent: video-agent
      tool: mcp__video__extract_keyframes
    - id: transcribe
      agent: media-agent
      tool: mcp__media__asr
    - id: outline
      agent: orchestrator
      skill: skill/ppt-outline
      model: gateway.text.reasoning
    - id: build_ppt
      agent: ppt-agent
      tool: mcp__ppt__generate_pptx
  edges:
    - from: extract_frames
      to: outline
    - from: transcribe
      to: outline
    - from: outline
      to: build_ppt
outputs:
  - artifact: slides.pptx
verification:
  - check: pptx_renderable
    target: slides.pptx
      
Spec 设计要点:
  • 让 Orchestrator 只负责“决策与编排”,重活交给 Worker 或工具。
  • 每个节点要有明确输入/输出(最好是文件或结构化 JSON)。
  • 把“验收”写进 Spec:失败就重试/回滚/追问。

多模型网关:统一能力、路由与成本/质量治理

平台需要“各大模型 API”,但不应让业务直接依赖具体厂商 API。建立 Model Gateway 做三件事: 统一接口能力路由成本与可观测

统一接口(建议)

interface ModelGateway {
  chat(request): Stream|Response
  embeddings(request): Response
  image(request): Response
  speech_to_text(request): Response
  text_to_speech(request): Response
  usage(reporting): Response
}
    

能力路由(示例策略)

  • Orchestrator / 规划:优先高可靠推理模型(支持工具/结构化输出)。
  • 产物生成:按类型选择:PPT 用擅长结构化与长文本的模型;图片用图像生成模型;ASR 用语音模型。
  • 成本控制:默认用性价比模型,置信度不足或验收失败才升级。
  • 回退:同一能力至少 2 家供应商可替换,避免单点风险。

网关必须提供的治理能力

  • 限流/配额、熔断、重试与幂等
  • 请求与响应的结构化日志(脱敏)
  • Token/时长/费用统计(按用户/团队/Spec/Skill 维度)
  • 缓存策略(提示词缓存、embedding 缓存、产物缓存)
  • 评估与 A/B(同一 Spec 不同模型的质量对比)

多智能体协作:专业智能体、MCP 工具化、编排策略

推荐的智能体分工

Orchestrator(分析器)

理解素材 → 推荐动作 → 追问 → 规划 → 调度 → 验收 → 交付。

ppt-agent

把结构化大纲/内容/素材图生成 PPTX,支持主题模板与版式。

video-agent

抽帧、剪辑、生成摘要视频、封面图、字幕对齐。

spreadsheet-agent

读取表格、透视/统计、生成图表、输出结论与可执行建议。

image-agent

图片理解、抠图、风格迁移、生成海报/配图。

doc-agent

把结构化内容生成 DOCX/PDF,支持品牌规范、格式与引用。

统一通信:把每个 Worker 暴露为 MCP Server 或“工具 API”

这样 Orchestrator 在 Claude Agent SDK 中可以像调用工具一样调用 Worker。

示例:ppt-agent 暴露 MCP 工具清单
server: ppt
tools:
  - generate_pptx(outline_json, theme_id) -> slides.pptx
  - render_preview(pptx) -> preview.png[]
  - apply_brand(theme_id, brand_rules) -> theme.json
      

编排策略:把复杂任务拆成“可验收的小步”

  • 先结构化,再生成:先让模型输出大纲/表格/JSON,再交给 Worker 生成最终文件。
  • 先快后准:先用便宜模型给初稿;验收不通过再升级模型/增加上下文。
  • 并行化:转写、抽帧、OCR 等可并行;Orchestrator 聚合结果再生成大纲。
  • 失败可恢复:节点级重试;写文件有 checkpoint 回滚;必要时追问用户。

平台 API 与事件流:上传、分析、运行、产物

建议的核心 API(REST + SSE)

POST   /v1/assets/upload              # 上传文件(多文件)
GET    /v1/assets/{id}                # 查询素材元数据与 IR 状态
POST   /v1/assets/{id}/analyze        # 触发/重试解析(可异步)
GET    /v1/actions/recommend?asset=.. # 返回候选动作(Action Candidates)

POST   /v1/runs                        # 创建一次运行(选择 action/spec)
GET    /v1/runs/{id}                   # 运行状态
GET    /v1/runs/{id}/events            # SSE:流式输出(agent messages + progress)
POST   /v1/runs/{id}/input             # 用户回答追问(slot)
POST   /v1/runs/{id}/cancel            # 取消

GET    /v1/artifacts/{id}              # 下载产物
GET    /v1/artifacts/{id}/preview      # 在线预览(图片/文本/页渲染)
    

Run 状态机(示例)

created -> analyzing_assets -> recommending -> waiting_user_choice
-> planning -> running -> verifying -> (waiting_user_input)? -> completed | failed | canceled
    

SSE 建议输出统一事件结构(type + payload),前端可以用一个渲染器同时展示“模型输出/工具调用/进度/产物链接”。

安全与合规:沙箱、权限、审计、数据隔离

安全底线

  • 文件上传:病毒扫描 + 类型嗅探 + 大小/数量/后缀白名单
  • 存储:按租户隔离(bucket/prefix)+ 加密(KMS)+ 访问审计
  • 执行:Agent SDK 必须跑在容器沙箱(资源/网络/文件系统隔离)
  • 工具权限:默认最小权限(allowed_tools),危险操作需要二次确认
  • 日志:记录“谁让 agent 做了什么”(工具调用与产物变更)

权限分级(建议)

Read-only

只读分析:Read/Glob/Grep + 解析服务工具。

Write-safe

允许写产物目录:Write/Edit(限定路径)+ checkpointing。

Automation

允许 Bash / 外部 API:必须在容器/网络策略下,且严格审计。

建议:把“写文件路径”限制在 /workspace/output/,并把外部网络访问默认关闭,按 Spec 白名单开启。

测试与评估:可回归的“端到端真实任务”

为什么测试很难?

  • LLM 输出非确定;
  • 素材多样;
  • 多智能体协同,故障点多。

推荐测试体系

  1. 确定性层单测:解析器(IR)、MCP 工具、产物渲染。
  2. Spec 验收测试:固定输入素材(golden set)+ 预期产物检查(schema/页数/关键字段)。
  3. 回归与对比:同一 Spec 不同模型/不同 prompt 的质量对比,记录指标。

验收检查(示例)

  • 会议纪要:必须包含“议题/决策/行动项”;行动项字段齐全(owner 可为空但必须标注未知)。
  • PPT:可打开;页数在范围内;每页标题非空;图片引用存在。
  • 表格分析:输出结论必须能追溯到具体行/列或聚合结果(可引用行号/字段名)。

部署与扩展:容器化、队列化、弹性伸缩

运行形态

  • 前端:Web / Desktop / Mobile
  • 控制面:API Gateway + Auth + Billing
  • 数据面:Asset Store + Analyzer + Artifacts
  • 执行面:Orchestrator Worker Pool(每个 run 一个容器或会话)

推荐两种部署模式

模式 A:一次任务一个容器(Ephemeral)

隔离强、易扩缩。适合多数“产物型任务”。

模式 B:长会话容器(Session)

适合反复迭代/编辑类任务(如持续优化 PPT)。更复杂但体验更强。

队列化与幂等

  • 所有 run 以 job 形式入队(可重试、可取消)。
  • 关键节点输出落盘(Artifact/IR),做到断点续跑。
  • 同一输入(hash)+ 同一 Spec + 同一版本可命中缓存。

附录:示例 Spec、示例 Skill、数据结构

AssetProfile(IR)建议字段

{
  "asset_id": "ast_123",
  "filename": "meeting.mp3",
  "mime": "audio/mpeg",
  "category": "audio",
  "bytes": 10485760,
  "hash": "sha256:...",
  "metadata": { "duration_sec": 3600 },
  "extractions": {
    "transcript": { "text": "...", "segments": [{"t0":0,"t1":3.2,"speaker":"S1","text":"..."}] },
    "language": "zh"
  },
  "indexes": {
    "search": { "chunks": 240, "vector_index": "optional" }
  }
}
    

ArtifactManifest(产物清单)

{
  "run_id": "run_456",
  "artifacts": [
    { "name": "minutes.md", "type": "text/markdown", "url": "..." },
    { "name": "tasks.json", "type": "application/json", "url": "..." },
    { "name": "slides.pptx", "type": "application/vnd.openxmlformats-officedocument.presentationml.presentation", "url": "..." }
  ]
}
    
下一步建议:
  1. 先落地 3 个“杀手级动作”(音频纪要、视频摘要 PPT、表格洞察报告)。
  2. 把它们写成 Action Spec + Workflow Spec,形成可复制模板。
  3. 把 Worker 都 MCP 化,让 Orchestrator 只管编排。
  4. 逐步扩展 Skill 库(行业模板 + 企业知识)。

© 2025 你的平台团队 · 本文档为开发手册草案,可直接作为 docs/ 手册首页或产品研发规范。

提示:如需我把这份手册拆成多页(架构 / API / Skill / Spec / 安全)并生成静态站点结构(例如 Docusaurus / VitePress),也可以继续在此基础上扩展。