@my-life-buddies/buddy-runtime 0.0.1 → 0.0.3
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.
- package/README.md +47 -22
- package/dist/conversation/agent.d.ts +12 -5
- package/dist/conversation/agent.d.ts.map +1 -1
- package/dist/conversation/agent.js +60 -30
- package/dist/conversation/agent.js.map +1 -1
- package/dist/conversation/convert.d.ts +11 -11
- package/dist/conversation/convert.d.ts.map +1 -1
- package/dist/conversation/convert.js +51 -29
- package/dist/conversation/convert.js.map +1 -1
- package/dist/conversation/history.d.ts +19 -12
- package/dist/conversation/history.d.ts.map +1 -1
- package/dist/conversation/history.js +22 -11
- package/dist/conversation/history.js.map +1 -1
- package/dist/conversation/index.d.ts +23 -12
- package/dist/conversation/index.d.ts.map +1 -1
- package/dist/conversation/index.js +65 -36
- package/dist/conversation/index.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +30 -6
- package/dist/log.js.map +1 -1
- package/dist/mlbClient.d.ts +11 -2
- package/dist/mlbClient.d.ts.map +1 -1
- package/dist/mlbClient.js +44 -1
- package/dist/mlbClient.js.map +1 -1
- package/dist/model.d.ts +2 -2
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +5 -5
- package/dist/model.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +46 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/dataAccess.d.ts +43 -0
- package/dist/tools/dataAccess.d.ts.map +1 -0
- package/dist/tools/dataAccess.js +103 -0
- package/dist/tools/dataAccess.js.map +1 -0
- package/dist/tools/resource.d.ts +1 -1
- package/dist/tools/resource.d.ts.map +1 -1
- package/dist/tools/resource.js +4 -4
- package/dist/tools/resource.js.map +1 -1
- package/dist/types.d.ts +47 -11
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@ MLB 搭子运行时。基于 [`@earendil-works/pi-agent-core`](https://www.npmjs
|
|
|
5
5
|
## 安装
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install @my-life-buddies/buddy-runtime
|
|
8
|
+
npm install @my-life-buddies/buddy-runtime
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
要求 Node.js ≥ 22.19。
|
|
@@ -38,7 +38,7 @@ const planMenu: AgentTool<typeof PLAN_MENU_PARAMS, undefined> = {
|
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
await BuddyServer.start({
|
|
41
|
-
model: "kimi-k3", //
|
|
41
|
+
model: "kimi-k3", // 必填;可选值见开发者接口 GET /cli/models
|
|
42
42
|
buddy: () => ({
|
|
43
43
|
initialState: {
|
|
44
44
|
systemPrompt: "你是「小涂阿姨」——一位管做饭的阿姨……",
|
|
@@ -66,7 +66,7 @@ await BuddyServer.start({
|
|
|
66
66
|
|
|
67
67
|
| 参数 | 类型 | 说明 |
|
|
68
68
|
|---|---|---|
|
|
69
|
-
| `options.model` | `string
|
|
69
|
+
| `options.model` | `string`,必填 | 模型 id,取值见平台 `GET /cli/models`。进程内所有会话共用。没填,或 id 在运行时内置的模型目录中不存在时,启动失败 |
|
|
70
70
|
| `options.buddy` | `(conversation: Conversation) => BuddyOptions \| Promise<BuddyOptions>` | 搭子配置工厂。每场会话在第一条消息到达时调用一次 |
|
|
71
71
|
|
|
72
72
|
### `BuddyOptions`
|
|
@@ -84,15 +84,17 @@ type BuddyOptions =
|
|
|
84
84
|
|
|
85
85
|
| 字段 | 说明 |
|
|
86
86
|
|---|---|
|
|
87
|
-
| `initialState.systemPrompt` |
|
|
88
|
-
| `initialState.tools` | 工具列表,类型为 pi 的 `AgentTool`。`label` 为必填,用作用户可见的状态行文案(空字符串表示不显示);`execute` 返回值的 `details` 为必填(可为 `undefined
|
|
89
|
-
| `initialState.thinkingLevel` | 思考级别,默认 `off
|
|
90
|
-
| `transformContext` |
|
|
87
|
+
| `initialState.systemPrompt` | 系统提示。静态内容;每回合变化的信息不应写在这里。工程目录下有 `resources/` 时,运行时在末尾追加资料清单 |
|
|
88
|
+
| `initialState.tools` | 工具列表,类型为 pi 的 `AgentTool`。`label` 为必填,用作用户可见的状态行文案(空字符串表示不显示);`execute` 返回值的 `details` 为必填(可为 `undefined`);执行失败应直接抛出异常。工具名不得与内置工具或其他工具重复。先单独声明为 `AgentTool<typeof 参数 schema>` 再放入数组,`execute` 的参数才有类型;直接写在数组里时参数类型为 `unknown` |
|
|
89
|
+
| `initialState.thinkingLevel` | 思考级别,默认 `off`。模型不支持的级别在发请求前就近换成支持的一档。显式设了模型不支持的级别时,每场会话建立时打一条 warn |
|
|
90
|
+
| `transformContext` | 历史裁剪。平台下发的会话上下文是消息流里的记录,拿到的历史里已经有它 |
|
|
91
91
|
| `beforeToolCall` / `afterToolCall` / `shouldStopAfterTurn` / `prepareNextTurnWithContext` / `thinkingBudgets` / `toolExecution` | 原样传递给 pi |
|
|
92
92
|
|
|
93
93
|
密钥、会话历史、会话标识与插话策略由运行时统一管理,不对开发者开放。模型通过 `BuddyServer.start` 的 `model` 选择。
|
|
94
94
|
|
|
95
|
-
### `Conversation
|
|
95
|
+
### `Conversation`:给开发者调用的方法
|
|
96
|
+
|
|
97
|
+
工厂拿到的对象。上面的属性和方法由开发者在代码里调用,不会注册给模型;要让模型用到,开发者自己包成工具放进 `initialState.tools`,见下方 `remember` 的例子。
|
|
96
98
|
|
|
97
99
|
```ts
|
|
98
100
|
interface Conversation {
|
|
@@ -120,6 +122,7 @@ interface MemoryEntry {
|
|
|
120
122
|
const REMEMBER_PARAMS = Type.Object({ topic: Type.String(), text: Type.String() });
|
|
121
123
|
|
|
122
124
|
await BuddyServer.start({
|
|
125
|
+
model: "kimi-k3",
|
|
123
126
|
buddy: (conversation) => {
|
|
124
127
|
const remember: AgentTool<typeof REMEMBER_PARAMS, undefined> = {
|
|
125
128
|
name: "remember",
|
|
@@ -138,26 +141,47 @@ await BuddyServer.start({
|
|
|
138
141
|
|
|
139
142
|
完整示例见 [examples/aunt-tu/](examples/aunt-tu/):`taste_read` / `taste_write` 两个工具用 `memory` 记每个人爱吃什么、不爱吃什么。
|
|
140
143
|
|
|
141
|
-
|
|
144
|
+
`dataAccess.query` 按当前会话读取用户授权的数据。私聊只传 `datasets`;群聊还要传消息前缀里的稳定 `memberId`。平台逐 Dataset 返回 `available`、`notDeclared`、`notGranted`、`disabledInGroup` 或 `unavailable`,只有 `available` 带数据。会话键和真实用户身份由平台绑定,开发者不能传真实用户 ID。
|
|
142
145
|
|
|
143
|
-
|
|
146
|
+
### 内置工具:运行时注册给模型
|
|
144
147
|
|
|
145
|
-
|
|
148
|
+
以下工具由运行时注册到 Agent,排在开发者工具之前,由模型调用。开发者不需要注册,也不能再注册同名工具;系统提示中可按名称引用。
|
|
146
149
|
|
|
147
|
-
|
|
148
|
-
|
|
150
|
+
| 工具 | 何时注册 | 做什么 |
|
|
151
|
+
|---|---|---|
|
|
152
|
+
| `data_access_query` | 搭子声明过至少一个 Dataset | 按需读取当前会话用户授权的数据;单次最多 8 个 Dataset,响应上限 512 KiB |
|
|
153
|
+
| `widget_create` / `widget_write` / `widget_read` / `widget_delete` / `widget_send` | 搭子在平台上登记了小挂件类型 | 建小挂件、写 / 读 / 删记录、把小挂件发进聊天流 |
|
|
154
|
+
| `read_resource` | 工程目录下有 `resources/`,且其中有 `.md` | 按资料清单里的相对路径读一篇资料 |
|
|
149
155
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
DataAccess 真实数据仅在当前 Agent run 中可见;发生查询后,该 run 的平台 Tool 记录与长期 transcript 不保存 Tool 参数、Tool 原始结果和 thinking,只保留 Dataset ID、查询状态及最终给用户看的正文。
|
|
157
|
+
|
|
158
|
+
#### 资料
|
|
159
|
+
|
|
160
|
+
资料放在工程目录下的 `resources/` 里,是一篇篇 `.md` 文件。运行时自动让模型按需读取,开发者不需要写代码。
|
|
161
|
+
|
|
162
|
+
- 读哪些文件:进程启动时读一次 `resources/` 下全部 `.md`,包括子目录;跳过以 `.` 开头的文件与目录,以及 `node_modules`、`venv`、`.venv`、`__pycache__`;其他扩展名的文件忽略。资料改动后需重启进程。
|
|
163
|
+
- 模型看到什么:系统提示末尾追加一份资料清单,列出每篇资料相对 `resources/` 的路径;模型调用 `read_resource` 并传入清单中的路径,读到该篇全文。
|
|
164
|
+
- 没有资料时:`resources/` 不存在或其中没有 `.md`,不注册 `read_resource`,也不追加清单。
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
my-buddy/ 工程目录
|
|
168
|
+
├─ package.json
|
|
169
|
+
├─ resources/ 资料目录
|
|
170
|
+
│ └─ research/
|
|
171
|
+
│ └─ 01-writings.md 清单中写作 research/01-writings.md
|
|
172
|
+
└─ src/main.ts 入口脚本
|
|
159
173
|
```
|
|
160
174
|
|
|
175
|
+
完整示例见 [examples/stacy-sims/](examples/stacy-sims/)。
|
|
176
|
+
|
|
177
|
+
#### 小挂件
|
|
178
|
+
|
|
179
|
+
开发者通过平台 CLI 接口给搭子登记小挂件类型:`PUT /cli/buddies/:id/widget-types/:typeId/schema` 交 schema,每个模块写一句 `description` 给模型读,每条记录的形状是一份 JSON Schema;`PUT /cli/buddies/:id/widget-types/:typeId/page` 交展示页面,单个 HTML 文件。
|
|
180
|
+
|
|
181
|
+
运行时在第一场会话建立时拉一次 `GET /internal/v1/widget-types`,按拉到的类型注册五个 `widget_*` 工具,工具说明里附上各类型的模块与字段;一个类型都没登记时不注册。这场会话里已有哪些小挂件,由平台写进消息流的会话上下文告诉模型。
|
|
182
|
+
|
|
183
|
+
用法见 [examples/aunt-tu/](examples/aunt-tu/)。
|
|
184
|
+
|
|
161
185
|
## 环境变量
|
|
162
186
|
|
|
163
187
|
| 变量 | 说明 |
|
|
@@ -172,4 +196,5 @@ await BuddyServer.start({
|
|
|
172
196
|
## 开发
|
|
173
197
|
|
|
174
198
|
- `npm run dev`:以 `node --watch` 启动,文件变更后自动重启。停止时需终止整个进程树(`pkill -f "node --watch .* src/main.ts"`),仅终止子进程会被父进程重新拉起。
|
|
199
|
+
- 会话消息拉取遇到临时网络错误时会主动指数退避重试(1 秒起步、最高 30 秒);新的 SSE 通知会取消等待并立即重拉。
|
|
175
200
|
- 运行时仓库:`npm test`、`npm run typecheck`、`npm run build`。
|
|
@@ -2,7 +2,9 @@ import { Agent } from "@earendil-works/pi-agent-core";
|
|
|
2
2
|
import type { AgentEvent, StreamFn } from "@earendil-works/pi-agent-core";
|
|
3
3
|
import type { Api, Model } from "@earendil-works/pi-ai";
|
|
4
4
|
import type { MLBClient, WidgetType } from "../mlbClient.ts";
|
|
5
|
-
import
|
|
5
|
+
import { DataAccessUsageTracker } from "../tools/dataAccess.ts";
|
|
6
|
+
import type { Resource } from "../tools/resource.ts";
|
|
7
|
+
import type { BuddyFactory, BuddyLogger, DataRequirement } from "../types.ts";
|
|
6
8
|
export interface AgentDeps {
|
|
7
9
|
key: string;
|
|
8
10
|
buddyId: string;
|
|
@@ -12,13 +14,18 @@ export interface AgentDeps {
|
|
|
12
14
|
/** 搭子令牌:经 Agent 的 getApiKey 交给模型通道,变成 Authorization: Bearer 头 */
|
|
13
15
|
token: string;
|
|
14
16
|
widgetTypes: () => Promise<WidgetType[]>;
|
|
17
|
+
/** 搭子目录下 resources/ 里的资料;空数组就不装 read_resource、不接清单 */
|
|
18
|
+
resources: Resource[];
|
|
19
|
+
dataRequirements: () => Promise<DataRequirement[]>;
|
|
15
20
|
factory: BuddyFactory;
|
|
16
21
|
log: BuddyLogger;
|
|
17
|
-
/** 每次模型调用前现取平台 context 段;空就不插 */
|
|
18
|
-
contextOf: () => string | undefined;
|
|
19
22
|
/** Agent 事件的去处。pi 会等它返回,所以只能同步做事 */
|
|
20
23
|
onEvent: (agent: Agent, event: AgentEvent) => void;
|
|
21
24
|
}
|
|
22
|
-
/** 跑开发者工厂拿配置,叠上运行时预置,建 Agent
|
|
23
|
-
export
|
|
25
|
+
/** 跑开发者工厂拿配置,叠上运行时预置,建 Agent。开发者的工具名跟运行时的工具(小挂件、read_resource)重名或互相重名 → throw。 */
|
|
26
|
+
export interface CreatedAgent {
|
|
27
|
+
agent: Agent;
|
|
28
|
+
dataAccessUsage: DataAccessUsageTracker;
|
|
29
|
+
}
|
|
30
|
+
export declare function createAgent(deps: AgentDeps): Promise<CreatedAgent>;
|
|
24
31
|
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAa,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAErF,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAkB,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAA8B,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1G,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACzC,sDAAsD;IACtD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACnD,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,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,sBAAsB,CAAC;CACxC;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CA2GxE"}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
// 一场会话的 Agent 怎么建:运行时先把该填的填好,开发者的配置叠上去。
|
|
2
|
-
// 管:拼好交给开发者工厂的 Conversation(会话键、日志、绑好会话键的 memory
|
|
3
|
-
//
|
|
4
|
-
//
|
|
2
|
+
// 管:拼好交给开发者工厂的 Conversation(会话键、日志、绑好会话键的 memory / DataAccess),跑工厂拿配置;
|
|
3
|
+
// 运行时工具(DataAccess、小挂件、有资料时的 read_resource)排在开发者工具前面并查重名;有资料时把资料清单接在 systemPrompt 末尾;
|
|
4
|
+
// 开发者显式设的 thinkingLevel 这个模型不支持时打一条 warn,写明支持哪几档、实际会怎么发;
|
|
5
|
+
// 钩子叠加——开发者的 transformContext 包 try/catch 抛了用原历史;开发者的 beforeToolCall 包 try/catch 抛了按放行;其余直通;
|
|
6
|
+
// 模型调用日志只记规模,不打印消息、Tool 结果和请求体,避免用户对话与授权数据进入日志。
|
|
5
7
|
// 不管:Agent 建好之后的事(回合、事件分发在 index.ts)。
|
|
6
8
|
import { Agent } from "@earendil-works/pi-agent-core";
|
|
7
|
-
import {
|
|
9
|
+
import { clampThinkingLevel, getSupportedThinkingLevels } from "@earendil-works/pi-ai";
|
|
10
|
+
import { convertToLlm } from "./convert.js";
|
|
8
11
|
import { errorText } from "../log.js";
|
|
12
|
+
import { dataAccessTool, DataAccessUsageTracker } from "../tools/dataAccess.js";
|
|
13
|
+
import { readResourceTool, resourceCatalog } from "../tools/resource.js";
|
|
9
14
|
import { widgetTools } from "../tools/widgets.js";
|
|
10
|
-
/** 跑开发者工厂拿配置,叠上运行时预置,建 Agent。工具名跟小挂件工具重名或互相重名 → throw。 */
|
|
11
15
|
export async function createAgent(deps) {
|
|
16
|
+
const dataAccessUsage = new DataAccessUsageTracker();
|
|
12
17
|
const conversation = {
|
|
13
18
|
key: deps.key,
|
|
14
19
|
log: deps.log,
|
|
@@ -17,10 +22,19 @@ export async function createAgent(deps) {
|
|
|
17
22
|
write: (key, text) => deps.client.memoryWrite(deps.key, key, text),
|
|
18
23
|
delete: (key) => deps.client.memoryDelete(deps.key, key),
|
|
19
24
|
},
|
|
25
|
+
dataAccess: {
|
|
26
|
+
query: ({ datasets, memberId }) => dataAccessUsage.query(deps.client, deps.key, datasets, memberId),
|
|
27
|
+
},
|
|
20
28
|
};
|
|
21
29
|
const options = await deps.factory(conversation);
|
|
22
|
-
const types = await deps.widgetTypes();
|
|
23
|
-
const
|
|
30
|
+
const [types, requirements] = await Promise.all([deps.widgetTypes(), deps.dataRequirements()]);
|
|
31
|
+
const dataTools = requirements.length === 0 ? [] : [dataAccessTool(deps.client, deps.key, dataAccessUsage, requirements)];
|
|
32
|
+
const tools = [
|
|
33
|
+
...dataTools,
|
|
34
|
+
...widgetTools(deps.client, deps.key, types),
|
|
35
|
+
...(deps.resources.length > 0 ? [readResourceTool(deps.resources)] : []),
|
|
36
|
+
...(options.initialState.tools ?? []),
|
|
37
|
+
].map((tool) => dataAccessUsage.track(tool));
|
|
24
38
|
const seen = new Set();
|
|
25
39
|
for (const tool of tools) {
|
|
26
40
|
if (seen.has(tool.name))
|
|
@@ -28,52 +42,66 @@ export async function createAgent(deps) {
|
|
|
28
42
|
seen.add(tool.name);
|
|
29
43
|
}
|
|
30
44
|
const { log, key } = deps;
|
|
45
|
+
const thinkingLevel = options.initialState.thinkingLevel;
|
|
46
|
+
if (thinkingLevel !== undefined) {
|
|
47
|
+
const supported = getSupportedThinkingLevels(deps.model);
|
|
48
|
+
if (!supported.includes(thinkingLevel)) {
|
|
49
|
+
log.warn(`模型 ${deps.model.id} 不支持思考级别 ${thinkingLevel}`, {
|
|
50
|
+
convoKey: key,
|
|
51
|
+
supported,
|
|
52
|
+
// off:pi 不往请求体里放任何思考参数,上游按自己的缺省想(kimi-k3 缺省 max);
|
|
53
|
+
// 其它级别:pi-ai 发请求前用 clampThinkingLevel 就近换成这个模型支持的一档
|
|
54
|
+
sends: thinkingLevel === "off" ? "不发思考参数,上游按自己的缺省" : clampThinkingLevel(deps.model, thinkingLevel),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const catalog = resourceCatalog(deps.resources);
|
|
31
59
|
const devTransform = options.transformContext;
|
|
32
60
|
const devBefore = options.beforeToolCall;
|
|
61
|
+
const devAfter = options.afterToolCall;
|
|
33
62
|
const agent = new Agent({
|
|
34
63
|
streamFn: deps.streamFn,
|
|
35
64
|
getApiKey: () => deps.token,
|
|
36
65
|
sessionId: `buddy:${deps.buddyId}:${key}`,
|
|
37
66
|
initialState: {
|
|
38
67
|
model: deps.model,
|
|
39
|
-
|
|
68
|
+
// 资料清单是静态的,接在开发者人设末尾;没资料时 resourceCatalog 回空串,人设原样
|
|
69
|
+
systemPrompt: catalog === "" ? options.initialState.systemPrompt : `${options.initialState.systemPrompt}\n\n${catalog}`,
|
|
40
70
|
tools,
|
|
41
71
|
thinkingLevel: options.initialState.thinkingLevel ?? "off",
|
|
42
72
|
},
|
|
43
73
|
steeringMode: "all",
|
|
44
74
|
followUpMode: "all",
|
|
45
|
-
// 下面三个钩子按 pi
|
|
46
|
-
//
|
|
75
|
+
// 下面三个钩子按 pi 每次请求模型时的调用顺序排;只记录规模,不记录正文或请求体。
|
|
76
|
+
// 平台的场合交代是历史里的记录,不在这里插;这里只跑开发者的裁剪
|
|
47
77
|
transformContext: async (messages, signal) => {
|
|
48
|
-
log.info("transformContext 入参", { convoKey: key, messages });
|
|
78
|
+
log.info("transformContext 入参", { convoKey: key, messageCount: messages.length });
|
|
79
|
+
if (devTransform === undefined)
|
|
80
|
+
return messages;
|
|
49
81
|
let base = messages;
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
base = await devTransform(messages, signal);
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
log.warn("开发者的 transformContext 抛错,用原历史", { convoKey: key, error: errorText(e) });
|
|
56
|
-
base = messages;
|
|
57
|
-
}
|
|
58
|
-
log.info("开发者 transformContext 出参", { convoKey: key, messages: base });
|
|
82
|
+
try {
|
|
83
|
+
base = await devTransform(messages, signal);
|
|
59
84
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
85
|
+
catch (e) {
|
|
86
|
+
log.warn("开发者的 transformContext 抛错,用原历史", { convoKey: key, error: errorText(e) });
|
|
87
|
+
base = messages;
|
|
88
|
+
}
|
|
89
|
+
log.info("开发者 transformContext 出参", { convoKey: key, messageCount: base.length });
|
|
90
|
+
return base;
|
|
63
91
|
},
|
|
64
92
|
convertToLlm: (messages) => {
|
|
65
93
|
const llmMessages = convertToLlm(messages);
|
|
66
|
-
log.info("convertToLlm 出参", { convoKey: key,
|
|
94
|
+
log.info("convertToLlm 出参", { convoKey: key, messageCount: llmMessages.length });
|
|
67
95
|
return llmMessages;
|
|
68
96
|
},
|
|
69
97
|
// 只打日志、返回 undefined:返回别的值 pi-ai 会拿它顶替请求体发出去
|
|
70
|
-
onPayload: (
|
|
71
|
-
log.info("
|
|
98
|
+
onPayload: () => {
|
|
99
|
+
log.info("模型请求已构建", { convoKey: key });
|
|
72
100
|
return undefined;
|
|
73
101
|
},
|
|
74
102
|
beforeToolCall: devBefore === undefined
|
|
75
103
|
? undefined
|
|
76
|
-
: async (context, signal) => {
|
|
104
|
+
: async (context, signal) => dataAccessUsage.runForTool(context.toolCall.id, async () => {
|
|
77
105
|
try {
|
|
78
106
|
return await devBefore(context, signal);
|
|
79
107
|
}
|
|
@@ -81,14 +109,16 @@ export async function createAgent(deps) {
|
|
|
81
109
|
log.warn("开发者的 beforeToolCall 抛错,按放行", { convoKey: key, tool: context.toolCall.name, error: errorText(e) });
|
|
82
110
|
return undefined;
|
|
83
111
|
}
|
|
84
|
-
},
|
|
85
|
-
afterToolCall:
|
|
112
|
+
}),
|
|
113
|
+
afterToolCall: devAfter === undefined
|
|
114
|
+
? undefined
|
|
115
|
+
: (context, signal) => dataAccessUsage.runForTool(context.toolCall.id, () => devAfter(context, signal)),
|
|
86
116
|
shouldStopAfterTurn: options.shouldStopAfterTurn,
|
|
87
117
|
prepareNextTurnWithContext: options.prepareNextTurnWithContext,
|
|
88
118
|
thinkingBudgets: options.thinkingBudgets,
|
|
89
119
|
toolExecution: options.toolExecution,
|
|
90
120
|
});
|
|
91
121
|
agent.subscribe((event) => deps.onEvent(agent, event));
|
|
92
|
-
return agent;
|
|
122
|
+
return { agent, dataAccessUsage };
|
|
93
123
|
}
|
|
94
124
|
//# sourceMappingURL=agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
2
2
|
import type { AssistantMessage, Message, ToolResultMessage } from "@earendil-works/pi-ai";
|
|
3
|
-
import type { NoteMessage, OutgoingMessage
|
|
3
|
+
import type { MLBMessage, NoteMessage, OutgoingMessage } from "../types.ts";
|
|
4
4
|
/** 重建 assistant 消息时抄的模型身份(model.ts 的 modelIdentity 给) */
|
|
5
5
|
export interface ModelIdentity {
|
|
6
6
|
api: string;
|
|
@@ -9,15 +9,16 @@ export interface ModelIdentity {
|
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* 把一批平台记录换成 pi 的历史。跳过的:interrupted 的半截话、question / widget、空正文又没工具调用的搭子记录。
|
|
12
|
-
* 对方的 message 变 user(群里带成员前缀)、system 变 user(带「群里发生了一件事」)、messagesCard 拍平成 user
|
|
12
|
+
* 对方的 message 变 user(群里带成员前缀)、system 变 user(带「群里发生了一件事」)、messagesCard 拍平成 user、
|
|
13
|
+
* 平台的场合交代 context 原样变 user(开头自带「平台交代给你的情况」那句用法,不套前缀);
|
|
13
14
|
* 搭子的 message / checkin 变 assistant,tool 变 assistant + 每个调用一条 toolResult,note 变 note。
|
|
14
15
|
*/
|
|
15
|
-
export declare function toAgentMessages(records:
|
|
16
|
+
export declare function toAgentMessages(records: MLBMessage[], identity: ModelIdentity): AgentMessage[];
|
|
16
17
|
/**
|
|
17
18
|
* 不带工具调用的 assistant 消息写成 message 记录。
|
|
18
19
|
* 正常收尾的照写(带 thinking);error / aborted 收尾但已经说了半截的写成 interrupted;其余不写。
|
|
19
20
|
*/
|
|
20
|
-
export declare function outboundFromAssistant(m: AssistantMessage): OutgoingMessage | null;
|
|
21
|
+
export declare function outboundFromAssistant(m: AssistantMessage, omitThinking?: boolean): OutgoingMessage | null;
|
|
21
22
|
/**
|
|
22
23
|
* 带工具调用的 assistant 消息连同它的结果写成一条 tool 记录;每个调用的 summary 取工具的 label,没有 label 用名字。
|
|
23
24
|
* 没有工具调用的返回 null(那种走 outboundFromAssistant)。
|
|
@@ -25,7 +26,12 @@ export declare function outboundFromAssistant(m: AssistantMessage): OutgoingMess
|
|
|
25
26
|
export declare function outboundFromTurn(m: AssistantMessage, toolResults: ToolResultMessage[], tools: {
|
|
26
27
|
name: string;
|
|
27
28
|
label: string;
|
|
28
|
-
}[]): OutgoingMessage | null;
|
|
29
|
+
}[], dataAccessDetailsOf?: (toolCallId: string) => unknown, sensitiveRun?: boolean): OutgoingMessage | null;
|
|
30
|
+
/**
|
|
31
|
+
* Agent run 完成后,把内存 transcript 里的 DataAccess 原始结果换成状态摘要。
|
|
32
|
+
* run 内不能提前替换:模型在 Tool 后续一轮还需要读取真实数据。
|
|
33
|
+
*/
|
|
34
|
+
export declare function redactSensitiveRun(messages: AgentMessage[], runMessages: AgentMessage[], dataAccessDetailsOf?: (toolCallId: string) => unknown): AgentMessage[];
|
|
29
35
|
/** note 消息写成 note 记录 */
|
|
30
36
|
export declare function outboundFromNote(n: NoteMessage): OutgoingMessage;
|
|
31
37
|
/** assistant 消息里所有 thinking 块的推理原文拼起来;一个字都没有返回 undefined */
|
|
@@ -37,10 +43,4 @@ export declare function textOf(m: AssistantMessage): string;
|
|
|
37
43
|
* 返回的是新数组,合并出来的也是新对象,不改传进来的消息。
|
|
38
44
|
*/
|
|
39
45
|
export declare const convertToLlm: (messages: AgentMessage[]) => Message[];
|
|
40
|
-
/**
|
|
41
|
-
* 把平台随拉取下发的 context 段插进历史:找到末尾那段连续的 user(note 也算,它到模型那边就是 user),插在这段前面,
|
|
42
|
-
* 后面的 convertToLlm 会把它跟这段合并;末尾是 assistant / toolResult 时,往前找最后一段 user 插在它前面。
|
|
43
|
-
* context 为空原样返回;否则返回新数组,不改传进来的。
|
|
44
|
-
*/
|
|
45
|
-
export declare function injectContext(messages: AgentMessage[], context: string | undefined): AgentMessage[];
|
|
46
46
|
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/conversation/convert.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EACX,gBAAgB,EAEhB,OAAO,EAIP,iBAAiB,EAGjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAgB,WAAW,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/conversation/convert.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EACX,gBAAgB,EAEhB,OAAO,EAIP,iBAAiB,EAGjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAgB,UAAU,EAAe,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGvG,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACd;AA6BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,aAAa,GAAG,YAAY,EAAE,CAmC9F;AAgFD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,gBAAgB,EAAE,YAAY,UAAQ,GAAG,eAAe,GAAG,IAAI,CAQvG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,CAAC,EAAE,gBAAgB,EACnB,WAAW,EAAE,iBAAiB,EAAE,EAChC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EACxC,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,EACrD,YAAY,UAAQ,GAClB,eAAe,GAAG,IAAI,CAqBxB;AASD;;;GAGG;AAEH,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,YAAY,EAAE,EACxB,WAAW,EAAE,YAAY,EAAE,EAC3B,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,GACnD,YAAY,EAAE,CAqBhB;AAED,wBAAwB;AACxB,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,WAAW,GAAG,eAAe,CAEhE;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAMlE;AAED,mCAAmC;AACnC,wBAAgB,MAAM,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAKlD;AAYD;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,UAAU,YAAY,EAAE,KAAG,OAAO,EAa9D,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// 平台记录与 pi 消息之间的换算。只管形状换算,不碰网络、不碰 Agent、不管游标和幂等键。
|
|
2
2
|
// 入站:把 GET /internal/v1/messages 拉回来的记录换成 pi 的 AgentMessage(重建历史、灌对方的话都用它)。
|
|
3
3
|
// 出站:把 pi 跑出来的 assistant / toolResult / note 换成 POST /internal/v1/messages 的每条 body。
|
|
4
|
-
//
|
|
4
|
+
// 另外给 Agent 用的 convertToLlm 也在这:note 变 user、相邻 user 合并。
|
|
5
|
+
import { DATA_ACCESS_TOOL_NAME, SENSITIVE_RUN_TOOL_SUMMARY, dataAccessSummary, isDataAccessDetails } from "../tools/dataAccess.js";
|
|
5
6
|
/** 工具结果没回来(回合被中断)时,写给模型和平台的占位文本 */
|
|
6
7
|
const MISSING_TOOL_RESULT = "(工具结果未返回:回合被中断)";
|
|
7
8
|
/** system 记录换成 user 消息时加在正文前的说明 */
|
|
@@ -25,7 +26,8 @@ function emptyUsage() {
|
|
|
25
26
|
// —— 入站:平台记录 → pi AgentMessage
|
|
26
27
|
/**
|
|
27
28
|
* 把一批平台记录换成 pi 的历史。跳过的:interrupted 的半截话、question / widget、空正文又没工具调用的搭子记录。
|
|
28
|
-
* 对方的 message 变 user(群里带成员前缀)、system 变 user(带「群里发生了一件事」)、messagesCard 拍平成 user
|
|
29
|
+
* 对方的 message 变 user(群里带成员前缀)、system 变 user(带「群里发生了一件事」)、messagesCard 拍平成 user、
|
|
30
|
+
* 平台的场合交代 context 原样变 user(开头自带「平台交代给你的情况」那句用法,不套前缀);
|
|
29
31
|
* 搭子的 message / checkin 变 assistant,tool 变 assistant + 每个调用一条 toolResult,note 变 note。
|
|
30
32
|
*/
|
|
31
33
|
export function toAgentMessages(records, identity) {
|
|
@@ -38,6 +40,10 @@ export function toAgentMessages(records, identity) {
|
|
|
38
40
|
case "system":
|
|
39
41
|
out.push(userMessage(SYSTEM_EVENT_PREFIX + text, record.timestamp));
|
|
40
42
|
break;
|
|
43
|
+
case "context":
|
|
44
|
+
if (text)
|
|
45
|
+
out.push(userMessage(text, record.timestamp));
|
|
46
|
+
break;
|
|
41
47
|
case "messagesCard":
|
|
42
48
|
if (record.messagesCard)
|
|
43
49
|
out.push(userMessage(flattenCard(record.messagesCard, 1).join("\n"), record.timestamp));
|
|
@@ -145,21 +151,21 @@ function flattenCard(card, depth) {
|
|
|
145
151
|
* 不带工具调用的 assistant 消息写成 message 记录。
|
|
146
152
|
* 正常收尾的照写(带 thinking);error / aborted 收尾但已经说了半截的写成 interrupted;其余不写。
|
|
147
153
|
*/
|
|
148
|
-
export function outboundFromAssistant(m) {
|
|
154
|
+
export function outboundFromAssistant(m, omitThinking = false) {
|
|
149
155
|
if (m.content.some((block) => block.type === "toolCall"))
|
|
150
156
|
return null;
|
|
151
157
|
const text = textOf(m);
|
|
152
158
|
if (m.stopReason === "error" || m.stopReason === "aborted") {
|
|
153
159
|
return text ? { type: "message", text, interrupted: true } : null;
|
|
154
160
|
}
|
|
155
|
-
const thinking = thinkingOf(m);
|
|
161
|
+
const thinking = omitThinking ? undefined : thinkingOf(m);
|
|
156
162
|
return thinking === undefined ? { type: "message", text } : { type: "message", text, thinking };
|
|
157
163
|
}
|
|
158
164
|
/**
|
|
159
165
|
* 带工具调用的 assistant 消息连同它的结果写成一条 tool 记录;每个调用的 summary 取工具的 label,没有 label 用名字。
|
|
160
166
|
* 没有工具调用的返回 null(那种走 outboundFromAssistant)。
|
|
161
167
|
*/
|
|
162
|
-
export function outboundFromTurn(m, toolResults, tools) {
|
|
168
|
+
export function outboundFromTurn(m, toolResults, tools, dataAccessDetailsOf, sensitiveRun = false) {
|
|
163
169
|
const calls = m.content.filter((block) => block.type === "toolCall");
|
|
164
170
|
if (calls.length === 0)
|
|
165
171
|
return null;
|
|
@@ -170,16 +176,52 @@ export function outboundFromTurn(m, toolResults, tools) {
|
|
|
170
176
|
callId: call.id,
|
|
171
177
|
name: call.name,
|
|
172
178
|
summary: label || call.name,
|
|
173
|
-
arguments: call.arguments,
|
|
174
|
-
result: result === undefined
|
|
179
|
+
arguments: sensitiveRun ? undefined : call.arguments,
|
|
180
|
+
result: result === undefined
|
|
181
|
+
? MISSING_TOOL_RESULT
|
|
182
|
+
: persistedToolResult(call.name, result, dataAccessDetailsOf?.(call.id), sensitiveRun),
|
|
175
183
|
};
|
|
176
184
|
});
|
|
177
|
-
const thinking = thinkingOf(m);
|
|
178
|
-
const record = { type: "tool", text: textOf(m), toolCalls };
|
|
185
|
+
const thinking = sensitiveRun ? undefined : thinkingOf(m);
|
|
186
|
+
const record = { type: "tool", text: sensitiveRun ? "" : textOf(m), toolCalls };
|
|
179
187
|
if (thinking !== undefined)
|
|
180
188
|
record.thinking = thinking;
|
|
181
189
|
return record;
|
|
182
190
|
}
|
|
191
|
+
/** DataAccess 的真实 Tool 结果只给当前模型回合看;写平台时只留 Dataset ID 与状态。 */
|
|
192
|
+
function persistedToolResult(toolName, result, trackedDetails, sensitiveRun) {
|
|
193
|
+
const details = trackedDetails ?? result.details;
|
|
194
|
+
if (toolName === DATA_ACCESS_TOOL_NAME || isDataAccessDetails(details))
|
|
195
|
+
return dataAccessSummary(details);
|
|
196
|
+
return sensitiveRun ? SENSITIVE_RUN_TOOL_SUMMARY : resultText(result);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Agent run 完成后,把内存 transcript 里的 DataAccess 原始结果换成状态摘要。
|
|
200
|
+
* run 内不能提前替换:模型在 Tool 后续一轮还需要读取真实数据。
|
|
201
|
+
*/
|
|
202
|
+
export function redactSensitiveRun(messages, runMessages, dataAccessDetailsOf) {
|
|
203
|
+
const currentRun = new Set(runMessages);
|
|
204
|
+
return messages.map((message) => {
|
|
205
|
+
if (message.role === "assistant" && currentRun.has(message)) {
|
|
206
|
+
const hasToolCall = message.content.some((block) => block.type === "toolCall");
|
|
207
|
+
return {
|
|
208
|
+
...message,
|
|
209
|
+
content: message.content
|
|
210
|
+
.filter((block) => block.type !== "thinking" && (!hasToolCall || block.type === "toolCall"))
|
|
211
|
+
.map((block) => (block.type === "toolCall" ? { ...block, arguments: {} } : block)),
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
if (message.role !== "toolResult" || !currentRun.has(message))
|
|
215
|
+
return message;
|
|
216
|
+
const trackedDetails = dataAccessDetailsOf?.(message.toolCallId);
|
|
217
|
+
const details = isDataAccessDetails(trackedDetails) ? trackedDetails : isDataAccessDetails(message.details) ? message.details : undefined;
|
|
218
|
+
return {
|
|
219
|
+
...message,
|
|
220
|
+
content: [{ type: "text", text: details === undefined ? SENSITIVE_RUN_TOOL_SUMMARY : dataAccessSummary(details) }],
|
|
221
|
+
details,
|
|
222
|
+
};
|
|
223
|
+
});
|
|
224
|
+
}
|
|
183
225
|
/** note 消息写成 note 记录 */
|
|
184
226
|
export function outboundFromNote(n) {
|
|
185
227
|
return { type: "note", text: n.text };
|
|
@@ -252,24 +294,4 @@ function mergeUsers(a, b) {
|
|
|
252
294
|
function userBlocks(m) {
|
|
253
295
|
return typeof m.content === "string" ? [{ type: "text", text: m.content }] : m.content;
|
|
254
296
|
}
|
|
255
|
-
/**
|
|
256
|
-
* 把平台随拉取下发的 context 段插进历史:找到末尾那段连续的 user(note 也算,它到模型那边就是 user),插在这段前面,
|
|
257
|
-
* 后面的 convertToLlm 会把它跟这段合并;末尾是 assistant / toolResult 时,往前找最后一段 user 插在它前面。
|
|
258
|
-
* context 为空原样返回;否则返回新数组,不改传进来的。
|
|
259
|
-
*/
|
|
260
|
-
export function injectContext(messages, context) {
|
|
261
|
-
if (!context)
|
|
262
|
-
return messages;
|
|
263
|
-
let last = messages.length - 1;
|
|
264
|
-
while (last >= 0 && !isUserSide(messages[last]))
|
|
265
|
-
last--;
|
|
266
|
-
let start = last < 0 ? messages.length : last;
|
|
267
|
-
while (start > 0 && isUserSide(messages[start - 1]))
|
|
268
|
-
start--;
|
|
269
|
-
const injected = userMessage(context, Date.now());
|
|
270
|
-
return [...messages.slice(0, start), injected, ...messages.slice(start)];
|
|
271
|
-
}
|
|
272
|
-
function isUserSide(m) {
|
|
273
|
-
return m.role === "user" || m.role === "note";
|
|
274
|
-
}
|
|
275
297
|
//# sourceMappingURL=convert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/conversation/convert.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/conversation/convert.ts"],"names":[],"mappings":"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"}
|