首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Skill 技能、AI 办公、自媒体、短视频、电商通关:通关的标志不是“接入了模型”,是“闸门在代码里”

Skill 技能、AI 办公、自媒体、短视频、电商通关:通关的标志不是“接入了模型”,是“闸门在代码里”

原创
作者头像
资源大佬 jzit-top
发布于 2026-10-28 18:31:50
发布于 2026-10-28 18:31:50
1460
举报

把 Skill、AI 办公、自媒体、短视频、电商并列讨论时,流行的叙事是“一套 AI 工具打通五条线”。但从工程视角看,它们的共性不在工具链,而在放行条件是否被机械执行。Codex 的 Skill 机制本质上是“可复用的工作说明书”,管“怎么做”,不管“做什么”;而五条线真正决定成败的分水岭,不是 Skill 写得多漂亮,而是每个关键节点上是否存在一道模型无法绕过的闸门。Agent Skill 的输出契约校验遵循一条硬规则:SKILL.md 声明 output: json 后,执行结果按契约校验,校验失败一律按执行失败处理(fail-closed),不把不可信输出透传给下游。这条规则应当贯穿所有业务线。

Skill:契约比正文更重要,验收失败必须阻断

一个生产级 Skill 的 SKILL.md 同时承担四种身份:召回索引项、操作指令书、权限声明和工程资产。其中决定“能否放行”的,不是正文写得多长,而是输入输出契约是否可被机械判定。以下校验器在 Skill 执行后、结果进入下游之前强制运行,output 不符合契约即拒绝交付,而不是让模型“解释一下为什么不对”:

代码语言:javascript
复制
import jsonschema

OUTPUT_CONTRACTS = {
    "daily-report": {
        "type": "object",
        "required": ["done", "in_progress", "decisions"],
        "properties": {
            "done": {"type": "array", "items": {"type": "string"}},
            "in_progress": {"type": "array", "items": {"type": "string"}},
            "decisions": {"type": "array", "items": {"type": "string"}},
        },
        "additionalProperties": False,
    },
    "product-seeding": {
        "type": "object",
        "required": ["hook", "body", "cta"],
        "properties": {
            "hook": {"type": "string", "maxLength": 80},
            "body": {"type": "string"},
            "cta": {"type": "string"},
        },
        "additionalProperties": False,
    },
}

def validate_skill_output(skill: str, payload: dict) -> None:
    jsonschema.validate(payload, OUTPUT_CONTRACTS[skill])
    # fail-closed:校验失败抛异常,阻断交付,而非降级透传

additionalProperties: False 堵死了模型“多输出一个看似有用的字段”的路径,maxLength 把“钩子太长”这类形式问题在进入渲染之前就拦截。Skill 的工程价值不在于封装了多少步骤,而在于交付物是否只能以契约规定的形态离开。

AI 办公与自媒体:审批闸门与哈希绑定,拒绝默认

AI 办公场景的高危动作——发邮件、改权限、删除文件——不能与只读查询走同一条自动执行路径。风险策略应由应用代码维护并与具体工具绑定,拒绝或无法确认时一律按拒绝处理。以下审批拦截器把“默认拒绝”固化为代码语义:

代码语言:javascript
复制
from dataclasses import dataclass
from typing import Callable

@dataclass(frozen=True)
class Tool:
    handler: Callable
    risk: str  # read / write / destructive

def gate(tool: Tool, args: dict, approved: bool) -> str:
    if tool.risk == "read":
        return tool.handler(**args)          # 只读自动执行
    if tool.risk == "write" and not approved:
        raise PermissionError("write requires explicit approval")
    if tool.risk == "destructive" and not approved:
        raise PermissionError("destructive requires explicit approval")
    return tool.handler(**args)

自媒体侧的闸门形态不同,但原则一致:CreatorFlow 的发布收尾门禁要求发布文案绑定最终脚本和最终成片的 SHA-256,脚本或成片一旦变化,旧验收结论主动失效,必须重新复核;自动 QA 通过只允许进入人工关键帧复核,不允许直接收尾。验收结论不是一次性状态,而是锚定在具体产物哈希上的临时判断。

短视频:门禁前置,修补定点

短视频脚本的失败通常不是“写不出来”,而是“写出来了但句长超限、含不可朗读字符、或触犯平台禁用词”。podcast-maker 的做法给出了可操作的纪律:门禁覆盖 JSON 合法性、字段完整性、句长区间、单句时长、禁用词和可朗读性;修补时只把门禁点名的句子交给模型,输出是按句号定位的补丁,行数保持不变,结构损坏才整篇重出。以下函数将句级门禁与定点修补绑定:

代码语言:javascript
复制
import re

def gate_lines(lines: list[dict]) -> list[dict]:
    errors = []
    for i, ln in enumerate(lines):
        if len(ln["text"]) > 40:
            errors.append({"index": i, "code": "TOO_LONG"})
        if re.search(r"(赋能|抓手|闭环)", ln["text"]):
            errors.append({"index": i, "code": "BANNED"})
    return errors

def apply_patch(lines: list[dict], patch: list[dict]) -> list[dict]:
    flagged = {e["index"] for e in gate_lines(lines)}
    for p in patch:
        if p["index"] not in flagged:
            raise ValueError("patch index not gate-flagged")
        lines[p["index"]]["text"] = p["text"]
    return lines

未通过门禁的脚本不进入配音和渲染,而不是先出片再回头修补。

电商:效果后置,快照漂移整批回滚

电商与内容生产的关键差异在于副作用的不可逆性。多 Agent 电商系统采用的原则是审批效果后置:高危动作调用后只登记参数快照,不产生任何对外效果;人工批准后在一个事务内统一 apply,批内同进同退,快照漂移则整批回滚。选品的毛利计算必须使用完整字段和同一币种口径,缺一个字段就输出“无法计算”,而不是让模型估算。以下审批拦截器展示了“批准前效果不可见”的最小实现:

代码语言:javascript
复制
PENDING: dict[str, dict] = {}

def stage(action: str, params: dict, snapshot: dict) -> str:
    action_id = f"{action}:{snapshot['sku']}:{snapshot['version']}"
    PENDING[action_id] = {"params": dict(params), "snapshot": dict(snapshot)}
    return action_id  # 不产生任何对外写效果

def approve(action_id: str, current: dict) -> dict:
    rec = PENDING[action_id]
    if rec["snapshot"] != current:
        PENDING.pop(action_id, None)
        raise RuntimeError("snapshot drift: batch rollback")
    return _apply_in_transaction(rec["params"])

五条线的工程纪律最终收敛为同一句话:模型负责生成候选,确定性代码负责判定“能否进入下一阶段”,人工保留对不可逆动作的最终授权。Skill 的契约校验阻断不合格交付物,AI 办公的审批闸门阻断未授权副作用,短视频的句级门禁阻断不合格脚本进入渲染,自媒体的哈希绑定阻断未复核产物进入发布,电商的快照审批阻断未授权动作产生对外效果。通关的标志不是五条线都接入了模型,而是每条线都在关键节点上拥有可被机械执行、可回滚、模型无法绕过的闸门。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • Skill:契约比正文更重要,验收失败必须阻断
  • AI 办公与自媒体:审批闸门与哈希绑定,拒绝默认
  • 短视频:门禁前置,修补定点
  • 电商:效果后置,快照漂移整批回滚
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档