# BailingHub for DeepSeek Harness

## 0.6.0：长任务、附件与原调用恢复

连续查询、编辑和核对时保留正确目标；上传获准图片后复用URL，重开后核对原调用，任务额度不因换轮重置。配套 Core 0.8.0 / SDK 0.6.0 / DSH 0.6.0；任务启用和跨轮复用需宿主按契约接入。

[本次变化](RELEASE_NOTES_v0.6.0.md) · [升级指南](UPGRADE_v0.6.0.md)


[English](../README.md) | 简体中文


## 已公开功能

让本地 DeepSeek Harness 智能体操作已经接入 BailingHub 的业务系统：查询记录、修改允许的字段，
需要审批时继续走原有规则。BailingHub 会记录用了哪份授权、做了什么，以及业务系统返回的结果。

**0.5.0 支持在同一会话中使用同一中枢内不同系统的授权。** 分别授权商城与库存系统，新建会话
并选中两者，就可以说：

> 先查保温杯还有多少库存。有货的话，把商城对应商品的售价改为 59 元并上架；没货就先不要上架。

查库存使用库存系统的授权，改价和上架使用商城授权。前提是业务系统已开放这些能力，商品对应
关系已确认。查库存不等于锁库存或自动同步库存；改价成功、上架待审批或失败需要分别看实际结果。

0.4.0 的同系统多账户流程继续保留，例如选择 A 店与 B 店对比营业情况，不用切换全局连接。新增
系统说明让智能体在搜索工具前了解各系统用途；业务提供的名称用于辨认已授权的组织、账户等对象。
详见[本次变化与升级步骤](RELEASE_NOTES_v0.5.0.md#简体中文)。

本版也能把可见沟通过程与业务操作关联起来。记录上传失败后，可以在联网或重启后继续补传，
不会因此重新执行业务操作。

这是独立社区集成，不是 DeepSeek 官方开发、认证、合作、背书或推荐的插件。

## 安装与开始使用

需要 Node.js `22.19.0+` 或 `24+`、pnpm，以及兼容的 DeepSeek Harness。管理员应先完成业务系统
接入。配套版本为 **BailingHub Core 0.8.0 → BailingHub MCP/SDK 0.6.0 → 本插件 0.6.0**。

```bash
npm install --global pnpm @deepseek-ai/dsh@0.1.1-rc.2
dsh plugin --profile web add dsh-bailinghub@0.6.0
```

插件会自动安装精确依赖 `bailinghub-mcp-server@0.6.0`，无需另装 SDK。
已经使用旧版的用户请先看[从 0.4.0 及更早版本升级的步骤](MIGRATION_VNEXT.md)。

按照[开始使用指南](GETTING_STARTED.zh-CN.md)填写管理员提供的四项公开连接信息，再到浏览器授权。
不要把业务密码、Client Token、签名密钥或模型 Key 填进插件设置或聊天消息。

## 为每个会话选择账号

在各自原业务授权页面分别授权并核对实际对象。配套业务后端可自动提供“品牌旗舰店”“主仓库”
等展示名称；缺名时明确显示“授权名称待同步”，不会从本机别名猜名称。

名称仅用于展示。同名、改名不会合并或重建凭据、替换原 Session 或改写历史。本机连接选择器、
固定连接键、当前业务名称与系统用途说明分别保留。

**新建会话，在发送第一条消息前**执行：

```text
/bailinghub connections list
/bailinghub scope set <商城连接键> <库存连接键>
/bailinghub scope
```

把占位符换成列表里的固定连接键，不是连接名称。可以选择单份授权、同系统多份授权，或同一
中枢、同一审计域的不同系统；每个目标须有独立原 Agent Session。等待设置成功回显后再发请求。

**新会话默认是普通聊天，选择业务范围后才会提供业务工具。** 登录成功或切换默认连接不会自动
开启业务访问。`/bailinghub scope none` 可显式选择普通聊天。第一条用户消息会固定这个范围；
之后要增减账号，或从普通聊天改成业务会话，都需要新建会话。

同一系统的能力不必为每家店重复声明，不同系统的同名工具则保持分离。智能体选择每次调用
使用的授权，不会拿到凭据；各项操作仍受
对应账号权限和审批规则约束。需要审批时，在会话仍运行的情况下，继续的是原调用。

任意一份选中授权撤销、被替换或暂时无法核验时，整个会话的业务访问暂停，不会偷偷改用其他账号。
临时断网可以在联网后重试原范围；已确认的撤销或身份变化，需要新建会话并选择有效授权。

## 查看沟通过程与操作结果

配合 Core 0.7.0 和 SDK 0.5.0，BailingHub 可以把可见的用户消息、助手回复、轮次，以及原业务
执行记录的关联放在同一份会话记录中。各份授权仍保留自己的业务调用记录，汇总回答不会复制到
每个账号的记忆中。

```text
/bailinghub archive status
/bailinghub archive sync
```

`archive status` 查看沟通记录是否已上传；`archive sync` 补传已保存记录，不重做业务操作。
它与 `/bailinghub sync` 不同：后者只重试当前运行中会话的待同步执行结尾记录。

| 状态 | 含义 |
| --- | --- |
| `synced` | 已保存事件已获中枢确认，不代表业务操作成功 |
| `pending` | 还没传完，恢复连接后可以重试 |
| `blocked` | 原授权核验阻止上传，可用 `/bailinghub scope` 查看 |
| `unsupported` | 当前 SDK 或中枢不支持这套归档契约 |
| `storage_error` | 本地写入失败，部分可见消息可能尚未安全保存 |
| `recovery_gap` | 对照 DSH 历史发现归档缺失，记录不完整 |

重开已保存的业务会话时，必须核验全部原授权后才恢复原范围。离线重开后，可以联网并在**同一
会话**执行 `/bailinghub archive sync` 或 `/bailinghub scope` 重试核验。这恢复的是范围与
已保存记录的补传，**不恢复进程重启前的业务调用、待审批操作或未完成任务**。未开始的已保存
草稿需要重新选择；没有有效旧范围快照的已开始会话不能自动采用今天的默认账号。

## 哪些信息会共享和保存

选中账号的业务上下文与可见用户请求会进入同一个本地智能体及模型会话。合并后的沟通归档按完整
授权集合控制访问，仅有其中一份授权不能读取混合会话。若这些账号的数据需要彼此隔离，应使用
不同会话。

采集从本版启用后的业务轮次开始，只包含可见文本，不包含附件、隐藏思考或全部历史会话，也不会
自动清除用户粘贴在正文里的秘密。检测到历史缺口会明确显示；宿主不提供持久历史时，覆盖度为
`unverified`，不会声称完整。

本机私有待上传记录含有**明文任务正文**，已上传的事件也会保留，直到宿主或用户自行清理；目前
没有自动保留期限。删除本机记录不等于删除中枢记录。授权凭据仍由 SDK 安全存储。启用业务访问前
请阅读[隐私说明](../PRIVACY.md)与[安全策略](../SECURITY.md)。

## 常用管理命令

| 命令 | 用途 |
| --- | --- |
| `/bailinghub doctor` | 检查配置、SDK、授权及 workspace，不输出凭据 |
| `/bailinghub login` | 在浏览器授权当前连接 |
| `/bailinghub status` | 查看当前连接的授权状态 |
| `/bailinghub connections list` | 查看连接名称、固定连接键和授权状态 |
| `/bailinghub connections add <名称> <中枢地址> <clientAppId> <workspace>` | 创建并选择一个待管理的连接；含空格的名称加引号 |
| `/bailinghub connections use <名称或连接键>` | 选择要管理或授权的连接，不改变已有会话范围 |
| `/bailinghub connections remove <名称或连接键>` | 先撤销远端 Agent Session，再删除本机凭据 |
| `/bailinghub workspaces` | 查看当前授权允许的 workspace |
| `/bailinghub use <workspace>` | 为连接管理切换到另一已授权 workspace |
| `/bailinghub logout` | 撤销并删除当前 Agent Session |

连接管理与范围选择都是用户命令，不是模型工具。再次授权同一可信身份会替换旧连接和旧 Agent
Session；不同身份独立保留。若登录提示需要清理，新连接已经授权成功，应检查提示的旧条目并重试
删除，不要再次授权。详情见[身份与连接规则](AGENT_CLIENT_CONTRACT.md#browser-identity-and-local-reconciliation)。

## 给接入开发者

DSH 负责思考与工具编排；BailingHub Core 负责可信身份、治理、审批、调用状态和审计；SDK 负责
浏览器授权、安全凭据和 HTTP 映射。本插件只适配 DSH 的会话、提示词、命令、工具和可见事件，
不直接调用业务 API，也不治理其他 DSH 工具。

业务系统继续声明原有能力，为每个身份分别授权即可。自定义 DSH 宿主需接入[范围选择与恢复 API](AGENT_CLIENT_CONTRACT.md#host-owned-session-scope-api)，
在首条消息前显示确认；原生斜杠命令已经使用这些 API。参数结构、持久化和恢复细节见
[Agent Client 契约](AGENT_CLIENT_CONTRACT.md)。
本地智能体附件空间（首期支持图片）见[宿主接入说明](GENERATED_ARTIFACTS.md)：登记当前会话的生成结果，上传保存并取得可供已有业务工具使用的地址。

请使用 Native Tool Mode。DSH Code Mode 无法安全呈现本轮动态工具结构，因此明确降级。
版本范围见[兼容矩阵](COMPATIBILITY.md)。

## 旧版 0.1.1 与反馈

公开 `dsh-bailinghub@0.1.1` 继续作为独立的静态 MCP 兼容路径：它启动
`bailinghub-mcp-server@0.1.1`，使用运营者提供的固定路由 Client Token，由 BailingHub 编排。
原生插件不会读取或转换该凭据。使用旧路径时继续固定旧版本，并参考[迁移说明](MIGRATION_VNEXT.md)。

问题请提交到 [GitHub Issues](https://github.com/bailinghub/bailinghub-dsh-plugin/issues)，提供版本与
脱敏错误，不附带 Token、私有地址、个人信息或生产业务数据。兼容测试与下载量不代表生产采用。
## 能力发现与错误反馈

这轮优化解决的是：查完库存后，AI 要知道商城工具是否仍然可用；上架请求没有拿到确认时，要沿原调用核对结果，不能再上架一次。

- 搜索返回多少候选、当前会话加载多少工具、哪些因为共享上限没加载，分别说明；未知总数不填写为 0。
- 先发现创建商品、再发现查询工具，查完后可以直接继续创建商品。同一轮搜索会保留仍有效的旧工具，跨系统也遵守各自授权。
- 每次最多展示 12 个完整工具说明，本轮共享保留最多 64 种可调用工具；退出展示窗口不等于卸载。64 是工具种类数，不是商品数、调用次数或任务时长。
- 缓存淘汰、声明变化或需要新能力时需重新发现。默认 active_turn 在轮次结束后卸载，显式 session 模式可在同一存活会话内复用；未确认的写操作始终恢复原调用。
- 网络暂时失败、授权不可用、版本不支持和原操作结果未知，使用不同的结构化反馈。旧工具名在宿主层被拒绝，也能获得对应指引。
- 原权限、审批、会话范围、归档和恢复约束保持。本节能力发现不新增迁移；完整版本升级仍需核对 Core 的 060–062 迁移。

客户端宿主接口、字段含义和兼容要求见 [能力发现与恢复契约](CAPABILITY_FEEDBACK.md)。


## 重开后继续核对原业务操作

例如上架商品还在等审批时关闭客户端，重新打开原会话后，可以继续处理原上架调用；
商品操作已发出但回包丢失时，也只核对原调用，不再生成一次上架请求。
这需要宿主持久保存原会话范围和调用恢复记录。没有旧记录时会明确提示，不能从聊天正文猜回参数。

这部分包含在 0.6.0 中，需宿主配置持久 invocationStore。
接入方式、保存失败处理及兼容边界见 [调用恢复说明](INVOCATION_RECOVERY.md)。
恢复记录本身不执行业务；显式恢复原调用可能继续已获批但尚未派发的操作。
