@my-life-buddies/buddy-runtime 0.24.0-dev.4 → 0.24.0-dev.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +23 -107
  2. package/dist/conversation/agent.d.ts +1 -7
  3. package/dist/conversation/agent.d.ts.map +1 -1
  4. package/dist/conversation/agent.js +6 -64
  5. package/dist/conversation/agent.js.map +1 -1
  6. package/dist/conversation/index.d.ts +2 -6
  7. package/dist/conversation/index.d.ts.map +1 -1
  8. package/dist/conversation/index.js +3 -34
  9. package/dist/conversation/index.js.map +1 -1
  10. package/dist/conversation/mlbMessageAgentMessageConverter.js +1 -1
  11. package/dist/conversation/mlbMessageAgentMessageConverter.js.map +1 -1
  12. package/dist/index.d.ts +0 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/mlbClient.d.ts +36 -5
  16. package/dist/mlbClient.d.ts.map +1 -1
  17. package/dist/mlbClient.js +52 -33
  18. package/dist/mlbClient.js.map +1 -1
  19. package/dist/model.d.ts +3 -3
  20. package/dist/model.d.ts.map +1 -1
  21. package/dist/model.js +18 -6
  22. package/dist/model.js.map +1 -1
  23. package/dist/server.d.ts.map +1 -1
  24. package/dist/server.js +4 -78
  25. package/dist/server.js.map +1 -1
  26. package/dist/tools/hybridSearch.d.ts +14 -0
  27. package/dist/tools/hybridSearch.d.ts.map +1 -0
  28. package/dist/tools/hybridSearch.js +66 -0
  29. package/dist/tools/hybridSearch.js.map +1 -0
  30. package/dist/types.d.ts +6 -20
  31. package/dist/types.d.ts.map +1 -1
  32. package/package.json +2 -2
  33. package/dist/services/cache.d.ts +0 -15
  34. package/dist/services/cache.d.ts.map +0 -1
  35. package/dist/services/cache.js +0 -58
  36. package/dist/services/cache.js.map +0 -1
  37. package/dist/services/manifest.d.ts +0 -3
  38. package/dist/services/manifest.d.ts.map +0 -1
  39. package/dist/services/manifest.js +0 -19
  40. package/dist/services/manifest.js.map +0 -1
  41. package/dist/services/session.d.ts +0 -10
  42. package/dist/services/session.d.ts.map +0 -1
  43. package/dist/services/session.js +0 -57
  44. package/dist/services/session.js.map +0 -1
  45. package/dist/services/types.d.ts +0 -122
  46. package/dist/services/types.d.ts.map +0 -1
  47. package/dist/services/types.js +0 -2
  48. package/dist/services/types.js.map +0 -1
  49. package/dist/tools/service.d.ts +0 -18
  50. package/dist/tools/service.d.ts.map +0 -1
  51. package/dist/tools/service.js +0 -25
  52. package/dist/tools/service.js.map +0 -1
package/README.md CHANGED
@@ -75,7 +75,7 @@ await BuddyServer.start(() => ({
75
75
 
76
76
  连上平台开始处理消息,返回 `{ stop(): Promise<void> }`。
77
77
 
78
- `buddy` 是每场会话建起来时调用一次的工厂函数,返回这场会话的配置,见 2.2、2.3。需要按服务凭证切换配置时,在返回值中提供可选的 `configureTurn`,不重复执行工厂,见 3.7。DataAccess 声明不属于会话工厂,单独写在工程根目录的 `data-access.json`,见 3.4。
78
+ `buddy` 是每场会话建起来时调用一次的工厂函数,返回这场会话的配置,见 2.2、2.3。DataAccess 声明不属于会话工厂,单独写在工程根目录的 `data-access.json`,见 3.4。
79
79
 
80
80
  **buddyId 与 token**:buddyId 从工程 `package.json` 顶层的 `buddyId` 字段读,token 从环境变量 `BUDDY_TOKEN` 读,缺一个都启动失败。创建搭子时会下发 buddyId 与开发 token:buddyId 写进 `package.json`,随工程进 git 与发布包,平台收包时会比对它与推送目标是否一致;开发 token 写在 `.env`,由启动命令带进环境变量。正式上线时平台托管注入正式 token 到同名变量,对开发者无感。
81
81
 
@@ -102,7 +102,7 @@ import type {
102
102
  interface BuddyOptions {
103
103
  // 必填。这场会话的初始状态
104
104
  initialState: {
105
- // 必填。模型 id,ModelId 是 "kimi-k2.6" | "kimi-k3" | "deepseek-v4-flash" | "deepseek-v4-pro"。每场会话可以选不同的模型
105
+ // 必填。模型 id,ModelId 是 "kimi-k2.6" | "kimi-k3" | "deepseek-v4-flash" | "deepseek-v4-pro" | "glm-5.3" | "MiniMax-M3"。每场会话可以选不同的模型
106
106
  model: ModelId;
107
107
 
108
108
  // 必填。人设与做事规则。为保证模型缓存,只放不随回合变化的内容
@@ -148,6 +148,7 @@ interface Conversation {
148
148
  tools: {
149
149
  resource_list: AgentTool;
150
150
  resource_read: AgentTool;
151
+ hybrid_search: AgentTool;
151
152
  ask_question: AgentTool;
152
153
  data_access_query: AgentTool;
153
154
  data_access_request: AgentTool;
@@ -211,12 +212,12 @@ interface Conversation {
211
212
  | 能力 | `conversation` 对象方法 | 模型工具(`conversation.tools` 上) |
212
213
  |---|---|---|
213
214
  | 资料 | `conversation.resource.list` / `conversation.resource.read` | `resource_list` / `resource_read` |
215
+ | 外部搜索 | 无 | `hybrid_search` |
214
216
  | 提问 | 无 | `ask_question` |
215
217
  | 记忆 | `conversation.memory` | 无,开发者可以根据具体场景,自己组装成适合的模型工具 |
216
218
  | 用户授权数据 | `conversation.dataAccess.query` / `conversation.dataAccess.request` | `data_access_query` / `data_access_request` |
217
219
  | 小挂件 | `conversation.widget.list` / `conversation.widget.create` / `conversation.widget.read` / `conversation.widget.readModule` / `conversation.widget.rename` / `conversation.widget.writeRecord` / `conversation.widget.deleteRecord` / `conversation.widget.setPresentation` / `conversation.widget.send` | `widget_create` / `widget_read` / `widget_read_module` / `widget_rename` / `widget_write_record` / `widget_delete_record` / `widget_send` |
218
220
  | 主动服务 | `conversation.proactive.subscribe` / `list` / `unsubscribe` / `unsubscribeAll` / `isRunning` | `proactive_subscribe` / `proactive_list` / `proactive_unsubscribe` / `proactive_unsubscribe_all` |
219
- | 付费服务(内测) | `conversation.service`:展示服务、读取、启用和终止服务凭证 | `show_service_card` |
220
221
 
221
222
  ```ts
222
223
  buddy: (conversation) => ({
@@ -662,7 +663,7 @@ await BuddyServer.start((conversation) => ({
662
663
 
663
664
  **主动服务的回合,不允许使用部分模型工具**
664
665
 
665
- 主动服务回合沿用当前配置的工具,数据授权保护照常生效;`show_service_card` 只允许普通用户私聊回合调用,见 3.7。开发者如需进一步限制其他工具,可以使用 `beforeToolCall`,通过 `conversation.proactive.isRunning()` 判断当前是否为主动服务回合:
666
+ 主动服务的回合里工具清单一个字都不动,平台工具和你自己的工具都照常执行,运行时不按回合性质拦任何一个。有时我们想禁用部分模型工具,比如一些写操作,可以使用 `beforeToolCall` 的钩子函数,用 `conversation.proactive.isRunning()` 能判断当前是不是主动服务的回合:
666
667
 
667
668
  ```ts
668
669
  beforeToolCall: async ({ toolCall }) =>
@@ -671,113 +672,28 @@ beforeToolCall: async ({ toolCall }) =>
671
672
  : undefined,
672
673
  ```
673
674
 
674
- ### 3.7 付费服务(内测)
675
+ ### 3.7 外部搜索
675
676
 
676
- 在私聊展示服务卡,用户查看详情后可以完成不扣费的模拟购买。平台在购买成功后生成一份待启用服务凭证,创作者决定何时启用和终止。没有单独的授予凭证接口。群聊暂不支持。
677
-
678
- **准备工作**
679
-
680
- 工程根目录放置 `services.json`,包含 `schemaVersion: 1` 与 `services` 数组。每项声明包含服务标识、版本、名称、可选通用说明、适用对象、计价单位、服务内容、开始/结束条件、不包含的服务和拟售价格。提交后需要平台审核;格式正确不等于已获准售卖。更改内容必须增加版本,不能覆盖旧版本。
681
-
682
- ```json
683
- {
684
- "schemaVersion": 1,
685
- "services": [{
686
- "serviceId": "plant_care",
687
- "version": "1",
688
- "name": "植物养护陪伴",
689
- "description": "结合用户的记录提供养护安排和调整建议。",
690
- "audience": "希望获得持续养护支持的用户",
691
- "pricingUnitLabel": "一次养护计划",
692
- "benefits": [{ "title": "养护计划", "description": "结合观察记录调整安排" }],
693
- "serviceTerms": {
694
- "startCondition": "购买后确认资料并开始",
695
- "endCondition": "计划完成交付后结束"
696
- },
697
- "limitations": ["不含上门养护", "不保证植物恢复"],
698
- "requestedPrice": { "amountMinor": 3900, "currency": "CNY" }
699
- }]
700
- }
701
- ```
702
-
703
- 文件缺失时不提交,旧工程升级后无需新增配置。文件存在则启动后独立提交:读取或提交失败只记录错误,不阻止搭子接收消息;本次新声明需成功提交并经审核后才可售卖,已审核版本和已购凭证不变。修复后可重新启动提交;删除文件不会自动撤回已发布服务。正式搭子和开发分身的声明分别审核。
704
-
705
- **`conversation` 对象方法**
706
-
707
- `conversation.service` 绑定当前私聊,不能传入其他用户或搭子的标识。旧 Runtime 可能没有此属性,接入时检查是否存在。
708
-
709
- | 方法 | 做什么 |
710
- | --- | --- |
711
- | `showCard({serviceId,idempotencyKey,personalization})` | 平台准备服务记录后,将 `paidservice` 消息加入统一发送队列;返回不代表已送达,不支付、不创建凭证 |
712
- | `readCurrentCredential({refresh?})` | 读取当前生效凭证快照;默认用缓存,事件失效、缓存过期或主动刷新时回源 |
713
- | `listCredentials({state?,cursor?})` | 分页读取凭证;pending 表示已购买但尚未启用 |
714
- | `activateCredential({credentialId,expectedRevision,idempotencyKey})` | 启用指定 pending 凭证;已有 active 凭证时拒绝 |
715
- | `terminateCredential({credentialId,expectedRevision,idempotencyKey,reason})` | 终止当前 active 凭证,不删除凭证或订单,不执行退款 |
716
-
717
- `serviceId` 是创作者定义、同一搭子内唯一的服务标识,不另设凭证类型;`credentialId` 是平台为每次成功购买生成的唯一凭证 ID,复购时生成新的 ID。读取当前凭证得到 `ServiceCredentialSnapshot`:`current` 是生效凭证或 null,`revision` 与刷新时间用于缓存校验,不代表服务有效期。
718
-
719
- 启用和终止返回 `{ credential, snapshot, reused }`:`credential` 是本次操作后的凭证,`snapshot` 是最新的当前生效凭证快照。`configureTurn({ credential })` 中的 `credential` 也是快照,使用 `credential.current` 判断本轮服务。
677
+ 把 `conversation.tools.hybrid_search` 放进 `initialState.tools`,模型即可搜索小红书图文笔记、站外网页或两者。开发者不接触搜索上游地址、鉴权与调优参数;Runtime 把查询发给平台,由平台限流、清洗并返回稳定的 `source: "xhs" | "web"` 结果。小红书侧固定只搜图文笔记,结果只含标题、正文和可选的评论正文,不返回笔记/评论用户信息、链接、图片、互动数等元数据。
720
678
 
721
679
  ```ts
722
- await BuddyServer.start((conversation) => {
723
- if (!conversation.key.startsWith("p_")) {
724
- return { initialState: { model: "deepseek-v4-flash", systemPrompt: "提供普通群聊帮助;购买和使用付费服务请前往私聊。", tools: [] } };
725
- }
726
- const service = conversation.service;
727
- const showCard = conversation.tools.show_service_card;
728
- if (!service || !showCard) throw new Error("请使用支持服务能力的 Runtime");
729
- const basic = {
730
- model: "deepseek-v4-flash" as const,
731
- systemPrompt: "提供基础养护建议。用户希望持续养护且未拒绝推荐时,可展示 plant_care。",
732
- tools: [showCard],
733
- };
734
- return {
735
- initialState: basic,
736
- configureTurn: ({ credential }) => credential.current?.serviceId === "plant_care"
737
- ? { model: "kimi-k3", systemPrompt: "按已购买服务的约定提供养护规划与调整。", tools: [] }
738
- : basic,
739
- onCredentialCreated: async (credential) => {
740
- if (credential.serviceId !== "plant_care") return;
741
- if ((await service.readCurrentCredential()).current) return;
742
- // 该示例收到凭证即启用。需要准备资料时,可先保留 pending,条件满足后再启用。
743
- await service.activateCredential({
744
- credentialId: credential.credentialId,
745
- expectedRevision: credential.revision,
746
- idempotencyKey: `start:${credential.credentialId}`,
747
- });
748
- },
749
- };
750
- });
680
+ await BuddyServer.start((conversation) => ({
681
+ initialState: {
682
+ model: "kimi-k3",
683
+ systemPrompt: "用户明确需要攻略、经验或近期资料时再搜索。引用搜索结果时保留链接,并区分事实和个人经验。",
684
+ tools: [conversation.tools.hybrid_search],
685
+ },
686
+ }));
751
687
  ```
752
688
 
753
- `configureTurn` 仅在私聊的新回合边界返回完整的模型、提示词和工具配置。凭证来自平台,不让模型从聊天文本判断是否付费。平台提示、鉴权和数据授权保护保留,既有对话历史保留。正在执行的回合按原配置完成;执行中追加的用户消息仍沿用原来的 steering 交互,不为切换凭证强制拆成新回合。下一个独立用户回合或主动服务回合再应用新配置。
754
-
755
- 凭证查询暂时失败时,当前输入仍进入基础对话:使用 `initialState` 的模型和提示词,暂不开放工具,并告知模型付费能力暂不可用。查询失败不等于未购买,不调用 `configureTurn` 的无凭证分支,也不修改或终止凭证;查询恢复后的新回合按真实凭证恢复配置。`initialState` 应保留基础交流所需的人设与模型,不能依赖它的工具完成这个兜底。
756
-
757
- 群聊使用工厂的 `initialState`,不读取个人服务凭证,不调用 `configureTurn` 或 `onCredentialCreated`,并从模型工具列表移除 `show_service_card`。普通模型配置、其他工具和 Widget 不受影响。开发者应像示例一样先按会话类型分流:群聊不得注册自己的付费服务工具,也不得通过跨会话变量、闭包或持久记录复用私聊的付费配置与数据。此限制不包含对任意创作者代码的执行隔离。
758
-
759
- 示例不包含业务计时和计次:创作者应持久保存自己的交付进度,满足结束条件后调用 `terminateCredential`。不能只依赖会被回收的会话闭包变量。
760
-
761
- 需要计时、计次与重启恢复的完整接入参考,见 [观察记录示例](examples/service-buddy/README.md)。
689
+ 工具参数:
762
690
 
763
- **模型工具**
764
-
765
- 把 `conversation.tools.show_service_card` 加入当前配置的工具列表。参数为 `serviceId` 与必填的 `personalization`:必须包含 `cardSummary`(1–200 字符),可选 `buttonText`、`needSummary`、`contextItems`。卡片介绍由搭子基于本次对话生成;详情介绍取 `needSummary`,缺失时取声明 `description`,两者皆无则隐藏。价格、服务名称和交付承诺来自审核版本,不能由工具改写。
766
-
767
- `personalization.buttonText` 是聊天服务卡的可选按钮文案,省略时显示「查看方案」。传入时需为 1–20 字符的有效文本,平台去除首尾空白;空白文本或超长文本会被拒绝。例如 `{ serviceId: "care", personalization: { cardSummary: "根据你这盆植物的情况安排养护", buttonText: "了解养护方案" } }`。按钮始终打开服务详情,不直接购买,也不影响详情页的「去购买/已购买」。同一张卡重试或再次展示时保留首次保存的文案。
768
-
769
- 工具只在普通用户私聊回合可调用,自动绑定当前用户消息和工具调用幂等键。成功入队后本轮停止;卡片沿用普通消息的顺序、重试和历史读取链路。内测购买由用户点击触发,不向模型提供付款工具。
770
-
771
- `showCard()` 返回 `{ offerId, reused, queued: true }`,仅表示服务记录已准备、消息已入队。旧内测返回中的 `messageId`、`timestamp` 已弃用,类型暂保留为可选字段,新链路不再填入。Server、Runtime 和客户端需配套更新。发送队列只提交 `paidservice: { offerId }`;平台校验归属后补齐卡片内容,调用方不能在写消息时改写名称、价格或购买状态。
772
-
773
- **限制与异常**
691
+ | 字段 | 说明 |
692
+ |---|---|
693
+ | `query` | 必填,搜索关键词,最多 120 个字符;不要塞整段对话或用户隐私 |
694
+ | `scope` | 可选,`all` / `xhs` / `web`,默认 `all` |
695
+ | `limit` | 可选,每个启用来源返回 1~10 条,默认 5 |
696
+ | `includeComments` | 可选,是否带最多 3 条小红书评论正文,默认 false;不返回评论者信息 |
697
+ | `includeWebContent` | 可选,是否抓取站外网页正文,默认 true |
774
698
 
775
- - 购买与启用分开;同服务复购可产生多份 pending 凭证,但同一用户在同一搭子下只能有一份 active 凭证。
776
- - 同一用户在当前搭子下有 pending 或 active 服务凭证时,平台拒绝创建新服务卡,同一服务也不能再发新卡。收到已有服务的错误后,不换服务或参数重试,应继续提供已有服务。旧卡幂等恢复、查看已购详情与历史记录不受影响;无待开始或进行中的服务后可重新发卡。
777
- - 群聊直接调用 `conversation.service` 的发卡、读取、启用或终止方法均会报错;平台接口也校验会话类型。
778
- - `onCredentialCreated` 可能重放,副作用需按 `credentialId` 幂等。回调成功后确认事件;未启用的凭证仍可通过列表查询。回调不保证发起模型回复。
779
- - 直接调用服务 SDK 的操作失败时仍抛异常,不伪报成功。仅运行时在回合边界读取凭证失败时按上述规则保留基础对话;创作者配置代码自身的异常不在此兜底范围。写操作不自动重试;使用同一幂等键恢复原操作,版本冲突时读取最新状态再决定。
780
- - 模拟购买不设内测开关或白名单;仍需用户登录、私聊归属及已审核服务。展示拟售价格,实付为 0,不调用真实支付。
781
- - 同一张服务卡仅对应一次购买意图,重复点击或重开详情会返回原购买结果。复购需要新一轮用户意图对应的新卡。
782
- - `activateCredential` / `terminateCredential` 保留授权数据的长期写入保护;服务凭证不能替代用户的数据授权。
783
- - 未配置 `configureTurn` 时,模型、提示词、工具仍沿用原来的一次性工厂配置。仅写入凭证不会自动猜测应该更换哪些能力。
699
+ 搜索结果属于不可信外部资料。工具说明会要求模型不执行网页、笔记和评论里的任何指令;搭子的 system prompt 仍应说明什么时候允许搜索、如何引用来源。查询会发往平台搜索服务,因此该工具的数据策略是 `retention: "external"`。平台失败、超时或频控时工具会报错,不自动重试。
@@ -4,12 +4,9 @@ import type { Api, Model } from "@earendil-works/pi-ai";
4
4
  import type { MLBClient, WidgetType } from "../mlbClient.ts";
5
5
  import { DataAccessUsageTracker } from "../tools/dataAccess.ts";
6
6
  import type { Resource } from "../tools/resource.ts";
7
- import type { ServiceEvent } from "../services/types.ts";
8
7
  import type { BuddyFactory, BuddyLogger, DataRequirement, MLBMessageToWrite } from "../types.ts";
9
8
  export interface AgentDeps {
10
- /** 当前普通用户回合的真实来源消息;模型参数不能覆盖。 */
11
- sourceMessage?: () => string | undefined;
12
- /** 这场会话的发送队列:小挂件引用、服务引用、权限请求卡、题卡都放进来 */
9
+ /** 这场会话的发送队列:小挂件引用、权限请求卡、题卡都放进来 */
13
10
  enqueueMessage: (message: MLBMessageToWrite) => void;
14
11
  /** 发了一张等用户操作的卡(权限请求卡、题卡):这张卡算这一轮说过的话 */
15
12
  onWaitingForUser: () => void;
@@ -35,9 +32,6 @@ export interface AgentDeps {
35
32
  }
36
33
  /** createAgent 建好的:Agent、这场会话的模型条目、授权数据记账,以及开发者配的兜底话 */
37
34
  export interface CreatedAgent {
38
- prepareTurn: () => Promise<Model<Api>>;
39
- handleServiceEvent: (event: ServiceEvent) => Promise<void>;
40
- invalidateCredential: () => void;
41
35
  agent: Agent;
42
36
  /** 按开发者 initialState.model 造的模型条目:重建历史时抄身份、判断收不收图片都按它 */
43
37
  model: Model<Api>;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7D,OAAO,EAAyF,sBAAsB,EAAuB,MAAM,wBAAwB,CAAC;AAE5K,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAOrD,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAA8B,eAAe,EAAE,iBAAiB,EAAiB,MAAM,aAAa,CAAC;AAE5I,MAAM,WAAW,SAAS;IACzB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACzC,wCAAwC;IACxC,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,oFAAoF;IACpF,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,uDAAuD;IACvD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,gBAAgB,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,WAAW,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACnD;AAED,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC5B,WAAW,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,kBAAkB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,yDAAyD;IACzD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,eAAe,EAAE,sBAAsB,CAAC;IACxC,iFAAiF;IACjF,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,kFAAkF;AAClF,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAqQxE;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,iHAAuB,CAAC;AAEtD,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAErF;AAED,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQxD;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAa1D"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAExF,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAI7D,OAAO,EAAyF,sBAAsB,EAAuB,MAAM,wBAAwB,CAAC;AAE5K,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAMrD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAA8B,eAAe,EAAE,iBAAiB,EAAiB,MAAM,aAAa,CAAC;AAE5I,MAAM,WAAW,SAAS;IACzB,mCAAmC;IACnC,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,oFAAoF;IACpF,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,uDAAuD;IACvD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,gBAAgB,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,WAAW,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACnD;AAED,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,yDAAyD;IACzD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,eAAe,EAAE,sBAAsB,CAAC;IACxC,iFAAiF;IACjF,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,kFAAkF;AAClF,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAwNxE;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,iHAAuB,CAAC;AAEtD,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAErF;AAED,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQxD;AAED,2DAA2D;AAC3D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAa1D"}
@@ -1,16 +1,14 @@
1
1
  // 一场会话的 Agent 怎么建:运行时先把该填的填好,开发者的配置叠上去。
2
2
  // 管:造好这场会话的平台工具,拼好交给开发者工厂的 Conversation(会话键、日志、平台工具、进程启动时读好的资料、绑好会话键的记忆、授权数据查询、权限请求、主动服务与小挂件),跑工厂拿配置;
3
3
  // systemPrompt 按 平台的(GET /internal/v1/system-prompt,每场会话建 Agent 时拉一次)→ 开发者的 拼,段间空一行;
4
- // 工具清单由开发者的 initialState.tools 决定(平台工具也是开发者从 conversation.tools 取来放进去的),群聊移除 show_service_card 后查重名;
4
+ // 工具清单全由开发者的 initialState.tools 决定(平台工具也是开发者从 conversation.tools 取来放进去的),查重名;
5
5
  // 按 initialState.model 造网关的模型条目(id 运行时不支持就 throw,这场会话起不来);开发者显式设的 thinkingLevel 这个模型不支持时打一条 warn,写明支持哪几档、实际会怎么发;
6
6
  // 钩子叠加——开发者的 beforeToolCall / afterToolCall 包一层授权数据记账,beforeToolCall 抛错时打 warn 再抛给 pi(工具不执行,模型看到错误);
7
7
  // 发了等用户操作的卡(权限请求卡、题卡)的那一轮,shouldStopAfterTurn 在这一步收尾后停下;其余直通;
8
8
  // 主动服务回合本身不改变工具权限;DataAccess 数据策略仍照常生效,其他限制由开发者在 beforeToolCall 里按 conversation.proactive.isRunning() 自己拦;
9
9
  // transformContext 由运行时自己装、不开放给开发者:每次请求模型在历史末尾接一条写当前时间的 user 消息,不进会话历史;
10
10
  // 每次请求模型的请求体全量打日志,图片换成字节数;响应收完再打一条「模型响应」:内容、结束原因、usage(含缓存命中)、总耗时与首字耗时。主动回合也一样。
11
- // 私聊的 configureTurn 在回合边界返回完整配置时,保留平台规则、鉴权与历史,替换模型/开发者提示/工具;凭证查询失败保留基础对话但不开放工具,不伪造空凭证;
12
- // 服务事件只调用同一私聊的创作者回调,不直接开模型回合,不改变追加消息的 steering 行为。
13
- // 不管:回合和事件调度(index.ts)、服务业务计时计次。
11
+ // 不管:Agent 建好之后的事(回合、事件分发在 index.ts)。
14
12
  import { Agent } from "@earendil-works/pi-agent-core";
15
13
  import { clampThinkingLevel, getSupportedThinkingLevels } from "@earendil-works/pi-ai";
16
14
  import { agentMessagesToLLMMessages } from "./agentMessageLLMMessageConverter.js";
@@ -24,12 +22,10 @@ import { assertUniqueToolNames } from "../tools/registry.js";
24
22
  import { widgetTools } from "../tools/widget.js";
25
23
  import { dataAccessRequestTool, validateDataAccessRequest } from "../tools/dataAccessRequest.js";
26
24
  import { proactiveTools, validateProactiveSubscribe } from "../tools/proactive.js";
27
- import { serviceCardTool } from "../tools/service.js";
28
- import { ServiceSession } from "../services/session.js";
25
+ import { hybridSearchTool } from "../tools/hybridSearch.js";
29
26
  /** 跑开发者工厂拿配置,叠上运行时预置,建 Agent。模型 id 运行时不支持、工具清单重名、拉平台 system prompt 失败 → throw。 */
30
27
  export async function createAgent(deps) {
31
28
  const dataAccessUsage = new DataAccessUsageTracker();
32
- const supportsServices = deps.key.startsWith("p_");
33
29
  /** 这一轮发了等用户操作的卡(权限请求卡、题卡):shouldStopAfterTurn 在这一步收尾后停下,不再请求模型 */
34
30
  let waitingForUser = false;
35
31
  const waitForUser = () => {
@@ -37,19 +33,18 @@ export async function createAgent(deps) {
37
33
  deps.onWaitingForUser();
38
34
  };
39
35
  const { client } = deps;
40
- const service = new ServiceSession(client, deps.key, () => dataAccessUsage.isProactive() ? undefined : deps.sourceMessage?.(), waitForUser, () => dataAccessUsage.guardPersistence("服务凭证操作(长期留存)"), deps.enqueueMessage);
41
36
  // 平台工具:每场会话造一份、绑好会话键,挂在 conversation.tools 上由开发者挑。背后没数据时照样造:
42
37
  // 没资料、没声明 Dataset、没有小挂件类型,工具照常注册,调用时回空结果或报错
43
38
  const [widgetCreate, widgetRead, widgetReadModule, widgetRename, widgetWriteRecord, widgetDeleteRecord, widgetDelete, widgetSend] = widgetTools(client, deps.key, deps.widgetTypes, deps.enqueueMessage, dataAccessUsage);
44
39
  const [proactiveSubscribe, proactiveList, proactiveUnsubscribe, proactiveUnsubscribeAll] = proactiveTools(client, deps.key, deps.dataRequirements, dataAccessUsage);
45
40
  const platformTools = {
46
- show_service_card: serviceCardTool(service.api),
47
41
  proactive_subscribe: proactiveSubscribe,
48
42
  proactive_list: proactiveList,
49
43
  proactive_unsubscribe: proactiveUnsubscribe,
50
44
  proactive_unsubscribe_all: proactiveUnsubscribeAll,
51
45
  resource_list: resourceListTool(deps.resources),
52
46
  resource_read: resourceReadTool(deps.resources),
47
+ hybrid_search: hybridSearchTool(client, deps.key),
53
48
  ask_question: askQuestionTool(deps.enqueueMessage, waitForUser),
54
49
  data_access_query: dataAccessTool(client, deps.key, dataAccessUsage, deps.dataRequirements),
55
50
  data_access_request: dataAccessRequestTool(deps.key, deps.enqueueMessage, dataAccessUsage, deps.dataRequirements, waitForUser),
@@ -64,7 +59,6 @@ export async function createAgent(deps) {
64
59
  };
65
60
  // 这些方法在主动服务回合里跟普通回合一样能调:运行时不按回合性质拦,开发者要限制就在 beforeToolCall 里按 proactive.isRunning() 拦
66
61
  const conversation = {
67
- service: service.api,
68
62
  key: deps.key,
69
63
  log: deps.log,
70
64
  tools: platformTools,
@@ -141,8 +135,7 @@ export async function createAgent(deps) {
141
135
  const model = createModel(deps.gatewayUrl, options.initialState.model);
142
136
  // 平台的 system prompt 拉失败就 throw:这场会话起不来,等下一条消息再重建
143
137
  const platformPrompt = await deps.client.systemPrompt(deps.key);
144
- // 群聊保留普通工具;服务卡不暴露给模型。SDK 仍保留私聊校验,防止代码直接调用。
145
- const devTools = (options.initialState.tools ?? []).filter(tool => supportsServices || tool.name !== "show_service_card");
138
+ const devTools = options.initialState.tools ?? [];
146
139
  assertUniqueToolNames(devTools);
147
140
  const tools = devTools.map((tool) => dataAccessUsage.track(tool));
148
141
  const { log, key } = deps;
@@ -250,58 +243,7 @@ export async function createAgent(deps) {
250
243
  }
251
244
  deps.onEvent(agent, event);
252
245
  });
253
- const applyConfiguration = (config, serviceState) => {
254
- const nextModel = createModel(deps.gatewayUrl, config.model);
255
- if (typeof config.systemPrompt !== "string")
256
- throw new Error("configureTurn 需要返回完整 systemPrompt");
257
- const nextTools = config.tools ?? [];
258
- assertUniqueToolNames(nextTools);
259
- const tracked = nextTools.map(tool => dataAccessUsage.track(tool));
260
- // 全部校验后一起应用;平台提示与 DataAccess Gate 保留,历史不改。
261
- agent.state.model = nextModel;
262
- agent.state.systemPrompt = [platformPrompt, serviceState, config.systemPrompt].filter(part => part !== undefined).join("\n\n");
263
- agent.state.tools = tracked;
264
- agent.state.thinkingLevel = config.thinkingLevel ?? "off";
265
- toolByName.clear();
266
- for (const tool of tracked)
267
- toolByName.set(tool.name, tool);
268
- return nextModel;
269
- };
270
- return {
271
- agent, model, dataAccessUsage, errorReply: options.errorReply,
272
- invalidateCredential: () => service.invalidate(),
273
- prepareTurn: async () => {
274
- if (!supportsServices || !options.configureTurn)
275
- return agent.state.model;
276
- let credential;
277
- try {
278
- credential = await service.api.readCurrentCredential();
279
- }
280
- catch {
281
- // 查询未知不是未购买;不修改缓存或调用创作者的无凭证分支,也不复用上轮付费工具。
282
- log.warn("服务凭证暂时无法核验,本轮仅提供基础对话", { convoKey: key });
283
- return applyConfiguration({ ...options.initialState, tools: [] }, "平台服务状态:凭证校验暂不可用。");
284
- }
285
- return applyConfiguration(await options.configureTurn({ credential }));
286
- },
287
- handleServiceEvent: async (event) => {
288
- if (!supportsServices || event.convoKey !== deps.key)
289
- return;
290
- service.invalidate();
291
- if (event.type !== "credential_created" || !options.onCredentialCreated)
292
- return;
293
- let cursor;
294
- do {
295
- const page = await service.api.listCredentials({ state: "pending", cursor });
296
- const credential = page.items.find(item => item.credentialId === event.credentialId);
297
- if (credential) {
298
- await options.onCredentialCreated(credential);
299
- return;
300
- }
301
- cursor = page.nextCursor;
302
- } while (cursor);
303
- },
304
- };
246
+ return { agent, model, dataAccessUsage, errorReply: options.errorReply };
305
247
  }
306
248
  /**
307
249
  * 每次请求模型时接在历史末尾那条 user 消息的正文;现在的时间由 convertToLlm 按这条消息的 timestamp 拼在开头。
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ import type { AgentMessage, StreamFn } from "@earendil-works/pi-agent-core";
2
2
  import type { MLBClient, WidgetType } from "../mlbClient.ts";
3
3
  import type { Resource } from "../tools/resource.ts";
4
4
  import type { BuddyFactory, BuddyLogger, DataRequirement, ProactiveRun, ProactiveSkip, WidgetChangeRun } from "../types.ts";
5
- import type { ServiceEvent } from "../services/types.ts";
6
5
  import type { CompactionSnapshot } from "./compaction.ts";
7
6
  export interface ConversationHandleDeps {
8
7
  /** 平台会话键:p_ 私聊、g_ 群 */
@@ -39,7 +38,6 @@ export declare class ConversationHandle {
39
38
  private readonly writer;
40
39
  /** 懒建:第一次拉到消息时跑 factory 再 new */
41
40
  private agent;
42
- private created;
43
41
  /** 与主 Agent 相同的模型条目;Widget 快速二元判断用它发一条独立、无工具、低思考请求。 */
44
42
  private model;
45
43
  private dataAccessUsage;
@@ -85,10 +83,8 @@ export declare class ConversationHandle {
85
83
  snapshotForCompaction(): CompactionSnapshot | undefined;
86
84
  /** SSE message / welcome 到了:让 reader 拉一次,welcome 另记下会话刚建好。已退役的直接忽略 */
87
85
  notify(welcome?: boolean): void;
88
- /** 服务事件不启动模型回合;已关闭时拒绝确认,让持久事件在新会话重试。 */
89
- handleServiceEvent(event: ServiceEvent): Promise<void>;
90
- invalidateCredential(): void;
91
- private prepareTurn;
86
+ /** 平台发来的主动服务 Run:跑一轮主动回合。开过口(写过要给用户看的消息)就回 undefined——平台在第一条落库或拦下时就定了这次的结论;
87
+ * 一条都没写就回 skip 结果交给平台,出错 throw */
92
88
  runProactive(run: ProactiveRun): Promise<ProactiveSkip | undefined>;
93
89
  /** Widget 详情页关闭后的隐藏回合:不推 delta;模型确定要回复后才短暂打开思考态,[[SILENT]] 不打扰。 */
94
90
  runWidgetChange(run: WidgetChangeRun): Promise<"reply" | "silent" | "failed">;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@
3
3
  // 之后每批按空闲 / 忙碌 × 要不要开口四路分发;Widget 详情页变更领取后串行启动不可见回合,可回复或明确静默;
4
4
  // 回合(prompt 该答的消息、或从场合交代接着 continue → 把回合中排进队列的消息消化完 → 出错或一句话没说(发了等用户操作的卡算说过)就发 errorReply 兜底、兜底话也进历史 → 收尾把这一轮的历史按消息时间排好);
5
5
  // Agent 事件交给发平台的队列;close(先标退役、再打断回合、等它收尾)。
6
- // 服务事件仅在同一私聊中处理,群聊不因服务事件恢复或切换付费配置;对应《搭子付费服务与支付唤起》。
7
6
  // 不管:什么时候拉、游标、翻页与重试(readMLBMessages.ts)、Agent 怎么建(agent.ts)、拉回来的记录怎么分拣(history.ts)、压缩本身(compaction.ts)、
8
7
  // replying / delta / 写回怎么发(writeMLBMessage.ts)、HTTP 请求本身(mlbClient.ts)、
9
8
  // MLBMessage 与 AgentMessage 的换算(mlbMessageAgentMessageConverter.ts)、会话从哪来到哪去(server.ts 管 Map、空闲淘汰与 delete 事件)。
@@ -37,7 +36,6 @@ export class ConversationHandle {
37
36
  writer;
38
37
  /** 懒建:第一次拉到消息时跑 factory 再 new */
39
38
  agent;
40
- created;
41
39
  /** 与主 Agent 相同的模型条目;Widget 快速二元判断用它发一条独立、无工具、低思考请求。 */
42
40
  model;
43
41
  dataAccessUsage;
@@ -119,30 +117,8 @@ export class ConversationHandle {
119
117
  this._lastActivity = Date.now();
120
118
  this.reader.notify();
121
119
  }
122
- /** 服务事件不启动模型回合;已关闭时拒绝确认,让持久事件在新会话重试。 */
123
- async handleServiceEvent(event) {
124
- if (!this.deps.key.startsWith("p_") || event.convoKey !== this.deps.key)
125
- return;
126
- if (this._closed)
127
- throw new Error("服务事件的会话已关闭,等待恢复后重试");
128
- this.created?.invalidateCredential();
129
- if (!this.created && !await this.reader.sync())
130
- throw new Error("服务事件无法恢复会话");
131
- if (this._closed)
132
- throw new Error("服务事件的会话已关闭,等待恢复后重试");
133
- if (!this.created)
134
- throw new Error("服务事件未建立会话");
135
- await this.created.handleServiceEvent(event);
136
- }
137
- invalidateCredential() { this.created?.invalidateCredential(); }
138
- async prepareTurn() {
139
- if (!this.created)
140
- return;
141
- const model = await this.created.prepareTurn();
142
- this.model = model;
143
- this.identity = modelIdentity(model);
144
- this.imageInput = model.input.includes("image");
145
- }
120
+ /** 平台发来的主动服务 Run:跑一轮主动回合。开过口(写过要给用户看的消息)就回 undefined——平台在第一条落库或拦下时就定了这次的结论;
121
+ * 一条都没写就回 skip 结果交给平台,出错 throw */
146
122
  runProactive(run) {
147
123
  if (this.proactiveTask || this._busy)
148
124
  return Promise.resolve({ action: "skip", reasonCode: "user_recently_active" });
@@ -354,7 +330,6 @@ export class ConversationHandle {
354
330
  }, async () => {
355
331
  if (this._closed || this.deferredDuringProactive.length > 0)
356
332
  return;
357
- await this.prepareTurn();
358
333
  await agent.continue();
359
334
  while (!this._closed && !this.policyStopped && agent.hasQueuedMessages())
360
335
  await agent.continue();
@@ -463,7 +438,6 @@ export class ConversationHandle {
463
438
  async rebuild(records) {
464
439
  const created = await createAgent({
465
440
  ...this.deps,
466
- sourceMessage: () => this._busy && !this.proactiveRun ? this.replyTo || undefined : undefined,
467
441
  enqueueMessage: message => this.writer.enqueueMessage(message),
468
442
  onWaitingForUser: () => { this.spoke = true; },
469
443
  onPolicyStop: () => { this.policyStopped = true; },
@@ -473,7 +447,6 @@ export class ConversationHandle {
473
447
  return;
474
448
  const agent = created.agent;
475
449
  this.agent = agent;
476
- this.created = created;
477
450
  this.model = created.model;
478
451
  this.dataAccessUsage = created.dataAccessUsage;
479
452
  this.errorReply = created.errorReply;
@@ -516,7 +489,7 @@ export class ConversationHandle {
516
489
  }
517
490
  if (!this._busy) {
518
491
  if (shouldReply)
519
- this.round = this.runRound((agent) => agent.prompt(mlbMessagesToAgentMessages(theirs, this.identity, this.imageInput)));
492
+ this.round = this.runRound((agent) => agent.prompt(messages));
520
493
  else
521
494
  agent.state.messages.push(...messages);
522
495
  return;
@@ -551,9 +524,6 @@ export class ConversationHandle {
551
524
  const startedAt = Date.now();
552
525
  this.deps.log.info("回合开始", { convoKey: this.deps.key, transcript: roundStart });
553
526
  try {
554
- await this.prepareTurn();
555
- if (this._closed)
556
- return;
557
527
  if (start !== undefined)
558
528
  await start(agent);
559
529
  while (!this._closed && agent.hasQueuedMessages()) {
@@ -563,7 +533,6 @@ export class ConversationHandle {
563
533
  if (queued.length) {
564
534
  agent.clearSteeringQueue();
565
535
  this.policyStopped = false;
566
- await this.prepareTurn();
567
536
  await agent.prompt(queued);
568
537
  }
569
538
  else if (this.policyStopped) {