Observed since 20 Oct, 18:28 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
1flowbase instance manager and model/MCP bridge for the DeepSeek Harness Web profile
DeepSeek Harness Web profile 的 1flowbase 集成插件。它在设置页里管理 1flowbase 实例,并把 Agent Flow 应用注册成模型、把 MCP 实例挂成连接器工具。
设置页分两级:实例列表 只回答「我有哪些实例、接入了多少资源」;打开一个实例后进入 详情视图,用「应用 / MCP / 连接设置」三个标签管理这一个实例。页面只用 Harness 自带的 UI primitives,因此几何、圆角、焦点和 Escape 行为与设置里的其他页面一致。
一个导入的 Agent Flow 应用 = 模型选择器里的一个供应商,它的 GET /v1/models 目录整体成为该供应商下的模型:


| 新建实例 | 实例详情 · 应用 | 实例详情 · MCP |
|---|---|---|
![]() | ![]() | ![]() |
agent_flow 应用;导入时自动创建该应用的 Application API Key,读取它发布的 /v1/models 目录,并把整个目录注册成 Harness 模型选择器里的一个供应商分组(应用名 = 分组名,目录条目 = 分组下的模型)。mcp__<name>_<instance_id>__<tool>,所以不同 MCP 的同名工具不会互相覆盖。AI 通过 mcp_list / mcp_get / mcp_call 自己发现和调用。从 npm 安装(插件只装到 web profile,不修改 Harness 主仓库):
dsh plugin --profile web add 1flowbase-dsh-plugin@latest
dsh web
从本地源码安装:
cd /path/to/1flowbase-dsh-plugin
corepack enable
pnpm install
pnpm run build
dsh plugin --profile web add /absolute/path/to/1flowbase-dsh-plugin
dsh web
安装后打开 设置 → 1flowbase。
| 字段 | 说明 |
|---|---|
| 实例名称 | 显示在设置页和 MCP 命名空间里(不是模型选择器的分组名;分组名来自应用) |
| 1flowbase 地址 | 例如 http://127.0.0.1:7800 或 https://1flowbase.example.com,不要带查询参数 |
| API Key | 1flowbase 用户 API Key(/api/console/user-api-keys 创建的那种) |
| 登录授权 | 账号 + 密码。插件登录后自动创建用户 API Key,并用它完成后续所有调用 |
创建时会立即验证凭据:读取应用列表和 MCP catalog。验证失败不会保存实例。
列表行显示实例名、地址、认证方式和「已接入 N 个应用 · N 个模型 · N 个 MCP」;行尾的 ⋯ 菜单提供打开 / 测试 / 删除。点击行进入详情:
| 标签 | 内容 |
|---|---|
| 应用 | 当前凭据可见的 agent_flow 应用;导入过的排在「已导入」分组并列出它发布的模型 id,其余在「未导入」分组 |
| MCP | 当前工作区的 MCP 实例,行尾开关即时启用 / 停用 |
| 连接设置 | 实例名、地址、认证方式与凭据(留空表示保持当前凭据) |
详情页头部的「‹ 实例」返回列表;「测试 / 编辑 / 删除」作用于当前实例。

「连接设置」标签对应 POST /api/1flowbase/instances/:id/update:
在实例详情「应用」标签里选择 Agent Flow 应用,点击「导入」。映射关系:
1flowbase 实例 -> 地址 + 长期凭据(只是凭据容器,不出现在模型选择器里)
1flowbase 应用 -> 一个 DSH provider(分组名 = 应用名)
应用 GET /v1/models -> 该 provider 下的模型(模型 id = 应用发布的模型 id)
导入过程:
应用列表(GET /api/console/applications)
-> 创建 Application API Key(明文只在创建时返回)
-> GET /v1/models(使用应用 Key,取回整份目录)
-> 每个目录条目注册为一个模型,各自携带自己的 context window / 输出上限
-> 模型选择器出现「<应用名>」分组,下面列出全部模型
应用必须已经在 1flowbase 发布 API 并完成模型映射,否则导入会提示 application/not-published;只发布 0 个模型的应用不会被导入成空分组。
插件启动时、以及打开「应用」标签时,都会用应用自己的 /v1/models 对账本地目录:上游加了模型、改了上下文长度都会同步;上游暂时不可达时保留上一次的目录,不丢 provider。移除应用只删除本地注册,不撤销 1flowbase 里的 Application API Key。
在实例详情「MCP」标签里打开开关。插件会:
1flowbase MCP catalog
-> 选择 MCP 实例 instance_id
-> 动态挂载 @deepseek-ai/dsh-mcp-client
-> URL: <baseUrl>/api/mcp/<instance_id>
-> Authorization: Bearer <用户 API Key>
-> 工具命名: mcp__<name>_<instance_id>__<tool>
启用成功后会立刻出现工具;停用会卸载连接和工具。重启 Harness 后,之前启用的实例会自动恢复。
$DSH_HOME/1flowbase-dsh-plugin/state.json,目录 0700,文件 0600。可用 DSH_1FLOWBASE_STATE_DIR 覆盖目录。version: 2(每个导入的应用保存整份模型目录);version: 1 的旧文件会被自动读取并迁移,已导入的应用、应用 Key 和实例凭据都不丢,第一次写入时落成 v2。旧格式里只记录了 1 个模型,插件启动时会在后台对账补齐(打开「应用」标签也会对账),因此重启一次即可,不需要额外操作。POST /api/1flowbase/instances/:id/update;地址或凭据变更前先用新配置跑一次验证,验证失败时状态文件不变。/api/1flowbase,与 Harness 同源;写操作要求 x-1flowbase-request: 1 请求头,并拒绝跨站 Origin。https://,不要用明文 HTTP 发送账号密码。Browser settings table
-> /api/1flowbase (plugin-owned same-origin routes)
-> StateStore (atomic JSON, 0600)
-> ModelRegistry -> ctx.llm.registerAdapter (OpenAI-compatible adapter)
-> McpRegistry -> ctx.plugin(@deepseek-ai/dsh-mcp-client) per enabled MCP
Host 侧文件:
| 文件 | 职责 |
|---|---|
src/index.ts | Cordis 入口、路由注册、生命周期 |
src/state.ts | 原子状态文件、v1 → v2 状态迁移与校验 |
src/flowbase.ts | 1flowbase console / app / MCP HTTP 客户端,登录换 API Key |
src/adapter.ts | OpenAI Chat Completions → Harness StreamChunk |
src/models.ts | 应用导入、provider id 派生、应用目录对账与注册 |
src/mcp.ts | MCP client 动态挂载与命名空间 |
src/http.ts | /api/1flowbase 路由(含实例更新)与错误映射 |
src/client/panel.tsx | 实例列表、详情视图、标签与行内操作 |
src/client/forms.tsx | 创建弹窗、删除确认、连接设置表单 |
src/client/copy.ts | 页面文案(中/英) |
src/client/styles.ts | 仅保留布局样式;控件样式全部来自 UI primitives |
pnpm install
pnpm run lint
pnpm test
pnpm run build
npm pack --dry-run
pnpm run check 依次执行类型检查、测试、构建和打包检查。
仓库的 .github/workflows/release.yml 在推送 v* tag 或手动触发时执行检查并发布。首次使用前需要在 GitHub 仓库设置 NPM_TOKEN secret(npm Automation token)。
pnpm version patch # 或 minor / major,自动生成 commit 和 tag
git push origin main --follow-tags
pnpm version 生成 tag 后,Actions 会用当前版本号发布到 npm。已经发布过的版本不要重复推 tag。
/v1/models 里发布的 id(例如 claude-opus-5-5),不是应用 id;应用改名只改分组显示名,provider id 由实例 id + 应用 id 派生,因此不会漂移。navigator.language),不注入 Harness 的语言服务。@deepseek-ai/dsh-mcp-client;插件会优先从 DSH 安装目录解析,避免复制第二份 MCP 运行时。Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.3.1Registry latest | 19 Oct 2026 | 20 | |
| 0.3.0 | 19 Oct 2026 | 20 | |
| 0.2.0 | 18 Oct 2026 | 20 | |
| 0.1.0 | 18 Oct 2026 | 16 | |
| 0.0.0-stage | 18 Oct 2026 | 0 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 18:28 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:7fb6d627fd6f84b94d3f0c8773b75c8a4d72c7671efcc992f8d3eeff1cf40ecb