🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

智能体运行台 K-kiron/runward

DeepSeek Harness
K-kiron4 天前有提交已提供中文文档扫描:含敏感能力

查看编码智能体并行执行与交接进度

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add K-kiron/runward
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 4 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 21 处,展示前 21 条)
  • 发起网络请求
    apps/openhands/extension.js:760
    client: createClient(options => host.agentServer.request(options)),
  • 发起网络请求
    apps/openhands/src/entry.mjs:10
    client: createClient(options => host.agentServer.request(options)),
  • 读取本地文件
    cli.mjs:75
    const config = JSON.parse(await readFile(configPath, 'utf8'));
  • 读取本地文件
    cli.mjs:126
    const body = command.command === 'ingest' ? await readFile(command.input, 'utf8') : '{}';
  • 发起网络请求
    cli.mjs:129
    const response = await fetch(`http://127.0.0.1:${command.port}${path}`, { method: 'POST', headers: {
  • 读取本地文件
    cli.mjs:142
    const raw = JSON.parse(await readFile(command.input, 'utf8'));
  • 读取本地文件
    lib/enrollment.mjs:13
    const link = await lstat(path, { bigint: true });
  • 读取本地文件
    lib/enrollment.mjs:14
    const canonical = await realpath(path);
  • 读取本地文件
    lib/enrollment.mjs:15
    if (!(await lstat(canonical)).isFile()) throw Object.assign(new Error('Selected transcript is not a file'), { code: 'ENOTFILE' });
  • 读取本地文件
    lib/enrollment.mjs:48
    const current = await lstat(after.canonical, { bigint: true });
  • 写入本地文件
    server.mjs:24
    await mkdir(dirname(resolve(path)), { recursive: true, mode: 0o700 });
  • 读取本地文件
    server.mjs:25
    const target = join(await realpath(dirname(resolve(path))), basename(path));
  • 读取本地文件
    server.mjs:26
    try { if (!(await lstat(target)).isFile()) throw fail('State must be a regular file, not a symlink or directory'); }
  • 删除本地文件
    server.mjs:33
    catch (error) { await file.close(); await unlink(lockPath); throw error; }
  • 读取本地文件
    server.mjs:41
    const current = await lstat(lockPath, { bigint: true });
  • 删除本地文件
    server.mjs:42
    if (current.dev === owned.dev && current.ino === owned.ino) await unlink(lockPath);
  • 写入本地文件
    server.mjs:52
    await mkdir(dirname(path), { recursive: true, mode: 0o700 });
  • 写入本地文件
    server.mjs:63
    else await rename(temporary, path);
  • 删除本地文件
    server.mjs:66
    await unlink(temporary).catch(error => { if (error.code !== 'ENOENT') throw error; });
  • 读取本地文件
    server.mjs:72
    const content = await readFile(path);
  • 读取本地文件
    server.mjs:258
    try { content = await readFile(path); } catch (error) { if (['ENOENT', 'EISDIR'].includes(error.code)) throw fail('Not found', 404); throw error; }
扫描于 2026/11/4(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

本地运维台,管理编码智能体、执行时间线和交接。

README

由 DeepSeek 最新模型翻译生成
Runward 给编码智能体用的本地操作台。看清谁在干活、查看并行执行情况、跟踪运行记录,别让交接信息弄丢。 独立版 Runward 服务器跑在你自己的机器上,需要 Node.js 22+,无运行时依赖。它在回环地址上提供浏览器界面,把实时状态存在本地,不发起任何对外请求。演示数据是合成的,并且有明确标注。 Runward 演示:智能体活动泳道、运行结果、待处理请求和交接 试一试 git clone https://github.com/K-kiron/runward.git cd runward npm run demo 打开 http://127.0.0.1:4317,点 Connect。终端会分别打印读取 token 和操作 token。用读取 token 查看活动,用操作 token 协调交接、处理待办事项。两者都需要认证。只有协调操作才需要操作员别名;别名是你自己填的标签,不是经过认证的身份。演示中的改动只存在内存里,重启即重置。 想开一个空的实时域: npm start -- --domain personal --environment laptop 实时模式必须显式指定域和环境,或者提供配置文件。本例中状态会持久化到 ~/.runward/domains/personal/laptop/state.json。
展开完整文档(README 剩余 1 节)
Runward

给编码智能体用的本地操作台。看清谁在干活、查看并行执行情况、跟踪运行记录,别让交接信息弄丢。

独立版 Runward 服务器跑在你自己的机器上,需要 Node.js 22+,无运行时依赖。它在回环地址上提供浏览器界面,把实时状态存在本地,不发起任何对外请求。演示数据是合成的,并且有明确标注。

Runward 演示:智能体活动泳道、运行结果、待处理请求和交接

试一试

git clone https://github.com/K-kiron/runward.git
cd runward
npm run demo

打开 http://127.0.0.1:4317,点 Connect。终端会分别打印读取 token 和操作 token。用读取 token 查看活动,用操作 token 协调交接、处理待办事项。两者都需要认证。只有协调操作才需要操作员别名;别名是你自己填的标签,不是经过认证的身份。演示中的改动只存在内存里,重启即重置。

想开一个空的实时域:

npm start -- --domain personal --environment laptop

实时模式必须显式指定域和环境,或者提供配置文件。本例中状态会持久化到 ~/.runward/domains/personal/laptop/state.json。用 --data 换一个文件,用 --port 换端口。每个域/环境只保留一个进程和一个状态文件。旧的 ~/.runward/state.json 会保留下来,但永远不会被隐式加载;参见迁移与隔离。

能做什么

- 按项目、服务商、状态过滤,计数一致,并显示数据新鲜度。
- 共享时钟瀑布泳道,能看到重叠、空闲间隙和未结束的区间。点一段就能看它的时间戳、时长和详情。
- 控制台视图和按时间排序的事件视图;运行结果带检查项计数和失败详情。
- 待办事项需要显式处理;交接支持认领、释放、完成三种状态流转。
- 通过服务器发送事件推送实时更新,支持重连,状态过期时有提示。
- 可导入 Codex、Claude Code、DSH(DeepSeek Harness)、OpenCode、OpenHands、Gemini CLI 的选定文件转录,另有与服务商无关的事件 API。

认领只是协调记录。它不会启动智能体、发送提示词、批准工具调用,也不会执行终端命令。控制台内容只读。服务商名称只用来标识数据来源,不代表任何隶属关系。

OpenHands Agent Canvas 应用

可选的 Canvas 应用会在 OpenHands Agent Canvas 里加一个只读的 Runward 页面。从这个仓库安装,Repo path 填 apps/openhands,revision 选包含该应用的版本。它通过 Canvas 自带的、经过认证的 Agent Server HTTP helper 读取选中的会话;不需要单独跑 Runward 服务器,也不用手动填 API key。
App 面向受支持的本地后端上的 beta host API 1。不支持 OpenHands Cloud 后端。时区信息缺失的事件保持无时间,除非你显式提供服务器固定的 UTC 偏移。参见安装、信任模型、计时规则与验证限制。

连接真实会话

为一个数据访问域挑选具体的 transcript 文件;Runward 从不扫描你的主目录,不发现服务商登录信息,也不修改服务商设置。

node cli.mjs --domain personal --environment laptop --watch "codex=/absolute/path/rollout.jsonl"
node cli.mjs --domain company --environment work-vm --port 4318 --watch "claude=/absolute/path/session.jsonl"

这些是独立进程,各有独立的存储与凭据。在各自预期的环境中运行。同一台电脑上的不同端口不会构成操作系统安全边界。只有当多个来源可以把全部原始数据共享给同一批读者时,才合并 --watch 选项。

如需显式来源名、身份断言与代次变更,保存一份配置,例如 personal.json:

{
"domain": { "id": "personal", "environmentId": "laptop" },
"sources": [
{
"id": "editor-session",
"provider": "codex",
"toolInstanceId": "cli-profile-a",
"generation": 1,
"identity": "identity-a",
"path": "./logs/rollout.jsonl"
}
]
}

node cli.mjs --config personal.json

路径相对于配置文件解析。身份别名可选,是不透明的操作者断言;省略的身份保持未知。项目名、配置目录或别名都不能证明某条记录由哪个账号产生。Runward 自己生成文件绑定;不要手工把 fileIdentity 复制进配置。

选中的文件每两秒轮询一次。运行期间,替换、截断、链接重定向或改写已读字节都会暂停该来源。这同样影响就地改写的合法导出:请使用经过审查的新代次。跨重启时会检查文件身份,但进程停止期间发生的同 inode 内容改写不会被进程内的追加守卫发现。参见来源生命周期与限制。

六个读取器支持 Codex、Claude Code、DSH、OpenCode、OpenHands 和 Gemini CLI。DSH Zstandard 日志需要 Node.js 22.15+ 且支持 Zstandard。支持的格式与计时限制参见适配器覆盖范围与捕获命令。

对于你自己的智能体或 runner,使用事件 API 提交显式事件:

Supply the enrolled source's token through RUNWARD_INGEST_TOKEN first.
node cli.mjs ingest examples/events.json
读、操作、源摄取这三类 token 是彼此独立的能力。启动时,RUNWARD_READ_TOKEN 和 RUNWARD_TOKEN 可以复用此前签发且匹配的读 token 与操作 token。摄取命令使用 RUNWARD_INGEST_TOKEN,它必须匹配已登记的源/代次。token 绑定各自的域/环境和角色;摄取还额外绑定源。绝不要把 token 放进 URL、配置文件、提交或截图。

浏览器用读/操作根 token 换取一个可撤销的会话,最长持续八小时,随后丢弃根 token。浏览器只在标签页内存里保留该会话,不使用凭据 cookie,也不写入浏览器存储。锁定会清空已加载的活动、过滤器、检查器内容和待处理响应,关闭流,并请求撤销会话。

数据与信任

Runward 只绑定 127.0.0.1。主机检查和浏览器来源检查会拒绝外部站点。所有数据读取,包括快照和 SSE,都需要 bearer 授权;只有不敏感的健康检查响应是公开的。读 token 授予整个域的快照访问权。项目/服务商过滤器只用来整理已授权的数据,不是访问控制。

独立的已认证域实例实现了 issue #3 中描述的 P0 隔离边界。P1 合并元数据总览尚未发布。目前没有跨域共享的原始数据查看器,也没有服务商凭据代理。部署、token 角色、显式迁移、清除和服务商场景见隔离指南。

对话记录文本、工具参数和工具结果可能包含机密。Runward 不会对它们做脱敏,也不会在应用层加密。以同一 OS 用户身份运行的无限制进程、管理员,或被攻陷的可信浏览器,仍能访问数据或凭据。要实现强隔离(个人或公司),需要强制 OS 用户、沙箱或 VM 边界,并配置合适的文件权限。Runward 不会自动修改 Windows ACL。它不发起任何出站请求,不使用遥测、CDN、外部字体或托管 API,也不应通过公网隧道暴露。

状态写入串行执行,并在刷写临时文件后原子替换。规范的状态文件锁可防止并发写入。无效批次不会部分生效;损坏、不匹配或未迁移的旧状态会阻止启动,而不是被覆盖。持久化的域存储上限为 8 MiB,记录保留数量有上限。移除监视器不会删除历史:请使用显式的源清除。原始对话记录和备份不在该清除范围内。

范围与来源

本文是基于智能体仪表盘两张截图中可见的功能集所做的独立实现。其布局、代码、示例数据和事件协议均为原创。没有获得原始可执行文件、Web 应用、源代码或流量抓包。截图分析只能确定可见功能,无法确定内部行为或协议兼容性。Runward 不声称与该仪表盘兼容。

转录适配器以尽力而为的方式读取有文档记录或常见的记录结构。已完成条目的耗时使用生产者显式提供的时间戳;较旧的格式回退到日志记录边界。缺失的指标保持未知。对话结束并不自动等于验证运行通过。重新导入 0.1.0 版本创建的状态之前,请先阅读适配器覆盖范围与升级说明。

开发

npm test
npm run check

测试覆盖状态校验、域/源命名空间、token 角色、浏览器会话竞态与吊销、迁移与清除、文件登记、并发认领、持久化失败、流式传输,以及合成转录解析。CI 矩阵在 Windows 和 Linux 上运行,使用 Node.js 22 和 24。合成隔离测试不证明服务商登录行为,也不证明已部署机器的操作系统权限。

参见 CONTRIBUTING.md。基于 MIT 许可发布。
预览分享卡片长什么样 ↓K-kiron/runward
分享 · DeepSeek Harness Hub
K-kiron/runward

查看编码智能体并行执行与交接进度

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部