@botharness/core 1.1.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +160 -1
- package/CHANGELOG.zh.md +160 -1
- package/dist/index.d.mts +8075 -6760
- package/dist/index.mjs +56247 -46600
- package/package.json +7 -5
package/CHANGELOG.md
CHANGED
|
@@ -5,7 +5,166 @@ Notable changes to DeepSeekBot are recorded here. See the
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
No changes since 1.2.1 yet.
|
|
9
|
+
|
|
10
|
+
## [1.2.1] - 2026-10-12
|
|
11
|
+
|
|
12
|
+
Install DeepSeekBot on compatible DSH 0.1.7 and 0.2 Hosts, with clearer Group identities and attachment cards; the unfinished 1.3 data migrations are not included.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Groups without a custom avatar show up to four static member faces in the sidebar, rail and pinned grid ([#1270](https://github.com/BotHarness/DeepSeekBot/issues/1270)).
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- Audio and file attachments share a compact card layout, with inline audio controls and a direct file download action ([#1290](https://github.com/BotHarness/DeepSeekBot/issues/1290)).
|
|
21
|
+
- Your own message header places the name on the right and the timestamp on its left ([#1298](https://github.com/BotHarness/DeepSeekBot/issues/1298)).
|
|
22
|
+
- Group Channel headers use the same avatar as the sidebar, without individual Bot Window Companion Pin buttons; Bot DM companion controls and Channel pinning remain available ([#1439](https://github.com/BotHarness/DeepSeekBot/issues/1439)).
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- Core and product-managed IM Provider compatibility declarations now use a DSH minimum of `>=0.1.7-0`, including previews, without an exact-version lock or future-version ceiling. A repeatable packaged installation matrix checks published DSH versions from 0.1.7-alpha.1 through 0.2.1-alpha.2 without compatibility exemptions; future versions are allowed by the declaration, not yet runtime-qualified ([#1425](https://github.com/BotHarness/DeepSeekBot/issues/1425)).
|
|
27
|
+
|
|
28
|
+
## [1.2.0] - 2026-10-08
|
|
29
|
+
|
|
30
|
+
Bots can be pinned as pixel Window Companions that play their replies, binding one app is enough to send and receive on Lark, Slack, Discord and WeChat, group Channels can connect external conversations, a Bot can be exported and imported as a zip, the Bot Profile gets a banner, tags and bio while its settings move to the Channel sidebar, the Bot Marketplace shows profile cards, Bot mode can install Git, and first-time Bot mode walks you through one real conversation.
|
|
31
|
+
|
|
32
|
+
### Breaking Changes
|
|
33
|
+
|
|
34
|
+
- Profile recovery adds schema Generation 72; repair forward after upgrade. A restored environment preserves identity and history while requiring explicit target-local model authorization and fresh activation; it never resumes old Sessions or Outbox work ([#886](https://github.com/BotHarness/DeepSeekBot/issues/886), [guide](docs/settings.md#complete-environment-backup-and-restore)).
|
|
35
|
+
|
|
36
|
+
- Content Purge adds Profile schema Generation 70 and a required independent Purge Ledger; retain that ledger when restoring operational snapshots and repair forward after upgrade. Checkpoint v2 includes managed-file selectors and imports existing v1 text checkpoints; accepted purges cannot be undone by rolling back code or the operational database ([#897](https://github.com/BotHarness/DeepSeekBot/issues/897)).
|
|
37
|
+
- Bot onboarding adds Profile schema Generation 71. Back up before upgrading; reopening an upgraded Profile requires a compatible binary or restoration of the pre-upgrade backup ([#1175](https://github.com/BotHarness/DeepSeekBot/issues/1175)).
|
|
38
|
+
- PersonaBot deletion adds Profile schema Generation 66; back up before upgrading and repair forward instead of rolling back only code. Direct Registry `remove`/`purge` calls now refuse: use the confirmed deletion owner, which retains identity and usage history ([#896](https://github.com/BotHarness/BotHarness/issues/896)).
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- The welcome offers today's AI news with source links only when native search credentials and the Bot's search Tool are configured; otherwise it offers a general planning request, and the news request asks for truthful search-error reporting ([#1174](https://github.com/BotHarness/DeepSeekBot/issues/1174)).
|
|
43
|
+
|
|
44
|
+
- Pixel Avatars can be a goblin, with pointed ears through the hair, small tusks and suggested green skin, and left and right side hair can each have their own style and color; the goblin keeps head turns and speaking mouths in Window Companions, random covers both species, and existing Avatars render unchanged ([#1210](https://github.com/BotHarness/DeepSeekBot/issues/1210), [ADR-0148](docs/adr/0148-avatar-species-and-custom-parts-extend-one-pixel-rig.md)).
|
|
45
|
+
|
|
46
|
+
- The welcome now offers a daily evening check-in at 21:00 with the browser time zone and current DM shown before selection; missing time zones are confirmed first, and existing model setup retains the complete request for explicit sending ([#1228](https://github.com/BotHarness/DeepSeekBot/issues/1228)).
|
|
47
|
+
|
|
48
|
+
- The Bot Marketplace now shows each Bot's Profile banner: a thumbnail on every row and a full banner at the top of the detail view, with a neutral placeholder when a Bot has none. The Marketplace Worker reads `banner` from `.botharness/bot.json`; a pixel scene is drawn locally, and an uploaded image loads from the repository at the indexed commit ([#1093](https://github.com/BotHarness/BotHarness/issues/1093)).
|
|
49
|
+
|
|
50
|
+
- The welcome’s ten-minute reminder now shows the browser time zone and requests a single delivery to the current DM; the Host computes relative deadlines without rounding them early, and the Bot receives concise one-time scheduling and destination guidance ([#1208](https://github.com/BotHarness/DeepSeekBot/issues/1208)).
|
|
51
|
+
|
|
52
|
+
- Every Bot now has a Profile banner at the top of its Profile and its popover. New Bots get a pixel scene picked from their name, which a rename doesn't change; existing Bots get one at the next start. **Change banner** picks one of ten scenes, rerolls the picture, uploads an image cropped to 3:1, or resets to the generated scene. `.botharness/bot.json` records the banner, `.botharness/banner.png` is always written, and Bot Zip export, import and Git import keep it ([#1092](https://github.com/BotHarness/BotHarness/issues/1092)).
|
|
53
|
+
|
|
54
|
+
- After a first real Bot-mode reply, an optional Bind app action opens the existing platform picker and website tutorials; Not now leaves completion intact, and only canonical binding and reception facts determine the result ([#1203](https://github.com/BotHarness/DeepSeekBot/issues/1203)).
|
|
55
|
+
|
|
56
|
+
- After the first real Bot-mode reply, an optional welcome action opens existing Memory files and changes or sends a freeform preference as a normal DM request; skipping stays quiet and only actual files and changes show what was saved ([#1200](https://github.com/BotHarness/DeepSeekBot/issues/1200)).
|
|
57
|
+
|
|
58
|
+
- Bot settings can export and inspect one verified complete `.botharness-backup`, including retained custom/deleted Memory, current attachments, model templates and independent plans, and the canonical purge checkpoint; the installed local command restores only into a new stopped environment ([#886](https://github.com/BotHarness/DeepSeekBot/issues/886), [guide](docs/settings.md#complete-environment-backup-and-restore)).
|
|
59
|
+
|
|
60
|
+
- WeChat identity enablement and native typing can inherit independent global defaults or retain Bot-specific overrides; existing choices are preserved on upgrade, and unsupported group/Thread settings stay hidden ([#912](https://github.com/BotHarness/BotHarness/issues/912), [guide](docs/wechat-connection.md)).
|
|
61
|
+
|
|
62
|
+
- Isolated AX launches expose bounded, allowlisted real Client startup/runtime evidence and explicit shell readiness for coding agents, retaining first failures across document retries ([#1184](https://github.com/BotHarness/DeepSeekBot/issues/1184), [guide](docs/dev/guides/client-startup-diagnostics.md)).
|
|
63
|
+
|
|
64
|
+
- Ended Groups expose retained history and separate Source Event Content Purge, showing all shared placements, Admissions, managed files and dependent effects before confirmation. Exclusive current/legacy attachments are removed, shared files survive, interrupted cleanup resumes on restart, and issued replies retain honest outcomes; restore checkpoints and an asynchronous purge barrier support future Profile Backup ([#897](https://github.com/BotHarness/DeepSeekBot/issues/897), [QA guide](docs/agents/qa-channel-purge.md)).
|
|
65
|
+
- First Bot-mode entry prepares one DeepSeek Bot, a real DM and reusable welcome choices for capabilities, news and scheduled requests; model setup saves separately from explicit question sending and preserves unsent requests, supports a Profile default with Bot inheritance, and completes only after a real reply; the welcome creation action has a distinct theme-accented button, question cards hide Session provenance and short headers outside Developer mode and retain drafts when toggled, optional custom answers use compact input hints, and the compact welcome and question options reuse joined sidebar cards with distinct message surfaces, direct single selection and checkbox multi-selection, and onboarding/global setup share the existing model and reasoning controls with the Bot editor. Tutorial progress survives restart, and safe manual retry keeps the original Human message ([#1175](https://github.com/BotHarness/DeepSeekBot/issues/1175), [ADR-0147](docs/adr/0147-onboarding-is-profile-progress-over-canonical-dm-evidence.md)).
|
|
66
|
+
|
|
67
|
+
- Supported pixel Window Companions open and close their mouths as committed message text appears, pause at punctuation, and restore the saved face after completion, cancellation or backgrounding; roster portraits and image fallbacks keep their existing identity ([#1143](https://github.com/BotHarness/DeepSeekBot/issues/1143)).
|
|
68
|
+
|
|
69
|
+
- Window Companions follow archive and deletion independently of Bot mode, preserve image/unknown-version snapshot fallbacks, and support keyboard reading and controls. Keyboard menus receive focus after placement and return it to the invoking control when dismissed. Motion preference changes settle immediately; offscreen presentation and obsolete animations stop without restarting old messages ([#1142](https://github.com/BotHarness/DeepSeekBot/issues/1142)).
|
|
70
|
+
|
|
71
|
+
- Window Companions recover a bounded set of unplayed eligible replies after a brief same-Host disconnect, retry temporarily closed streams, preserve reading progress and pause presentation while the page is hidden. Reopening a source starts with future replies; first selection and Client/Host restart never replay history ([#1141](https://github.com/BotHarness/DeepSeekBot/issues/1141)).
|
|
72
|
+
|
|
73
|
+
- Window Companions can independently play Group replies and choose own-DM, shared-Channel or all-Bot-Channel scope, including Bot–Bot DMs with both participants named. Cards identify the original Channel and respect its existing read access; changing sources or scope removes only newly ineligible cards, preserves eligible reading and queued messages, and starts newly enabled sources with future committed Bot text, without marking messages read ([#1140](https://github.com/BotHarness/DeepSeekBot/issues/1140)).
|
|
74
|
+
|
|
75
|
+
- Human can delete a PersonaBot from Profile while retaining Memory by default, explicitly erase a verified exclusive repository, open its Host folder, and inspect/retry incomplete cleanup; deletion retains history and terminally fences the original identity ([#896](https://github.com/BotHarness/BotHarness/issues/896)).
|
|
76
|
+
|
|
77
|
+
- Lark, Slack and Discord groups now show their real names instead of IDs: in External identities, in connected external conversations, on messages in the Channel, and in what the Bot reads, where the ID is still given next to the name. Discord groups read as `Server #channel`. Lark sender names are looked up with a longer timeout and cached per app, and a failed lookup falls back to the ID. Existing entries pick up the name with their next message ([#1151](https://github.com/BotHarness/BotHarness/issues/1151), [External connectors guide](docs/channel-sidebar/external-connectors.md)).
|
|
78
|
+
- A group Channel can connect an external conversation: **Connect an external conversation** under External connectors in the group's Channel sidebar picks a bound app and one of its known groups, and every message from that group then appears in the Channel. Member Bots get the messages as context only by default and wake only when someone @s them; the connection's wake setting can switch to a batch or every message, and a member's own wake policy in the Channel still wins. Each row shows its state and last message, with a switch to pause and **Delete** to stop new messages while keeping the ones already here ([#1145](https://github.com/BotHarness/BotHarness/issues/1145), [ADR-0143](docs/adr/0143-an-external-conversation-streams-into-a-channel-as-one-way-context.md), [External connectors guide](docs/channel-sidebar/external-connectors.md)).
|
|
79
|
+
- Slack DMs to a bound app now reach the Bot's Inbox and get answered in the DM without opening a thread, and Discord apps appear in **Bind app** again. The development IM provider moves to a dsh-im build with Slack DM intake, Discord checked delivery and checked Slack/Discord reply mentions ([#1125](https://github.com/BotHarness/BotHarness/issues/1125), [External identities guide](docs/channel-sidebar/external-identities.md)).
|
|
80
|
+
|
|
81
|
+
- Bots can be selected as transparent pixel Window Companions from sidebar menus or individual Channel-header buttons. Each keeps its own Activity, new Human–Bot DM bubbles, drag physics, reading list and walking preferences across Harness pages; shared Profile settings control stacked layers and bounded card retention, and restart restores preferences without replaying old messages. Reduced motion disables drop and pose effects; walking pause does not pause Bot execution ([#1138](https://github.com/BotHarness/DeepSeekBot/issues/1138), [#1139](https://github.com/BotHarness/DeepSeekBot/issues/1139)).
|
|
82
|
+
|
|
83
|
+
- One Bot can bind several apps of the same platform, such as two Lark apps: each app's DMs and @mentions reach the same Inbox and replies go out through the app that received them. **Bind app** lists every connected app and greys out the ones a Bot already uses, naming that Bot, and External identities lists the Bot's apps grouped by platform. A shared reply from a Bot with two apps in the same group refuses with a clear message ([#1110](https://github.com/BotHarness/BotHarness/issues/1110), [External identities guide](docs/channel-sidebar/external-identities.md)).
|
|
84
|
+
|
|
85
|
+
- An app's conversation list in **Edit identity** is now manageable: conversations sort into **Waiting**, **Active**, **Muted** and **Blocked**. **Mute** keeps messages in the Inbox without waking the Bot, **Rules** edits one group's collection and wake, and **Block** (confirmed) cancels unsent replies and keeps the conversation out even after restart or unbinding and rebinding; **Allow again** starts fresh with no backfill. A new **New conversations** setting chooses **Admit automatically** or **Ask me first**; waiting conversations keep only names and counts, never message text. At most 20 new conversations per app join automatically each hour and 500 stay active; beyond that they wait with the reason shown ([#1109](https://github.com/BotHarness/BotHarness/issues/1109), [External identities guide](docs/channel-sidebar/external-identities.md)).
|
|
86
|
+
|
|
87
|
+
- Slack, Discord and personal WeChat bind in one step too: after **Bind app**, DMs to a Slack or Discord app and @mentions of it in channels go straight to the Bot's Inbox with replies in the same thread; personal WeChat admits only DMs from the person who scanned it, never other contacts or groups. The bind dialog shows the real receiving state on every platform, and recorded group conversations follow the platform's global group intake and wake defaults ([#1112](https://github.com/BotHarness/BotHarness/issues/1112), [External identities guide](docs/channel-sidebar/external-identities.md)).
|
|
88
|
+
|
|
89
|
+
- Binding a Lark app is now enough to send and receive: **Bind identity** under External identities becomes **Bind app**, and once bound, DMs to the app and @mentions of it in groups go straight to this Bot’s Inbox, with the Bot replying in place. No saved delivery target, conversation authorization or reception switch is needed. The first message records its conversation; the app row shows a conversation count and opens a read-only conversation list, and the bind dialog shows the real receiving state. `/pair` still goes to pairing, existing authorizations behave as before, and every bound app upgrades to admitting new conversations automatically ([#1108](https://github.com/BotHarness/BotHarness/issues/1108), [ADR-0142](docs/adr/0142-a-bound-app-admits-its-direct-messages-and-mentions.md), [External identities guide](docs/channel-sidebar/external-identities.md)).
|
|
90
|
+
|
|
91
|
+
- A reviewed Lark operator can receive tool approvals in a named management DM and use **Allow once** or **Reject**; callbacks recheck the actual actor and exact native call, while the Profile distinguishes delivery, accepted decision and native execution result. Known-unsent retries are bounded; uncertain delivery and old cards after restart cannot authorize execution ([#1029](https://github.com/BotHarness/BotHarness/issues/1029), [ADR-0141](docs/adr/0141-lark-private-approvals-rejoin-the-native-owner-through-checked-controls.md)).
|
|
92
|
+
|
|
93
|
+
- AX isolated Profiles can reuse a machine-local OpenCode Go credential and native default model after one hidden-input setup, preserving independent Profile configuration; the qualified DSH 0.2.0 RC1 adapter supplies the actual Session header required for real Go replies ([#1079](https://github.com/BotHarness/BotHarness/issues/1079), [guide](docs/agents/ax-model.md)).
|
|
94
|
+
- Added a source-preview native WeChat typing candidate tied to authorized owner-DM processing, with bounded renewal, lifecycle cleanup and an identity preference; native client visibility and packaged-product qualification remain tracked on [#911](https://github.com/BotHarness/BotHarness/issues/911) ([guide](docs/wechat-connection.md), [ADR-0145](docs/adr/0145-wechat-typing-follows-owned-processing-leases.md)).
|
|
95
|
+
|
|
96
|
+
- Qualified personal WeChat owner-DM text reports use the canonical external-only Outbox with current-authorization fences and actionable private-context refusal. Profile exposes explicit posting; client acknowledgement and any genuine native server message ID remain distinct, without claiming delivery/read receipts ([#910](https://github.com/BotHarness/BotHarness/issues/910), [guide](docs/wechat-connection.md)).
|
|
97
|
+
|
|
98
|
+
- Personal WeChat paired-owner messages can use Channel connectors for explicit local DM/Group placement or Inbox-only reception, sharing one Source Event with independent member wake policy. Shared readers need their own identity and Grant to reply; native WeChat groups and threads remain unsupported ([#909](https://github.com/BotHarness/BotHarness/issues/909)).
|
|
99
|
+
|
|
100
|
+
- Added a candidate Lark image preview in original Channel bubbles, preserving native text/image order, visible-only loading, enlargement and current Channel/source authorization; forwards the image opt-in through the account consumer boundary; stopping reception retains acquired images while unbind/revocation refuses the affected path ([#1021](https://github.com/BotHarness/BotHarness/issues/1021), [guide](docs/lark-connection.md)).
|
|
101
|
+
- PersonaBots can read native WeChat quoted text or resolve a missing quote from currently authorized retained private-conversation records; source details distinguish native, retained and unavailable content, and bounded local context reads support cursor continuation without claiming remote WeChat history ([#908](https://github.com/BotHarness/BotHarness/issues/908), [guide](docs/wechat-connection.md)).
|
|
102
|
+
- Added Lark private `/pair` requests with authenticated Web review, explicit Bot-scoped capabilities and revocation that survives restart; pairing messages stay outside the Bot Inbox and Memory, while IM decision controls follow separately ([#1027](https://github.com/BotHarness/BotHarness/issues/1027), [guide](docs/lark-connection.md), [ADR-0136](docs/adr/0136-lark-pairing-is-reviewed-bot-scoped-operational-authority.md)).
|
|
103
|
+
- Added a checked personal WeChat video path with on-demand source playback/download and own-identity native video replies, preserving private routing and current authorization; browser playback and tool access remain distinct from video-model understanding ([#907](https://github.com/BotHarness/BotHarness/issues/907), [guide](docs/wechat-connection.md)).
|
|
104
|
+
- Added original WeChat voice download and explicit playback preparation for supported SILK audio, with a separately saved WAV working copy, bounded decoding and current-source authorization; speech recognition and native voice replies remain separate capabilities ([#906](https://github.com/BotHarness/BotHarness/issues/906), [guide](docs/wechat-connection.md)).
|
|
105
|
+
- Discord now has independent external-platform defaults for group intake, ordinary wake thresholds and inherited identity availability. Profile custom choices remain independent; restoring inheritance uses the current Discord defaults. Existing Lark/Slack history and overrides are preserved on upgrade. ([#1016](https://github.com/BotHarness/BotHarness/issues/1016))
|
|
106
|
+
- A Bot can now be handed to someone else as a zip. **Create PersonaBot** opens a submenu with **Start empty**, **Import from GitHub** and **Import from zip**. The Bot profile's **Share and export** section packs the Bot's Memory files, uncommitted changes included, with `.botharness/bot.json` and its avatar, after a reminder to check for secrets; Git history, Sessions, IM bindings and credentials stay out. Importing a zip shows the third-party content notice and creates a fresh Bot with one initial commit and the name, roles and avatar from the zip; unsafe paths, damaged archives and zips over 100 MB are refused and leave nothing behind ([#1062](https://github.com/BotHarness/BotHarness/issues/1062), [ADR-0135](docs/adr/0135-a-bot-moves-between-people-as-a-zip-of-its-memory-files.md)).
|
|
107
|
+
- Exporting a Bot zip now lets you pick files. The export window lists every Memory file and folder, all ticked by default, with expand, collapse, **Select all** and **Select none**; unticked files stay out of the zip, while `.botharness/bot.json` and the avatar are always included ([#1063](https://github.com/BotHarness/BotHarness/issues/1063)).
|
|
108
|
+
- Exporting a Bot zip can now **Include Git history**, carrying every branch, tag and commit; it is offered only when every file is ticked. Importing such a zip keeps those branches, tags and history and checks out the exported branch, with no remote and none of the source machine's Git config ([#1064](https://github.com/BotHarness/BotHarness/issues/1064)).
|
|
109
|
+
- Added the [Export and import a Bot](docs/bot-zip.md) guide: what a Bot zip holds, choosing files and Git history on export, importing a zip, and the safety reminders before sharing and importing; the Share a Bot and Memory files guides link to it ([#1065](https://github.com/BotHarness/BotHarness/issues/1065)).
|
|
110
|
+
- Bot mode now checks the Host's Git before you create a Bot. When Git is missing, cannot run (such as the macOS Command Line Tools stub) or is older than 2.28, the roster explains why, links to the new [Git section](docs/installation.md#git) of the installation guide, and turns off creating and importing Bots until **Check again** finds a usable Git; Bot creation that still meets an unusable Git reports it as missing Git instead of a generic memory error ([#1096](https://github.com/BotHarness/BotHarness/issues/1096), [ADR-0140](docs/adr/0140-the-host-falls-back-to-a-managed-git.md)).
|
|
111
|
+
- Bot mode can now install Git for you: when the Host's Git is unusable, **Install Git** downloads a pinned portable Git into the DeepSeek Harness data folder (from `media.botharness.ai`, falling back to GitHub), verifies its SHA-256 and starts using it without a restart or admin rights; the Orchestrator's Shell uses the same Git. A usable system Git still wins on each start ([#1097](https://github.com/BotHarness/BotHarness/issues/1097), [Git section](docs/installation.md#git)).
|
|
112
|
+
- Importing a Bot from an SSH address now falls back to HTTPS: when cloning `git@host:owner/repo` or `ssh://git@host/owner/repo` fails, the Host retries once with the matching HTTPS address, says it switched, and the Bot syncs over HTTPS from then on; if HTTPS fails too, you see the original SSH error. DeepSeekBot settings gain a **Git** row showing the Git version in use and whether it is system or managed ([#1098](https://github.com/BotHarness/BotHarness/issues/1098), [Git section](docs/installation.md#git)).
|
|
113
|
+
|
|
114
|
+
- Lark feedback candidates can show native `GLANCE` after durable Inbox receipt and `DONE` after the corresponding externally accepted reply, through an optional checked Provider; feedback waits for first-connection readiness and permission denials are definite failures. An authorized scope update and guarded browser retest verified DM reactions and receipt-only silence; group and recovery qualification remain pending ([#1040](https://github.com/BotHarness/BotHarness/issues/1040), [guide](docs/lark-connection.md#receipt-and-answer-feedback-candidate)).
|
|
115
|
+
|
|
116
|
+
### Changed
|
|
117
|
+
|
|
118
|
+
- Bot Marketplace cards now read like a profile card: the Profile banner sits on top, the Bot's avatar overlaps its lower edge with the name, repository and Install beside it, then a two-line bio and one line of tags, stars and update date. The detail view opens with the same banner and avatar, and the modal shows two cards per row ([#1232](https://github.com/BotHarness/BotHarness/pull/1232)).
|
|
119
|
+
- **Bind app** links directly to the website connection tutorials for Lark / Feishu, Slack and WeChat, with a more-platforms overview; the standalone Lark setup card is removed so platform instructions stay in one place ([#822](https://github.com/BotHarness/DeepSeekBot/issues/822)).
|
|
120
|
+
|
|
121
|
+
- **New conversations** is now a platform default too: Lark, Slack and Discord each have a **New conversations** choice in their global IM defaults (**Admit automatically** unless changed), and every bound app follows it until you pick a value for that app. Apps already set to **Ask me first** keep it ([#1134](https://github.com/BotHarness/BotHarness/issues/1134), [External identities guide](docs/channel-sidebar/external-identities.md)).
|
|
122
|
+
- The External connectors entry no longer offers **Add connector** or **Authorize a conversation** while syncing is redesigned around connecting any app's conversation; it lists existing syncs and keeps **Save a send target (advanced)** for apps that can't post to conversations directly. A conversation row shows where it is synced, and its actions (**Mute**, **Rules**, **Block**) sit on their own row with a tooltip each. The Lark setup guide shrinks to three steps (connect the app, bind it, send a test message), and the Lark, Slack and WeChat guides are rewritten around **Bind app** ([#1113](https://github.com/BotHarness/BotHarness/issues/1113), [Lark guide](docs/lark-connection.md), [External connectors guide](docs/channel-sidebar/external-connectors.md)).
|
|
123
|
+
|
|
124
|
+
- A Bot's model and wake policy moved from its Profile to two new entries in the DM's Channel sidebar, **Model** and **Wake policy**. Each shows its current value in the collapsed header, lists one row per setting, and opens a dialog to edit; both can be reordered or hidden like other entries. The Model dialog now lists a **Main model** and a **Task model**, each picked from a searchable list with its reasoning effort; models can be set without any preset, a saved preset can still fill the dialog, and **Save as preset** keeps the current settings for reuse. **Attention policy** is now called **Wake policy** ([#1084](https://github.com/BotHarness/BotHarness/issues/1084), [Model guide](docs/channel-sidebar/model.md), [Wake policy guide](docs/channel-sidebar/wake-policy.md)).
|
|
125
|
+
- A Bot's IM settings moved from its Profile to two new entries in the DM's Channel sidebar. **External identities** lists each bound identity as a row with its availability and an on/off switch, plus **Bind identity**, the Lark setup guide, IM administrator pairing and Lark approval notifications. **External connectors** lists one row per connector with its state and an on/off switch, plus **Add connector** and conversation authorization. Clicking a row opens a dialog to edit it, with the same options as before. **Channel connectors** are now called **External connectors**. The SOUL.md and MEMORY.md standing limits became one row under **Memory files** that opens a dialog. The moved forms now use the shared dropdowns, inputs and checkboxes ([#1085](https://github.com/BotHarness/BotHarness/issues/1085), [External identities guide](docs/channel-sidebar/external-identities.md), [External connectors guide](docs/channel-sidebar/external-connectors.md)).
|
|
126
|
+
- A local group's member wake settings and external connectors moved from the group Profile to two new entries in its Channel sidebar, **Wake policy** and **External connectors**, between Members and Group management. Wake policy shows one card per member Bot with its rule in this group, any external platform whose rule differs, and a **Channel override** tag when set for this group; clicking a card opens the same dialog as before. External connectors lists the group's connectors and connected external conversations as rows that open their edit dialogs. Both entries can be reordered or hidden, and the group Profile now shows only the group's name, avatar and message activity ([#1086](https://github.com/BotHarness/BotHarness/issues/1086), [Wake policy guide](docs/channel-sidebar/wake-policy.md), [External connectors guide](docs/channel-sidebar/external-connectors.md)).
|
|
127
|
+
- The Bot Profile view now shows only who the Bot is and its activity. A new header has a banner area, the avatar, name, **Tags** and **Bio**, with **Share**, **Edit profile** and a **⋯** menu at the top right. **Edit profile** changes the name, Tags (up to 8, 32 characters each) and Bio (up to 160 characters) together; clicking the avatar opens the avatar editor. **Share** exports the Bot zip and is also on the Bot's right-click menu in the sidebar; **Delete Bot** moved to the **⋯** menu. Role badges are now called Tags and the description Bio. `.botharness/bot.json` writes `tags` and `bio`, and Bio changes sync like a rename; files and zips that still use `roles` are read as Tags, and zip import keeps Tags and Bio. The Bot Marketplace API returns `tags` and `bio`, falling back to `roles` and the GitHub description ([#1087](https://github.com/BotHarness/BotHarness/issues/1087), [Share a Bot guide](docs/share-bot.md), [Export and import guide](docs/bot-zip.md)).
|
|
128
|
+
- The Profile's **Token usage** card is shorter: it switches between **Daily total** and **By model** and offers 7 / 30 / 90 days / All, with a custom range in the **⋯** menu. The role filter, model/provider filter, cache-ratio section and execution details are gone; hover a bar for the cached, uncached input and output split. The separate **Totals** card is removed, and a saved pin for it is dropped quietly ([#1088](https://github.com/BotHarness/BotHarness/issues/1088), [Settings guide](docs/settings.md)).
|
|
129
|
+
- The event activity and Memory commit heatmaps in the Bot Profile now fill the card's width, newest week on the right, and load older weeks as you scroll left, back to the day the Bot was created; the popover versions fill the popover without scrolling. The per-reason event list moved into each day's tooltip ([#1089](https://github.com/BotHarness/BotHarness/issues/1089)).
|
|
130
|
+
- Interface text now calls you "you" and Bots "Bot" everywhere: "Human", "PersonaBot", "Source Event" and "Attention" no longer appear in Chinese or English labels, the purge tombstone reads `Content purged · you · {time}`, and the connector section is always "External connectors". A test fails if those internal terms return ([#1090](https://github.com/BotHarness/BotHarness/issues/1090)).
|
|
131
|
+
|
|
132
|
+
### Fixed
|
|
133
|
+
|
|
134
|
+
- On an explicitly configured native RC2 timed-question Profile, a DM question card stays answerable after its foreground deadline while the same Bot handles other messages; a late answer shows submitted until the original native Session admits it. Production pins and blocking RC1 questions remain unchanged ([#1220](https://github.com/BotHarness/DeepSeekBot/issues/1220)).
|
|
135
|
+
|
|
136
|
+
- Bot onboarding no longer pauses another window's tutorial when an observing window leaves or sets a model; completed onboarding can be explicitly replayed, and saving a Bot-specific model or restoring inheritance immediately refreshes the open model card ([#1175](https://github.com/BotHarness/DeepSeekBot/issues/1175)).
|
|
137
|
+
|
|
138
|
+
- **Bind app** keeps apps owned by another Bot visible with an explicit owner label, adds tutorial jump arrows and **Add new app** beside the App label and in every dropdown state, and restores the dialog after IM setup with automatic refresh and a tooltip refresh icon for retry ([#1176](https://github.com/BotHarness/DeepSeekBot/issues/1176), [External identities guide](docs/channel-sidebar/external-identities.md)).
|
|
139
|
+
|
|
140
|
+
- npm release preparation now names the changed source paths when a clean-checkout check refuses publication, with bounded diagnostics that preserve unreviewed files ([#877](https://github.com/BotHarness/DeepSeekBot/issues/877)).
|
|
141
|
+
|
|
142
|
+
- Unpinning a Window Companion clears its stale Activity indicator; a successfully loaded Bot roster also clears a deleted Bot's restored selection, while network failures preserve the Human's pin preferences ([#1138](https://github.com/BotHarness/DeepSeekBot/issues/1138)).
|
|
143
|
+
|
|
144
|
+
- Window Companions lean behind the grab point when dragged left or right and settle against the window content edge without a floor gap ([#1138](https://github.com/BotHarness/DeepSeekBot/issues/1138)).
|
|
145
|
+
|
|
146
|
+
- Bots now read IM mentions as names instead of platform placeholders: Lark `@_user_1` and Slack `<@U…>` reach the model as `@Name` (or `@id` when the platform gave no name), and each external message lists its sender and mentioned people with their platform IDs. A Bot can @ the sender or anyone mentioned in that message by writing `<@ID>` anywhere in its `bridge_reply` text, on Lark, Slack and Discord (Slack and Discord ping through the IM provider's checked mentions, or fall back to `@Name` text on an older provider); any other id or mention tag is sent as plain text ([#1126](https://github.com/BotHarness/BotHarness/issues/1126)).
|
|
147
|
+
- **Bind app** no longer hides apps the IM plugin can't serve yet. A Discord app whose plugin lacks checked sending now shows greyed out with **update the IM plugin to bind this app**, instead of silently missing from the list ([#1123](https://github.com/BotHarness/BotHarness/issues/1123)).
|
|
148
|
+
- **Bind app** no longer lists apps already bound to the same Bot; they are already shown under External identities ([#1127](https://github.com/BotHarness/BotHarness/issues/1127)).
|
|
149
|
+
|
|
150
|
+
- The Model dialog no longer offers routes that cannot run: once a real turn fails because a provider has no API key or an invalid one, that provider's models are listed last as **needs an API key** or **API key invalid** and cannot be picked or saved, until DSH credentials, settings or adapters change. A Bot without a Model Plan now starts the dialog on DSH's default model instead of the first catalog entry ([#1124](https://github.com/BotHarness/BotHarness/issues/1124)).
|
|
151
|
+
- Shared Channel messages now show the external sender’s retained name, including existing Discord history; bubbles render retained native @ names as chips using the Lark Inbox renderer, while original text and IDs stay intact and unavailable names keep the literal fallback ([#1061](https://github.com/BotHarness/BotHarness/issues/1061)).
|
|
152
|
+
|
|
153
|
+
### Documentation
|
|
154
|
+
|
|
155
|
+
- Qualified native RC2 timed questions in an isolated real-model experiment: conversation can continue before a correlated late answer, while the existing Web question card still expires and production permission/capacity gates remain blocked ([#1220](https://github.com/BotHarness/DeepSeekBot/issues/1220), [report](docs/research/1220-native-timed-question-experiment.md)).
|
|
156
|
+
|
|
157
|
+
- Documented an [AX browser qualification loop](docs/agents/ax-browser.md) that separates exact-origin permission evidence, Host transport, navigation refusals and screenshot/input timeouts, including measured retries on Human-authorized local ports ([#1225](https://github.com/BotHarness/DeepSeekBot/issues/1225)).
|
|
158
|
+
|
|
159
|
+
- Documented the accepted pixel Avatar extension: Avatar Species on one rig (fantasy, animal and flower bases), separately colored hair pieces, a through-hair headpiece slot, and Human-drawn Custom Parts in a Profile Part Library that travel with exported PersonaBots and move as PNGs; runtime behavior is unchanged ([#1135](https://github.com/BotHarness/DeepSeekBot/issues/1135), [ADR-0148](docs/adr/0148-avatar-species-and-custom-parts-extend-one-pixel-rig.md), [handoff](docs/research/2026-10-08-avatar-species-and-custom-parts-handoff.md)).
|
|
160
|
+
|
|
161
|
+
- Documented the pinned native Human-wait qualification and the follow-up requirement to keep group conversation available during pending questions/permissions: independent Assignment approvals leave the Orchestrator available, while its own approval/question still blocks unrelated model processing; production continuation remains gated ([#1036](https://github.com/BotHarness/DeepSeekBot/issues/1036), [experiment](docs/research/1036-native-wait-experiment.md), [#1220](https://github.com/BotHarness/DeepSeekBot/issues/1220), [#1038](https://github.com/BotHarness/DeepSeekBot/issues/1038)).
|
|
162
|
+
|
|
163
|
+
- Documented the accepted in-window transparent pixel Window Companion design: local companion selection, three Bot-output visibility scopes, independent playback controls and future-only bounded message consumption; runtime behavior is unchanged ([#1132](https://github.com/BotHarness/BotHarness/issues/1132), [spec #1135](https://github.com/BotHarness/BotHarness/issues/1135), [ADR-0143](docs/adr/0143-window-companions-consume-owned-activity-and-scoped-output.md)).
|
|
164
|
+
|
|
165
|
+
- Documented native Windows candidate installation and approval verification, including physical AppData paths, isolated Profile package-manager pins, actual Shell exit evidence and process timestamp guards, in the [DSH debugging playbook](.agents/skills/dsh-dev/references/debugging-playbook.md). The bilingual [Lark guide](docs/lark-connection.md) records real Human Allow once/Reject qualification on exact candidate sources; this documentation update does not change runtime behavior ([#1029](https://github.com/BotHarness/BotHarness/issues/1029)).
|
|
166
|
+
|
|
167
|
+
- Documented development-source Discord shared Channel qualification for one bound member with Message Content OFF, including original-thread model replies, overlap deduplication and pause/restart/restoration evidence ([#1054](https://github.com/BotHarness/BotHarness/issues/1054), [verification](docs/dev/verification/discord-1054-shared-channel.md), [中文验证](docs/dev/verification/discord-1054-shared-channel.zh.md)).
|
|
9
168
|
|
|
10
169
|
## [1.1.0] - 2026-10-06
|
|
11
170
|
|
package/CHANGELOG.zh.md
CHANGED
|
@@ -5,7 +5,166 @@
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
-
1.1
|
|
8
|
+
1.2.1 之后暂无变化。
|
|
9
|
+
|
|
10
|
+
## [1.2.1] - 2026-10-12
|
|
11
|
+
|
|
12
|
+
修复兼容的 DSH 0.1.7 和 0.2 Host 上的插件安装限制,并加入更清晰的群身份和附件卡片;不包含尚未完成的 1.3 数据迁移。
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- 未设置自定义头像的群,在侧栏、折叠栏和置顶网格中显示最多四个成员的静态头像 ([#1270](https://github.com/BotHarness/DeepSeekBot/issues/1270))。
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- 音频和文件附件采用紧凑的统一卡片布局,提供内联音频控件和直接下载文件的操作 ([#1290](https://github.com/BotHarness/DeepSeekBot/issues/1290))。
|
|
21
|
+
- 自己发送的消息头将名称放在右侧,时间放在名称左侧 ([#1298](https://github.com/BotHarness/DeepSeekBot/issues/1298))。
|
|
22
|
+
- 群 Channel 消息区的 Header 与侧栏使用相同头像,不再显示单个 Bot 的窗口伙伴 Pin 按钮;Bot 私聊的小人 Pin 和 Channel 置顶保持可用 ([#1439](https://github.com/BotHarness/DeepSeekBot/issues/1439))。
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- Core 和随产品更新的 IM Provider 改用最低 DSH 版本 `>=0.1.7-0`(含预览版),不再锁定精确版本或设置未来版本上限。可重复运行的实包安装矩阵检查 0.1.7-alpha.1 至 0.2.1-alpha.2 的已发布 DSH 版本,无需兼容豁免;声明允许未来版本安装,但不代表已验证其运行兼容性 ([#1425](https://github.com/BotHarness/DeepSeekBot/issues/1425))。
|
|
27
|
+
|
|
28
|
+
## [1.2.0] - 2026-10-08
|
|
29
|
+
|
|
30
|
+
Bot 可以作为像素窗口伙伴固定在窗口里播放回复;绑定一个应用即可在飞书、Slack、Discord 和微信收发消息;群 Channel 可以连接外部会话;Bot 可以导出为 zip 并在别处导入;Bot 资料页新增横幅、标签和简介,设置项移到 Channel 侧栏;Bot 市场改为资料卡;Bot 模式可以帮你安装 Git;首次进入 Bot 模式会带你完成一次真实对话。
|
|
31
|
+
|
|
32
|
+
### Breaking Changes
|
|
33
|
+
|
|
34
|
+
- 环境恢复新增 Schema Generation 72;升级后应向前修复。恢复环境保留身份和历史,但需要明确授权目标本地模型并激活新会话;旧 Session 和 Outbox 工作不会重放([#886](https://github.com/BotHarness/DeepSeekBot/issues/886), [guide](docs/settings.md#complete-environment-backup-and-restore))。
|
|
35
|
+
|
|
36
|
+
- 内容清除新增 Profile schema Generation 70 与必须保留的独立 Purge Ledger;恢复运行数据库快照时须保留该账本,升级后应向前修复。v2 检查点包含托管文件选择器并兼容导入 v1 纯文本检查点;回退代码或运行数据库不能撤销已接受的清除事实([#897](https://github.com/BotHarness/DeepSeekBot/issues/897))。
|
|
37
|
+
- Bot 引导增加 Profile schema Generation 71。升级前请备份;升级后的 Profile 需使用兼容版本,或从升级前备份恢复([#1175](https://github.com/BotHarness/DeepSeekBot/issues/1175))。
|
|
38
|
+
- PersonaBot 删除引入 Profile schema Generation 66;升级前应备份,回退应向前修复而非仅回退代码。直接调用 Registry `remove`/`purge` 现会拒绝,需使用经确认的删除 owner,保留身份与用量历史([#896](https://github.com/BotHarness/BotHarness/issues/896))。
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- 欢迎消息仅在原生搜索凭据和 Bot 的搜索工具已配置时提供带来源的今日 AI 新闻,否则显示通用工作规划示例;新闻请求明确要求如实说明搜索失败([#1174](https://github.com/BotHarness/DeepSeekBot/issues/1174))。
|
|
43
|
+
|
|
44
|
+
- 像素头像可以选择哥布林:尖耳朵穿出头发、带小獠牙、配建议的绿色肤色;左右侧发可以分别选择样式和颜色。哥布林在 Window Companion 中同样支持转头和说话嘴型,随机也会覆盖两个物种,已有头像渲染不变([#1210](https://github.com/BotHarness/DeepSeekBot/issues/1210)、[ADR-0148](docs/adr/0148-avatar-species-and-custom-parts-extend-one-pixel-rig.md))。
|
|
45
|
+
|
|
46
|
+
- 欢迎消息提供每天 21:00 的晚间问候示例,选择前显示浏览器时区与当前私聊;无法识别时区时先询问,既有模型配置流程保留完整请求并等待明确发送([#1228](https://github.com/BotHarness/DeepSeekBot/issues/1228))。
|
|
47
|
+
|
|
48
|
+
- Bot 市场现在会显示每个 Bot 的资料横幅:列表每一行有缩略图,详情页顶部是完整横幅;没有横幅的 Bot 显示中性占位。市场 Worker 从 `.botharness/bot.json` 读取 `banner`:像素场景在本地绘制,上传的图片按收录时的提交从仓库加载([#1093](https://github.com/BotHarness/BotHarness/issues/1093))。
|
|
49
|
+
|
|
50
|
+
- 欢迎消息的十分钟提醒会展示浏览器时区,明确只提醒一次并发回当前私聊;主程序计算相对提醒时间,避免向下取整导致提前,Bot 获得简洁的一次性任务与明确投递位置指引([#1208](https://github.com/BotHarness/DeepSeekBot/issues/1208))。
|
|
51
|
+
|
|
52
|
+
- 每个 Bot 的资料页和资料小窗顶部都有了横幅。新建的 Bot 会按名字挑一张像素场景,改名不会变;已有的 Bot 在下次启动时补上一张。点 **更换横幅** 可以从十个场景里挑、换一张、上传图片并裁成 3:1,或恢复生成的场景。`.botharness/bot.json` 记录横幅,`.botharness/banner.png` 总会写入,Bot Zip 导出、导入和从 Git 导入都会保留它([#1092](https://github.com/BotHarness/BotHarness/issues/1092))。
|
|
53
|
+
|
|
54
|
+
- 完成首次真实 Bot 对话后,欢迎消息提供可选的「绑定应用」入口,复用既有平台选择和官网教程;选择「暂时不绑定」保留完成状态,绑定结果与接收状态以真实记录为准([#1203](https://github.com/BotHarness/DeepSeekBot/issues/1203))。
|
|
55
|
+
|
|
56
|
+
- Bot 模式首次真实回复后,欢迎消息提供可选的记忆体验:查看现有记忆文件与实际变更,或将自由填写的偏好作为普通私聊请求发送;跳过不打扰,也不会把初始模板或回复当作保存成功的证据([#1200](https://github.com/BotHarness/DeepSeekBot/issues/1200))。
|
|
57
|
+
|
|
58
|
+
- Bot 设置可导出、检查一个完整且已验证的 `.botharness-backup`,包含自定义及已删除身份保留的 Memory、当前附件、模型模板与独立计划,以及真实清除检查点;安装包提供的本地命令仅恢复至新的停止环境([#886](https://github.com/BotHarness/DeepSeekBot/issues/886), [guide](docs/settings.md#complete-environment-backup-and-restore))。
|
|
59
|
+
|
|
60
|
+
- 微信身份启停与原生输入状态可分别继承全局默认值或保留 Bot 自定义;升级保留现有选择,界面不显示未支持的群聊/Thread 设置([#912](https://github.com/BotHarness/BotHarness/issues/912),[指南](docs/wechat-connection.md))。
|
|
61
|
+
|
|
62
|
+
- 隔离 AX 启动向 coding agent 提供有界、白名单化的真实 Client 启动/运行证据和明确 shell 就绪状态,跨文档重试保留首次失败([#1184](https://github.com/BotHarness/DeepSeekBot/issues/1184), [guide](docs/dev/guides/client-startup-diagnostics.md))。
|
|
63
|
+
|
|
64
|
+
- 已结束群聊可查看保留历史,并单独预览、确认 Source Event 内容清除,确认前展示全部共享位置、收件记录、托管文件与依赖效果。独占的当前/旧版附件会清理,共享文件保留,中断清理重启后继续,已发出回复保留真实结果;恢复检查点和异步清除屏障为后续 Profile 备份提供合同([#897](https://github.com/BotHarness/DeepSeekBot/issues/897),[验收指南](docs/agents/qa-channel-purge.md))。
|
|
65
|
+
- 首次进入 Bot 模式会准备一个 DeepSeek Bot、真实私聊,以及能力介绍、新闻和定时请求的欢迎选项;模型保存与问题发送分步进行,保留未发出的请求,支持 Profile 默认模型与 Bot 继承,只有收到真实回复才算完成;欢迎消息收紧间距,底部创建入口使用独立的主题强调色按钮,提问默认隐藏 Session 来源与短标题,仅开发者模式展示,其他回答使用紧凑输入提示,切换偏好保留答案;欢迎与提问选项复用首尾圆角相连的侧栏卡片,使用独立背景、直接单选和复选框多选,引导与全局模型设置复用 Bot 编辑器的模型和推理强度控件。教程进度可跨重启恢复,安全的手动重试沿用原 Human 消息([#1175](https://github.com/BotHarness/DeepSeekBot/issues/1175),[ADR-0147](docs/adr/0147-onboarding-is-profile-progress-over-canonical-dm-evidence.md))。
|
|
66
|
+
|
|
67
|
+
- 支持的像素窗口伙伴会随着已提交消息逐字呈现而开合嘴,在标点处闭嘴,播放结束、取消或切到后台后恢复保存的表情;名册头像与图片降级保留原有形象([#1143](https://github.com/BotHarness/DeepSeekBot/issues/1143))。
|
|
68
|
+
|
|
69
|
+
- 窗口伙伴独立于 Bot 模式跟随归档和删除,保留图片及未知版本快照回退,并支持键盘阅读与操作;键盘菜单在定位完成后接收焦点,关闭时将焦点交还原控件;动态效果偏好变化立即归位,离屏呈现和旧动画停止,不重播旧消息 ([#1142](https://github.com/BotHarness/DeepSeekBot/issues/1142)).
|
|
70
|
+
|
|
71
|
+
- 窗口伙伴在同一 Host 的短暂断线后,有界恢复尚未播放且仍符合范围的回复,暂时关闭的消息流会重试,保留阅读进度;页面隐藏时暂停呈现。重新开启来源只播放后续消息,首次钉选及 Client/Host 重启不重播历史([#1141](https://github.com/BotHarness/DeepSeekBot/issues/1141))。
|
|
72
|
+
|
|
73
|
+
- 窗口伙伴可以独立开启群聊消息,按每个 Bot 选择仅自己的私聊、共同会话或该 Bot 的全部会话;Bot–Bot 私聊标明双方参与者,所有气泡标明原 Channel 并遵守其现有读取权限。切换来源或范围只移除不再符合条件的卡片,保留仍可见的阅读和排队消息,新开启来源只播放后续已提交的 Bot 正文,不改变已读位置([#1140](https://github.com/BotHarness/DeepSeekBot/issues/1140))。
|
|
74
|
+
|
|
75
|
+
- Human 可从 Profile 删除 PersonaBot,默认保留记忆,明确选择清除已验证独占的仓库,并打开 Host 上的记忆文件夹、检查或重试未完成的清理;删除保留历史并永久关闭原身份的运行入口([#896](https://github.com/BotHarness/BotHarness/issues/896))。
|
|
76
|
+
|
|
77
|
+
- 飞书、Slack 和 Discord 的群现在显示真实群名,不再显示 ID:外部身份、接入的外部会话、频道里的消息和 Bot 读到的内容都改为群名,Bot 仍会同时看到 ID。Discord 群显示为「服务器 #频道」。飞书发送者名字查询放宽了超时,并按应用缓存;查询失败时退回显示 ID。已有条目会在下一条消息到达时更新名字([#1151](https://github.com/BotHarness/BotHarness/issues/1151),[外部连接器教程](docs/channel-sidebar/external-connectors.md))。
|
|
78
|
+
- 群频道可以接入外部会话:在群频道侧栏的「外部连接器」中点 **接入外部会话**,选一个已绑定的应用和它已知的一个群,之后这个群里的每条消息都会出现在频道里。成员 Bot 默认只把这些消息当作上下文,只有被 @ 时才会被唤醒;接入的唤醒设置可以改成攒够条数后唤醒或每条立即唤醒,成员在频道里单独设置的唤醒策略仍然优先。每一行显示状态和最后一条消息的时间,可以用开关暂停,**删除** 后不再接收新消息,已接入的消息保留([#1145](https://github.com/BotHarness/BotHarness/issues/1145),[ADR-0143](docs/adr/0143-an-external-conversation-streams-into-a-channel-as-one-way-context.md),[外部连接器教程](docs/channel-sidebar/external-connectors.md))。
|
|
79
|
+
- 私聊已绑定的 Slack 应用,消息现在会进入 Bot 收件箱,Bot 直接在私聊里回复,不开 thread;Discord 应用也重新出现在 **绑定应用** 里。开发用的 IM Provider 换到新的 dsh-im 版本,包含 Slack 私聊接收、Discord checked 发送,以及 Slack/Discord 回复里的 checked @([#1125](https://github.com/BotHarness/BotHarness/issues/1125)、[外部身份指南](docs/channel-sidebar/external-identities.md))。
|
|
80
|
+
|
|
81
|
+
- 从侧栏菜单或 Channel 顶部各 Bot 的独立按钮可钉选多个透明像素窗口伙伴,各自保留真实 Activity、新 Human–Bot 私聊气泡、拖拽物理效果、阅读列表和走动偏好;Profile 共用设置控制层叠层数与有界卡片容量,重启恢复偏好且不重播旧消息。减少动效时关闭下落和姿态效果,暂停只停止走动,不暂停 Bot 执行([#1138](https://github.com/BotHarness/DeepSeekBot/issues/1138)、[#1139](https://github.com/BotHarness/DeepSeekBot/issues/1139))。
|
|
82
|
+
|
|
83
|
+
- 一个 Bot 可以绑定同一平台的多个应用,例如两个飞书应用:每个应用的私聊和 @ 都进入同一个收件箱,并通过收到消息的应用回复。**绑定应用** 列出所有已连接的应用,已被 Bot 使用的应用置灰并注明是哪个 Bot;外部身份按平台列出这个 Bot 的应用。Bot 在同一个群里有两个应用时,转发来源的回复会明确拒绝([#1110](https://github.com/BotHarness/BotHarness/issues/1110),[外部身份教程](docs/channel-sidebar/external-identities.md))。
|
|
84
|
+
|
|
85
|
+
- **编辑外部身份** 里的会话列表现在可以管理:会话分为 **等待处理**、**活跃**、**已静音**、**已屏蔽**。**静音** 后消息照常进入收件箱但不唤醒 Bot,**规则** 单独调整一个群的收件和唤醒,**屏蔽**(需确认)会取消未发出的回复,重启、解绑再绑定后依然有效;**再次允许** 从下一条消息重新开始,不补收。新增 **新会话** 设置,可选 **自动接收** 或 **先问我**;等待中的会话只记录名称和次数,不保存消息内容。每个应用每小时最多自动加入 20 个新会话、最多 500 个活跃会话,超出时进入等待并显示原因([#1109](https://github.com/BotHarness/BotHarness/issues/1109),[外部身份教程](docs/channel-sidebar/external-identities.md))。
|
|
86
|
+
|
|
87
|
+
- Slack、Discord 和个人微信也能一步绑定:**绑定应用** 后,私聊 Slack 或 Discord 应用、或在频道里 @ 它,消息直接进入 Bot 收件箱并在原话题回复;个人微信只接收扫码者本人的私聊,其他联系人和群不会进入。绑定弹窗对所有平台显示真实接收状态,已记下的群会话跟随平台全局默认的群收件和唤醒设置([#1112](https://github.com/BotHarness/BotHarness/issues/1112),[外部身份教程](docs/channel-sidebar/external-identities.md))。
|
|
88
|
+
|
|
89
|
+
- 绑定飞书应用就能收发:外部身份里的 **绑定身份** 改为 **绑定应用**,绑定后私聊这个应用、或在群里 @ 它,消息直接进入这个 Bot 的收件箱,Bot 在原会话回复,不需要保存投递目标、授权会话或打开收件开关。第一条消息会自动记下会话,应用行显示会话数,点开可查看只读会话列表;绑定后弹窗显示真实的接收状态。`/pair` 仍由配对处理,已有授权的行为不变,所有已绑定应用升级后都默认自动接收新会话([#1108](https://github.com/BotHarness/BotHarness/issues/1108),[ADR-0142](docs/adr/0142-a-bound-app-admits-its-direct-messages-and-mentions.md),[外部身份教程](docs/channel-sidebar/external-identities.md))。
|
|
90
|
+
|
|
91
|
+
- 经 Web 审核的 Lark 用户可按名称选择管理私聊,接收工具审批并点击「允许一次/拒绝」;回调复核实际点击者和准确的原生调用,Profile 分开展示通知投递、决定接受及原生执行结果。确定未发送的重试有上限,未知投递及重启后的旧卡片不能授权执行([#1029](https://github.com/BotHarness/BotHarness/issues/1029)、[ADR-0141](docs/adr/0141-lark-private-approvals-rejoin-the-native-owner-through-checked-controls.md))。
|
|
92
|
+
|
|
93
|
+
- AX 隔离 Profile 可在一次隐藏输入设置后复用本机 OpenCode Go 凭证和内置默认模型,保留各 Profile 的独立配置;经核验的 DSH 0.2.0 RC1 适配器补齐真实 Go 回复要求的实际 Session 请求头([#1079](https://github.com/BotHarness/BotHarness/issues/1079), [指南](docs/agents/ax-model.md))。
|
|
94
|
+
- 新增微信原生输入状态源码预览候选,随已授权扫码者私聊的实际处理启动,有界续期并在处理结束或授权失效时清理,身份设置可单独关闭;原生客户端显示和打包产品验证仍由 [#911](https://github.com/BotHarness/BotHarness/issues/911) 跟踪([指南](docs/wechat-connection.md)、[ADR-0145](docs/adr/0145-wechat-typing-follows-owned-processing-leases.md))。
|
|
95
|
+
|
|
96
|
+
- 个人微信已授权扫码者私聊支持受控主动文字报告,复用纯外部 Outbox、发送前授权检查及私有上下文缺失的恢复提示;Profile 可显式投递,客户端确认和实际返回的原生服务器消息 ID 分开记录,不宣称送达或已读回执([#910](https://github.com/BotHarness/BotHarness/issues/910),[指南](docs/wechat-connection.md))。
|
|
97
|
+
|
|
98
|
+
- 个人微信扫码者私聊支持频道连接器,可明确投递到本地 DM/群聊或仅进入 Bot Inbox;多个目标引用同一 Source Event,各成员独立设置唤醒。共享阅读者对外回复仍需自己的身份和授权,不代表支持原生微信群或话题([#909](https://github.com/BotHarness/BotHarness/issues/909))。
|
|
99
|
+
|
|
100
|
+
- 新增候选 Lark 图片预览,在原 Channel 气泡保留原生图文顺序,按可见区域加载、点击放大并复查当前 Channel/来源授权,图片接收开关贯通到账号接收器;停止接收保留已取得图片,解绑/撤销则拒绝受影响路径([#1021](https://github.com/BotHarness/BotHarness/issues/1021), [教程](docs/lark-connection.md))。
|
|
101
|
+
- PersonaBot 可读取微信原生引用正文,或从当前授权私聊的本地保留记录解析缺失引用;来源详情区分原生、本地解析与不可用,本地上下文支持有界 cursor 续页,不宣称微信远端历史能力([#908](https://github.com/BotHarness/BotHarness/issues/908),[指南](docs/wechat-connection.md))。
|
|
102
|
+
- 新增 Lark 私聊 `/pair` 申请、认证 Web 审核、显式选择当前 Bot 的能力及重启后保留的撤销记录;配对消息不进入 Bot Inbox 或 Memory,IM 决策控件由后续切片接入([#1027](https://github.com/BotHarness/BotHarness/issues/1027)、[guide](docs/lark-connection.md)、[ADR-0136](docs/adr/0136-lark-pairing-is-reviewed-bot-scoped-operational-authority.md))。
|
|
103
|
+
- 新增个人微信受控视频链路,可按需播放/下载来源视频,并用 Bot 自己的身份发送原生视频回复,保留私密路由与当前授权;浏览器播放和工具读取不代表模型已理解视频([#907](https://github.com/BotHarness/BotHarness/issues/907),[指南](docs/wechat-connection.md))。
|
|
104
|
+
- 微信原生语音可下载原文件,支持的 SILK 音频可显式准备播放或保存独立 WAV 工作副本;解码有大小、时间限制并校验当前来源授权,语音识别和原生语音回复仍是独立能力([#906](https://github.com/BotHarness/BotHarness/issues/906)、[指南](docs/wechat-connection.md))。
|
|
105
|
+
- Discord 支持独立的外部平台默认设置,涵盖群收件、普通消息唤醒阈值与继承身份的启停。Profile 自定义选项保持独立,恢复继承使用当前 Discord 默认值;升级保留已有 Lark/Slack 历史和覆盖项([#1016](https://github.com/BotHarness/BotHarness/issues/1016))。
|
|
106
|
+
- Bot 现在可以打包成 zip 交给别人。「创建 PersonaBot」变成二级菜单:「从零创建」「从 GitHub 导入」「从 zip 导入」。Bot 资料页新增「分享与导出」,先提醒检查密码和个人信息,再把 Bot 的 Memory 文件(包括还没提交的修改)连同 `.botharness/bot.json` 和头像打包下载;Git 历史、会话、IM 绑定和凭证都不会放进去。从 zip 导入会先显示第三方内容提示,然后创建一个新的 Bot,只有一个初始提交,名称、岗位和头像来自 zip;不安全的路径、损坏的文件和超过 100 MB 的 zip 会被拒绝,不留下任何半成品([#1062](https://github.com/BotHarness/BotHarness/issues/1062),[ADR-0135](docs/adr/0135-a-bot-moves-between-people-as-a-zip-of-its-memory-files.md))。
|
|
107
|
+
- 导出 zip 时可以选择文件:导出窗口列出 Bot 的全部 Memory 文件和文件夹,默认全选,可展开、折叠、全选或全不选,取消勾选的文件不会进入 zip;`.botharness/bot.json` 和头像始终包含([#1063](https://github.com/BotHarness/BotHarness/issues/1063))。
|
|
108
|
+
- 导出 zip 时可以勾选「包含 Git 历史」,带上所有分支、标签和提交记录;只有全选文件时才可用。导入这样的 zip 会保留这些分支、标签和历史并切到导出时的分支,不带远程地址和原机器的 Git 配置([#1064](https://github.com/BotHarness/BotHarness/issues/1064))。
|
|
109
|
+
- 新增[导出与导入 Bot](docs/bot-zip.md)教程:zip 里有什么、导出时选择文件和 Git 历史、从 zip 导入,以及分享前和导入前的安全提醒;「分享 Bot」和「记忆文件」教程链接到它([#1065](https://github.com/BotHarness/BotHarness/issues/1065))。
|
|
110
|
+
- Bot 模式会在创建 Bot 之前检查 Host 上的 Git。没有 Git、Git 无法运行(例如 macOS 未安装命令行工具时的占位程序)或版本低于 2.28 时,名册顶部会说明原因并链接到安装教程新增的 [Git 一节](docs/installation.md#git),在「重新检测」找到可用的 Git 之前禁用创建和导入 Bot;创建时仍遇到不可用的 Git,会报告为缺少 Git,而不是笼统的记忆错误([#1096](https://github.com/BotHarness/BotHarness/issues/1096),[ADR-0140](docs/adr/0140-the-host-falls-back-to-a-managed-git.md))。
|
|
111
|
+
- Bot 模式现在可以帮你安装 Git:Host 上的 Git 不可用时,点 **安装 Git** 会把固定版本的便携版 Git 下载到 DeepSeek Harness 数据目录(先从 `media.botharness.ai`,失败再从 GitHub),校验 SHA-256 后立即启用,不用重启,也不需要管理员权限;Orchestrator 的 Shell 也会用同一个 Git。每次启动时仍优先使用可用的系统 Git([#1097](https://github.com/BotHarness/BotHarness/issues/1097),[Git 一节](docs/installation.md#git))。
|
|
112
|
+
- 从 SSH 地址导入 Bot 现在会自动改用 HTTPS:克隆 `git@host:owner/repo` 或 `ssh://git@host/owner/repo` 失败时,Host 会用对应的 HTTPS 地址重试一次并告诉你已经切换,之后这个 Bot 通过 HTTPS 同步;HTTPS 也失败时显示原来的 SSH 错误。DeepSeekBot 设置新增 **Git** 一行,显示正在使用的 Git 版本以及是系统 Git 还是托管 Git([#1098](https://github.com/BotHarness/BotHarness/issues/1098),[Git 一节](docs/installation.md#git))。
|
|
113
|
+
|
|
114
|
+
- Lark 反馈候选通过可选 checked Provider,在 Inbox 持久接收后显示原生 `GLANCE`、对应回复获外部接受后显示 `DONE`;首条反馈等待受校验连接就绪,权限拒绝归为明确失败。授权补充权限后的有界浏览器复测已确认私聊表情及静默消息仅接收,群聊与恢复用例仍待验证([#1040](https://github.com/BotHarness/BotHarness/issues/1040), [guide](docs/lark-connection.md#receipt-and-answer-feedback-candidate))。
|
|
115
|
+
|
|
116
|
+
### Changed
|
|
117
|
+
|
|
118
|
+
- Bot 市场的卡片改成了资料卡的样子:资料横幅在上,Bot 头像压在横幅下沿,名称、仓库和安装按钮排在头像右侧,下面是两行简介,以及标签、星数、更新时间合成的一行。详情页顶部也用同样的横幅和头像,弹窗每行显示两张卡([#1232](https://github.com/BotHarness/BotHarness/pull/1232))。
|
|
119
|
+
- **绑定应用** 弹窗可直接打开官网的 Lark/飞书、Slack、微信连接教程和更多平台总览;移除侧栏独立的 Lark 配置引导卡片,让平台配置说明集中在官网维护 ([#822](https://github.com/BotHarness/DeepSeekBot/issues/822)).
|
|
120
|
+
|
|
121
|
+
- **新会话** 也成了平台默认设置:飞书、Slack、Discord 的全局 IM 默认设置里各有一个 **新会话** 选项(不改就是 **自动接收**),每个已绑定应用都跟随它,除非你为这个应用单独选择。已经设为 **先问我** 的应用保持不变([#1134](https://github.com/BotHarness/BotHarness/issues/1134),[外部身份教程](docs/channel-sidebar/external-identities.md))。
|
|
122
|
+
- 「外部连接器」不再提供 **添加外部连接器** 和 **授权外部会话**(同步正在围绕“接入任意应用的会话”重新设计),只列出已有的同步,并保留 **保存发送目标(高级)** 给不能直接发往会话的应用。会话行会显示已同步到哪里,操作按钮(**静音**、**规则**、**屏蔽**)单独一行并各带说明提示。Lark 配置引导缩减为三步(连接应用、绑定、发消息验证),Lark、Slack、微信连接教程围绕 **绑定应用** 重写([#1113](https://github.com/BotHarness/BotHarness/issues/1113)、[Lark 教程](docs/lark-connection.md)、[外部连接器说明](docs/channel-sidebar/external-connectors.md))。
|
|
123
|
+
|
|
124
|
+
- Bot 的模型和唤醒策略从 Profile 移到私聊 Channel sidebar 的两个新分区 **模型** 与 **唤醒策略**:收起时标题右侧显示当前值,每项设置一行,点击打开弹窗修改,并可像其他分区一样排序或隐藏。模型弹窗改为 **主模型** 与 **执行模型** 两项,可输入过滤选择模型并选思考强度;不建预设也能直接保存,已有预设仍可用来填入,**另存为预设** 可把当前设置留作复用。**提醒策略** 改名为 **唤醒策略**([#1084](https://github.com/BotHarness/BotHarness/issues/1084),[模型教程](docs/channel-sidebar/model.md),[唤醒策略教程](docs/channel-sidebar/wake-policy.md))。
|
|
125
|
+
- Bot 的 IM 设置从 Profile 移到私聊 Channel sidebar 的两个新分区。**外部身份** 每个已绑定身份一行,显示可用状态和启用开关,下面是 **绑定身份**、Lark 配置引导、IM 管理员配对和 Lark 审批通知。**外部连接器** 每个连接器一行,显示状态和启用开关,下面是 **添加外部连接器** 和外部会话授权。点击一行打开弹窗修改,选项与原来一致。**频道连接器** 改名为 **外部连接器**。SOUL.md 和 MEMORY.md 的常驻记忆上限变成 **记忆文件** 下的一行,点击打开弹窗。迁移后的表单统一使用共享的下拉框、输入框和复选框([#1085](https://github.com/BotHarness/BotHarness/issues/1085),[外部身份教程](docs/channel-sidebar/external-identities.md),[外部连接器教程](docs/channel-sidebar/external-connectors.md))。
|
|
126
|
+
- 本地群的成员唤醒设置和外部连接器从群 Profile 移到群 Channel sidebar 的两个新分区 **唤醒策略** 与 **外部连接器**,位于成员和群管理之间。唤醒策略每个成员 Bot 一张卡片,显示它在这个群里的规则、与之不同的外部平台规则,为这个群单独设置时带 **频道自定义** 标记;点击卡片打开与原来相同的弹窗。外部连接器把这个群的连接器和已接入的外部会话列成卡片行,点击打开编辑弹窗。两个分区都可排序或隐藏,群 Profile 现在只显示群名、头像和消息活跃度([#1086](https://github.com/BotHarness/BotHarness/issues/1086),[唤醒策略教程](docs/channel-sidebar/wake-policy.md),[外部连接器教程](docs/channel-sidebar/external-connectors.md))。
|
|
127
|
+
- Bot 资料页现在只显示 Bot 是谁和它的活动。新的头部有横幅区域、头像、名称、**标签** 和 **简介**,右上角是 **分享**、**编辑资料** 和 **⋯** 菜单。**编辑资料** 可以一起修改名称、标签(最多 8 个,每个不超过 32 个字)和简介(最多 160 个字);点头像打开头像编辑。**分享** 导出 Bot zip,侧栏里右键 Bot 也能分享;**删除 Bot** 移到了 **⋯** 菜单。岗位徽章改叫标签,描述改叫简介。`.botharness/bot.json` 写入 `tags` 和 `bio`,改简介会像改名一样同步;仍使用 `roles` 的文件和 zip 会当作标签读取,从 zip 导入时保留标签和简介。Bot 市场 API 返回 `tags` 和 `bio`,没有时使用 `roles` 和 GitHub 仓库描述([#1087](https://github.com/BotHarness/BotHarness/issues/1087),[分享 Bot 教程](docs/share-bot.md),[导出与导入教程](docs/bot-zip.md))。
|
|
128
|
+
- Profile 里的 **Token 用量** 卡片更短了:可在 **每日总量** 和 **按模型** 之间切换,时间范围为 7 / 30 / 90 天和全部,自定义范围在 **⋯** 菜单里。去掉了角色筛选、模型/提供商筛选、缓存占比区域和执行明细;鼠标悬停在柱子上可以看到缓存输入、非缓存输入和输出的拆分。单独的 **累计值** 卡片已移除,之前置顶它的设置会被自动忽略([#1088](https://github.com/BotHarness/BotHarness/issues/1088),[设置教程](docs/settings.md))。
|
|
129
|
+
- Bot 资料页的事件活跃和 Memory 提交热力图现在铺满卡片宽度,最新一周在最右边,向左滚动会加载更早的周,一直到 Bot 创建那天;小窗里的热力图铺满小窗,不需要滚动。按来源分的事件列表移到了每天的悬停提示里([#1089](https://github.com/BotHarness/BotHarness/issues/1089))。
|
|
130
|
+
- 界面文案统一称呼「你」和「Bot」:中英文标签里不再出现 Human、PersonaBot、Source Event 和 Attention,清除后的占位显示「`正文已清除 · 你 · {时间}`」,连接器入口统一叫「外部连接器」。这些内部术语再次出现时会有测试失败([#1090](https://github.com/BotHarness/BotHarness/issues/1090))。
|
|
131
|
+
|
|
132
|
+
### Fixed
|
|
133
|
+
|
|
134
|
+
- 显式配置原生 RC2 timed 问题的 Profile 中,DM 问题卡片在前台超时后仍可回答,同一个 Bot 可以处理其他消息;稍后提交的答案在原生会话接收前显示为已提交。生产版本依赖与 RC1 阻塞式提问保持不变([#1220](https://github.com/BotHarness/DeepSeekBot/issues/1220))。
|
|
135
|
+
|
|
136
|
+
- Bot 引导不会再因旁观窗口退出或设置模型而暂停其他窗口的教程;完成后仍可主动重播,单独保存 Bot 模型或恢复继承后,已打开的模型卡片立即刷新([#1175](https://github.com/BotHarness/DeepSeekBot/issues/1175))。
|
|
137
|
+
|
|
138
|
+
- **绑定应用** 保留其他 Bot 已绑定的应用并明确标注归属,教程链接增加跳转箭头,应用标题行和各种下拉状态始终提供 **添加新应用** 入口;从 IM 设置返回后恢复弹窗并自动刷新,选择框右侧提供带提示的刷新图标以便重试([#1176](https://github.com/BotHarness/DeepSeekBot/issues/1176),[外部身份教程](docs/channel-sidebar/external-identities.md))。
|
|
139
|
+
|
|
140
|
+
- npm 发布准备因工作区不干净而拒绝时,会列出具体变更路径并限制诊断输出数量,保留尚未审核的文件改动 ([#877](https://github.com/BotHarness/DeepSeekBot/issues/877)).
|
|
141
|
+
|
|
142
|
+
- 取消窗口伙伴钉选会清除其 Activity 连接异常提示;成功加载 Bot 名单后,会清理已删除 Bot 的恢复钉选,网络失败仍保留用户钉选偏好([#1138](https://github.com/BotHarness/DeepSeekBot/issues/1138))。
|
|
143
|
+
|
|
144
|
+
- 窗口伙伴向左右拖动时,身体按惯性落后于抓取点;落地贴住窗口内容区底边,不再保留底部间隙([#1138](https://github.com/BotHarness/DeepSeekBot/issues/1138))。
|
|
145
|
+
|
|
146
|
+
- Bot 读到的 IM @ 改成名字,不再是平台占位符:飞书的 `@_user_1` 和 Slack 的 `<@U…>` 以 `@名字` 交给模型(平台没给名字时用 `@ID`),每条外部消息还列出发送人和被 @ 的人及其平台 ID。Bot 在 `bridge_reply` 正文任意位置写 `<@ID>`,就能在飞书、Slack 或 Discord 上 @ 这条消息的发送人或其中被 @ 的人(Slack 和 Discord 通过 IM Provider 的 checked @ 提醒,旧版 Provider 退回 `@名字` 文字);其他 ID 或 @ 标记按纯文本发出([#1126](https://github.com/BotHarness/BotHarness/issues/1126))。
|
|
147
|
+
- **绑定应用** 不再隐藏 IM 插件暂时不支持的应用。插件缺少受检发送能力的 Discord 应用现在会置灰显示,并注明 **需要更新 IM 插件后才能绑定**,不会再悄悄从列表里消失([#1123](https://github.com/BotHarness/BotHarness/issues/1123))。
|
|
148
|
+
- **绑定应用** 不再列出已经绑定到这个 Bot 的应用,它们已经显示在「外部身份」里([#1127](https://github.com/BotHarness/BotHarness/issues/1127))。
|
|
149
|
+
|
|
150
|
+
- 模型弹窗不再提供跑不起来的路由:某个提供方在真实对话里因没有 API key 或 key 无效而失败后,它的模型排到最后,标为 **需要配置 key** 或 **key 无效**,不能选择或保存;DSH 的凭证、设置或适配器变化后恢复。没有 Model Plan 的 Bot 打开弹窗时默认选中 DSH 默认模型,而不是目录里的第一个([#1124](https://github.com/BotHarness/BotHarness/issues/1124))。
|
|
151
|
+
- 共享频道消息现在显示已保存的外部发送人名称,已有 Discord 历史也会更新显示;气泡复用 Lark 收件箱的渲染方式,将已保存名称的原生 @ 提及显示为标签;原文和 ID 保持不变,未知名称保留原始文本([#1061](https://github.com/BotHarness/BotHarness/issues/1061))。
|
|
152
|
+
|
|
153
|
+
### Documentation
|
|
154
|
+
|
|
155
|
+
- 通过隔离的真实模型实验验证 RC2 原生 timed question:稍后答案可准确关联原问题,等待期间仍可对话;现有 Web 问题卡片仍会过期,生产权限审批与容量门禁继续阻塞([#1220](https://github.com/BotHarness/DeepSeekBot/issues/1220), [report](docs/research/1220-native-timed-question-experiment.md))。
|
|
156
|
+
|
|
157
|
+
- 记录 [AX 浏览器验收流程](docs/agents/ax-browser.md),区分准确地址的权限证据、Host 传输、导航拒绝和截图/输入超时,并保留用户明确授权的本地端口重试结果([#1225](https://github.com/BotHarness/DeepSeekBot/issues/1225))。
|
|
158
|
+
|
|
159
|
+
- 记录已接受的像素 Avatar 扩展设计:同一 rig 上的 Avatar Species(奇幻、动物与花的基底)、可分别上色的头发分片、穿过头发的头饰槽,以及 Human 自绘、保存在 Profile 部件库中并随导出 PersonaBot 携带、以 PNG 流转的 Custom Part;运行时行为不变([#1135](https://github.com/BotHarness/DeepSeekBot/issues/1135)、[ADR-0148](docs/adr/0148-avatar-species-and-custom-parts-extend-one-pixel-rig.md)、[交接说明](docs/research/2026-10-08-avatar-species-and-custom-parts-handoff.md))。
|
|
160
|
+
|
|
161
|
+
- 记录固定版本的原生 Human 等待验证,以及提问/权限待决期间群聊仍可互动的后续要求:独立 Assignment 审批期间 Orchestrator 可继续处理,但其自身审批/提问仍阻塞无关模型处理;生产 continuation 仍保持 gate([#1036](https://github.com/BotHarness/DeepSeekBot/issues/1036), [experiment](docs/research/1036-native-wait-experiment.md), [#1220](https://github.com/BotHarness/DeepSeekBot/issues/1220), [#1038](https://github.com/BotHarness/DeepSeekBot/issues/1038))。
|
|
162
|
+
|
|
163
|
+
- 记录已确认的窗口内透明半身像素伙伴设计:本地伙伴选择、三档 Bot 输出范围、独立播放开关及不重播历史的有界消息消费;本次不改变运行行为([#1132](https://github.com/BotHarness/BotHarness/issues/1132)、[规格 #1135](https://github.com/BotHarness/BotHarness/issues/1135)、[ADR-0143](docs/adr/0143-window-companions-consume-owned-activity-and-scoped-output.md))。
|
|
164
|
+
|
|
165
|
+
- 在 [DSH 调试指南](.agents/skills/dsh-dev/references/debugging-playbook.md)记录原生 Windows 候选安装与审批核验,包括 AppData 物理路径、隔离 Profile 的包管理器版本锁定、真实 Shell 退出证据及进程时间戳保护。双语 [Lark 指南](docs/lark-connection.md)记录准确候选源码经 Human 点击允许一次/拒绝的真实核验;此次文档更新不改变运行行为([#1029](https://github.com/BotHarness/BotHarness/issues/1029))。
|
|
166
|
+
|
|
167
|
+
- 记录开发来源 Discord 共享 Channel 在一个绑定成员、Message Content OFF 下的资格验证,包含原 thread 模型回复、重叠去重及暂停/重启/恢复证据([#1054](https://github.com/BotHarness/BotHarness/issues/1054),[英文验证](docs/dev/verification/discord-1054-shared-channel.md)、[中文验证](docs/dev/verification/discord-1054-shared-channel.zh.md))。
|
|
9
168
|
|
|
10
169
|
## [1.1.0] - 2026-10-06
|
|
11
170
|
|