【口袋专家AI公开课】从0到1智能体开发(六):运营专家Agent原理与实战

目录

一、引言

本篇:运营专家原理与实战

二、应用篇:运营专家能帮你做什么

[2.1 在哪儿找到它](#2.1 在哪儿找到它)

[2.2 示例:记账小程序次日留存只有 18%](#2.2 示例:记账小程序次日留存只有 18%)

[2.3 过程:两份技能、一次搜索、两次 Python](#2.3 过程:两份技能、一次搜索、两次 Python)

三、技术篇:运营专家是怎么构建出来的

[3.1 一位专家 = 一份配置](#3.1 一位专家 = 一份配置)

[3.2 人设提示词:每条建议都要能被验证](#3.2 人设提示词:每条建议都要能被验证)

[3.3 运行时快照:每轮重新生成的"此刻的事实"](#3.3 运行时快照:每轮重新生成的"此刻的事实")

[3.4 步数余量:模型怎么知道还剩几步,到顶怎么收尾](#3.4 步数余量:模型怎么知道还剩几步,到顶怎么收尾)

[3.5 长对话的上下文压缩:先摘要,再截短](#3.5 长对话的上下文压缩:先摘要,再截短)

[3.6 这一轮花了多少](#3.6 这一轮花了多少)

[四、你也可以:在 App 里一句话创建自己的专家](#四、你也可以:在 App 里一句话创建自己的专家)

五、总结


一、引言

口袋专家AI是什么?

口袋专家AI,是一款为超级个体打造的云端个人智能体 App。 愿景是:"让每个普通人,都能拥有一支 AI 专家团队,成为超级个体"。使用口袋专家AI像使用微信一样简单:通过专家对话、专家广场、专家群、专家圈4大功能,让一支200人的AI专家团队随时听候您的调遣。

|-----------------------------------------------------------------------------|-----------------------------------------------------------------------------|
| | |
| | |
| ||

口袋专家AI预置了100多个面向企业工作的专家智能体 ,细分为运营部、产品部、技术部、设计部等15个公司部门;也预置了100多个生活专家智能体,覆盖衣(购物比价)、食(团购订外卖)、住(民宿酒店找优惠)、行(订票打车)等各个方面。

口袋专家AI还是一款社交型AI,将你与AI专家共创的短剧、图片、视频等优质作品分享到专家圈,其他AI专家会来给你鼓励,且用户将会看到并为你点赞。

本篇:运营专家原理与实战

本篇以运营专家为例,先通过"记账小程序次日留存只有 18%"看它如何完成任务,再结合"运行时快照:每轮重新生成的此刻的事实"一节,拆解人设提示词与执行流程,讲清这类智能体从使用到开发的过程。

二、应用篇:运营专家能帮你做什么

2.1 在哪儿找到它

运营专家在「专家广场」的「企业专家 · 产品部」下,也可以在「对话」页右上角直接搜。它的开场页:

它给自己定的能力是增长策略、留存激活、数据分析,开场示例都是运营的日常:

• 产品冷启动, 前 1000 个用户去哪找

• 次日留存太低, 帮我排查和设计改进实验

• 设计一个不俗气的签到激励体系

• 帮我搭一套运营周报的指标框架

2.2 示例:记账小程序次日留存只有 18%

我们给了一个比第二条开场示例更具体的版本:

我们做了一个记账小程序, 上线两个月, 日新增 300 左右, 但次日留存只有 18%。帮我排查可能的原因, 再设计两个能验证的改进实验。

84 秒出答案。几个值得注意的地方:

先纠正问题本身。 第一节标题是"18% 不是'留存问题',是'激活问题'"------"82% 的人拿完价值就走了",这个量级不是优化留存能救的。它给记账产品的"首次成功体验"下了定义:完成第一笔记账。所以第一个要查的数是新增用户里首日记满 1 笔的占比,"如果这个数低于 50%,你后面所有留存动作都是在漏水的桶里加水"。

按流失类型拆,补上小程序特有的坑。 一张五类表(从未上手 / 用过就走 / 用着走了 / 被动流失 / 主动取消),每类都写成记账小程序里的样子;再单列三个"App 不会遇到"的坑:入口衰减(没有桌面图标,从"最近使用"滑出去就找不回)、订阅消息授权(服务通知是唯一的召回通道)、类目与合规。

六个原因按可能性排序,每条配验证方式。 排第一的是"录入成本 > 感知收益",拿随手记的双击背面记账、账单一键导入、周期自动入账做参照。最实用的是第 ⑤ 条:先分渠道拆 D1,"10 分钟就能做,且可能直接推翻前面所有结论------优先做"。这一节最后提醒:①--⑥ 是待验证假设,先补三个数再动手。

先算流量,再定主指标。 这是整份答案最有价值的一处。按基线 18%、α=0.05、power=0.80、每组每天 150 人:

期望提升 每组样本量 需天数
+3pp → 21% 2,735 18.2 天
+4pp → 22% 1,566 10.4 天
+5pp → 23% 1,020 6.8 天
跑 14 天能测出的最小值 2,100 +3.4pp

结论是"D1 留存做主指标,至少要跑 14 天,且只能检出 +3.4pp 以上的效应",所以主指标前移到激活环节------"那里基数更高、样本更快够、且离因果更近":

• 实验 A「首屏直记 vs 现有引导」:主指标是首日完成 ≥1 笔记账的比例。基线写的是"假设 45%,开跑前用真实基线重算样本量";每组 389 人、2.6 天样本就够,但强制跑满 14 天跨过星期效应;护栏里有"账目错误反馈率(不能为了快而让人记错)"。

• 实验 B「次日 21:00 当日花费小结」:三臂对照,要求 Bonferroni 校正;关键前置是订阅消息授权率,低于 40% 先做一个"在哪个时点请求授权"的小实验。

两个实验都有"开跑前写死"的决策规则,比如首日完成率涨了但 D1 没动,A 就不上线、转去做"价值前置"。最后还有执行纪律(不许偷看、每天查样本比率失衡、两个实验别同时跑)和一套北极星 / 过程 / 预警指标,北极星是"周活跃记账用户数"而不是 DAU。

真要开跑时有一处值得重算:上面那张表按两组分流算,实验 B 是三臂,每组每天只有 100 人,再加上校正,天数要比表里的长------让它按三臂再算一遍就行。

2.3 过程:两份技能、一次搜索、两次 Python

点开「过程 · 4 步」:

• 第 1 步:思考里它注意到「留存与流失干预」技能"已在上下文中启用"------原话里的"留存"是它的触发词,开跑前就被注入了(强触发见第六篇 3.3)。它又从技能清单里挑中「A/B 实验设计与判读」,提醒自己行业基准"我不该编数据"。同一步里接连调了「调用技能」和「联网搜索」,后者一次并行查三个角度:记账 App 次日留存基准、记账小程序流失原因、随手记 / 鲨鱼记账的留存复盘。

• 第 2 步:从搜索结果里摘出竞品降低录入摩擦的做法,把最小可检测提升定为 +4pp,写出样本量公式,然后「代码执行」------报错,沙箱里没装 scipy。

• 第 3 步:这一步的思考是英文,只有一句:不用 scipy,手写 z 值重算。第二次「代码执行」输出样本量表、跑 7~42 天各能测出的最小提升,以及"首日首笔完成率"这个中间指标的样本量。

• 第 4 步:按"诊断 → 流失拆解 → 原因清单 → 两个实验 → 监控"写答案。

两份技能在答案里都看得见。「留存与流失干预」的分类表第一行就是"从未上手 | 注册后没完成首次成功体验 | 这是激活问题不是留存问题"------答案的第一节标题由此而来;「A/B 实验设计与判读」要求"开跑前必须先锁死五件事"(主指标、最小可检测提升、样本量、时长、决策规则),两个实验的设计表正是这五项。

三、技术篇:运营专家是怎么构建出来的

3.1 一位专家 = 一份配置

整体架构在第二篇 3.1 节讲过:客户端 → 准备阶段 → 思考模式的回合驱动器 → 交付层。运营专家的预置配置(节选):

复制代码
{
  "id": "preset-expert-ops",
  "name": "运营专家",
  "department": "产品部",
  "description": "用户增长、活跃留存、数据驱动 --- 互联网运营全栈",
  "capabilities": ["增长策略", "留存激活", "数据分析"],
  "tools": {"web_search": true},
  "system_prompt": "你是互联网运营操盘手, 数据驱动。规则: ..."
}

没有 output_kind,默认按对话 / 报告交付。tools 只声明了联网搜索,但这一轮照样能跑 Python------工具开关、步数上限这几项以平台配置为准(tools_cfg = dict(_plat["tools"])),这正是第二篇说的"工具是平台级的":运营专家要算样本量,手上就得有沙箱。3.4 节的步数上限也取自这份平台配置。

3.2 人设提示词:每条建议都要能被验证

运营专家的人设,线上原文:

复制代码
你是互联网运营操盘手, 数据驱动。规则:
1. 增长建议按 AARRR 定位问题环节, 先诊断再开方。
2. 每个策略配可验证的实验设计 (假设/分组/指标/周期), 不拍脑袋上线。
3. 激励体系算清成本与预期 ROI, 防薅羊毛的边界一起给。
4. 指标框架分北极星/过程/预警三层, 教用户少看虚荣指标。
5. 案例参考需要时联网查并注明, 不编造数据。

对照实跑:

• 第 1 条:答案开头"不是留存问题,是激活问题",就是把问题从 Retention 挪回 Activation。

• 第 2 条:两个实验的设计表正好是假设、分组、指标、周期四项。这条还间接逼出了样本量计算------"周期"要写成天数,就得先知道流量够不够。

• 第 3 条:这次没问激励,没触发。

• 第 4 条:用户没要指标框架,它还是主动给了,并附上"虚荣指标黑名单"------人设写的是"教用户"。

• 第 5 条:行业基准和竞品做法都先去搜,实验 A 的基线没有替用户编,写成"假设 45%,开跑前重算"。

写运营类人设的经验:规定"怎么证明你是对的",而不只是"该做什么"。 "优化新手引导""加强召回"这类建议做了也说不清有没有用;第 2 条要求每个策略带一份能跑的实验,等于要求每条建议都能被数据检验。另外,框架名是最便宜的结构:AARRR、北极星 / 过程 / 预警,几个字就带出一整套分析框架。人设点名用哪个框架,框架怎么用交给技能。

3.3 运行时快照:每轮重新生成的"此刻的事实"

第二篇讲过,系统提示词分七层,最后一层是运行时快照 ,由 prompts.py 生成:

复制代码
# ── 第 6 层: 运行时快照 (不是身份, 是"此刻的事实"; 每轮重新生成, 新快照覆盖旧快照; 没有的行不出现) ──
def now_line() -> str:
    t = time.gmtime(time.time() + 8 * 3600)
    wd = "一二三四五六日"[t.tm_wday]
    return f"现在是北京时间 {t.tm_year}-{t.tm_mon:02d}-{t.tm_mday:02d} 星期{wd} {t.tm_hour:02d}:{t.tm_min:02d} (UTC+8)。"


def runtime_snapshot(*, workspace: str = "", connectors: Optional[list] = None, max_steps: int = 0,
                     now: str = "") -> str:
    lines = ["当前运行时 (本快照覆盖之前的快照):", "- " + (now or now_line())]
    if workspace:
        lines.append(f"- 工作区: {workspace}")
    if connectors:
        lines.append("- 已连接的服务: " + ", ".join(str(c) for c in connectors if c))
    if max_steps:
        lines.append(f"- 余量: 本轮最多 {int(max_steps)} 步; 图片、视频生成计费, 出片前先说清数量与时长。")
    return "\n".join(lines)

四行:北京时间(带星期)、工作区、已连接的服务、步数余量,拼在系统提示的最后。连接器列表来自准备阶段(按本次会话的开关过滤过),步数来自平台配置。这一轮没连任何服务,就没有"已连接的服务"那一行;余量写的是"本轮最多 100 步"。

为什么每轮重新生成? 这几行都是会变的事实,变化的节奏是"轮":

  1. 时间。 运营对话常常隔几天再接着聊------"实验跑了 7 天,能看结果了吗",模型得知道今天是哪天。

  2. 连接器。 用户可能刚在插件市场装了一个服务,或在会话里关了某个开关;快照只报这一轮真能用的。

  3. 步数。 平台配置文件按修改时间热加载,改了下一轮就生效,一行提示词都不用动。

为什么不每步刷新? 引擎的注释说得很直接:

复制代码
    _hrt = _prm.runtime_snapshot(workspace=_ws_desc, connectors=_conn_names, max_steps=int(ctx.max_steps), now=_now_line)
    # 第 4 层: THINKING_RULES (没有 finish, 收口行自然不出现)。系统提示整轮不变 ------ 这段前缀最长最稳定, 供应商的 KV 缓存全靠它

思考模式下每一步都要把整段上下文重发一遍,系统提示在最前面、最长,是前缀缓存的主体。快照里只要有一个字每步都变,整段缓存每步都失效。所以分工是:整轮不变的事实放快照,每步都变的余量放到工具结果末尾(3.4 节)。这一轮 70,836 个 token 里有 26,880 个命中缓存,这段整轮不变的前缀是前提。

还有一个取舍写在 runtime_snapshot 的注释里:快照原来还有"本轮理解""计划模式""要不要联网"三行,思考模式上线后删了------那是平台替模型下的判断,现在交给模型自己想,快照只留事实。

3.4 步数余量:模型怎么知道还剩几步,到顶怎么收尾

"一步"是一次模型调用 + 这次回复里的全部工具调用(第六篇 3.5)。运营专家这一轮是 4 步。上限由三个数决定:

复制代码
# backend/agent/common.py
MAX_STEPS_HARD_CAP = 120
# backend/agent/run_setup.py
max_steps = max(1, min(int(_plat["max_steps"]), MAX_STEPS_HARD_CAP))
# backend/agent/engine.py
ctx.max_steps = max(ctx.max_steps, min(_MODEL_MODE_MIN_STEPS, MAX_STEPS_HARD_CAP))   # 每幕至少 40 步 (平台配置只抬不压)

平台配置给一个数,不超过 120,思考模式下至少 40。这一轮是 100。平台默认配置的注释说清了它的性质:"12 是上限不是配额, 简单任务照样两三步 finish"------上限是为了不把正经的调研任务掐断,不是让模型把步数用满。

模型从三个地方知道余量 :快照里的"本轮最多 100 步";共同规则里的一条"步数与时长有上限 (见运行时): 开工前想好几步做完; 信息够了就收, 不把步数用满......一步失败先看返回的原因再换路, 别原样重试";以及最关键的------每个工具结果末尾都被驱动器接上一句剩余步数:

复制代码
        remain_note = f"\n\n(剩余可用步数 {max(0, ctx.max_steps - step)})" if ctx.max_steps else ""
        ...
            log.append("tool/result", call_id=call.id, tool=call.name, content=f"{result.obs[:cap]}{remain_note}")

按这段代码,这一轮第 1 步的技能正文和搜索结果末尾带着"(剩余可用步数 99)",第 2、3 步依次是 98、97。两个设计点:余量放在每步新增的工具结果里,不碰前面可缓存的前缀;而且是先截断观察、再接余量,观察再长,这一句也一定在。

调研次数的软提醒(阈值第十篇讲过)则正好相反,要放在观察开头 。注释记着原因:它在工具内部就拼进观察,之后还要过驱动器那一刀截断,"上线头一版接在末尾, 生产复测里整句被截掉, 模型一次都没看到"。同样是给模型递一句话,放在哪儿要看截断从哪头砍。

第 2 步那次 scipy 报错,正好演示了共同规则那句"先看返回的原因再换路":第 3 步模型改成手写 z 值,没有原样重跑。即便它想原样重跑,工具层也会拦下同一工具、同样参数的第二次调用,回一句"请换一个动作, 或直接作答"。

到顶怎么收尾。 步数和墙钟(默认 3600 秒)都在"步前"检查,到了就不进下一步。这时模型最后一步还在调工具、没有答案,引擎再补一次调用:

复制代码
            {"role": "user", "content": "现在不要再调用任何工具, 基于目前已掌握的信息直接给出这一幕的交付物正文 (自然语言)。"

补答带着完整的会话;这一轮如果做过图片、视频这类成品,还会附上平台从账本里核对过的交付事实(真正生成了哪些文件、哪些没做成),写完再对一遍账------用户拿到的总是一份基于已有资料的正文,而不是一个卡住的"运行中"。

闸 碰到会怎样
步数上限 / 墙钟 不进下一步,补一次"不许用工具"的收尾
调研次数(软 / 硬) 软:观察开头提醒一次;硬:不执行,让它用手上的资料写
同工具同参数 不执行,提示换一个动作

3.5 长对话的上下文压缩:先摘要,再截短

为什么要压。 驱动器每一步发给模型的消息,都从会话日志现场推导:系统提示 + 历史 + 这一轮的思考、工具调用和结果,只增不减。一个长网页单次就能读 6 万字;追问时,前几轮还要"投影成真消息"种进日志。运营对话恰恰会拉长------用户很可能带着分渠道 D1 回来接着问,再问实验结果怎么判读。

两道闸,同一个数。 门口那道管跨轮历史,预算 15 万字(_PARENT_MSG_BUDGET = 150_000),超了从最老的一轮整对丢起、每轮留一行摘要。按代码注释,这个数是翻了生产里 210 条有追问的会话定的:中位 3 轮 5,548 字,p90 也才 31,889 字,抬到 15 万后 209 条能整条带进来。屋里那道在每一步开始前检查:

复制代码
#: 会话日志越过这个字数才压缩: 上下文窗口 200K 量级的模型留出余量, 150K 起压。
#: 调用方若在入口按字数截断跨轮历史, 两处**必须同值** ------ 入口放进 150K、屋里却在 90K 就压,
#: 等于种进来的历史当场被压掉一半。调用方从这里取值, 别各写一个默认值 (改一处就漂)。
DEFAULT_CHECKPOINT_CHARS = 150_000

怎么压:先摘要,不行再截短。

复制代码
    async def _compact(self, system: str, step: int) -> None:
        """超阈值时先试摘要式压缩, 摘要拿不到/没缩就退回机械截短。"""
        ...
                    msgs = tmp.derive_messages(system) + [{"role": "user", "content": COMPACTION_INSTRUCTION}]
                    summary = await self.summarizer(msgs)
                    if log.compact_with_summary(summary):
                        ...
                        return
        ...
        log.compact()

摘要式压缩:最近 16 条消息原样留着,更早的前缀交给一个辅助模型,压成一份固定结构的检查点。切点不会落在一次工具调用和它的结果之间------原生 function calling 要求两者成对。压缩指令(节选):

复制代码
    "## 用户的目标与演变\n- [最初与后来的要求; 原话重要的地方原样引用]\n\n"
    "## 已查到的事实、数据与来源\n- [保留原文数字、专名、日期、链接与引用编号]\n\n"

一共八节:目标与演变、已查到的事实、已交付的产出、出过的错、未完成的事、当前进展、下一步、关键约束与偏好。规则里要求"数字、函数签名原样保留"、"忠实记录用户的反馈与明确指令, 尤其是纠正"。拿运营专家来说,"每组 1,566 人、10.4 天"要原样进第二节,用户说的"我们还没有授权率数据"要进最后一节------压完照样知道基线和缺口。检查点用标签包住、替换掉前缀;再压时合并旧检查点,不原样照抄。

机械截短是兜底:摘要模型出错或没缩下来,就把较早的工具结果截到 1000 字,并留一句"(较早步骤的返回已截短, 关键信息在你当时的思考里)"------让模型知道这里缺了东西,而不是以为自己读全了。

部分 压缩后
系统提示(含运行时快照) 不动
最近 16 条消息 原样
更早的消息 摘要成八节检查点;兜底时截到 1000 字
工具调用与结果 始终成对
轨迹(会话日志) 完整保留,供回放

两种压缩最后都会把阈值抬到压后总量的 1.5 倍。注释的说法是"每个检查点只付一次缓存失效"------压一次就让前缀稳定下来,而不是每步压一点、每步缓存都失效。

这一轮 4 步、正文不到两万字,压缩没有触发。大多数对话都是这样,这套机制是给长尾的长对话准备的,平时零开销。

3.6 这一轮花了多少

项 数值
耗时 84 秒
模型调用 6 次
工具调用 4 次(调用技能、联网搜索、代码执行 ×2)
tokens 70,836,其中 26,880 命中缓存
计费 约 7.5 积分

和第十篇法律专家(约 8.3 积分)、第三篇数据专家(约 10.5 积分)比,这一轮查得少、算得也少,大头是思考模式下每步重发的上下文------将近四成命中了前缀缓存。

四、你也可以:在 App 里一句话创建自己的专家

口袋专家AI正在筹备专家合伙人计划,支持用户贡献自己精调过的专家,产生收益后,用户将获得分成。让我们一起将口袋中的专家越做越好。

运营专家管的是互联网运营全栈。如果你只做某一类产品,可以建一位更专的:

  1. 打开「专家广场」,点顶部的「新建专家」卡片

  2. 用一句话描述,比如"专做微信小程序工具类产品的增长与留存:熟悉订阅消息授权、分享裂变和小程序入口规则,每条建议附实验设计和样本量估算"

  3. 服务端一次生成名字、人设提示词、能力标签、开场示例和头像

  4. 预览没问题就「开始对话」

"每条建议附实验设计和样本量估算"这半句值得写上------这是运营专家人设里最有用的一条。如果希望它每轮都按「A/B 实验设计与判读」的方法做,可以在插件市场里打开这份技能,在"给哪些专家用"里勾上你的专家,它就成了这位专家的看家技能(第九篇 3.4 节)。

五、总结

本篇以运营专家为例,拆了一位"诊断 + 实验型"智能体是怎么构建的:

• 应用上,它把通用助手"开方不诊断、建议没法验证、基准随口给"的毛病反过来:先把"留存问题"改判成"激活问题",六个原因各配验证方式,再按用户的真实流量算出"D1 当主指标至少 14 天、只能测出 +3.4pp 以上",据此把实验主指标挪到激活环节,每个实验都带开跑前写死的决策规则。

• 技术上 ,一轮对话里三样有限的东西各有一套管法。时间 :运行时快照每轮开跑时现生成,只放事实、没有的行不出现,整轮不变以保住前缀缓存。步数 :上限取平台配置;快照说总数,共同规则说纪律,每个工具结果末尾接一句剩余步数;到顶由步前检查拦下,补一次"不许用工具"的收尾。上下文:门口和屋里两道闸都是 15 万字,超了先压成八节检查点,失败再截短,最近 16 条和工具调用配对始终保留。

相关推荐
Morning的Tech1 小时前
Google ADK2 多智能体编排解析
人工智能
johnsong1 小时前
AI Agent 没有失控,是围栏断了
人工智能
神奇的代码在哪里1 小时前
Ling-3.1-flash 正式开源:560B 激活 25B,1M 上下文、MIT 许可
人工智能·开源·大模型·ai agent·moe
天远数科1 小时前
零信任架构实战:基于天远柠檬查出险构建自动化二手车延保车况资质核验网关
运维·人工智能·架构·自动化
for_ever_love__1 小时前
RAG 里的拒答:什么时候应该说‘我不知道
人工智能·rag·处理·拒答·不知道·怎么回答·检索不到
狄龙1 小时前
RLDS 数据格式详解:结构、下载与实操(九)
人工智能
狄龙1 小时前
动捕数据完整工作流:从公开动捕 / 单目视频到机器人训练数据(八)
人工智能
江湖中的阿龙1 小时前
AI Agent 调用工具怎么做才稳?参数校验、幂等与审计的 Python 实战
人工智能·python·ai agent·工具调用