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

多智能体工作台 loopwithai/LoopWithAI

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

在同一界面切换多种编程 Agent 干活

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

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明;engines.node 要求 >=24.0.0,不满足 Node 22.19.0;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add loopwithai/LoopWithAI
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 80 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;engines.node 要求 >=24.0.0,不满足 Node 22.19.0;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包loopwithai(未发布到 npm,仅可源码安装)
✗Node 引擎要求 >=24.0.0 · 基线 Node 22.19 不满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 04:11:31

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

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

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 25 处,展示前 25 条)
  • 读取密钥环境变量
    apps/web/lib/dsh-agent-driver.test.ts:28
    const previous = process.env.DEEPSEEK_API_KEY;
  • 读取密钥环境变量
    apps/web/lib/dsh-agent-driver.test.ts:29
    delete process.env.DEEPSEEK_API_KEY;
  • 读取密钥环境变量
    apps/web/lib/dsh-agent-driver.test.ts:37
    if (previous === undefined) delete process.env.DEEPSEEK_API_KEY;
  • 读取密钥环境变量
    apps/web/lib/dsh-agent-driver.test.ts:38
    else process.env.DEEPSEEK_API_KEY = previous;
  • 读取密钥环境变量
    apps/web/lib/dsh-agent-driver.ts:18
    private readonly apiKey = process.env.DEEPSEEK_API_KEY;
  • 发起网络请求
    apps/web/lib/dsh-agent-driver.ts:32
    const response = await fetch(`${this.apiUrl}/models`, {
  • 发起网络请求
    apps/web/lib/dsh-agent-driver.ts:71
    const response = await fetch(`${this.apiUrl}/chat/completions`, {
  • 删除本地文件递归
    apps/web/lib/sqlite-event-store.test.ts:38
    rmSync(directory, { recursive: true, force: true });
  • 写入本地文件
    apps/web/lib/sqlite-event-store.ts:20
    mkdirSync(dataDirectory, { recursive: true, mode: 0o700 });
  • 执行外部命令来自配置/变量
    packages/agent-loop-codex/src/index.ts:102
    const child = this.child = spawn(process.env.CODEX_BINARY ?? 'codex', ['app-server', '--stdio'], {
  • 发起网络请求
    packages/agent-loop-codex/src/index.ts:222
    const result = asRecord(await this.server.request('turn/start', {
  • 发起网络请求
    packages/agent-loop-codex/src/index.ts:238
    await this.server.request('turn/steer', {
  • 发起网络请求
    packages/agent-loop-codex/src/index.ts:250
    await this.server.request('turn/interrupt', { threadId: this.threadId, turnId: this.activeTurnId })
  • 发起网络请求
    packages/agent-loop-codex/src/index.ts:352
    const result = asRecord(await this.server.request('model/list', { limit: 100 }))
  • 发起网络请求
    packages/agent-loop-codex/src/index.ts:407
    const result = asRecord(await this.server.request(method, {
  • 发起网络请求
    packages/agent-loop-codex/src/index.ts:451
    await this.server.request('thread/resume', {
  • 发起网络请求
    packages/agent-loop-selector/src/client.ts:172
    const response = await fetch(path, init)
  • 读取本地文件
    packages/agent-loop-selector/src/index.ts:276
    const body = await readFile(clientPath)
  • 执行外部命令固定命令
    packages/network-proxy/src/index.ts:130
    return parseMacosSystemProxy(execFileSync('/usr/sbin/scutil', ['--proxy'], { encoding: 'utf8', timeout: 2_000 }))
  • 发起网络请求
    packages/network-proxy/src/index.ts:194
    ? new UndiciAgent({ allowH2: false })
  • 发起网络请求
    packages/network-proxy/src/index.ts:195
    : new EnvHttpProxyAgent({
  • 发起网络请求
    packages/network-proxy/src/index.ts:212
    private readonly originalDispatcher = getGlobalDispatcher()
  • 发起网络请求
    packages/network-proxy/src/index.ts:235
    setGlobalDispatcher(this.originalDispatcher)
  • 发起网络请求
    packages/network-proxy/src/index.ts:276
    const response = await globalThis.fetch(TEST_URL, { method: 'GET', signal: controller.signal })
  • 发起网络请求
    packages/network-proxy/src/index.ts:294
    setGlobalDispatcher(dispatcher)
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 切换多种编程智能体
  • 集成Pi与Codex
  • 支持ClaudeCode

多智能体 DeepSeek Harness 工作台,可切换 Pi、OpenAI Codex、Claude Code 和原生 DeepSeek 智能体循环。

README

由 DeepSeek 最新模型翻译生成
LoopWithAI 基于 DeepSeek Harness 的本地多 Agent 工作台。 在同一个 Web UI 中使用 Pi、OpenAI Codex、Claude Code 或 DeepSeek 原生 Agent Loop。 DeepSeek Harness 快速开始 LoopWithAI 把 DeepSeek Harness 扩展成一个本地多 Agent 编程工作台。它保留 Harness 原生的 Cordis 插件体系,把 Agent Loop 做成可替换插件,因此可以在 Pi Coding Agent、OpenAI Codex、Claude Code 和 DeepSeek 原生 Agent Loop 之间切换,不需要额外的 ACP 网关或另一套 Driver。 默认 Agent 是 Pi。每套运行时仍然使用自己的模型、工具、审批、MCP、Skills/Extensions 和本地认证。 DeepSeek Harness 目前仍处于 Developer Preview。LoopWithAI 紧贴其插件 API,上游出现不兼容更新时可能需要同步升级。 主要能力 - 一个 Harness,多套 Agent:直接在输入框下方切换 Pi、DeepSeek、Codex 和 Claude Code。
展开完整文档(README 剩余 1 节)
LoopWithAI
基于 DeepSeek Harness 的本地多 Agent 工作台。
在同一个 Web UI 中使用 Pi、OpenAI Codex、Claude Code 或 DeepSeek 原生 Agent Loop。

DeepSeek Harness

快速开始

LoopWithAI 把 DeepSeek Harness 扩展成一个本地多 Agent 编程工作台。它保留 Harness 原生的 Cordis 插件体系,把 Agent Loop 做成可替换插件,因此可以在 Pi Coding Agent、OpenAI Codex、Claude Code 和 DeepSeek 原生 Agent Loop 之间切换,不需要额外的 ACP 网关或另一套 Driver。

默认 Agent 是 Pi。每套运行时仍然使用自己的模型、工具、审批、MCP、Skills/Extensions 和本地认证。

DeepSeek Harness 目前仍处于 Developer Preview。LoopWithAI 紧贴其插件 API,上游出现不兼容更新时可能需要同步升级。

主要能力

- 一个 Harness,多套 Agent:直接在输入框下方切换 Pi、DeepSeek、Codex 和 Claude Code。
- 原生接入:Pi 直连 TypeScript SDK,Codex 使用 codex app-server,Claude Code 使用 Agent SDK,DeepSeek 保留原始 Harness Agent Loop。
- 模型与 Thinking 控制:每次对话都能在输入区选择 Provider、模型和模型支持的思考级别。
- 不阉割工具:保留各 Agent 支持的 read、bash、edit、write、项目指令、Skills、Extensions、MCP 和审批能力。
- 本地认证与会话:凭据仍由 Pi、Codex、Claude Code 或系统环境管理,不经过 LoopWithAI 托管网关。
- 工作区自动恢复:启动时自动打开上一次工作区;首次使用默认创建 ~/.lwa/workspace。
- Clash/代理支持:支持终端环境变量、macOS 系统代理、手动 HTTP 代理和强制直连。
- Vite HMR:开发输入区控件时可以热更新,无需反复重启 Harness。

支持的 Agent

| Agent | 接入方式 | 登录方式 | 保留的原生能力 |
| Pi(默认) | @earendil-works/pi-coding-agent SDK | Accounts、pi /login 或 ~/.pi/agent | 多 Provider/模型、工具、Skills、Extensions、会话、Thinking |
| DeepSeek | 原始 @deepseek-ai/dsh-agent-loop | DEEPSEEK_API_KEY 和 Harness 原生设置 | 原生 Agent Loop 与 DeepSeek 模型 |
| OpenAI Codex | codex app-server --stdio | 已有的 codex login 会话 | 工具、MCP、Sandbox、审批、线程、模型、Reasoning Effort |
| Claude Code | @anthropic-ai/claude-agent-sdk | 已有 Claude Code 登录或 Anthropic 环境变量 | Claude Code 工具预设、Settings、Skills、Plugins、MCP、权限审批 |

LoopWithAI 通过 Cordis Loader 事务性替换进程内唯一的 Agent Loop。空白会话可以直接切换;会话已有历史时,界面会先确认,再在同一 Workspace 中新建会话,避免用户误以为历史会话中途更换了 Agent。

快速开始

环境要求:

- Node.js 24 或更高版本
- npm 和 Git
- 至少配置好一套想使用的 Agent 凭据

克隆、安装、启动:

git clone https://github.com/loopwithai/LoopWithAI.git
cd LoopWithAI
npm install
npm run dev

也可以一条命令完成:

git clone https://github.com/loopwithai/LoopWithAI.git && cd LoopWithAI && npm install && npm run dev

浏览器打开 http://127.0.0.1:3210。开发模式还会在 5174 端口启动 Vite HMR。

不启动 Vite、以本地生产方式运行:

npm start

登录与认证

Pi

在输入区选择 Pi,再点击 Accounts。Web 登录支持 Pi 暴露的 OAuth Provider,包括 ChatGPT/OpenAI Codex 与 Anthropic。也可以在终端登录:

pi
然后输入 /login

Pi 的配置与凭据仍由 Pi 保存在 ~/.pi/agent;LoopWithAI 不会把原始 Token 返回浏览器。

OpenAI Codex

安装并登录官方 OpenAI Codex CLI,然后在 LoopWithAI 中选择 Codex:

npm install -g @openai/codex
codex login

需要时 LoopWithAI 会启动 codex app-server --stdio,并复用 Codex CLI 已有的本地登录。只有当 codex 不在 PATH 中时才需要设置 CODEX_BINARY。

Claude Code

按 Claude Code 的正常方式完成认证,再选择 Claude Code:

npm install -g @anthropic-ai/claude-code
claude

运行时使用 Claude Agent SDK 和原有 Claude Code Settings;标准 Anthropic 环境凭据也仍然有效。

DeepSeek 原生 Agent Loop

启动前配置 DeepSeek Key:

export DEEPSEEK_API_KEY="your-api-key"
npm run dev

也可以继续使用 Harness 自己的凭据与 Settings 层;需要自定义服务地址时可设置 DEEPSEEK_BASE_URL。

使用方法

1. 选择或添加 Workspace。启动时优先恢复上次有效工作区,否则使用操作系统用户目录下的 ~/.lwa/workspace。
2. 在输入框下方选择 Pi、DeepSeek、Codex 或 Claude Code。
3. 选择可用的模型与 Provider。
4. 如果模型支持,选择 Thinking Level。
5. 选择 Workspace 访问/审批模式,然后发送任务。
6. Agent 请求工具或权限时,在 Harness UI 中完成确认。

助手记录会分别保存 runtime、provider、model 和 reasoning 来源,回放历史时仍能确认回复来自哪套 Agent。

Clash 与全局代理

打开 Settings → Proxy:

- Auto(默认):依次读取 LOOPWITHAI_PROXY、HTTPS_PROXY、HTTP_PROXY、ALL_PROXY 及其小写形式;macOS 下还会读取当前系统 HTTP/HTTPS 代理,因此 Clash 开启系统代理后可以自动生效。
- Manual:使用页面填写的 http:// 或 https:// 地址,并覆盖自动检测。例如 http://127.0.0.1:7897。
- Off:强制直连,并从 Agent 子进程环境中移除继承的代理变量。

保存后会立即影响后续请求,无需重启 Harness。自动和手动模式保留 NO_PROXY/no_proxy。带密码的代理地址按只写 Secret 处理,不会由 API 返回浏览器。首版暂不支持 SOCKS/PAC,请使用 Clash 暴露的 HTTP 或 Mixed 端口。

开发命令

npm run dev # DeepSeek Harness + Vite HMR,默认 Pi
npm start # 构建插件后启动 Harness,不启动 Vite
npm run build # 构建全部 Agent 插件并校验 Harness Profile
npm test # 使用 Fake/本地 Provider 运行测试
npm run typecheck # 严格 TypeScript 检查
npm run check # Vendor 检查 + 测试 + 类型检查 + 生产构建

Harness Patch 在启动时根据当前仓库位置生成 file: URL,所以可以把项目克隆到任意目录,包括带空格的跨平台路径。服务端 TypeScript 代码修改后仍需重启 Harness;packages/agent-loop-selector/src/client.ts 由 Vite 热更新。

架构

DeepSeek Harness Web + Cordis
└── agent-loop-runtime(事务性 Loader Entry) ├── Pi Agent Loop — Pi TypeScript SDK ├── DeepSeek Agent Loop — Harness 原始插件 ├── Codex Agent Loop — codex app-server 协议 └── Claude Code Agent Loop — Claude Agent SDK

apps/harness-web/ 可移植 Harness Profile 与本地启动器 packages/agent-loop-selector/ Runtime/Model/Thinking 控件与 Loader 切换 packages/agent-loop-pi/ Pi SDK AgentFactory 与 Harness 事件桥接 packages/agent-loop-codex/ Codex app-server AgentFactory packages/agent-loop-claude/ Claude Agent SDK AgentFactory packages/network-proxy/ 进程级代理服务与 Settings UI

旧的事件溯源 Loop 原型保留在 apps/web 和 packages/core,但它不是默认产品入口,也不属于当前开发重点。

安全与隐私

- 工作台在本机运行,不会通过 LoopWithAI 云服务转发 Agent 请求。
- 凭据继续保存在各 Agent 的原生本地存储或环境变量中。
- 凭据接口只提供登录状态和安全模型元数据,不返回 Secret。
- 工具执行和网络权限仍取决于所选 Agent 以及用户选择的审批模式。

基于以下项目

- DeepSeek Harness:插件优先的 Agent Harness 与 Web 工作台基础
- Pi Coding Agent:默认的多 Provider 编程 Agent 运行时
- OpenAI Codex:Codex CLI 与 app-server 协议
- Claude Code:Claude Code 与 Claude Agent SDK

参与贡献

欢迎提交 Issue 和 Pull Request。提交前请运行 npm run check,新增 Agent 也应继续遵守 DeepSeek Harness/Cordis 原生 Agent Loop 插件边界。

License 状态

项目所有者尚未为 LoopWithAI 选择 License。在仓库加入 LICENSE 之前,请勿推定拥有适用版权法以外的复用或再分发权利。第三方组件继续保留各自 License,详见 THIRD_PARTY_NOTICES.md。

LoopWithAI 是独立项目,与 DeepSeek、OpenAI、Anthropic 及 Pi 维护者不存在隶属关系。
预览分享卡片长什么样 ↓loopwithai/LoopWithAI
分享 · DeepSeek Harness Hub
loopwithai/LoopWithAI

在同一界面切换多种编程 Agent 干活

这是你的仓库?认领条目

回到顶部