@runappsai/agent

中文文档
0.1.4发布于 2026/11/02MITTypeScriptESM + CJS零依赖

Agent harness:有工作区、技能、会话、压缩、沙盒和聊天UI的模型↔工具循环。带来任何兼容openai的模型提供商(包括RunApps);没有运行时依赖项。

中文使用文档
文档目录7 节
  1. 安装
  2. 快速开始:五分钟内聊天
  3. 快速入门:命令行代理
  4. 快速入门:一个没有任何UI的代理
  5. 文档
  6. 开发
  7. 许可证

@runappsai /代理

agent harness:模型↔工具循环、带技能的文件工作区、保存的会话、上下文压缩、JavaScript沙箱——另外还有一个用于网页的完整聊天UI和用于命令行工具的助手。它可以与任何openai兼容的模型API (RunApps, OpenAI, DeepSeek, OpenRouter,你自己的代理),没有运行时依赖。

进口什么运行在
@runappsai/agent核心: createAgent, openWorkspace、供应商、工具、技能浏览器、Node、Deno、worker
@runappsai/agent/ui聊天界面: renderChat,下拉菜单,主题吃嫩叶的动物
@runappsai/agent/node一个文件夹作为工作空间,存储在磁盘上,终端对话框节点18 +

模仿 π (MIT):压缩提示,编辑匹配,模板参数和技能措辞都来自它。

状态:测试阶段 - API仍有可能改变。

安装

npm i @runappsai/agent
import { createAgent, openWorkspace, defineTool, openAIProvider } from "@runappsai/agent";
import { renderChat } from "@runappsai/agent/ui";                 // web pages
import { nodeFS, nodeStore, terminalUI } from "@runappsai/agent/node";   // Node

或者在一个页面中,没有构建步骤-核心和UI在一个脚本中 window.RunAppsAgent:

<script src="https://www.runapps.ai/sdk/agent-latest.js"></script>

(dist/agent-core.umd.js,也 @runappsai/agent/browser/core,是核心。)

快速开始:五分钟内聊天

<div id="assistant" style="height: 640px"></div>

<script src="https://www.runapps.ai/sdk/agent-latest.js"></script>
<script type="module">
  // With npm: import { openWorkspace, openAIProvider, defineTool } from "@runappsai/agent";
  //           import { renderChat } from "@runappsai/agent/ui";
  const { renderChat, openWorkspace, openAIProvider, defineTool } = RunAppsAgent;

  // 1. Where the model calls go. Keep API keys on your server: point at your own proxy.
  const provider = openAIProvider({ baseURL: "/api/llm", models: "fetch" });

  // 2. A tool of your app's (optional).
  const getTime = defineTool({
    name: "get_time",
    description: "The current date and time in the user's timezone.",
    execute: () => new Date().toString(),
  });

  // 3. The chat. Each conversation gets its own directory of files in IndexedDB.
  const chat = renderChat(document.getElementById("assistant"), {
    provider,
    model: "gpt-4.1",
    appName: "My app",
    instructions: "You are the assistant inside My app. Be brief.",
    tools: [getTime],
    workspace: (sessionId) => openWorkspace(provider, { id: sessionId }),
    suggestions: ["What time is it?", "Write a haiku about Mondays"],
  });
  await chat.ready;
</script>

这是一个完整的助手:流媒体Markdown回复,折叠工具调用,实时“正在做什么”状态,文件附件,文件面板,技能菜单,保存对话,斜杠命令,设置(模型,思维水平,限制),倒带,浅/暗主题。

与 RunApps 相反,用户登录并为自己的使用付费——不需要代理,也不需要密钥。

<script src="https://www.runapps.ai/sdk/latest.js"></script>
<script src="https://www.runapps.ai/sdk/agent-latest.js"></script>
<script type="module">
  const client = new RunApps({ project: "my-app" });
  const chat = RunAppsAgent.renderChat(document.getElementById("assistant"), {
    client,
    workspace: (id) => RunAppsAgent.openWorkspace(client, { id }),
  });
</script>

快速入门:命令行代理

import { createAgent, openAIProvider, openWorkspace } from "@runappsai/agent";
import { nodeFS, nodeStore, terminalUI } from "@runappsai/agent/node";

const provider = openAIProvider({ baseURL: process.env.OPENAI_BASE_URL, apiKey: process.env.OPENAI_API_KEY, models: "fetch" });
const workspace = await openWorkspace(provider, {
  id: "my-project",
  dir: nodeFS(process.cwd()),      // the agent works in this folder
  store: nodeStore(),              // sessions and skills in ~/.runapps-agent
});
const agent = createAgent(provider, { workspace, ui: terminalUI() });   // confirmations as y/N in the terminal

agent.on("text_delta", (e) => process.stdout.write(e.delta));
await agent.prompt(process.argv.slice(2).join(" "));

examples/cli.mjs 是一个完整的终端聊天:流,工具调用,确认,会话可以恢复,Ctrl+C停止。看到 节点和命令行.

快速入门:一个没有任何UI的代理

import { createAgent, defineTool, openAIProvider } from "@runappsai/agent";

const provider = openAIProvider({ baseURL: "https://api.deepseek.com/v1", apiKey: process.env.DEEPSEEK_KEY });

const addTodo = defineTool({
  name: "add_todo",
  description: "Add an item to the user's todo list.",
  parameters: {
    type: "object",
    properties: { text: { type: "string" }, due: { type: "string", description: "YYYY-MM-DD" } },
    required: ["text"],
    additionalProperties: false,
  },
  execute: async ({ text, due }) => { await db.todos.add({ text, due }); return `Added "${text}".`; },
});

const agent = createAgent(provider, {
  model: "deepseek-chat",
  instructions: "You manage the user's todo list.",
  tools: [addTodo],
  sandbox: false,        // no run_js
  askUser: false,        // no questions back to a user
});

agent.on("text_delta", (e) => process.stdout.write(e.delta));
const result = await agent.prompt("Add 'ship v2' for next Friday");
console.log(result.reason, result.usage);

文档

指南里面有什么?
供应商连接模型API: openAIProvider, runappsProvider,编写自己的,错误和重试
代理运行,转向和排队,停止和继续,事件,权限和对话框,会话,压缩,所有选项
工具defineTool、模式、结果、确认、进度、无处可去的调用、MCP服务器、内置工具
工作区和文件虚拟目录,安装你的应用程序的数据,一个真实的文件夹,内存和项目笔记,提示模板,pdf文件,更改事件
技能技能文件夹和压缩,应用程序的技能,懒惰技能,用户的技能,写作描述
聊天界面renderChat 选项和句柄,UI做什么,命令,单对话模式,主题化,下拉框,调试
节点和命令行一个文件夹作为工作空间,存储在磁盘上,终端对话框,pdf, CLI的例子
API参考所有出口都集中在一个地方

examples/chat/index.html 完整的页面是否使用了所有内容(服务于包根并打开? /examples/chat/index.html); examples/cli.mjs 终端版本。

开发

npm install
npm run build     # dist/*.js (ESM), dist/{index,ui,node}.cjs, dist/agent.umd.js + agent-core.umd.js (browser)
npm test          # node:test on the built output, model calls mocked

许可证

麻省理工学院

版本与发布记录

@runappsai/agent 共发布 6 个版本,首次发布于 2026/11/01;过去 12 个月发布了 6 个版本。

版本发布日期距今
0.1.4latest2026/11/021 天前
0.1.32026/11/021 天前
0.1.22026/11/021 天前
0.1.12026/11/021 天前
0.1.02026/11/011 天前
0.0.0-stage2026/11/011 天前

关于 @runappsai/agent 的常见问题

@runappsai/agent 是什么?

Agent harness:有工作区、技能、会话、压缩、沙盒和聊天UI的模型↔工具循环。带来任何兼容openai的模型提供商(包括RunApps);没有运行时依赖项。

如何安装 @runappsai/agent?

在项目目录运行 npm install @runappsai/agent,或使用 pnpm add / yarn add / bun add。

@runappsai/agent 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@runappsai/agent 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@runappsai/agent 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@runappsai/agent 可以商用吗?

@runappsai/agent 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@runappsai/agent 还在维护吗?

最新版本 0.1.4 发布于 2026/11/02(1 天前);至今共发布 6 个版本,其中过去 12 个月发布了 6 个;首次发布于 2026/11/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。