dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
给 DSH 加一个「会议室」:多个会话(AI 或人)围着同一个会议目标讨论、交接文件;目标达成后由每间房自带的记录员读完整记录写《会议结果》草稿,人工审核后按成员分节发布。发言自动接力、文件自动归档、权限可在会议室里直接批。13 个 room_* 工具、8 个配置键、525 项自测全绿。
Many sessions, one meeting table — a meeting-room plugin for DSH (DeepSeek Harness).
Multiple sessions (AIs and humans) work on one shared goal, hand files over, and keep one shared transcript. When a goal is reached, the room's built-in recorder reads the whole transcript and drafts the final resolution — which is published only after your review.
中文完整文档见 README.zh.md(1117 行:需求→落地对照、使用指南、端点表、故障排查、每版变更与实测指纹)。
Using several sessions to attack one problem usually makes you the message bus: copy A's answer to B, paste B's revision back to A, then write the summary yourself. This plugin turns that into a meeting: rooms with goals, one append-only transcript everybody sees, files that land in the room folder, and a recorder that writes the conclusion from the full record.


Diagrams generated from the docs (Chinese versions: docs/images/).
Real UI. The first one is a live room, published as-is with the room owner's consent (the transcript is a real discussion). The other three show the room list, the planning drawer (recorder prompt, thinking level, file policy, meeting controls) and the read-only file panel, with the user name, room names, goal text and file names replaced by demo values.




Taken from live DSH sessions. In the last three, the user name, room names, goal text and file names were replaced with demo values before publishing.
transcript.jsonl + human-readable transcript.md) and its own folder
(记录/ for records, 附件/ for deliverables).room_task_done instruction) the recorder drafts the resolution immediately
— consensus, owners and TODOs only, no invented content. You approve, reject, or edit before it is
published to each member. Rejection sends the reason back to everyone for another round.room_say writes to the record and pings the
other members to come and respond, so the discussion keeps moving instead of stopping after one
round. Posting as the human restarts the rhythm too.archive (record only) or
notice (a one-line "N new messages" ping); a full request is downgraded to that notice, so your
text stays in the room record. (Participants can still deliver bodies to each other.)pwsh. Only files created in the current round are moved, edited
files are copied, and a baseline protects everything that existed before the meeting.allowed-once; non-members,
timeouts and cancellations fall back to DSH's original approval chain).GET /dsh-room/staging reports tool-shadow status, per-member conduct
and staging state, file-relocation events, and approval-listener state.Clone the repository, then install it as a DSH profile bundle:
git clone https://github.com/IORT-DOIT/dsh-meeting-room.git
install_bundle link:/path/to/dsh-meeting-room
Then restart DSH (or let the profile reload). The sidebar gets a 会议室 (Meeting rooms) entry.
The plugin is mounted through dsh.bundle.patch = ./cordis.patch.yml; the client part is
dsh.client = { platform: 'web', immediately: true }.
Peer dependencies (@deepseek-ai/dsh-llm, @deepseek-ai/dsh-tools, @deepseek-ai/schemastery)
ship with DSH; a missing one means an incompatible host version.
Manual fallback (add this to the profile's plugin list; restart afterwards):
- insert:
- id: dsh-meeting-room
name: 'dsh-meeting-room'
Uninstall with the profile's bundle removal; your state root and meeting folder are not deleted.
room_* tools — room_say to speak, room_read to read the record,
room_files / room_open to hand over files, room_goal_report to report progress,
room_task_done to declare the task finished.room_*)room_list · room_archive · room_join · room_leave · room_say · room_read · room_files ·
room_open · room_goal_report · room_result_write (disabled for AIs since v4) · room_task_done ·
room_request_reopen · room_finalize
Eight keys, defaults are fine:
| Key | Default | Meaning |
|---|---|---|
root | ~/.dsh/meeting-room | state root (rooms.json / settings.json) |
category | ~/dsh/会议 | default parent folder for new rooms |
roomId | main | default room id (v1-compatible routes) |
maxReadMessages | 40 | room_read message limit (also the recorder's evidence limit) |
maxReadChars | 40000 | room_read character limit |
autoCloseGoals | false | reserved |
autoContinueHops | 6 | auto-relay switch: 0 = off, non-zero = on (no hop ceiling) |
recorderTimeoutMs | 240000 | recorder stall guard (leave it alone) |
Host / Origin; cross-site origins get 403.dev:ino).. / ..), single file ≤ 8 MiB.delivered does not mean "read".node selftest/run.mjs # 525 assertions, ~12 s
node --check index.js && node --check client/client.js && node --check selftest/run.mjs
The suite covers behaviour (real HTTP, fake React render, agent-scope tool shadows) and pins
source shapes, and it must stay green before any release. Every version's investigation,
implementation and honest limitations live in docs/ (v2 … v18).
v18-方案.md is the latest)MIT — see LICENSE.