Skip to content
English

ContextJournal:回执的请求内投影 ​

将真实调用回执变成可用于后续上下文的请求内记录,不另起持久日志系统。

ModelRunner 已维护自己的 journal。通过 result.invocation 将实际调用与上下文记录关联;模型生成的文本不能伪造调用身份。snapshot 返回隔离副本,修改副本不会改写 journal。

手动使用 beginTool/finishTool 只适用于 App 自己拥有的调用适配。一个 invocation 只能开始、结束一次。它们记录事实,不执行工具、不作授权,也不自动写关系数据库。需要持久诊断时,App 把 Core 事实交给自己的日志适配。

由简到繁的同业务示例 ​

读取 Runner 已记录的模型回执 ​

入门 · Node.js

ts
import { ModelRunner } from '@jangts/agent-core';
const runner = new ModelRunner({ provider: { async *stream() { yield '服务运行正常'; } } });
const result = await runner.invoke('查询服务状态');
console.log(result.invocation.invocationId);
console.log(runner.journal.snapshot());
js
import { ModelRunner } from '@jangts/agent-core';
const runner = new ModelRunner({ provider: { async *stream() { yield '服务运行正常'; } } });
const result = await runner.invoke('查询服务状态');
console.log(result.invocation.invocationId);
console.log(runner.journal.snapshot());

应用适配器记录它实际执行的本地工具 ​

配置 · Node.js

ts
import { ContextJournal } from '@jangts/agent-core/journal';
const journal = new ContextJournal();
const invocationId = journal.beginTool({ toolId: 'get_status', input: {} });
// 此处由 App 实际执行本地读取;不是模型提供的回执。
const status = '服务运行正常';
journal.finishTool({ invocationId, status: 'success', value: status });
console.log(journal.snapshot());
js
import { ContextJournal } from '@jangts/agent-core/journal';
const journal = new ContextJournal();
const invocationId = journal.beginTool({ toolId: 'get_status', input: {} });
// 此处由 App 实际执行本地读取;不是模型提供的回执。
const status = '服务运行正常';
journal.finishTool({ invocationId, status: 'success', value: status });
console.log(journal.snapshot());

接口参考、使用示例与开发指南。