SocialHub.AI
工程参考 · Socialhub Harness

运行所有 AI 执行器的运行时环境

模型赋予您语言。但它本身无法可靠地基于您的真实数据,无法选择正确的工具并正确调用,无法在调用失败时恢复,无法完成多步骤任务,也无法留下可重现的轨迹。Socialhub Harness 是 企业代理运行时,它能完成所有这些——它是将功能强大的模型转化为可靠代理的执行引擎。

Flash 中的每个 AI 参与者——营销、忠诚度和风险管理人员、会员服务人员以及所有幕后生成器——都是一个 代理定义:一个结构化的蓝图(模型路由、上下文源、技能、工具,每个工具都有其作用域、MCP 界面、工作流、内存和循环策略),由 此 运行时执行。由于每个参与者都运行在一个运行时中,因此治理不再是一个独立的产品,而是统一执行的结构属性:模型提供语言;运行时提供行动;统一的运行时环境免费提供治理功能。

此参考是开发人员对该运行时的看法 - 它在执行时做什么、它执行的定义类型及其轴、技能如何组成执行的步骤、每次运行发送到事件日志中的可重现轨迹,以及在一个地方运行所有内容的防护措施。有关业务概述,请参阅Socialhub Harness产品页面。

运行时在执行时执行的操作

从这里开始,因为这就是整个系统的意义所在。当运行开始时,Harness 运行时会完成语言模型自身无法完成的工作——按顺序完成以下五件事——结果就是完成一项任务和一个你可以重放的轨迹。

1 · Context assembly

运行时为参与者提供基础:它会在每次运行中整合简报和真实的业务信息——任务、成员/细分汇总、品牌工具包、指标——并最大限度地减少个人身份信息 (PII)。模型不会猜测您的数据;它直接接收数据。

2 · Model routing

运行时会根据定义名称,确定每个步骤由哪个推理引擎执行(以及备选方案)。路由是运行时的任务,而不是提示器的任务。

3 · Skill composition into steps

运行时会将组合技能的有序步骤和决策指导注入到提示中,因此执行的是已命名的、版本化的流程,而不是模型即兴生成的任何内容。

4 · The tool loop

运行时驱动选择-调用-观察循环:它选择一个受管理的工具,检查权限,调用它,读取结果,并在失败时恢复或升级——这是裸模型调用所缺乏的可靠性。

5 · A reproducible trajectory

每个步骤都会按顺序记录到仅追加的事件日志中,并带有运行 ID 和确切的蓝图版本,因此运行过程可审计,并且可以逐步重放。

模型提供语言;运行时提供行动;统一的运行时免费提供治理。 以下所有内容——运行时执行的定义、技能的组成方式、生成的事件日志以及所采取的措施——都源于这五个步骤,它们在一个地方对所有参与者统一运行。

代理定义剖析——运行时执行的操作

运行时执行一个定义:一个结构化的蓝图——不是代码,也不是自由格式的提示——它由以下部分组成。编辑其中任何部分都会生成一个新的版本化蓝图,运行时会在下次运行时使用该蓝图;版本信息会标记在每次运行时发出的每个事件上。

蓝图部分它的组成
模型路由哪个推理引擎执行每个步骤以及回退。它命名模型;运行时解决它。
上下文来源操作者从任务、会员/细分市场汇总、品牌工具包、指标等信息出发,每次运行都会进行汇总,并最大限度地减少个人身份信息 (PII) 的泄露。
技能构建到参与者身上的结构化剧本(见下文)。命名流程,而非自由格式提示。
工具受监管的行为——每项行为都有其适用范围。定义中仅列出工具名称,并不授予任何使用权。数据库是最终的权威来源。
MCP表面哪些工具通过模型上下文协议公开给持有范围密钥的外部代理,以及在哪些齿轮下。
工作流程运行时驱动的有序步骤或图表 - 声明、读取、决定、行动、完成 - 用于工作列表和编排的参与者。
内存参与者可能在不同步骤和运行中保留哪些信息,以及每次都必须重新读取哪些信息。有界数据,并非个人身份信息 (PII) 的草稿纸。
循环策略停止规则:最大步数、预算上限和升级到人类条件。运行时强制执行它;演员无法延长它。

它命名功能,但从不授予功能。 定义可以引用工具、模型或数据源,但此工作区和此键是否实际可以使用它,由运行时在调用时根据数据库进行解析。蓝图是组合界面;因为运行时在一个地方解析了权限,所以下面的守卫是免费的。

一种定义类型,从三个维度进行描述

每个 Actor 都只有一个 Definition 类型。它不会根据角色进行分支——它是沿着正交轴 描述 的,因此无论 Actor 是外部代理、Flash 循环内部的 Actor 还是单次生成器,都适用相同的运行时、事件日志和保护机制。

Axis值它捕获了什么
runtimeFormmcp_external · server_orchestrator · inline_function定义如何执行。 mcp_external = 持有作用域密钥的外部代理,通过 MCP 调用。 server_orchestrator = 运行时逐步驱动的 in-Flash 循环。 inline_function = 在屏幕流程中调用的单次生成器。
agentTypeemployee · chatbot · function对企业而言,员工 = 您管理的指定员工(目标、任务、反馈)。聊天机器人 = 基于真实数据的对话界面。函数 = 没有角色的单一用途生成器或分类器。
技术类agent · generator · embedded · custom · workflow蓝图的工程分类——可以是组合式多步骤代理、内联生成器、嵌入式功能、工作区自定义定义或多步骤工作流图。
业务领域8 个域之一(右侧)它服务的业务部分是:营销和活动、忠诚度和保留、风险和合规、会员服务、内容和创意、客户情报、分析和洞察、研究和模拟。

40多个受管参与者,采用单一模型。实时参与者包括5个组合代理(多步骤、服务器协调:四个管理器加上成员服务人员)、28个内联函数(贯穿整个产品的单次生成器和分类器)以及8个嵌入式功能(屏幕上的流程辅助工具)。它们都属于同一定义类型,仅在上述坐标轴上有所不同。

技能:编写到代理上的数据库权威剧本

技能是一种 结构化操作手册这些信息存储在数据库中,并像给新员工发放标准操作程序 (SOP) 一样,被添加到代理人的工作流程中。它不是一段提示文本,而是一份包含以下部分的文本记录:

trigger

此技能适用于当前运行的条件。

required state

成员/业务状态是技能正常运行的必要条件——如果缺少此状态,则技能将无法正常运行。

tool allowlist

此技能可使用的代理工具子集——是对蓝图现有允许范围的缩小,而非扩大。

ordered steps

运行时按顺序执行的过程。

verifier rules

在该步骤被视为完成之前必须传递结果的检查。

decision guidance

如何选择——包括何时保留或升级——以指导的形式表达,而不是硬编码的分支。

在运行时,运行时 - 因此执行的不是“模型提出的任何内容”,而是您的团队可以阅读和批准的命名的版本化过程。由于技能是数据库权威的,因此相同的技能可以组合到多个代理上,并且更改它会更改使用它的每个代理 - 无需重新部署。

运行时的输出:可复现的轨迹

生成可重放轨迹是运行时执行的第 5 步——它也是您的审计证据。无论参与者是谁,无论它如何运行,每次运行都会向单个仅追加事件日志 (event log)) 中发出事件流。每个事件都带有运行 ID (run ID) 和生成它的精确蓝图(定义)版本 (exactious blueprint (defineition) version) 的标记——因此,每次运行都是可审计和可重放的。运行发出的事件类型如下:

01运行开始02用户意图03上下文已加载04已选择型号05提示已组装06原因07权限检查08工具名称09工具结果10行动/结果11成本12运行结束

除此之外,日志还包含 镜像的 MCP 工具调用(当参与者将 Flash 驱动到 MCP 时)以及最终的业务结果 业务结果——因此,从意图到结果的轨迹都集中在一个地方。

// one run's trajectory (abbreviated — every event carries runId + definitionVersion)
{
  "runId": "run_a1f9…",
  "definition": "loyalty-manager",
  "definitionVersion": 4,
  "events": [
    { "type": "run_started",     "at": "2026-08-26T09:14:02Z" },
    { "type": "user_intent",     "intent": "work the win-back worklist" },
    { "type": "context_loaded",  "sources": ["task", "member_rollup", "churn_signal"] },
    { "type": "model_selected",  "model": "…" },
    { "type": "prompt_assembled","skill": "winback-worklist-execution" },
    { "type": "reasoning",       "summary": "high value, at-risk, consented" },
    { "type": "permission_check","tool": "issue_coupon", "result": "allowed" },
    { "type": "tool_called",     "tool": "issue_coupon", "args": { "value": 10 } },
    { "type": "tool_result",     "ok": true },
    { "type": "cost",            "tokens": 3120, "usd": 0.04 },
    { "type": "run_ended",       "outcome": "coupon issued · within budget" }
  ]
}

通过 Flash 应用查看跑步轨迹。按 ID 获取单次跑步记录,或列出最近跑步记录:

# one run's full trajectory
GET https://flash.socialhub.ai/api/flash/agent-runs/{runId}

# list recent runs
GET https://flash.socialhub.ai/api/flash/agent-runs

日志条目永远不会被编辑,只会追加——它完整记录了每个参与者的操作及其原因,可以根据带有印章的运行 ID 和蓝图版本逐步还原。

免费治理:五项故障关闭防护措施

这是统一运行时的回报。由于每个参与者的执行都经过一个运行时,因此安全层不必固定在每个代理上 - 它是所有操作都经过的单一位置的结构属性。这五个守卫是代码拥有的,在每个动作中都在每个演员的领导下运行,没有任何设置可以关闭它们。定义的组成——它的技能、工具、模型和上下文——是您在AI员工控制台中配置的;下面的守卫则不然。

守护它强制执行的内容
授权范围 × 计划级别每次工具调用都会根据键的作用域和工作区的计划层级进行检查。定义中指定了工具的名称;运行该工具的权限存储在数据库中,并在调用时解析。键无法访问的工具会被隐藏。
写入值上限+比率价值转移写入(积分、优惠券)受每次调用价值上限和每个键写入速率限制的约束,这两项限制均在服务器端强制执行,且与参与者的提示或客户端确认声明无关。
预算账簿每次运行都在代币+成本预算内执行,在参与者行动之前预先收费,并在运行时减少。当账本耗尽时,运行就会停止——演员永远无法带着支出逃跑。
终止开关任何参与者——无论是整个定义还是单个操作——都可以立即暂停。默认关闭,开启时会设置上限,并且可以随时停止。
审核每个步骤都会连同运行 ID 和确切的蓝图版本一起写入仅追加的事件日志。Actor 的任何操作都不会被遗漏,也没有任何设置可以阻止日志条目的生成。

在 /flash/agents 中配置构图。 AI Members 控制台是您编辑演员的技能、工具、模型和上下文的地方 - 生成新版本的蓝图。你永远无法编辑的是安全底线:上面的五个防护措施是在代码中强制执行的,而不是在配置中执行的。

Harness 与平台其余部分的配合

Harness 是每个 AI 执行器的执行运行时环境,并且由于所有操作都通过它运行,因此它也是治理层。两个相邻的参考资料涵盖了它所依赖的组件:

  • MCP 表面。 mcp_external 参与者持有作用域密钥,并通过模型上下文协议调用 Flash 的受管工具。端点、身份验证、客户端配置和完整的工具目录位于 MCP 集成指南 中。
  • 授权机制与审批。 操作级授权机制(自动/审核/禁止)、待处理/已拒绝的写入语义以及位于授权保护层之上的审批生命周期,均在 AI 治理:内省与审批 中有详细说明。