actoviq-agent-sdk 0.1.8 → 0.1.9
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-zh.md +27 -527
- package/README.md +25 -808
- package/dist/src/config/resolveRuntimeConfig.d.ts.map +1 -1
- package/dist/src/config/resolveRuntimeConfig.js +13 -22
- package/dist/src/config/resolveRuntimeConfig.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/parity/actoviqBridgeSdk.d.ts.map +1 -1
- package/dist/src/parity/actoviqBridgeSdk.js +0 -2
- package/dist/src/parity/actoviqBridgeSdk.js.map +1 -1
- package/dist/src/runtime/actoviqSkills.d.ts +48 -0
- package/dist/src/runtime/actoviqSkills.d.ts.map +1 -0
- package/dist/src/runtime/actoviqSkills.js +621 -0
- package/dist/src/runtime/actoviqSkills.js.map +1 -0
- package/dist/src/runtime/agentClient.d.ts +16 -1
- package/dist/src/runtime/agentClient.d.ts.map +1 -1
- package/dist/src/runtime/agentClient.js +266 -4
- package/dist/src/runtime/agentClient.js.map +1 -1
- package/dist/src/runtime/agentSession.d.ts +4 -0
- package/dist/src/runtime/agentSession.d.ts.map +1 -1
- package/dist/src/runtime/agentSession.js +6 -0
- package/dist/src/runtime/agentSession.js.map +1 -1
- package/dist/src/runtime/messageUtils.d.ts +2 -1
- package/dist/src/runtime/messageUtils.d.ts.map +1 -1
- package/dist/src/runtime/messageUtils.js +12 -0
- package/dist/src/runtime/messageUtils.js.map +1 -1
- package/dist/src/types.d.ts +79 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/package.json +2 -1
package/README-zh.md
CHANGED
|
@@ -1,569 +1,69 @@
|
|
|
1
|
-
|
|
1
|
+
# Actoviq Agent SDK
|
|
2
2
|
|
|
3
3
|
[](https://github.com/DeconBear/actoviq-agent-sdk/actions/workflows/ci.yml)
|
|
4
4
|
[](https://github.com/DeconBear/actoviq-agent-sdk/actions/workflows/publish-npm.yml)
|
|
5
5
|
[](https://www.npmjs.com/package/actoviq-agent-sdk)
|
|
6
6
|
|
|
7
|
-
[English](./README.md) | [
|
|
7
|
+
[English](./README.md) | [中文](./README-zh.md)
|
|
8
8
|
|
|
9
|
-
Actoviq Agent SDK
|
|
9
|
+
Actoviq Agent SDK 是一个实验性的 TypeScript Agent SDK,支持 clean SDK 路线、MCP 集成、memory / compact helper,以及可选的 runtime bridge 路线。
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
当前仓库仍在持续开发中,API 和运行时行为后续可能继续调整。欢迎提交 Issue 和 PR。
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
鏈」鐩噰鐢?[MIT License](./LICENSE) 寮€婧愬崗璁€?
|
|
16
|
-
|
|
17
|
-
## 椤圭洰浜偣
|
|
18
|
-
|
|
19
|
-
- 鎻愪緵 Node.js / TypeScript agent SDK锛屽寘鍚?`run()`銆乣stream()`銆乻ession銆乼ools 鍜?MCP 鏀寔
|
|
20
|
-
- 鎻愪緵 Actoviq Runtime bridge锛屽彲澶嶇敤 built-in tools銆乻kills銆乻ubagents 鍜屽師鐢?session/context 琛屼负
|
|
21
|
-
- 鎻愪緵涓庝笂娓?session-memory / compact 杈圭晫璇箟瀵归綈鐨?memory 涓?compact state helper
|
|
22
|
-
- 鎻愪緵 buddy / companion API锛屽彲鐢ㄤ簬瀛靛寲銆侀潤闊炽€佹姎鎽革紝浠ュ強鐢熸垚 companion prompt context
|
|
23
|
-
- 鍦?vendored 闈?TUI runtime 涔嬩笂鎻愪緵鏇村共鍑€鐨勫澶?SDK 琛ㄩ潰
|
|
24
|
-
- 鎻愪緵浜や簰寮忔祦寮忕ず渚嬶紝渚夸簬鏈湴璋冭瘯 agent
|
|
25
|
-
- 鎸佺画琛ラ綈 workspace 绠$悊銆佹洿娣卞眰 subagent API锛屼互鍙婄鏈変緷璧栨浛浠?
|
|
26
|
-
|
|
27
|
-
## 蹇€熷紑濮?
|
|
28
|
-
|
|
29
|
-
### 1. 瀹夎渚濊禆
|
|
13
|
+
## 安装
|
|
30
14
|
|
|
31
15
|
```bash
|
|
32
|
-
npm install
|
|
16
|
+
npm install actoviq-agent-sdk zod
|
|
33
17
|
```
|
|
34
18
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
鏈湴绀轰緥榛樿璇诲彇杩欎釜鏂囦欢锛?
|
|
19
|
+
本地示例默认读取:
|
|
38
20
|
|
|
39
21
|
```text
|
|
40
22
|
~/.actoviq/settings.json
|
|
41
23
|
```
|
|
42
24
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
```powershell
|
|
46
|
-
New-Item -ItemType Directory -Force $HOME\.actoviq | Out-Null
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### 3. 杩愯鍩虹绀轰緥
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
npm run example:quickstart
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### 4. 鍚姩浜や簰寮?agent 绀轰緥
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
npm run example:actoviq-interactive-agent
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
瀹冧細鍚姩涓€涓甫娴佸紡杈撳嚭銆佸伐鍏疯皟鐢ㄨ兘鍔涘拰鏃犻檺寰幆浼氳瘽鐨勪氦浜掑紡 REPL锛岀洿鍒颁綘涓诲姩閫€鍑恒€?
|
|
62
|
-
|
|
63
|
-
### 5. 鏌ョ湅 memory / compact state 绀轰緥
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
npm run example:actoviq-memory
|
|
67
|
-
npm run example:actoviq-session-memory
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## 涓€鐪肩湅鎳傝繖涓粨搴?
|
|
71
|
-
|
|
72
|
-
杩欎釜浠撳簱鐜板湪涓昏鎻愪緵涓ゆ潯浣跨敤璺緞锛?
|
|
73
|
-
|
|
74
|
-
1. 鐢ㄤ簬涓氬姟闆嗘垚鐨勫共鍑€ SDK 灞?
|
|
75
|
-
2. 鐢ㄤ簬澶嶇敤 Actoviq 鍘熺敓闈?TUI agent 琛屼负鐨?runtime bridge 灞?
|
|
76
|
-
|
|
77
|
-
褰撳墠宸茬粡鍙敤鐨勮兘鍔涘寘鎷細
|
|
78
|
-
|
|
79
|
-
- 鍩轰簬 Zod 鐨勬湰鍦板伐鍏峰畾涔?
|
|
80
|
-
- 鏈湴銆乻tdio銆乻treamable HTTP 涓夌被 MCP 鎺ュ叆
|
|
81
|
-
- 鎸佷箙鍖?session
|
|
82
|
-
- bridge runtime introspection
|
|
83
|
-
- memory 璁剧疆銆乻ession-memory prompt銆乧ompact state 妫€鏌?helper
|
|
84
|
-
- vendored runtime 鏂囦欢宸ュ叿锛歚Read`銆乣Write`銆乣Edit`銆乣Glob`銆乣Grep`
|
|
85
|
-
- bridge runtime 鐨?built-in tools銆乻kills 鍜?subagents
|
|
86
|
-
|
|
87
|
-
## 浣滀负搴撳畨瑁?
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
npm install actoviq-agent-sdk zod
|
|
91
|
-
```
|
|
25
|
+
如果你想用自己的 JSON 配置文件,也可以先调用 `loadJsonConfigFile(...)`。
|
|
92
26
|
|
|
93
|
-
##
|
|
94
|
-
|
|
95
|
-
```ts
|
|
96
|
-
import { z } from 'zod';
|
|
97
|
-
import { createAgentSdk, loadDefaultActoviqSettings, tool } from 'actoviq-agent-sdk';
|
|
98
|
-
|
|
99
|
-
await loadDefaultActoviqSettings();
|
|
100
|
-
const sdk = await createAgentSdk();
|
|
101
|
-
|
|
102
|
-
const addNumbers = tool(
|
|
103
|
-
{
|
|
104
|
-
name: 'add_numbers',
|
|
105
|
-
description: 'Add two numbers together.',
|
|
106
|
-
inputSchema: z.object({
|
|
107
|
-
a: z.number(),
|
|
108
|
-
b: z.number(),
|
|
109
|
-
}),
|
|
110
|
-
},
|
|
111
|
-
async ({ a, b }) => ({ sum: a + b }),
|
|
112
|
-
);
|
|
113
|
-
|
|
114
|
-
const result = await sdk.run('Please use the add_numbers tool to calculate 19 + 23.', {
|
|
115
|
-
tools: [addNumbers],
|
|
116
|
-
systemPrompt: 'Use the provided tools whenever they are relevant.',
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
console.log(result.text);
|
|
120
|
-
await sdk.close();
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
## 鏍稿績绀轰緥
|
|
124
|
-
|
|
125
|
-
### 澶氳疆浼氳瘽绀轰緥
|
|
27
|
+
## 快速启动
|
|
126
28
|
|
|
127
29
|
```ts
|
|
128
30
|
import { createAgentSdk, loadDefaultActoviqSettings } from 'actoviq-agent-sdk';
|
|
129
31
|
|
|
130
32
|
await loadDefaultActoviqSettings();
|
|
131
|
-
const sdk = await createAgentSdk();
|
|
132
|
-
const session = await sdk.createSession({ title: 'Demo Session' });
|
|
133
|
-
|
|
134
|
-
await session.send('Remember that my project codename is Sparrow.');
|
|
135
|
-
const reply = await session.send('What is my project codename?');
|
|
136
|
-
|
|
137
|
-
console.log(reply.text);
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
### 寰幆娴佸紡绀轰緥
|
|
141
33
|
|
|
142
|
-
```ts
|
|
143
|
-
import { createAgentSdk, loadDefaultActoviqSettings } from 'actoviq-agent-sdk';
|
|
144
|
-
|
|
145
|
-
await loadDefaultActoviqSettings();
|
|
146
34
|
const sdk = await createAgentSdk();
|
|
147
35
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
const session = await sdk.createSession({ title: 'Stream Loop Example' });
|
|
155
|
-
|
|
156
|
-
for (const prompt of prompts) {
|
|
157
|
-
const stream = session.stream(prompt);
|
|
158
|
-
|
|
159
|
-
for await (const event of stream) {
|
|
160
|
-
if (event.type === 'response.text.delta') {
|
|
161
|
-
process.stdout.write(event.delta);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
const result = await stream.result;
|
|
166
|
-
console.log('\nfinal:', result.text);
|
|
36
|
+
try {
|
|
37
|
+
const result = await sdk.run('请用一句话做自我介绍。');
|
|
38
|
+
console.log(result.text);
|
|
39
|
+
} finally {
|
|
40
|
+
await sdk.close();
|
|
167
41
|
}
|
|
168
|
-
|
|
169
|
-
await sdk.close();
|
|
170
42
|
```
|
|
171
43
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
```ts
|
|
175
|
-
import { createAgentSdk, loadDefaultActoviqSettings } from 'actoviq-agent-sdk';
|
|
176
|
-
|
|
177
|
-
await loadDefaultActoviqSettings();
|
|
178
|
-
const sdk = await createAgentSdk();
|
|
179
|
-
|
|
180
|
-
const session = await sdk.createSession({ title: 'Session Memory Demo' });
|
|
181
|
-
await session.send('We should bump package.json before tagging the next release.');
|
|
182
|
-
await session.send('We also want CI green and concise release notes before publish.');
|
|
183
|
-
|
|
184
|
-
const extraction = await session.extractMemory();
|
|
185
|
-
const compactState = await session.compactState({
|
|
186
|
-
includeSessionMemory: true,
|
|
187
|
-
includeSummaryMessage: true,
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
console.log(extraction);
|
|
191
|
-
console.log(compactState.runtimeState);
|
|
192
|
-
console.log(compactState.sessionMemory?.content);
|
|
193
|
-
```
|
|
194
|
-
### Buddy 绀轰緥
|
|
195
|
-
|
|
196
|
-
```ts
|
|
197
|
-
import { createActoviqBuddyApi } from 'actoviq-agent-sdk';
|
|
198
|
-
|
|
199
|
-
const buddy = createActoviqBuddyApi({
|
|
200
|
-
configPath: './buddy-settings.json',
|
|
201
|
-
userId: 'demo-user',
|
|
202
|
-
});
|
|
203
|
-
|
|
204
|
-
const companion = await buddy.hatch({
|
|
205
|
-
name: 'Orbit',
|
|
206
|
-
personality: 'curious, calm, and observant',
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
console.log(companion);
|
|
210
|
-
console.log(await buddy.pet());
|
|
211
|
-
console.log(await buddy.getPromptContext());
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
浠撳簱鍐呭彲鐩存帴杩愯锛?
|
|
215
|
-
|
|
216
|
-
```bash
|
|
217
|
-
npm run example:actoviq-buddy
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
## 浜や簰寮?Agent 绀轰緥
|
|
221
|
-
|
|
222
|
-
浠撳簱涓寘鍚竴涓熀浜?bridge 鐨勪氦浜掑紡绀轰緥锛屽叿澶囷細
|
|
223
|
-
|
|
224
|
-
- 娴佸紡鍥炵瓟
|
|
225
|
-
- 鍐呯疆宸ュ叿璁块棶鑳藉姏
|
|
226
|
-
- vendored runtime 鎻愪緵鐨?skills 鍜?subagents
|
|
227
|
-
- 鍙湪浠g爜涓洿鎺ヨ缃伐浣滅┖闂磋矾寰?
|
|
228
|
-
- 鍙湪浠g爜涓洿鎺ヨ缃?JSON 閰嶇疆璺緞
|
|
229
|
-
- 鏃犻檺寰幆锛岀洿鍒扮敤鎴蜂富鍔ㄩ€€鍑?
|
|
230
|
-
|
|
231
|
-
鍚姩鍛戒护锛?
|
|
44
|
+
运行仓库自带示例:
|
|
232
45
|
|
|
233
46
|
```bash
|
|
47
|
+
npm run example:quickstart
|
|
234
48
|
npm run example:actoviq-interactive-agent
|
|
235
49
|
```
|
|
236
50
|
|
|
237
|
-
|
|
238
|
-
[`examples/actoviq-interactive-agent.ts`](./examples/actoviq-interactive-agent.ts)
|
|
239
|
-
|
|
240
|
-
```ts
|
|
241
|
-
const WORKSPACE_PATH = process.cwd();
|
|
242
|
-
const JSON_CONFIG_PATH = path.resolve(
|
|
243
|
-
process.cwd(),
|
|
244
|
-
'examples',
|
|
245
|
-
'interactive-agent.settings.local.json',
|
|
246
|
-
);
|
|
247
|
-
```
|
|
51
|
+
## 教程入口
|
|
248
52
|
|
|
249
|
-
|
|
53
|
+
- English tutorial: [docs/en/README.md](./docs/en/README.md)
|
|
54
|
+
- 中文教程: [docs/zh/README.md](./docs/zh/README.md)
|
|
250
55
|
|
|
251
|
-
|
|
252
|
-
- `examples/interactive-agent.settings.local.json`锛氫粎渚涙湰鏈鸿皟璇曚娇鐢ㄧ殑鏈湴閰嶇疆鏂囦欢
|
|
56
|
+
如果你想直接运行一个带流式输出和工具调用的终端聊天程序,先看:
|
|
253
57
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
## Runtime Bridge
|
|
257
|
-
|
|
258
|
-
浣犱篃鍙互鐩存帴閫氳繃鏈?SDK 璋冭捣 vendored 鐨勯潪 TUI Actoviq Runtime銆?
|
|
259
|
-
杩欏眰 bridge 澶嶇敤浜嗕笂娓?headless CLI锛屽洜姝や細甯︿笂鍐呯疆宸ュ叿姹犮€乻kills銆乻ubagents锛屼互鍙婂師鐢?session/context 琛屼负銆?
|
|
260
|
-
|
|
261
|
-
```ts
|
|
262
|
-
import { createActoviqBridgeSdk, loadDefaultActoviqSettings } from 'actoviq-agent-sdk';
|
|
263
|
-
|
|
264
|
-
await loadDefaultActoviqSettings();
|
|
265
|
-
|
|
266
|
-
const sdk = await createActoviqBridgeSdk({
|
|
267
|
-
workDir: process.cwd(),
|
|
268
|
-
maxTurns: 4,
|
|
269
|
-
});
|
|
270
|
-
|
|
271
|
-
const result = await sdk.run(
|
|
272
|
-
'Use Actoviq Runtime tools to inspect the examples directory, then summarize examples/quickstart.ts.',
|
|
273
|
-
);
|
|
274
|
-
|
|
275
|
-
console.log(result.initEvent?.agents);
|
|
276
|
-
console.log(result.initEvent?.skills);
|
|
277
|
-
console.log(result.sessionId);
|
|
278
|
-
console.log(result.text);
|
|
279
|
-
console.log(result.events.length);
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
Bridge 璇存槑锛?
|
|
283
|
-
|
|
284
|
-
- 瀹冮€氳繃 Bun 鎵ц vendored 鐨?Actoviq Runtime CLI bundle
|
|
285
|
-
- 浼氳嚜鍔ㄦ敞鍏ョ敱 `loadJsonConfigFile(...)` 鎴?`loadDefaultActoviqSettings()` 鍔犺浇鐨勭幆澧冨彉閲?
|
|
286
|
-
- 濡傛灉绯荤粺閲屽彲鐢?`rg`锛宐ridge 浼氫紭鍏堜娇鐢ㄧ郴缁?`rg`锛屼繚璇?`Glob` 鍜?`Grep` 鍦ㄧ己灏?bundled ripgrep 浜岃繘鍒舵椂渚濇棫鍙伐浣?
|
|
287
|
-
|
|
288
|
-
## Agent / Skill Helper
|
|
289
|
-
|
|
290
|
-
bridge SDK 鐜板湪琛ヤ笂浜嗘洿鐩存帴鐨勯珮灞?helper锛屼笉闇€瑕佷綘姣忔鎵嬪姩鎷?`agent` 鍙傛暟鎴?slash command銆?
|
|
291
|
-
|
|
292
|
-
```ts
|
|
293
|
-
import { createActoviqBridgeSdk, loadDefaultActoviqSettings } from 'actoviq-agent-sdk';
|
|
294
|
-
|
|
295
|
-
await loadDefaultActoviqSettings();
|
|
296
|
-
const sdk = await createActoviqBridgeSdk({ workDir: process.cwd() });
|
|
297
|
-
|
|
298
|
-
const reviewer = sdk.useAgent('general-purpose');
|
|
299
|
-
const reviewResult = await reviewer.run('Explain what this repository is for.');
|
|
300
|
-
|
|
301
|
-
const debugSkill = sdk.useSkill('debug');
|
|
302
|
-
const debugResult = await debugSkill.run(
|
|
303
|
-
'briefly explain what kinds of debugging help this runtime can provide without printing secrets, tokens, or full config values',
|
|
304
|
-
);
|
|
305
|
-
|
|
306
|
-
const compactResult = await sdk.context.compact('summarize current progress');
|
|
307
|
-
const runtimeCatalog = await sdk.getRuntimeCatalog();
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
褰撳墠鍙互鐩存帴浣跨敤锛?
|
|
311
|
-
|
|
312
|
-
- `sdk.agents.list()`
|
|
313
|
-
- `sdk.agents.run(...)`
|
|
314
|
-
- `sdk.skills.list()`
|
|
315
|
-
- `sdk.skills.listMetadata()`
|
|
316
|
-
- `sdk.skills.run(...)`
|
|
317
|
-
- `sdk.tools.list()`
|
|
318
|
-
- `sdk.tools.listMetadata()`
|
|
319
|
-
- `sdk.slashCommands.list()`
|
|
320
|
-
- `sdk.slashCommands.listMetadata()`
|
|
321
|
-
- `sdk.getRuntimeCatalog()`
|
|
322
|
-
- `sdk.runWithAgent(...)`
|
|
323
|
-
- `sdk.runSkill(...)`
|
|
324
|
-
- `sdk.sessions.continueMostRecent(...)`
|
|
325
|
-
- `sdk.sessions.fork(...)`
|
|
326
|
-
- `session.runSkill(...)`
|
|
327
|
-
- `session.compact(...)`
|
|
328
|
-
- `session.info()`
|
|
329
|
-
- `session.messages()`
|
|
330
|
-
- `session.fork(...)`
|
|
331
|
-
|
|
332
|
-
## Memory / Compact Helper
|
|
333
|
-
|
|
334
|
-
SDK 鐜板湪涔熸彁渚涗簡鍙鐢ㄧ殑 memory / compact state helper锛岃璁′笂瀵归綈涓婃父
|
|
335
|
-
`claude-code` 鐨?session-memory 涓?compact boundary 璇箟銆傝繖鏍锋垜浠彲浠ョ洿鎺ユ鏌?`.actoviq` 涓嬬殑 memory 璺緞銆乻ession-memory 妯℃澘涓?prompt銆乧ompact 杈圭晫鍘嗗彶锛?浠ュ強褰撳墠鏄惁婊¤冻 session-memory 鎻愬彇鎴?compaction 鐨勯槇鍊兼潯浠讹紝鍚屾椂涔熻ˉ涓?relevant memory 鐨?scan / select / surface helper銆?
|
|
336
|
-
鍦ㄦ爣鍑?SDK 璺緞涓嬶紝褰?auto memory 鎵撳紑鏃讹紝SDK 鐜板湪涔熶細鍦ㄦ瘡涓敤鎴?turn 寮€濮嬫椂
|
|
337
|
-
鑷姩鎶?relevant memories 浣滀负 meta reminder 娉ㄥ叆锛屽苟鍦?session 鍐呭宸茬粡 surfacing
|
|
338
|
-
杩囩殑 memory 鍋氬幓閲嶅拰瀛楄妭棰勭畻鎺у埗銆?
|
|
339
|
-
Session-based 标准 SDK 现在也补上了更完整的 session-memory 自动提取链路:
|
|
340
|
-
|
|
341
|
-
- 对话达到阈值后会自动初始化 session memory
|
|
342
|
-
- 提取判断会综合 token 增长、tool call 活动以及自然 turn break
|
|
343
|
-
- 满足条件的 session turn 结束后会自动刷新 summary.md
|
|
344
|
-
- 也可以通过 `session.extractMemory()` 手动强制刷新
|
|
345
|
-
- `session.compactState()` 会把文件系统 compact state 和 runtime 提取状态一起返回
|
|
346
|
-
|
|
347
|
-
```ts
|
|
348
|
-
import {
|
|
349
|
-
createActoviqMemoryApi,
|
|
350
|
-
loadDefaultActoviqSettings,
|
|
351
|
-
} from 'actoviq-agent-sdk';
|
|
352
|
-
|
|
353
|
-
await loadDefaultActoviqSettings();
|
|
354
|
-
|
|
355
|
-
const memory = createActoviqMemoryApi({
|
|
356
|
-
projectPath: process.cwd(),
|
|
357
|
-
sessionId: 'your-session-id',
|
|
358
|
-
});
|
|
359
|
-
|
|
360
|
-
const state = await memory.compactState({
|
|
361
|
-
includeSessionMemory: true,
|
|
362
|
-
includeBoundaries: true,
|
|
363
|
-
includeSummaryMessage: true,
|
|
364
|
-
currentTokenCount: 18000,
|
|
365
|
-
tokensAtLastExtraction: 11000,
|
|
366
|
-
initialized: true,
|
|
367
|
-
toolCallsSinceLastUpdate: 4,
|
|
368
|
-
});
|
|
369
|
-
|
|
370
|
-
console.log(state.paths);
|
|
371
|
-
console.log(state.progress);
|
|
372
|
-
console.log(state.latestBoundary);
|
|
373
|
-
console.log(state.summaryMessage);
|
|
374
|
-
console.log(await memory.findRelevantMemories('how should I release this package?'));
|
|
375
|
-
console.log(await memory.surfaceRelevantMemories('how should I release this package?'));
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
褰撳墠鍙洿鎺ヤ娇鐢細
|
|
379
|
-
|
|
380
|
-
- `createActoviqMemoryApi(...)`
|
|
381
|
-
- `sdk.memory`
|
|
382
|
-
- `bridgeSdk.memory`
|
|
383
|
-
- `memory.paths()`
|
|
384
|
-
- `memory.getSettings()`
|
|
385
|
-
- `memory.updateSettings(...)`
|
|
386
|
-
- `memory.loadSessionTemplate()`
|
|
387
|
-
- `memory.loadSessionPrompt()`
|
|
388
|
-
- `memory.buildPromptWithEntrypoints()`
|
|
389
|
-
- `memory.buildSessionUpdatePrompt(...)`
|
|
390
|
-
- `memory.readSessionMemory(...)`
|
|
391
|
-
- `memory.scanMemoryFiles(...)`
|
|
392
|
-
- `memory.formatMemoryManifest(...)`
|
|
393
|
-
- `memory.findRelevantMemories(...)`
|
|
394
|
-
- `memory.surfaceRelevantMemories(...)`
|
|
395
|
-
- `memory.getSessionMemoryConfig()`
|
|
396
|
-
- `memory.getSessionMemoryCompactConfig()`
|
|
397
|
-
- `memory.evaluateSessionMemoryProgress(...)`
|
|
398
|
-
- `session.extractMemory(...)`
|
|
399
|
-
- `parseActoviqSessionMemoryRuntimeState(...)`
|
|
400
|
-
- `filterActoviqMessagesForSessionMemory(...)`
|
|
401
|
-
- `estimateActoviqConversationTokens(...)`
|
|
402
|
-
- `evaluateActoviqSessionMemoryProgress(...)`
|
|
403
|
-
- `memory.compactState(...)`
|
|
404
|
-
- `memory.buildSessionMemoryCompactSummary(...)`
|
|
405
|
-
- `getActoviqBridgeCompactBoundaries(...)`
|
|
406
|
-
- `getActoviqBridgeLatestCompactBoundary(...)`
|
|
407
|
-
- `session.compactState(...)`
|
|
408
|
-
- `sdk.context.compactState(...)`
|
|
409
|
-
- `sdk.sessions.getCompactState(...)`
|
|
410
|
-
|
|
411
|
-
浠撳簱鍐呯ず渚嬪懡浠わ細
|
|
412
|
-
|
|
413
|
-
```bash
|
|
414
|
-
npm run example:actoviq-memory
|
|
415
|
-
npm run example:actoviq-session-memory
|
|
416
|
-
```
|
|
417
|
-
|
|
418
|
-
## Buddy Helper
|
|
419
|
-
|
|
420
|
-
SDK 鐜板湪涔熸妸闈?TUI 鐨?buddy / companion 鑳藉姏灏佽鎴愪簡鍙鐢?API銆?
|
|
421
|
-
|
|
422
|
-
```ts
|
|
423
|
-
import { createActoviqBuddyApi } from 'actoviq-agent-sdk';
|
|
424
|
-
|
|
425
|
-
const buddy = createActoviqBuddyApi({ configPath: './settings.json' });
|
|
426
|
-
const state = await buddy.state();
|
|
427
|
-
|
|
428
|
-
if (!state.buddy) {
|
|
429
|
-
await buddy.hatch({
|
|
430
|
-
name: 'Orbit',
|
|
431
|
-
personality: 'curious, steady, and supportive',
|
|
432
|
-
});
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
console.log(await buddy.getPromptContext());
|
|
436
|
-
```
|
|
437
|
-
|
|
438
|
-
褰撳墠鍙洿鎺ヤ娇鐢細
|
|
439
|
-
|
|
440
|
-
- `createActoviqBuddyApi(...)`
|
|
441
|
-
- `sdk.buddy`
|
|
442
|
-
- `bridgeSdk.buddy`
|
|
443
|
-
- `buddy.state()`
|
|
444
|
-
- `buddy.get()`
|
|
445
|
-
- `buddy.hatch(...)`
|
|
446
|
-
- `buddy.mute()`
|
|
447
|
-
- `buddy.unmute()`
|
|
448
|
-
- `buddy.pet()`
|
|
449
|
-
- `buddy.getPromptContext(...)`
|
|
450
|
-
- `buddy.getIntroAttachment(...)`
|
|
451
|
-
- `buddy.getIntroText(...)`
|
|
452
|
-
|
|
453
|
-
鍦ㄦ爣鍑?SDK 璺緞涓嬶紝濡傛灉 buddy 宸插鍖栦笖鏈潤闊筹紝companion intro text 涔熶細鑷姩闄勫姞鍒?system prompt 涓€?
|
|
454
|
-
|
|
455
|
-
## Event Helper
|
|
456
|
-
|
|
457
|
-
bridge 鐜板湪涔熸彁渚涗簡鍙鐢ㄧ殑浜嬩欢瑙f瀽 helper锛屾柟渚跨粺涓€澶勭悊 `Task` / subagent / tool 鐩稿叧浜嬩欢銆?
|
|
458
|
-
|
|
459
|
-
```ts
|
|
460
|
-
import {
|
|
461
|
-
analyzeActoviqBridgeEvents,
|
|
462
|
-
getActoviqBridgeTextDelta,
|
|
463
|
-
} from 'actoviq-agent-sdk';
|
|
464
|
-
|
|
465
|
-
const stream = sdk.stream('inspect the current repository');
|
|
466
|
-
const bufferedEvents = [];
|
|
467
|
-
|
|
468
|
-
for await (const event of stream) {
|
|
469
|
-
bufferedEvents.push(event);
|
|
470
|
-
|
|
471
|
-
const delta = getActoviqBridgeTextDelta(event);
|
|
472
|
-
if (delta) {
|
|
473
|
-
process.stdout.write(delta);
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
const analysis = analyzeActoviqBridgeEvents(bufferedEvents);
|
|
478
|
-
console.log(analysis.toolRequests);
|
|
479
|
-
console.log(analysis.taskInvocations);
|
|
480
|
-
console.log(analysis.toolResults);
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
- `getActoviqBridgeTextDelta(...)`
|
|
484
|
-
- `extractActoviqBridgeToolRequests(...)`
|
|
485
|
-
- `extractActoviqBridgeToolResults(...)`
|
|
486
|
-
- `extractActoviqBridgeTaskInvocations(...)`
|
|
487
|
-
- `analyzeActoviqBridgeEvents(...)`
|
|
488
|
-
|
|
489
|
-
## Workspace Helper
|
|
490
|
-
|
|
491
|
-
鐜板湪 SDK 涔熻ˉ涓婁簡鏄惧紡鐨?workspace 鐢熷懡鍛ㄦ湡 helper锛屼究浜庡厛鍒涘缓闅旂鐩綍锛屽啀鍚姩 agent 浼氳瘽銆?
|
|
492
|
-
|
|
493
|
-
```ts
|
|
494
|
-
import {
|
|
495
|
-
createAgentSdk,
|
|
496
|
-
createTempWorkspace,
|
|
497
|
-
createActoviqFileTools,
|
|
498
|
-
} from 'actoviq-agent-sdk';
|
|
499
|
-
|
|
500
|
-
const workspace = await createTempWorkspace({
|
|
501
|
-
prefix: 'actoviq-demo-',
|
|
502
|
-
copyFrom: './examples',
|
|
503
|
-
});
|
|
504
|
-
|
|
505
|
-
const sdk = await createAgentSdk({
|
|
506
|
-
workDir: workspace.path,
|
|
507
|
-
tools: createActoviqFileTools({ cwd: workspace.path }),
|
|
508
|
-
});
|
|
509
|
-
|
|
510
|
-
await sdk.close();
|
|
511
|
-
await workspace.dispose();
|
|
512
|
-
```
|
|
513
|
-
|
|
514
|
-
褰撳墠鎻愪緵锛?
|
|
515
|
-
|
|
516
|
-
- `createWorkspace(...)`
|
|
517
|
-
- `createTempWorkspace(...)`
|
|
518
|
-
- `createGitWorktreeWorkspace(...)`
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
## 褰撳墠鐘舵€佷笌璺嚎鍥?
|
|
522
|
-
|
|
523
|
-
褰撳墠鐘舵€侊細
|
|
524
|
-
|
|
525
|
-
- npm 鍖呭凡缁忓彂甯冿紝鍙洿鎺ュ畨瑁呬娇鐢?
|
|
526
|
-
- 鏍稿績 SDK 涓婚摼宸插彲鐢細`run()`銆乣stream()`銆乻ession銆乼ools銆丮CP
|
|
527
|
-
- bridge runtime 涓婚摼宸插彲鐢細鍐呯疆宸ュ叿銆乺untime introspection銆佷氦浜掑紡绀轰緥
|
|
528
|
-
- bridge SDK 宸茶ˉ鏇撮珮灞傜殑 agent / skill / context helper
|
|
529
|
-
- bridge SDK 宸茶ˉ缁撴瀯鍖?metadata API 鍜?event helper
|
|
530
|
-
- buddy API 宸插湪鏍囧噯 SDK 鍜?bridge SDK 涓や晶鍙敤
|
|
531
|
-
- 鏂囦欢宸ュ叿宸茬粡鍙敤锛歚Read`銆乣Write`銆乣Edit`銆乣Glob`銆乣Grep`
|
|
532
|
-
- workspace 鐢熷懡鍛ㄦ湡 helper 宸插彲鐢細鐩綍銆佷复鏃跺伐浣滃尯銆乬it worktree
|
|
533
|
-
- examples銆乼ests銆乥uild銆乻moke 鍜屾墦鍖呮牎楠岄兘宸茬粡鍏峰
|
|
534
|
-
|
|
535
|
-
璺嚎鍥撅細
|
|
536
|
-
|
|
537
|
-
- 缁х画琛?context銆乵emory銆乧ompact 绛夋洿娣卞眰鎺у埗鑳藉姏
|
|
538
|
-
- 缁х画琛ユ洿涓板瘜鐨?agent / skill / subagent metadata 缁嗚妭
|
|
539
|
-
- 缁х画琛ユ洿瀹屾暣鐨?workspace 妯℃澘鍜?sandbox orchestration
|
|
540
|
-
- 琛?CI銆乺elease notes锛屼互鍙婃洿瀹屾暣鐨勮础鐚枃妗?
|
|
541
|
-
|
|
542
|
-
## 鏈湴寮€鍙戝懡浠?
|
|
543
|
-
|
|
544
|
-
```bash
|
|
545
|
-
npm run typecheck
|
|
546
|
-
npm test
|
|
547
|
-
npm run build
|
|
548
|
-
npm run smoke
|
|
549
|
-
npm run example:quickstart
|
|
550
|
-
npm run example:session
|
|
551
|
-
npm run example:stream-loop
|
|
552
|
-
npm run example:actoviq-bridge-sdk
|
|
553
|
-
npm run example:actoviq-interactive-agent
|
|
554
|
-
npm run example:actoviq-introspection
|
|
555
|
-
npm run example:actoviq-file-tools
|
|
556
|
-
npm run example:actoviq-agent-helpers
|
|
557
|
-
npm run example:actoviq-workspaces
|
|
558
|
-
npm run example:actoviq-sessions
|
|
559
|
-
npm run example:actoviq-session-messages
|
|
560
|
-
npm run example:actoviq-buddy
|
|
561
|
-
```
|
|
58
|
+
- [examples/actoviq-interactive-agent.ts](./examples/actoviq-interactive-agent.ts)
|
|
562
59
|
|
|
563
|
-
|
|
60
|
+
如果你想先走 clean SDK 路线,推荐从这里开始:
|
|
564
61
|
|
|
565
|
-
|
|
62
|
+
- [examples/quickstart.ts](./examples/quickstart.ts)
|
|
63
|
+
- [examples/actoviq-skills.ts](./examples/actoviq-skills.ts)
|
|
566
64
|
|
|
567
|
-
|
|
65
|
+
## 欢迎贡献
|
|
568
66
|
|
|
67
|
+
欢迎贡献代码、文档和示例。如果你发现问题、教程缺口或能力对齐问题,都欢迎开 Issue 或直接发 PR。
|
|
569
68
|
|
|
69
|
+
项目采用 [MIT License](./LICENSE)。
|