外部知识线 · 只查库外

给一句话,或者给一个任务 —— 模型自主决定调不调工具、调哪个, 过程会摊成一条明文可见的执行链(每一步打了谁 · 花了多久 · 回了什么)。 要对外发数据的那一步会停下来等人批。

知识来源:模型自身 + 记忆 + 通用工具| 注定查外部 —— 不接本库| 敏感动作走人工接管
这一页为什么和「内部RAG知识库检索及问答」分成两页

本系统的知识来源被有意分成两条独立的线:

线注定查什么编排
内部线 我们自己的文档库 —— 没有"要不要查"这个判断 固定管线(改写 → 向量+BM25 → RRF → 生成),在另一个页面
外部线(本页) 模型自身 + 记忆 + 通用工具(含联网)—— 不接本库 模型自主决定调不调工具、调哪个

分成两条线的原因:意图分流做不到 100% 准。判错一次,外部场景就会被内部资料污染, 而页面上看不出它判错了。与其赌分类,不如让每条线没有判断,也就没有判错。 ⇒ 所以本站不在一个页面上让你"选走哪条线",两条线各有各的页面。

「链」展示列表:点击行首的切换按钮,下方左右两个面板将同步更新。
— 就绪

前三条只用本机工具(日期 / 计算 / 取值);第四条会联网 —— 它正好用来看哪条链会停下来等人批、哪条不会。

留空就开一个新会话;填上旧的,就会接着那次的上下文继续。 执行明细与花费都按它归集。

真调后端 —— 结果、耗时、花费都来自这一次返回。

记忆点开 ▾

这条链在动手之前会先去记忆里找一次(自动的,没有开关)—— 检索到就把它拼在这句话前面。找不到就跳过,不影响回答。

memories[]还没有查过 —— 点上面那颗按钮,看它现在记得什么。

⚠️ 这一下会花钱,而且不便宜:它不是把这句话原样存下来,而是叫模型把它 抽成事实再入库 —— 实测一次约 8 千个 token。 所以这里不做成自动的:什么时候记、记哪一句,由你按。

阶段 —

每一格都来自这次真返回:模型决策看决策条数,调用工具看轨迹里每一步的耗时, 汇总生成看账本里那一笔的 token 与费用。

answer—
answer还没有跑过。跑一次之后,这里出现模型最后的回答。
人工接管 该停的时候停 点开 ▾

命中敏感工具名单时,链会停在这里:「要把这段数据发到本机之外」的动作, 得有人点头才走。本地工具(算数 / 日期 / 取值)不在此列 —— 它们直接执行。

pending[]还没有查过。

🔴 如实说明:这张表是进程内存 —— 服务重启就空了。 ⛔ 不是持久队列。

messages[]还没有取过。取一次之后,这里按时间顺序列出那几轮消息。

批准 / 拒绝 / 代填 —— 三种都会让链从停的地方接着往下跑,返回的是续跑之后的结果。

events[]还没有查过。查一次之后,这里一行一次真裁决。
它能用哪些工具点开取一次 ▾
healthy_tools[]点开这块会去取一次真实的工具名单。

名单来自服务端,本页不写死行数。其中联网检索是唯一会离开本机的一步; 沙箱里跑代码是在本机容器内跑,不对外发数据。

本次执行明细(每一步打了谁)点开 ▾
tool_calls[]跑一次之后,这里逐步列出:第几步 · 打了哪个工具 · 参数 · 结果 · 耗时。
本次花费 / 我的额度点开 ▾
这条链上的调用笔数
—
其中 LLM tokens
—
其中 embedding tokens
—
本次费用
—
今日剩余额度
—
被挡过几次
—

⚠️ 缺值一律显示「—」,⛔ 不显示 0(0 会被读成"没花钱")。 前四格按这个 thread 归集;额度与「被挡」是本用户口径, ⚠️ 其中「被挡过几次」是进程内的计数 —— 服务重启就归零。