Repository navigation
DeepSeekBot v1.3.0
- 官网 / Website: DeepSeekBot
- 安装教程 / Installation: 中文 · English
- 精确安装版本 / Exact install spec:
deepseekbot@1.3.0
Bot mode moves onto one StyleX design system with a Channel settings dialog and an icon-tab Channel sidebar; the Orchestrator triages, snoozes and resolves its own Bot Inbox and groups Assignments by state; Bots can use Owner secrets through approved CLI and MCP starts, and an MCP server can be set up from one sentence and shared across Bots; messages can be multi-selected and exported as an image, text or a local diagnostic bundle; composers keep drafts and recall sent input; a Bot Primary Color colors its name, charts and heatmaps; Pixel Avatars add elves, dwarves, orcs, talking flowers and animals with a drawable Part Library; Memory can be restored to any graph commit; Local Computer runs on Windows and Linux; Lark, Slack, QQ and WeChat gain pairing review, app creation and authority controls; and DeepSeekBot now requires DSH 0.2.0 or later.
Breaking Changes
- Bot DM trace lines are new Channel Notices. A binary from before this change shows them as empty Bot messages, so revert the Host and Client together (#1517).
- DeepSeekBot now needs DSH 0.2.0 or later, previews included; DSH 0.1.7 Hosts refuse the new version at installation and should stay on DeepSeekBot 1.2.x or upgrade DSH first (#1511).
- Work-failure alert settings and delivery metadata add Profile schema Generation 83. Back up before upgrading; rollback requires a compatible writer or the pre-upgrade backup (#1041).
- Lark-saved tool rules add Profile schema Generation 82 with external creator provenance. Back up before upgrading; rollback requires a compatible writer or the pre-upgrade backup (#1033).
- Group behavior items can declare mutual exclusions. Current writers reject incompatible effective Allows; stop policy editing before reverting to a writer that ignores these declarations (#1423).
- A Bot's existing sender-restriction switch now also covers Slack DMs. Review or pair Slack applicants before their next request; before reverting to an older binary, disable the affected Slack Binding because it cannot enforce this gate (#1415).
- Pairing-review cards add Profile schema Generation 80. Back up before upgrading; rollback requires a compatible writer or the pre-upgrade backup (#1414).
- External authorization groups add Profile schema Generation 79. Back up before upgrading; rollback requires a compatible writer or the pre-upgrade backup (#1406).
- Ordinary Lark roles add Profile schema Generation 78. Back up before upgrading; rollback requires a compatible writer or restoration of the pre-upgrade backup (#1373).
- Inbox history adds Profile schema Generation 77 with a rebuildable FTS5 trigram index. Back up before upgrading; reopening an upgraded Profile requires a compatible binary or restoration of the pre-upgrade backup (#1278).
- Memory commit records add Profile schema Generation 76 (a per-Bot commit cursor and a one-record-per-commit index). Back up before upgrading; reopening an upgraded Profile requires a compatible binary or restoration of the pre-upgrade backup (#1277).
- Bot Self-Records add Profile schema Generation 75, which rebuilds the Source Event and Inbox Admission tables to accept the new kinds. Back up before upgrading; reopening an upgraded Profile requires a compatible binary or restoration of the pre-upgrade backup (#1276).
- The Part Library adds Profile schema Generation 73. Back up before upgrading; reopening an upgraded Profile requires a compatible binary or restoration of the pre-upgrade backup (#1211).
- QQ reception intervals add Profile schema Generation 74 and reuse the existing receive boundary; back up before upgrading and repair forward after upgrade (#1153).
- Per-app proactive post limits add Profile schema Generation 89. Back up before upgrading; rollback requires a compatible writer or the pre-upgrade backup. Earlier experimental #1115 generation 75/77/84/87/88 Profiles must remain isolated because their migration histories differ (#1115).
Added
- Developers can reuse independent QQ QA1/QA2/QA3 Apps across branches through task claims and dedicated native Profiles, and connect a selected existing native authorization through CLI over strict SSH without retyping its Secret or copying the full credential store (#1438, guide).
- After you send, the composer clears and the input is kept on this device: press Up in an empty DM or Group composer to recall what you submitted, including failed sends, and Down to return to your draft. A send that got no answer shows Not confirmed instead of failed; it is checked against the Host by its original ID, never resent automatically, and stays recoverable after a reload (#1460, ADR-0184).
- Messages can be multi-selected with Select in the message menu (right-click, or long-press on touch). An Export menu then saves the selected messages as a PNG image, copies them as conversation text, or exports a local diagnostic bundle: a zip with that Channel from the first to the last selected message (or from a single message until now) plus 30 minutes on each side, with the selected messages marked, the involved Bots' DMs, Inbox admissions and native Session events (tool calls included, from the start of any turn already running), and a merged timeline. Standard redaction hides local folders, tokens, secret fields, request headers and emails; Memory files, attachments and other Channels are never included, and nothing is uploaded (#1533, ADR-0185).
- DM and Group composers retain device-local drafts across Channel switches and browser reloads, validate restored references, and expose concurrent-tab conflicts and storage failures; unuploaded file bytes are not retained (#1459, ADR-0184).
- A PersonaBot's DM now shows what it did elsewhere: each post in a Group or Bot DM leaves a short linked line with an excerpt, consecutive posts in one Channel collapse into one line, and Memory updates made in a Group also appear in the DM with their place. The DM's top-right settings menu hides each kind for that Bot; nothing unread or waking is added (#1517, ADR-0182).
- Opt-in work-failure alerts reuse the Bot sidebar management destination, use an RBAC-style wide two-column settings/history dialog with searchable, sortable records, test send and delivery inspection, and notify from committed failure facts without forwarding private error text or granting decision authority. Known-unsent retries are bounded; unknown sends are not replayed (#1041, Lark guide).
- Memory Evolution commit diffs and uncommitted diffs have Open current file on every file row: it opens the file at that path as it is now, with the same default application and dropdown, never the version in the selected commit. A missing file is reported instead of rebuilt, with a deletion note only when that row is itself a deletion (#1462, guide).
- The current Memory file reader, ordinary chat file cards, and the Memory Repository and authorized Workspace folder rows have an Open split button: one click opens on the Host in your default application, and the arrow lists other detected applications for a one-time choice. You can set a default per file type or for folders and restore the system default; the setting stays in this browser for this Host profile and never changes the operating system's file associations. A missing or unavailable default asks you to choose instead of using the first application (#1461, guide, ADR-0178).
- The optional checked QQ Provider adds bounded transport, Gateway, native callback and receipt metadata to diagnose missing own Echo without logging bodies, credentials or raw identifiers; a reviewed SDK 1.0.4 build patch observes before decode/JSON and exposes start/end counters, including tail suppression, while author qualification, reply authority and Echo capabilities remain unchanged (#1156, Provider candidate #25, transport candidate #26).
- A PersonaBot now has a Bot Primary Color: Automatic follows its Avatar's main hair color (or a fixed fallback for uploaded images), and the Avatar dialog in its Profile lets you pick a Custom color with a light/dark preview. Its name on DM and Group Channel messages, in the mention list, in the composer and on sent mentions uses that color, adjusted to stay readable on each background and theme. Exporting a Bot as a zip or sharing its Memory Repository carries the choice, so an imported copy keeps the same color. A deleted Bot keeps its last color on its old messages and in the usage list. The per-Bot usage chart and a Bot's own token charts draw in its color, with fixed shades for cached input, other input and output, and a Bot's activity heatmaps use shades of its color with empty days left neutral (#1471, #1472, #1473, #1474, #1475, #1476, ADR-0177).
- Authorized Lark DM reviewers can separately confirm exact or all-opaque tool rules, inspect the same scope and status in Web, and lose future automatic approvals when current creator authority is revoked. All-opaque requires a qualified version-2 Provider/account and its own high-risk confirmation. IM-only Bots can receive approval cards before anyone opens their Web DM. External rules never auto-approve Web-only native Session authorizations; bilingual tutorials include real sanitized workflow screenshots (#1033, Lark guide).
- Group composer workspace shortcuts reuse DM directory cards, permission badges and native modal geometry to default to all currently eligible Bots with optional subset selection, confirm their directory and existing access, and report independent per-Bot Grant creation, reuse, failure and unknown-outcome readback without granting unselected members access (#1433).
- Group behavior items support manually declared mutual exclusions with searchable selection, affected-person/source previews and current-revision checks. Settings and Host mutations refuse incompatible effective Allows, including membership changes and removal of a protecting Deny; explicit Deny still takes precedence (#1423).
- The reviewed ordinary-chat pairing path extends to Slack DMs through the existing People/Roles/Requests settings, current sender queries and checked original reply route; approval asks for a fresh question and revocation closes later intake. A three-stage local wizard and private loader reuse separate Slack QA1/QA2/QA3 slots across worktrees while preserving Lark configuration; setup never starts a receiver. The bilingual guide includes actual DM-scope and full-flow screenshots, permission purposes and reinstallation. The isolated ordinary-DM flow passed native execution/revocation/restart checks and Human feedback; Slack group and native management controls remain separate (#1415, guide).
- Bot DMs offer composer shortcuts for existing model and Workspace Grant settings and Window Companion show/remove; icon-labelled model and workspace-count chips sit left, compact token usage sits right and opens a read-only Orchestrator/recent Assignment usage popover with relative Session bars and a separate details button. Profile and Memory file details replace the complete Channel body without its overlaid chat header; header identity and pin chips align and retain opaque hover backgrounds. Drafts and attachments remain intact, authorization still requires confirmation, and Workspace Grant collapsibles reuse the Channel sidebar header and chevron design (#1432).
- Mobile Bot mode opens a full-width conversation list with one search/create/Exit header; chats use Back/name/three-line Channel menu, and icon-only navigation connects Conversations, Activity Center and existing Bot Settings. Long empty-composer hints use an ellipsis, Activity Center shows one title, search borders stay visible, and Exit reuses the chosen Bot-mode icon. Mobile sidebar display settings stay at the right inset. Returning preserves list position and conversation-isolated drafts, while Exit restores Host navigation (#1434). Physical-phone and Mobile Safari Human QA remains required.
- Attached or pasted files and images can be referenced at the message caret as atomic inline filename-and-size chips with matching attachment numbers, aligned card controls, consistent compact preview cards in a single horizontal scrolling row and unchanged canonical file identity. Sent attachments keep numbers only in inline references, without duplicate corner badges. Shift+Enter preserves the new line when typing after an inline reference (#1447).
- Lark authorization groups can select reusable named behavior permissions. A wide Group editor separates management, behavior and members into tabs beside a compact, sidebar-style affected-person preview; its Allow/Deny cells show only checkboxes with accessible names, and its body scrolls while the title and actions remain visible. People show deduplicated current items, every group source and explicit Allow/Deny conflicts with Deny priority, alongside their primary Role and separate management capabilities (#1423). Profile schema Generation 81 requires an upgrade backup; rollback needs that backup or a compatible writer.
- Compatible checked Providers can add Slack received/answered reactions from canonical Inbox and source-reply facts, without blocking messaging; muted sources are excluded. The isolated candidate has native channel/DM evidence; Human QA and published Provider qualification remain pending (#1161, guide).
- Lark pairing reviewers can choose an existing Role and approve or reject from a shared source-group or private-DM card, including group-only use. Current review permission and separate delegation Allow/Deny limit management Role grants; applicants must ask again after approval (#1414).
- Authorized IM requests can lead the Owner to an existing Web Chat private-input card, consume references under existing approval and return a nonsecret result to the original conversation; current source and account authority fence delayed continuation and delivery (#1385, guide).
- PersonaBots in the opt-in protected Profile can consume opaque private references through one fixed MCP authenticated-status operation, using existing Web input and execution approval; ordinary isolated MCP remains available (#1384, guide).
- Owner CLI supports private-account status, blank replacement cards and local revocation alongside stdin-only multi-field submission and cancellation, through the same Host authority as Web Chat (#1416, guide).
- Bot Schedules in the opt-in protected Profile can reuse configured private references after restart under existing execution approval. Missing configuration asks for Owner action without opening an unattended private-input card (#1383).
- Lark pairing settings manage continuing authorization groups and personal Allow/Deny exceptions; current permission queries show every source, explicit Deny overrides Allow, and removing membership withdraws only that group contribution while each person retains one behavior Role (#1406).
- Added Web Chat private credential replacement and local revocation per PersonaBot/account, with current-version execution checks and bounded running-use stop reports even under remembered broad approval (#1382, guide). Older binaries do not honor the new account tombstones; back up before upgrading and repair forward or restore the full pre-upgrade Profile backup.
- Private input cards have independent pending attention and a fifteen-minute deadline; cancellation, competing submissions and restart settle safely without waking a stopped Bot. Configured references persist, while new grants require a committed card result before use (#1381, guide).
- IM pairing settings use a wide People / Roles / Requests workspace with searchable, sortable tables, compact creation/change times and selected-entry details. Role creation opens separately, table and detail corners align with native inputs, and information icons reveal supporting explanations. Older records without timestamps show an unknown value (#1373).
- Each allowed Lark group can explicitly accept unpaired visitors without management powers; separately collected unpaired ordinary messages supply passive context without waking the model or filling eligible request thresholds (#1376).
- Bot DM settings edit ordinary Lark role behavior and explicit Allow once/Reject capabilities in a separate dialog or reassign a selected paired person; permission queries read current revisions and delayed private approval decisions re-check current authority (#1375).
- PersonaBots can query current paired people and roles, configured external conversations, and paired people observed in one authorized conversation through bounded read-only directories; observations explicitly remain incomplete and do not represent current group membership (#1374).
- Bot DM settings offer ordinary Lark roles and optional reviewed chat pairing: unpaired DMs and mentions wait without waking the model, approval asks for a new question, and revocation closes future access. The model receives trusted sender references and can query current permissions on demand; existing management pairing stays separate. Independent test Apps can be configured once and reused across worktrees (#1373, shared test App guide, ADR-0165).
- An opt-in isolated Profile lets a PersonaBot request confidential fields in Web Chat or receive Owner CLI replies, save them through native Credentials Service and consume references through a fixed CLI under existing approval. Ordinary native bash and configured MCP stdio calls run in Linux with an authorized workspace; the qualification guide describes supported boundaries and review limits (#1380).
- Window Companions offer optional, quiet text-paced babble and grab, fast-drag, throw and first-impact landing sounds, off by default for each Profile, and a damped angular spring makes drag reversals and settling continuous without adding model tools or TTS. Idle companions hide the empty status bubble and fade action controls in on hover or keyboard focus; pointer focus after dragging no longer keeps reading open. Long message bubbles follow the latest revealed text without scrollbars; scrolling upward preserves the reading position until returning to the bottom. Dismissing the final card shows waiting replies and lets later arrivals display even while the character retains keyboard focus (#1173).
- The CLI can create blank, Zip/directory and GitHub/Git PersonaBots, configure models and inspect Channel, attention and Session summaries through a running Host, retaining known partial results and offering explicit identity cleanup with Memory preserved. See the CLI guide (#1363).
- The CLI can authorize Feishu and WeChat IM applications through the existing Provider, return a phone-scannable QR, submit credentials or verification codes through stdin and poll or cancel the same authorization attempt. See the CLI guide (#1318).
- The CLI can send a DM and collect its exact committed reply, inspect receipts, answer formal questions, decide tool approvals once, read release state and create workspace grants through a running authenticated Host. See the CLI guide (#1317).
- PersonaBots can use
inbox_historyto search their own admitted messages and handled self-records across Sessions, in English and Chinese, filtered by kind, Channel, cause and time; bounded history reads never change attention. Text searches require at least three characters, and ranked cursors last ten minutes or until Host restart (#1278, ADR-0154). - Each Memory commit a PersonaBot makes during a turn now appears as a line in the conversation that caused it, with the commit subject, short hash and changed files; clicking it opens the commit in that Bot's Memory history. The Bot's Inbox keeps the same commit as handled history (#1277, ADR-0154).
- Bot settings has an IM apps section listing every app on Lark, Slack, Discord, QQ and WeChat with the Bot that uses it, and a link to DSH settings for credentials (#1263, ADR-0153).
- From IM apps, an unbound app can be bound to a Bot, a bound app unbound after confirmation, and a Lark or WeChat app created for a chosen Bot when the Provider supports setup (#1264).
- While a PersonaBot thinks or works, a row under the latest message shows its avatar turning into the tool it is using and the same short status as the composer; a Group shows up to two working Bots, and the Bot's reply replaces its row as it streams in. While you're at the latest message, the status above the composer fades out, and it comes back when you scroll up into history (#1271).
- Added QQ quoted-voice intake with native platform-transcript provenance, original-audio downloads and on-demand bounded SILK playback in the Channel; one maintained-runtime application passed real voice → model → original-group text reply, Human confirmation and actual Client keyboard playback (#1159, guide).
- Added a candidate QQ group file path with direct or explicit native quoted-file association, authorized Channel downloads, independent working-copy processing and checked original-group result files; one authorized application passed real quoted-CSV processing and Human result-download verification (#1158, guide).
- The QQ image candidate reuses authorized Channel previews and native model image tools, and returns selected image results through the receiving app with a durable native receipt; actual QQ/model qualification remains tracked separately (#1157, QQ guide).
- QQ sources in a shared Group Channel now identify their receiving app in author labels and source details, with independent app attribution in Group Profile activity; the guide explains explicit two-app mapping and own-identity reply limits (#1156, QQ guide).
- QQ conversations can sync future mentions to a chosen Group Channel or remain Inbox-only, retain accepted history when sync stops, and show bounded local reception intervals across block/allow and reconnect without claiming remote backfill (#1153, QQ connection guide).
- An official QQ Bot app can bind to a PersonaBot, admit group text @mentions into its Inbox and answer in the original group with a native acceptance receipt; the development Provider keeps passive-reply expiry and unknown send outcomes explicit (#1152, QQ connection guide).
- Every other part can be drawn as well: outfit, accessory, beard, glasses, nose, cheeks, petals and flower base each offer Draw or edit this piece, starting from the style you wear. Pixels in an appearance color stay recolorable. A drawn face part never covers the speaking mouth. Drawn parts hide where the species or headwear hides the built-in part, and Back to the built-in style restores your choice. Picking a built-in style no longer upgrades an older Avatar's recipe unless a drawn part is being taken off (#1240).
- Drawn parts can be shared. An exported Bot carries the parts it wears, and importing it adds them to your Part Library marked From an imported Bot. A single part exports as a PNG that previews anywhere and imports back losslessly. The whole library exports as a zip of those PNGs. Imports merge identical parts, recompute each part's identity from its content, and refuse malformed or oversized files with a message. The library can be filtered by origin (#1215).
- The part editor gains line and rectangle (hold Shift for straight angles and squares), a tone gradient with 4×4 or 2×2 dithering, noise with an amount and Re-roll, an eyedropper (or Alt-click / long-press), and a Shade pencil that makes cells lighter or darker once per stroke. Every tool mirrors and is one undo step. Results stay appearance colors at a tone, so the part still recolors. On touch, a two-finger tap undoes, a three-finger tap redoes, and an Offset cursor with a Hold to draw button keeps your finger off the pixel (#1216).
- Every hair piece can have its own color: bangs, back hair and a new single strand (ahoge, curl or double) join the side hair colors, and each follows the hair color until you pick one. Headpiece now offers built-in cat, bunny and horse ears, little horns, a halo and new little wings, worn together with any accessory; the base tucks behind the hair and the far side hides when the head turns. Saved Avatars that wear these as accessories look the same until you edit them, when they move into the headpiece slot (#1217).
- Pixel art from other tools can become a part: Import part files also takes a plain PNG of a part's size (32×32, 32×16, or a whole-number scale). You see its size and color count first, choose how many colors to keep (at most 32, nearest color, no dithering), and its pixels arrive as fixed colors that Replace color turns into appearance colors and tones. A built-in headpiece opens as a flattened starting canvas, and a part saved from someone else's part records its parent and keeps the original author's name. The library filter adds Based on another part and From an imported image (#1219).
- Pixel Avatars can be animals: cat, dog, fox, rabbit and bear each get a muzzle, an animal nose and their own ears, with suggested fur colors (skin color is the fur color, and any color still works). Fur pattern adds tabby, spots, patches or colorpoint in fur tones that follow recoloring, and you can draw your own pattern. Ear headpieces and ear accessories are kept but hidden on an animal, with a note (#1218).
- Hair pieces can be drawn too: open bangs, left or right side hair or back hair and start from the style you wear, flattened to pixels. Reshape it with the same tools, save it to the Part Library and wear it in that slot. The drawn hair is shaded and recolored like built-in hair, turns with the head and hides under helmets, hoods and on flowers. Back to the built-in style restores your original choice (#1238).
- You can draw your own headpiece for a pixel Avatar: pencil, eraser, fill, mirroring across the face, a front layer over the hair and a back layer behind it, undo and redo, and a 1× preview on the real Avatar. Colors can follow the Avatar's hair, skin, eye or outfit color in five tones, or be fixed. Saved parts go into a Part Library in your Profile and can be worn by any PersonaBot. The worn copy turns and speaks with the Window Companion and travels with an exported Bot, and editing a library part saves a new part without changing Avatars that already wear the old one (#1211).
- Pixel Avatars can be an elf, dwarf, orc or talking flower. Beards always leave the speaking mouth visible. Armor, robe, tunic and cloak outfits are available, and a helmet or hood hides the hair underneath. Flowers have bead eyes, five petal styles and a stem or pot. Choices a species or headwear doesn't show stay saved, with a note, and return when switched back (#1212, #1213).
- A new PersonaBot starts with a random face from every species, part and outfit, based on its name. Existing PersonaBots keep their current face (#1214).
- Bind app can create a Lark/Feishu app or start a WeChat QR pairing through a compatible Provider setup capability, then bind its authenticated identity without sending credentials through BotHarness; older Providers retain the IM settings path. Existing WeChat accounts are preserved rather than replaced by inline setup. The Lark setup checklist includes original-message read permission needed for protected replies (#1111).
- External coding agents can create PersonaBots without clicking:
deepseekbot createcovers blank, bundle (directory or zip), and GitHub sources against any DSH_HOME, printing machine-readable JSON (bot id, DM channel, data directory, step statuses, next actions) to stdout; names are labels so repeats mint new bots, and secrets travel only via environment or stdin. See the bot CLI guide (#1304, ADR-0156). - The same CLI now manages models headlessly:
model-presetslists profile presets,model-preset-createmints one from explicit routes,model-preset-applyputs it on a Bot, andmodel-planshows the active plan with deferred readiness; routes are shape- plus provider-existence-checked offline while key validity stays Host-side. See the bot CLI guide (#1310, ADR-0157). - The same CLI now covers Bot lifecycle and human naming:
pause/resume,updatefor name, description, and roles,human-name-setfor the Human display name, andchannel-human-name-setfor the per-channel Human nickname, all offline with coded errors. See the bot CLI guide (#1312). - The same CLI now reads channels, manages grants and schedules, and lists pairings:
channelsandchannel-messagesfor history, grant list/revoke/write-set, schedule list/create/update/delete/history/run-now/preview, andpairingsfor IM pairing status; grant creation stays Host-side. See the bot CLI guide (#1313). - The same CLI now configures secrets without clicking:
secret-putreads the value from stdin only and line-edits it into$DSH_HOME/.credentials.yamlwith backup plus re-read validation,secret-listreports names without values, andsecret-unsetdeletes the entry. See the bot CLI guide (#1314, ADR-0158). - Live CLI verbs will ride the DSH HTTP unary carrier with per-invocation token-to-cookie login and never touch the operational database directly; bridge and gateway error codes pass through. See ADR-0160 (#1315).
- The same CLI is now self-discoverable:
searchfinds commands by words against the dispatched verb table, and--compactcondenses stdout JSON to one line for agents. See the bot CLI guide (#1316). - The same CLI now reads and writes Bot Memory headlessly:
memory-snapshot,memory-file,memory-history, andmemory-diffread the memory store, andmemory-savewrites one file and commits it with compare-and-swap heads and idempotent edit ids; conflicts and bad shas fail coded. See the bot CLI guide (#1311). - The local Bot Browser now offers human takeover like the Computer viewer: a live Host-served view with click, scroll, and keyboard entry (small screens default to trackpad mode), and an ask-permission handoff where the bot mints a single-use link with instructions, waits for Done or Could-not-finish, verifies the page state, and resumes. Typed secrets stay in the live view and never reach chat or logs; every handoff leaves an audit trail with its session recording (#1322, ADR-0163).
- Fresh
deepseekbotinstalls now ship the Browser and Computer bundles with Core, Client and the qualified IM Provider, so new Profiles browse and use a computer with no extra installs; IM accounts start disconnected until app credentials are added, and per-Bot Browser/Computer Access stays off until enabled. Existing Profiles gain the new defaults on update; remove a formerly separate Browser or Computer Bundle entry first, keeping its stored data (#1328, ADR-0160). - A compatible Provider can list reachable Lark, Slack and Discord groups and post without a saved target; the app's picker, rolling-hour limit and existing Outbox retain blocks, final authorization and unknown outcomes. Older Providers show an update hint while saved targets remain available; the qualified Provider
.20is published onnextwith its exact archive verified (#1115). - Added a red dot on the Channel header's ··· menu and its Channel settings row when an enabled External connector is unavailable, and Channel settings now opens on that section (#1518).
- Memory evolution can restore Memory to any Git graph commit from inside that commit's block, after saving any uncommitted files as a backup commit; any commit can be given a version name, stored as a Git tag, and Memory evolution can switch to a list of named versions; the section header gains Evolution, Versions and Branches tabs; the restore adds a new commit, the Memory file list refreshes right away, and the recovery list moves to the gear menu as Restore from an automatic backup (#1558).
- PersonaBots can now archive and restore their finished Assignments, search their Assignment list by purpose, key or latest report, and page through it, so a long-running Bot keeps a small, relevant view of its work. The default Assignment concurrency limit rises from 3 to 8 (#1561).
- A PersonaBot can now snooze Bot Inbox items it cannot act on yet with
inbox_snooze. They leave its open list and come back, waking it with its note, at the chosen time or as soon as something new arrives in the same conversation. The Bot Inbox view shows them as Snoozed (#1561). - Added Delete Bot to the sidebar Channel menu (right-click, or long-press on Android) and the Channel header's ··· menu, and every sidebar menu row now has an icon (#1564).
- Added reusable Discord QA1/QA2/QA3 setup that asks only for a hidden Bot Token after an agent prepares test metadata, with a manual fallback and safe status output preserving the machine-local Lark/Slack registry (#1123, setup guide).
- Bot settings › General › Show Bot sessions in the session list controls whether Bot Orchestrator and Assignment sessions appear in DeepSeek Harness's own session list. It is on by default; turn it off to hide them (#1567).
- Local Computer now works on Windows and Linux as well as macOS: the first check installs the matching pinned driver, and a Linux server without a display gets a private virtual desktop, and one that already runs Xvfb (for example for the Bot Browser) shares that display and gets a window manager so clicks and typing work. The Computer card shows a download progress bar, and installs missing desktop packages with one click (with progress) when DSH has administrator rights, or shows a copyable command and checks again on its own once you run it. The Bot Browser offers the same one-click install for missing Linux system libraries (#1632).
Changed
- A Bot can now ask for a secret in an ordinary Profile, without Docker or a special setup: the value is stored in DSH's credential store for that Bot, the conversation and the model only see a reference, and Agent file tools and Shell commands that target the credential store are refused. A Bot can then call an HTTP API with those secrets through the Host, which sends the request to the address the Owner entered and masks the secrets in the reply. The Docker-isolated Profile remains available as an opt-in (#1562, ADR-0189).
- A Bot can run a command-line tool that reads its credential from an environment variable, using a secret you entered on a card. The program is started without a shell and with a clean environment, the secret is masked in the output the Bot sees, and every such run needs its own approval that cannot be saved as a rule. (#1572, ADR-0191)
- Removed the opt-in Docker-protected Profile for secret input (
privateInputExecution, its container Shell and container MCP servers). Secret input, HTTP and command-line use of secrets, replacement, revocation and the Owner CLI are unchanged and need no Docker. A Profile that still sets the option starts as an ordinary Profile and logs a warning. (#1585, ADR-0192) - Turning on full access for a Bot now also applies to its own chat: the Bot no longer asks before each command or gets blocked outside its workspace while the switch is on, and returns to the confined mode when it is turned off. You can narrow it to new Assignments only, and a Bot that already had full access on keeps that narrower scope. The switch carries a red warning, because content other people send in a Group or IM could then steer the Bot into acting. Running a command-line tool with a secret still asks every time. (#1588, ADR-0193)
- A Bot can connect an MCP server that reads its credential from the environment, using a secret you entered on a card, and then use that server's tools. Every start needs its own approval that cannot be saved as a rule; the server stops when you ask the Bot to disconnect it, revoke the secret, or restart. (#1571, ADR-0195)
- When a Bot asks to connect an MCP server with a secret, you can now choose to remember it: it is then reconnected whenever that Bot's chat starts, without asking again. Remembered servers are listed under Secrets in the Bot's settings, where you can remove them. (#1606, ADR-0196)
- An MCP server you chose to remember now appears in every Bot's settings. Turn its switch on for another Bot and that Bot gets the server's tools without you entering the secret again; removing it in any Bot's settings removes it for all. (#1613, ADR-0198)
- An approval card in a Bot's DM now links to that Bot's full access switch, so you can stop per-command approvals from where they interrupt you. Full access stays off until you turn it on, with its warning. (#1624)
- The card for starting an MCP server now says that the server can add its own instructions to the Bot's system prompt and that its tool descriptions and results can influence the Bot, so connect only a server you trust. (#1620)
- Asking a Bot in one sentence to set up an MCP server now works: it asks for the credential with a card straight away and connects the server, instead of asking you to paste the key into the chat or looking through configuration files. (#1611)
- A Bot's question card no longer holds the Bot: after 45 seconds without an answer the Bot goes on with other messages, and the card can still be answered later. PersonaBots now run on a product preset that turns on DSH's timed questions. Tool approvals still wait for a decision (#1038, ADR-0187).
- A Bot's secret-input card now also appears in the Channel the request came from, including a Group. Only the Owner can fill it, no value is shown in the Channel, and only the requesting Bot receives the references (#1542).
- Before the first tool approval card of a task, a Bot now says in the conversation what it is about to do and what it needs; the Host returns the call once if the Bot has not spoken yet (#1541).
- A Bot working on a Group request now asks in that Group: tool approval cards, question cards and folder-access requests appear in the Channel the task came from instead of always in the Bot's DM. Secret input stays in the DM (#1536, ADR-0186).
- A Group Channel's composer footer shows one workspace count, the distinct workspaces its member Bots can use together, instead of each Bot's own count; a DM still shows its Bot's count (#1515).
- Onboarding is now a getting-started checklist opened from a progress ring in the Bot-mode sidebar row (beside the exit button on mobile), so it takes no vertical space. It covers choosing a model and sending the first message, then letting the Bot remember you, connecting a chat app, setting a daily task and summoning the Window Companion, each with a direct action and a check read from that feature's own data. The interface walkthrough starts from the checklist and ends by showing how to leave Bot mode, and a quiet "Try it" chip marks the Bot-mode row until you first enter it (#1496, ADR-0180).
- In a DM or Group Channel, the avatar beside a message group stays at the bottom edge of the timeline while a group taller than the view scrolls past, so you can always see who is speaking (#1491).
- Channel footers show the full effective model name without provider or inheritance labels; mobile layouts keep only the model selector, while desktop workspace and token controls remain available (#1479).
- The onboarding tutorial is now a floating multi-step driver.js walkthrough of the interface — the welcome letter, conversation list, Activity Center, Bot settings, conversation header, message box, Channel sidebar and Window Companion — instead of a permanent bar at the top of Bot mode; it starts on the first Bot-mode entry, closing pauses, the guide offers Skip tutorial, and Bot settings → General restarts it, with completed Profiles seeing no onboarding bar (#1295, #1301, ADR-0155).
- The preset welcome message now reads as a first-person letter from the Bot, with its banner, avatar, name and tags and the suggestion questions kept as reply options; the timeline labels that message with the Bot's name instead of "System" (#1301).
- The Memory commit view's header now shows just the short hash and commit message, and creating a branch from a past memory moved to a right-click menu on that commit in the Memory evolution graph (#1288).
- When a PersonaBot messages another Bot because of a Group or a Bot DM, the "sent a direct message" line, now showing both Bots' avatars and names, appears in that conversation instead of the sender's private DM, and the sender's Bot Inbox keeps a handled record of it; Bots replying to each other inside their Bot DM no longer add a line to the Human DM. These lines no longer count as unread, get read receipts or replace the Channel preview (#1276, ADR-0154).
- Bot settings open in their own window from the gear in the Bot panel, with a sidebar of General, Models & execution, Messaging, Computer, Browser, Window companions, Data & privacy, Advanced and About instead of one long page among other plugins' settings; Bot settings in DSH settings switches straight to it, and the telemetry notice and Window Companion menu open their own section (#1260, #1261, ADR-0153).
- In a narrow window, Bot settings shows its sections in a dropdown at the top instead of a side rail (#1262).
- Window Companions stay smoother while several Bots work and type at once. Companions now share one animation frame and measure before they write, and an avatar no longer rebuilds its figure each time it switches between thinking and working. In a five-Bot test with real replies, frames longer than 50 ms dropped by about 70% (#1167).
- Under Recently updated, ungrouped Channels in the sidebar now sort by their latest message, so a Channel with a new message rises to the top of its group of rows. Opening a Channel no longer moves it to the top on its own (#1530).
- A PersonaBot no longer treats every message as handled just because a turn finished. Items that reached it stay open until it resolves them, it sees its unresolved conversations at the start of each turn, and it can review them with
inbox_listand clear many at once withinbox_resolve. The Bot Inbox view shows these items as Open (#1561). - The Bot Inbox in the Channel sidebar now lists items that need attention first, then snoozed items ordered by when they return, then a folded Done group. Each row shows the Bot's resolution note, or for a snoozed item its return time and note. The tab badge counts only items that need attention and hides at zero. The Sessions tab now shows idle Assignments in its Idle group by default (#1561).
- A PersonaBot that leaves Bot Inbox items open after a turn is woken again to triage them: act, resolve, snooze or ignore each one. It stops once a round makes no progress and starts again only when something new opens. When an Assignment reports completed, the PersonaBot checks the result against what it asked for and sends it back if it falls short (#1561).
- The Sessions tab now groups Assignments as Needs input, Working, Idle and Resolved. Needs input covers a pending tool approval, an error, or a report that waits on you, is blocked or failed. Resolved holds archived and stopped Assignments and is folded by default. Each idle or resolved row has an Archive or Unarchive button, and the Working heading shows how many Assignments run against the limit. The Orchestrator row no longer shows an Idle tag, and while a triage turn runs it reads “Triaging n open”. Assignment lifecycle items in the Bot Inbox now show as from the Assignment instead of System (#1561).
- Window Companions now speak through one compact bubble. A reply plays one or two sentences at a time instead of stacking up to three cards. Hover to pause and read the whole message, and a counter shows how many more are queued. Tool approvals and questions show one request at a time with compact buttons; working directory, raw input and option notes fold under Details. The activity line above the avatar is gone, because the avatar already shows what the Bot is doing; a disconnected companion is dimmed instead. The bubble now has a rounded outline with a tail pointing at the avatar, pops in for each new message and shows a typing caret, and question options are numbered rows. The avatar turns its face toward the way it walks, and stops to face you while it speaks (#1576).
- Each Bot request carries about 5k fewer input tokens. A Bot without an IM connection no longer lists the 15 external IM tools or their instructions, and they appear on the next turn after the Bot is connected. The native subagent tools that a Bot could not call are gone; Bots keep delegating through bot_subagent. The reminder tool no longer repeats rules already in the Bot's instructions (#1583).
- Bot settings now follows the compact look of the Channel sidebar. Every section uses the same rows: a title, one line of description and one control. Choices open as a small menu instead of a browser select box, and changes apply as soon as you make them. Messaging shows one platform at a time without the table or revision number, the Assignment limit and companion retention use a stepper, your default name saves when you press Enter or leave the field, and IM apps explains what to do when no app exists yet. Channel settings shares the same dialog frame (#1591).
- Form and confirmation dialogs now share one layout. Each field shows its label above and its hint or error below, every form ends with Cancel and one main action, Enter submits, and destructive confirmations use a red button. This covers creating and renaming Bots, channels and sections, schedules, IM app, identity and connector setup, profile editing, nicknames, member wake policy, Bot deletion, zip import and export, history purge and diagnostics. Dialogs that only report a result show a single button. Group management in Channel settings is now two rows, and the group name saves when you press Enter or leave the field (#1600).
- Larger dialogs now share the same layout as forms: one title, consistent spacing and type, and their actions in a single footer row with any side action on the left. This covers the model editor, the workspace folder browser, avatar and primary colour, IM pairing, approval and permission groups, behaviour permissions, role and exception editors, the Bot Marketplace, profile backup, memory backups, the assignment limit, external source details, IM authorization, group workspace grants, the DM composer's model and workspace panels, hidden channels and group invitations. Role, permission-exception and group-deletion dialogs submit with Enter, and deleting a permission group uses a red button. Dialogs now come in three widths: 440, 760 and 1060 pixels (#1601).
- The Channel sidebar, its Sessions, Work, Bot Inbox and Memory tabs, the conversation header, the composer context bar, the mobile Bot panel and conversation header, the desktop window companion, and the Computer and Browser settings now take their spacing, type, radius, size and colour from one set of design tokens. They look as before, with small alignments to the shared scale: a few gaps and paddings move by 2px, small labels go from 11px to 12px, focus rings use the accent colour, and disabled buttons are dimmed (#1602).
- The token usage chip under the composer now shows just the number, such as "169.5K", without "Partially known" or "tokens". The chip's hover label and the usage panel it opens still give the full wording (#1640).
- Bot mode now uses a smaller, stricter visual scale. Text comes in three sizes (12, 13 and 14px) at two weights, so headings that were 15–24px or bold become 14px medium; corners follow the DSH radius scale, so most controls and cards round a little more; and cards, chips and code blocks that already have their own fill lose their outline, while separators inside a surface use the lighter divider colour. Elsewhere the change is mostly internal: every plugin stylesheet, including the Computer and Browser settings, reads its spacing, type, radius, edges and colour from the shared design tokens, a few gaps and paddings move by up to 2px, and unused legacy styles and per-feature token tables are gone (#1603).
Fixed
- QQ voice attachments use the same audio card as message attachments, with keyboard playback and seeking; download still saves the original voice file, while playback conversion remains explicit (#1156).
- The maintained QQ Provider retains native mention names and IDs so Channel messages use the existing external mention chips, with the native ID in hover details; original source text and App ownership remain unchanged (#1156).
- A Bot no longer answers a message from another Channel in the Channel its current turn started in: when a turn carries messages from several Channels, the Bot must name the target Channel for each reply (#1527).
- In the English UI, tool-approval requests and decisions, their replies and the sidebar preview of a Bot DM holding an approval now show English text instead of fixed Chinese (#1293).
- Memory and Workspace folders under a symlinked parent directory, such as macOS
/tmpor a linked home folder, no longer deny every Bot file tool call as outside the authorized workspace; a folder that is itself a symlink is still refused (#1292). - AX Go launches stage the reviewed adapter patch inside each isolated CLI and reference it relatively, fixing Windows
ERR_PNPM_PATCH_NOT_FOUNDwhen source and home are on different drives; model credentials and native request handling retain their existing ownership (#1409, AX guide). - DeepSeekBot screens no longer lose all their styling at random while DSH's own UI stays styled: reloading or updating another plugin could remove DeepSeekBot's stylesheets (#1528).
- Any number of DeepSeekBot tabs on the same DSH address, up to the browser's limit for DSH's own connection, now stay responsive: the Window Companion feed also travels on DSH's shared live connection (#1501).
- Two browser tabs of DeepSeekBot on the same DSH address now both load and keep responding: Channel, roster and Activity updates travel on DSH's shared live connection instead of holding a browser connection each. A third tab can still stall all of them until the Window Companion stream moves as well (#1490).
- After a Human DM turn is cut off (for example by a Host restart), a Bot woken next from another Channel no longer posts that DM's answer there; the request stays in its DM. A Human DM that a Host stop interrupted before the Bot did anything is now rerun automatically when the Host starts; a turn that failed on its own still waits for a manual retry (#1520).
- On a narrow or mobile window, the activity dots in a Channel list row now sit right before the message time instead of floating in the middle of the row (#1513).
- A completed Assignment report no longer keeps the neutral marker on its Bot's avatar once the Orchestrator has handled it; the report stays listed in the Inbox (#1489).
- The status row above the composer no longer stays visible for an idle Bot just because a completed Assignment report is waiting in the Inbox; the report keeps its neutral marker on the avatar and in the Inbox (#1489).
- A Bot no longer stays stuck on "Thinking" after its turn has ended when DSH records more Session events afterwards, such as a
/compactcheckpoint (#1489). - Bot-mode Web documents share selected Channel, roster and Activity SSE within each page, leaving ordinary API requests responsive when two pages use the same HTTP/1 Host. Late Activity consumers retain stale status and HTTP recovery during reconnect; purge baselines and independent consumer cleanup are preserved (#1451).
- Restored QQ group Channel mappings retain bounded retries while apps become ready after Host restart, so the first new mention reaches its mapped Channel as well as its Inbox (#1156).
- Fixed checked QQ self mentions in full-reception events while keeping ordinary messages and Bot authors excluded; the candidate Provider retains current Lark pairing capabilities and does not claim own Echo qualification (#1156).
- Several DM messages sent while a Bot is busy no longer make it run a separate turn for each one after they were already delivered together into the running turn (#1481).
- Clarified that Orchestrator answers, including short acknowledgments and image descriptions, must be delivered through the Channel reply Tool rather than private Session text, while preserving intentional silence and external reply routing (#1449).
- Public private-input Session evidence retains native RC1 rejected and unavailable approval outcomes while excluding decision reasons and unknown values (#1386).
- The reusable Lark QA App setup wizard prints links for manual navigation and reduces Windows prompt delays by caching defaults, avoiding terminal subprocesses, and saving each stage atomically while preserving other Apps (#1385).
- Lark tool-approval cards now show settled execution or rejection without stale action buttons by using shared updates in the qualified Provider (#1406).
- Chat bubbles use equal insets, and private-input, question, approval, workspace-grant and failure-repair cards align the space above their actions with the bottom inset (#1382).
- Window Companions blink at independently staggered phases and idle intervals per Bot, so matching avatars no longer blink in unison (#1367).
- Window Companions use a flatter full speech opening, preserving the half-open mouth, saved expression, portraits and speaking rhythm (#1241).
- Window Companion bubbles update their origin together with the character during dragging, keyboard movement and reduced-motion release, without waiting for another animation frame (#1248).
- Reading a Window Companion bubble with the keyboard or resizing the window no longer scrolls the outer stage and leaves the character above the floor; the bubble itself still scrolls (#1173).
- Window Companions keep falling after a fast throw clips the character outside the visible content, and delayed frames no longer slow gravity into an apparent midair pause. Releasing immediately ends the drag, so a late pointer move cannot grab the character again; the release click remains suppressed. Visibility checks follow the fixed presentation area, while hidden pages and offscreen areas still pause animation (#1173).
- Opening a Bot DM by Channel ID, including the first Bot-mode entry, now shows that PersonaBot's Channel sidebar and shares its collapse/expansion preferences with Bot navigation; stale conversation metadata no longer selects another Channel's entries (#1361).
- Clicking the tutorial mask advances to the next step instead of dismissing the tour; the final step uses the Done action. The footer keeps Skip as text and uses labeled icons for Previous, Next and Done so the controls and progress do not wrap (#1356).
- Profile token-usage cards keep missing-provider-usage explanations behind an info icon beside the title, available on hover, keyboard focus or click instead of taking up space in the card (#1355).
- CLI secret edits validate actual YAML on disk and restore the original file on failure; empty inline refs and multiline values work, and secret-bearing arguments fail without echoing their values (#1347).
- App sidebar conversation titles show the latest message time and leave it blank when there are no messages. Bot Channel header chips no longer show PersonaBot tags; tags remain in the Profile (#1354).
- Bot Browser's first background tab can open before Chrome's startup window is ready, and local Web users see download progress while it installs; the extra development refresh connection now requires
?botharness-dev-reload=1(#1339). - The working row no longer reappears as "Thinking" right under a PersonaBot's own reply while it finishes the turn, and the jump-to-latest pill says "1 new message" for a single message (#1284).
- A quiescent Assignment waiting for tool approval releases its running slot, so other work can start; an accepted decision waits for a slot before the original call continues, and the approval card distinguishes both waits. Waiting Sessions are bounded separately, roots with descendants retain their slots, and revocation or restart never replays the call (#1037).
- In Bot Settings, Computer Import… stays closed when the directory holds no archives, and a Combobox with nothing to pick renders no floating box, so an empty dropdown no longer reads as a broken select (#1309).
- On narrow screens, message bubbles are no longer squeezed by the always-visible reply and copy buttons; those actions move into the long-press message menu, while desktop hover and right-click behavior is unchanged (#1346).
- A question card that a Bot left open while it went on with other work now survives a Host restart. The card stays answerable in its DM or Group and in the Human Inbox, and the answer resumes the Bot's own conversation where it asked. Before, the card silently expired after a restart. A card also stays answerable when DSH releases the Bot's agent between tasks (#1038).
- A Channel's sidebar preview and time now follow new messages even when that Channel is not open, including messages you send from another window. Each new message updates only that Channel's row, so the sidebar no longer waits for an unrelated refresh (#1530).
- A PersonaBot can now resolve or snooze the message that woke it in the same turn:
inbox_resolveandinbox_snoozeaccept the Message ID shown in the turn header, andinbox_listincludes the items the current turn is handling. Before, the Bot could not find those items, so every message cost an extra triage turn (#1561). - When the Orchestrator gets an Assignment report through
wait_for_assignment, that report and its lifecycle notices now belong to the current turn. The Orchestrator can accept and resolve them there, and no separate report turn follows (#1561). - When a Bot's Orchestrator Session is archived in DeepSeek Harness while the Bot is replying, the Bot now replays the message on a new Orchestrator Session instead of failing, as long as the interrupted turn had not acted yet (#1567).
- Fixed a PersonaBot going silent after its Orchestrator Session was archived in DeepSeek Harness; the Bot now starts a new Orchestrator Session on its next message (#1567).
- The DM token usage panel's "Current Orchestrator Session" row now shows the Session the Bot actually resumes, so it follows a replacement Orchestrator Session instead of an archived one. Usage from replaced Orchestrator Sessions stays in the Bot's totals (#1567).
- When a Bot moves to a new Orchestrator Session, BotHarness now releases the Agent it held for the replaced Session instead of keeping it in memory until the Bot stops (#1567).
- After a Bot replaces an archived Orchestrator Session, the Sessions list pins the Session the Bot actually resumes, and an answer to a question asked in the archived Session is refused instead of starting a turn DeepSeek Harness rejects (#1567).
- A Bot no longer stays stuck on "thinking" or "working" when a Session log stops in the middle of a turn, for example after a crash or when the turn ends without a closing event. The state now settles to idle once DeepSeek Harness reports that the Session is not running (#1567).
- A Bot tidying its own inbox or archiving finished Assignments no longer asks the Human for tool approval, so the next message to that Bot is not held behind an unanswered card (#1575).
- The onboarding tour now describes the Channel sidebar tabs and points to Channel settings in the ··· menu, and its Activity Center and Bot settings steps show the buttons they highlight. The getting-started progress ring in the Bot mode row now appears only on hover, like the Activity Center and settings buttons (#1584).
- Discord app binding and empty-conversation hints now describe server-channel and public-thread @mentions instead of promising unsupported DMs, with a recorded packaged binding/reply qualification (#1123, qualification record).
- Fixed a PersonaBot with dangerous full access being unable to use its Bot Browser or the Computer. Full access turns approval cards off, and these two tools still waited for one, so every call was refused. A Session that has full access now gets that authorization without a card, and running a program with your secrets (
secret_cli,secret_mcp_connect) no longer asks on every call either. Full access now means no approval cards; the Bot can still ask you a question or for a secret. Bots in the default mode still see the approval cards (#1622). - The Human Inbox button in the sidebar's Bot-mode row now sits in one group with the tutorial progress ring and the settings gear, without a border. Before, it floated above the row, covered the tutorial ring and hid the gear when pointed at (#1630).
- The DSH Plugins page no longer offers Browser, Computer and Core as separate Bundles to turn on. They already run inside DeepSeekBot, and turning one on added a second copy with default settings: Browser lost its headless setting and failed on servers without a display, and Core was declared twice. A Profile that already turned one on keeps working; the extra entry is skipped at startup (#1633).
- Fixed the banner in the channel header's profile popover stopping short of the card's right edge in the desktop app, and the onboarding welcome letter's Bot name overlapping its banner and its 4:1 banner cropping 3:1 uploads (#1634).
- When the Bot Browser cannot start because the OS blocks Chrome's sandbox, the panel no longer tells you to enable headless, which was already on and could not help. On Linux it now names the likely cause, AppArmor restricting user namespaces on Ubuntu 23.10 and later, and Details includes an AppArmor profile for the Bot Browser's own Chrome that allows them (#1635).
- Typing @ straight after Chinese text or punctuation such as 。 now opens the Bot picker, so a message can mention several Bots without a space before each @ (#1637).
- A Bot question with more than three items or a long description now appears as a card in the Channel and the Window Companion, instead of only in DSH's own question view, so you no longer leave Bot mode to answer it (#1641).
- A tool call whose input is longer than 16 KB now shows an approval card instead of being refused, and a typed answer on a question card is no longer limited to 2,000 characters. Bot-mode cards now accept what DSH itself accepts (#1648).
Documentation
- Documented a qualified 2-core, 4 GB source deployment with strict SSH, CLI installation, tailnet HTTPS, real QQ replies before and after Host restart, an original-group A/B image with private identity redacted, and an actual native binding clip with bilingual subtitles; the complete tutorial film remains pending (#1438, walkthrough, Profile installer).
- The npm package page names DeepSeekBot (DSB), lists QQ among IM identities, notes that it is not DS Bot (
ds-bot), and links to deepseekbot.app (#1548). - Both READMEs are shorter and user-focused: the video and pixel avatars come first, installation and the Bot Marketplace link to the website, features sit in one table (including Slack, Discord, Lark / Feishu, QQ and WeChat, and computer and browser use), and a new section compares DeepSeekBot (short name DSB) with the separate DS Bot (npm
ds-bot) project (#1516). - Updated the bilingual GitHub README for released 1.2.0 and 1.2.1 highlights, installation compatibility and the current app-binding path; removed the outdated unreleased preview (#1464).
- Public installation instructions use the qualified stable exact package version, with synchronized bilingual README/guide checks and release-age recovery guidance instead of implying bare names or
@latestalways install the newest release (#1456). - DeepSeekBot GitHub Release announcements start with version-specific official website and Chinese/English installation links; short links preserve GitHub, release-version and entry-point attribution without changing analytics consent (#1445).
- Added an isolated Linux private-input qualification guide covering tailnet Web access, exclusive IM receiver handoff, cross-platform path metadata and explicit non-root workspace permissions (#1386, guide). The
ask_secrettool now tells Web and scheduled callers to omit the IM-only source selector when reusing configured accounts. - Added the Product Hunt launch badge to the Chinese and English READMEs (#1427).
- Added bilingual human contributor guides and community entry points for questions, ideas, examples and focused issues or PRs, including copyable, illustrative bug-report examples with redaction guidance; runtime behavior is unchanged (contributor guide, #1396, #1403).
- Clarified DeepSeekBot’s project identity, canonical installation links and distinction from DS Bot in both READMEs, with published npm versus current-source Browser/Computer scope (#1399).
- Documented how a PersonaBot's Memory commits and its own BotHarness-tool actions will be kept as Channel Notices in the conversation that caused them and as searchable Bot Inbox history that never wakes it; runtime behavior is unchanged (ADR-0154, #1272).
- Documented five-companion foreground frame, concurrent-output and stream-recovery/Client-reload measurements, ten-cycle heap observations, same-version/Profile walking studies with separate main-renderer stage observations and an explicitly interrupted current-version comparison, separate Windows GPU-process counters and actual browser-process restart checks, with repeatable protocols, confirmed scoped budgets and explicit remaining qualification; no SVG-specific GPU attribution or overall performance acceptance is claimed (report, #1167).
Full comparison: View all changes