Agent
内置的 AI 聊天助手:应用内的一个聊天窗格,也可以操作你的 OpenTraderWorld 数据。可从 Agent 模块、顶栏中的闪光快捷方式(在搜索旁边),或位于每个页面角落的浮动按钮打开。
助手是自带服务商的:在你添加自己的服务商和密钥之前,没有任何东西被启用,也没有任何供应商默认值。
两种不同的“AI agent”
本页讲的是应用内的聊天助手,它与你配置的服务商对话。这与 AI agents (MCP) 页面不同,后者讲的是外部 agent 通过对外的 MCP 服务器接入 OpenTraderWorld。聊天助手可以使用同一个 gateway 来访问你的数据:参见下面的数据工具。
添加服务商
在设置(聊天侧边栏中的齿轮)→ 常规中,添加一个或多个服务商。支持两种线路格式:
- Anthropic:Claude Messages API。
- 兼容 OpenAI,即任何使用 OpenAI 聊天格式的端点:OpenRouter、OpenAI、DeepSeek、Moonshot、Groq、Mistral、Gemini 的兼容端点、本地代理,等等。
每个服务商都有自己的 base URL(仅兼容 OpenAI 的需要)、API 密钥和默认模型。密钥是只写的:它使用应用的主密钥静态加密,保存后不再显示。编辑时将密钥字段留空即可保留当前密钥。
服务商可以被禁用而无需删除。只有当存在带密钥和模型的已启用服务商时,助手才处于“就绪”状态。
配置助手
在同一个设置窗格中,你可以设置系统提示词、当前的服务商 / 模型、最大 token 数和温度。高级参数 (JSON) 字段会把任何额外的请求字段原样传给服务商。把值设为 null 可以移除应用原本会发送的键(例如较新 OpenAI 模型的 max_completion_tokens,或去掉 stream_options)。
聊天
- 回复实时流式输出并渲染为 Markdown。暴露推理过程的模型会有一个可选的思考折叠区。
- 对话保存在侧边栏中:新建、选择、重命名、删除,以及一键 Markdown 导出。
- 导出到 Editor 会把对话变成一个 Editor 页面:选择文件夹(或新建一个)和文件名,然后保存以留在 agent 页面,或保存并打开。每条消息保留其日期和作者(你,或 persona 与模型),推理过程位于答案上方的引用中,包含详情会添加工具调用和 token 计数。
- 你可以在流式输出中途停止运行。
- 聊天标题栏显示该对话累计的 token 计数(输入 + 输出),让你看到一个对话花了多少。
- 宽屏模式开关会取消阅读宽度限制。对话线程是按散文的尺寸设计的,而这对助手生成的表格来说是错误的形状:试验账本或统计明细需要更大的空间。该选择会按浏览器记住。
- 服务商故障会以关闭式横幅中的一句通俗的话显示:密钥被拒绝、速率限制(服务商发送时会带上其 retry-after)、模型或 base URL 错误、内容过滤拒绝,或回复在 token 上限处被截断。
聊天限额
聊天可以按输出 token、美元或两者设置上限。在设置 → 常规 → 新聊天限额中设置默认值;每个新聊天都从它们开始,之后更改它们不会影响现有聊天。字段留空表示不限。
消息框中 Prompt Store 按钮旁边的细条会随着聊天花费自下而上填满。悬停可查看数字,点击可更改此聊天的限额。达到限额时,运行会在下一个付费步骤之前停止,聊天在你提高或移除限额之前不再接受新消息,你可以在同一个条上操作。在限额处发送会显示一条带有两个快捷方式的提示:更新限额打开该编辑器,新聊天会以相同的 persona 打开一个新聊天并保留你已输入的内容。
美元限额需要服务商在每次回复中返回价格(OpenRouter 会,Anthropic 不会)。没有的话,花费会显示为“未返回价格”,只适用 token 限额。
按聊天切换服务商或模型
聊天标题栏显示当前的服务商 · 模型。打开它会得到一个完整的选择器界面:一侧是服务商,另一侧是所选服务商的实时模型列表,可搜索,在服务端查询,所以你的密钥永远不会到达浏览器。对于不暴露列表的代理,仍可使用自由文本。在你用使用此模型确认之前什么都不会改变,所以浏览列表不会有任何代价,并且一个按钮即可让对话回到继承的默认值。
该选择属于那个对话,而不是助手:一个标签页中便宜快速的模型可以复盘你的 journal,而另一个标签页中最强的推理模型在争论一次 backtest。没有做出自己选择的对话会继承 persona 的设置,然后是你在设置 → 常规中设定的内容。选择器上的圆点标记使用了自己设置的那些,一次点击即可让它们回到继承的设置。切换服务商会同时清除模型 id,因为模型名称只对它所属的供应商有意义。
发送已保存的提示词
输入框可以从你的 Prompt Store 调用,而不必重新输入你保存的提示词。选择器列出你的提示词,可搜索名称、标签和正文,完整预览所选的一个,并在插入提示词(或双击该行)时把它放入输入框,在发送之前你仍然可以编辑它。
浮动助手
每个页面右下角的按钮会在你现有的对话之上打开一个紧凑的聊天,而无需离开你正在做的事情。它是同一个助手,而不是平行的另一个:对话、persona、服务商和工具都相同,所以在角落开始的对话之后会出现在 Agent 页面上,反之亦然。persona、模型和工具位于标题下的一行,模型和提示词选择器以覆盖在对话之上的视图打开,而不是对话框。
它还知道你在哪个页面。每条消息都带有当前模块,当对话的 token 授予了该模块时,其端点列表会预先加载到提示词中,所以从 Historical Data 发出的请求不会把第一轮工具调用花在弄清该去哪里找上。其他一切都只需一次查询,而助手不该涉足的页面(设置、dashboard)则完全不会发送任何内容。
记忆与技能
设置中的两个标签页让助手能在对话之间保留知识:
- 记忆:小而持久的事实(偏好、稳定的细节),在聊天之间持续存在。只有索引(slug + 一行描述)会放入提示词;完整内容按需拉取。你可以自行浏览、编辑和删除每一条记忆,没有任何隐藏。每条记忆都记录由哪个 persona 写入,在管理器和助手读取的索引中都会显示:记忆是一个共享的存储,否则 Day Trader 写下的约束在 Analyst 看来就像是它自己的。当存储已满时,助手也可以自行修剪记忆,但无法悄悄覆盖你手写的记忆。
- 技能:你定义的可复用 Markdown 指令集。技能的名称 + 描述始终在上下文中;当任务需要时,助手会按需加载完整正文。可单独启用/禁用每个技能。
长对话还会获得滚动摘要:一旦聊天变得很大,较早的轮次会被压缩成持续更新的摘要,让对话保持低成本,只逐字保留最近的消息。
Persona
persona 是助手按角色塑造的版本:带有立场和明确拒绝边界的系统提示词,外加精选的技能架。内置五个(Quant、Portfolio Manager、Day Trader、Researcher、Financial Analyst),打开对话时从聊天标题栏的 persona 选择器中选一个。
要点是专注。一个拥有两百个端点的通用助手,在任何单项工作上都不如只深入了解其中几个并拒绝其余的助手。Quant 不会在没有试验次数和样本外数字的情况下报告 backtest;Day Trader 不会指出入场点;Analyst 会报告它未能获取的基本面数据,而不是把它们编出来。
persona 不是什么
**persona 不是权限集。**助手能触及的内容由对话的 MCP token 决定:按模块限定,由你设置,无论哪个 persona 在说话都完全相同。切换 persona 只会收窄立场和技能架,绝不会收窄数据访问。要更改它能触及的内容,请更改 token。
对话中途切换
你可以在对话中途切换 persona。它从下一条消息起生效,并且会在记录中留下一个标记来记录交接:标记之上的轮次由前一个 persona 生成,并仍归属于它。
编辑你自己的
设置 → Personas 列出每个 persona 以及它实际会得到的技能架。在那里你可以:
- 从空白创建一个,或复制一个内置的并改写副本;
- 编辑提示词、技能架,以及它是否自动批准写入;
- 将内置的重置为出厂状态(你对它的编辑会丢失,其他任何内容都不受影响);
- 删除你创建的。它的对话会保留:它们转移到默认助手,每份记录都会附上一条说明。内置的无法删除:应用会在下次重启时重新创建它们,所以删除只是看起来有效。
技能不在这里创建。只有一个目录,在技能标签页中管理,persona 从中挑选。这意味着编辑技能正文会为每个持有它的 persona 更改它,技能列表会显示有多少个,所以编辑绝不是盲目的。
导出与导入
任何 persona 都可以导出为内联技能正文的 JSON 文件,这样一个文件就能在另一台机器上重现它。你也可以导出单个技能,或一次导出整个技能架。导入接受任一种形式;已存在的名称会被跳过而不是覆盖。没有审核关卡:这是你的机器,加载到你自己助手中的内容由你决定。
persona 和技能管理被有意排除在 MCP 目录之外:任何 agent、以及任何 agent 读到的内容,都无法编辑 persona 或扩大技能架。
写入确认
当助手想更改你的数据时,运行会暂停,并向你显示确切的调用(方法、路径和请求体),带有批准和拒绝按钮。在你回答之前不会写入任何内容,拒绝会作为一次拒绝反馈给模型,而不是让它绕开的错误。如果你走开了,等待会超时,写入不会发生。
可以把 persona 设为自动批准写入,这会跳过普通更改的提示。删除始终会询问,无论该设置如何:勾选这个框是对常规写入的决定,而不是擦除 journal 的许可。
只做计算的端点(backtest、夏普比率、蒙特卡洛)不会提示。它们不会更改任何你会惦记的东西,而且每次计算都弹出确认对话框,正是让人学会不看就点批准的原因。
数据工具
给对话附加一个 MCP token,助手就可以通过外部 MCP 客户端使用的同一个进程内 gateway 读取和更新你的模块。token 的按模块权限级别(读取 / 读取+写入 / 完全,在设置 → MCP 中设置)会直接生效:token 就是权限包络;没有第二道 agent 侧的关卡。设置、机密、网络和数据清除操作绝不会暴露,并且从构造上就没有 shell 或文件系统访问。
工具调用以内联的可折叠标签显示,包含参数和结果。一次运行最多 15 轮工具调用,每个对话带有一个模拟预算,因为 backtest 和参数扫描是助手唯一能无限花费的东西,所以预算耗尽后,它会被告知停止搜索并报告已有的结果,包括它运行了多少次试验。
编写你自己的技能
技能是一个流程,而不是一本手册。有效的形式是:
- 一个说明何时使用它的描述,因为这一行是检索键,会出现在每个提示词中,所以“在用户提出策略时使用”优于“关于策略”;
- 一个点明确切端点的正文,一步一步地写,并包含该任务在这个应用中出错的具体方式;
- 一个验证步骤:如何在报告之前证明结果;
- 一个报告格式:回复必须包含什么。
正文要短。加载时它会整体进入上下文窗口,所以太长的会挤掉它本该帮助的任务。编辑器在超过大约两千字时会发出警告。
按对话的工具
每个对话都带有它自己的 MCP token(你在设置中设的 token 只是新对话的默认值),可从聊天标题栏的工具下拉菜单切换。两个对话可以并排以不同的数据范围运行。该下拉菜单:
- 有一个搜索框,可按名称过滤 token 和外部服务器;
- 在所选 token 授予写入/删除权限时予以提示;
- 提供内联操作来添加 MCP 服务器,以及指向设置 → MCP(创建/管理 token)和 MCP 商店的快捷链接。
MCP 商店:连接外部平台
Agent → 管理服务器是一个整页分区,用于添加远程 MCP 服务器,让助手可以访问外部平台:
- 知名服务器的精选目录(DeepWiki、Context7、GitHub、Hugging Face,自带密钥),外加按 URL 添加的自定义服务器;
- 仅限 Streamable-HTTP:绝不会在本地执行任何东西;
- 认证值静态加密且只写;
- 测试按钮会连接并列出服务器的工具;
- 从工具下拉菜单中按对话启用服务器。
外部工具有命名空间(例如 deepwiki__ask_question)并标有其服务器,调用有时间限制,无法连接的服务器会降级为警告而不是阻塞聊天。
外部内容不可信
外部 MCP 服务器能看到你的对话,它返回的是第三方内容。将外部服务器与对你的数据拥有写入权限的 token 结合使用,意味着被注入的内容可能试图触发更改,当这种组合处于活动状态时,工具下拉菜单会向你发出警告。请只添加你信任的服务器,并留意工具调用标签。