@michengai/dsh-btw 0.1.0
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 +10 -0
- package/CHANGELOG.zh-CN.md +10 -0
- package/LICENSE +201 -0
- package/README.md +204 -0
- package/README.zh-CN.md +200 -0
- package/assets/screenshots/btw-bubbles.png +0 -0
- package/assets/screenshots/btw-command-menu.png +0 -0
- package/assets/screenshots/btw-conversation.png +0 -0
- package/cordis.patch.yml +3 -0
- package/docs/00-/344/272/244/346/216/245/345/205/245/345/217/243/00-/351/230/205/350/257/273/345/257/274/350/210/252.md +12 -0
- package/docs/00-/344/272/244/346/216/245/345/205/245/345/217/243/02-/345/275/223/345/211/215/347/212/266/346/200/201.md +16 -0
- package/docs/00-/344/272/244/346/216/245/345/205/245/345/217/243/03-/345/276/205/345/212/236/344/270/216/351/230/273/345/241/236.md +11 -0
- package/docs/01-/345/275/223/345/211/215/345/267/245/344/275/234/I005-/351/246/226/346/254/241/345/217/221/345/270/203/344/270/216/345/217/257/344/277/241/345/217/221/345/270/203/351/205/215/347/275/256/00-/350/277/255/344/273/243/346/200/273/350/247/210.md +27 -0
- package/docs/05-/345/267/245/347/250/213/344/272/244/344/273/230/01-/350/207/252/345/212/250/345/217/221/345/270/203.md +58 -0
- package/docs/07-/350/277/255/344/273/243/345/275/222/346/241/243/2026/I001-/344/270/200/346/254/241/346/200/247/346/227/201/351/227/256/346/260/224/346/263/241/344/270/216/350/276/223/345/205/245/345/216/206/345/217/262/00-/350/277/255/344/273/243/346/200/273/350/247/210.md +44 -0
- package/docs/07-/350/277/255/344/273/243/345/275/222/346/241/243/2026/I001-/344/270/200/346/254/241/346/200/247/346/227/201/351/227/256/346/260/224/346/263/241/344/270/216/350/276/223/345/205/245/345/216/206/345/217/262/01-/351/252/214/346/224/266/350/256/260/345/275/225.md +32 -0
- package/docs/07-/350/277/255/344/273/243/345/275/222/346/241/243/2026/I002-/345/256/236/351/231/205DSH/346/217/222/344/273/266/346/216/245/345/205/245/00-/350/277/255/344/273/243/346/200/273/350/247/210.md +45 -0
- package/docs/07-/350/277/255/344/273/243/345/275/222/346/241/243/2026/I002-/345/256/236/351/231/205DSH/346/217/222/344/273/266/346/216/245/345/205/245/01-/346/265/213/350/257/225/347/216/257/345/242/203/351/232/224/347/246/273.md +38 -0
- package/docs/07-/350/277/255/344/273/243/345/275/222/346/241/243/2026/I002-/345/256/236/351/231/205DSH/346/217/222/344/273/266/346/216/245/345/205/245/02-/345/256/242/346/210/267/347/253/257/346/263/250/345/205/245/344/270/216/346/260/224/346/263/241/345/256/275/345/272/246/344/277/256/345/244/215.md +28 -0
- package/docs/07-/350/277/255/344/273/243/345/275/222/346/241/243/2026/I003-/345/256/277/344/270/273/345/244/226/350/247/202/344/270/216/345/233/275/351/231/205/345/214/226/00-/350/277/255/344/273/243/346/200/273/350/247/210.md +47 -0
- package/docs/07-/350/277/255/344/273/243/345/275/222/346/241/243/2026/I003-/345/256/277/344/270/273/345/244/226/350/247/202/344/270/216/345/233/275/351/231/205/345/214/226/01-/350/247/206/350/247/211/351/252/214/346/224/266.md +35 -0
- package/docs/07-/350/277/255/344/273/243/345/275/222/346/241/243/2026/I004-/344/273/223/345/272/223/344/270/216/350/207/252/345/212/250/345/217/221/345/270/203/00-/350/277/255/344/273/243/346/200/273/350/247/210.md +38 -0
- package/lib/client.js +13473 -0
- package/lib/index.js +322 -0
- package/lib/types/client/BubbleView.d.ts +13 -0
- package/lib/types/client/bubbles.d.ts +32 -0
- package/lib/types/client/index.d.ts +3 -0
- package/lib/types/client/styles.d.ts +1 -0
- package/lib/types/index.d.ts +5 -0
- package/lib/types/locales.d.ts +49 -0
- package/lib/types/server/command-visibility.d.ts +3 -0
- package/lib/types/server/jobs.d.ts +43 -0
- package/lib/types/server/tool-guard.d.ts +13 -0
- package/lib/types/shared.d.ts +15 -0
- package/package.json +110 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.1.0] - 2026-09-06
|
|
4
|
+
|
|
5
|
+
- Add one-shot `/btw` questions that inherit completed turns from the main session and answer without executing tools.
|
|
6
|
+
- Show independent Markdown answer bubbles above the composer, with copy, collapse, close, and cancellation cleanup.
|
|
7
|
+
- Support DSH light and dark themes and Chinese and English UI, while hiding internal transport commands.
|
|
8
|
+
- Leave the sidebar unchanged and do not record input history or bind arrow keys.
|
|
9
|
+
- Include installation instructions, real UI screenshots, and automated tests, packaging, and bilingual GitHub Releases.
|
|
10
|
+
- Provide complete English and Chinese READMEs and use the Apache-2.0 license consistently.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# 更新日志
|
|
2
|
+
|
|
3
|
+
## [0.1.0] - 2026-09-06
|
|
4
|
+
|
|
5
|
+
- 新增 `/btw` 一次性旁问,继承主会话已完成回合,只回答、不执行工具。
|
|
6
|
+
- 在输入框上方展示独立 Markdown 答案气泡,支持复制、折叠、关闭和取消清理。
|
|
7
|
+
- 适配 DSH 浅色、深色主题及中英文界面,隐藏内部传输命令。
|
|
8
|
+
- 不占用侧边栏,不记录输入历史,不绑定上下键。
|
|
9
|
+
- 提供安装说明、实际界面截图及自动测试、打包和双语 Release 工作流。
|
|
10
|
+
- 提供完整中英文 README,统一采用 Apache-2.0 许可证。
|
package/LICENSE
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing the
|
|
141
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
+
|
|
180
|
+
To apply the Apache License to your work, attach the following
|
|
181
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
182
|
+
replaced with your own identifying information. (Don't include
|
|
183
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
+
comment syntax for the file format. We also recommend that a
|
|
185
|
+
file or class name and description of purpose be included on the
|
|
186
|
+
same "printed page" as the copyright notice for easier
|
|
187
|
+
identification within third-party archives.
|
|
188
|
+
|
|
189
|
+
Copyright 2026 MichengAI
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
package/README.md
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# DSH BTW
|
|
4
|
+
|
|
5
|
+
**Ask a side question in DeepSeek Harness. Answers only, no tool execution.**
|
|
6
|
+
|
|
7
|
+
[简体中文](README.zh-CN.md) · [Screenshots](#screenshots) · [Installation](#installation) · [Usage](#usage) · [Changelog](CHANGELOG.md) · [Apache-2.0](LICENSE)
|
|
8
|
+
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
11
|
+
[](https://nodejs.org/)
|
|
12
|
+
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
Type `/btw your question` in the existing chat composer to get an answer based on your conversation's context. Answers appear in independent bubbles above the composer, ready for a quick explanation, recap, or follow-up question.
|
|
16
|
+
|
|
17
|
+
DSH BTW is a community-maintained plugin for DSH Web and desktop apps that host the Web client. It does not occupy the sidebar, require Codex UI, or open a separate page.
|
|
18
|
+
|
|
19
|
+
## Features
|
|
20
|
+
|
|
21
|
+
- **Context-aware questions**: each question starts a one-shot child agent that inherits completed turns from the main session.
|
|
22
|
+
- **Answers only**: all tools are disabled. The agent cannot read new files, browse the web, run commands, or edit code.
|
|
23
|
+
- **Independent answer bubbles**: render Markdown, copy answers, collapse, expand, and close individual bubbles. Multiple answers can stay visible.
|
|
24
|
+
- **Separate from the main task**: answers are not added to the main model's history, and previous side questions do not become context for later ones.
|
|
25
|
+
- **Cancellation and cleanup**: closing a running bubble cancels only that question. Cleanup failures remain visible so closing can be retried.
|
|
26
|
+
- **Themes and languages**: follow DSH light and dark themes and switch between Chinese and English UI.
|
|
27
|
+
|
|
28
|
+
## Screenshots
|
|
29
|
+
|
|
30
|
+
These screenshots were provided by the user from the actual DSH dark interface. Model responses shown in them illustrate the bubble UI only.
|
|
31
|
+
|
|
32
|
+
### Side questions in stock DSH
|
|
33
|
+
|
|
34
|
+
The main conversation stays in place, with the side answer above the composer.
|
|
35
|
+
|
|
36
|
+

|
|
37
|
+
|
|
38
|
+
### Command menu
|
|
39
|
+
|
|
40
|
+
Type `/` and select `btw` under the side-question category, or enter `/btw your question` directly.
|
|
41
|
+
|
|
42
|
+

|
|
43
|
+
|
|
44
|
+
### Independent answer bubbles
|
|
45
|
+
|
|
46
|
+
Each answer has its own copy, collapse or expand, and close controls in the upper right.
|
|
47
|
+
|
|
48
|
+

|
|
49
|
+
|
|
50
|
+
## Prerequisites
|
|
51
|
+
|
|
52
|
+
- A working DeepSeek Harness Web installation with `dsh` available in PowerShell.
|
|
53
|
+
- The development baseline is DSH `0.1.2-rc.1`. The host must provide a `fork` child agent with context inheritance, tool filtering, and persona support.
|
|
54
|
+
- Source builds require Node.js 22+ and npm.
|
|
55
|
+
- Examples use the `web` profile; replace it with your target profile.
|
|
56
|
+
|
|
57
|
+
## Installation
|
|
58
|
+
|
|
59
|
+
Install from npm, local source, or a built package.
|
|
60
|
+
|
|
61
|
+
Source repository: <https://github.com/MichengAI/dsh-btw>. Download `.tgz` packages from [Releases](https://github.com/MichengAI/dsh-btw/releases).
|
|
62
|
+
|
|
63
|
+
### From npm
|
|
64
|
+
|
|
65
|
+
```powershell
|
|
66
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
67
|
+
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
68
|
+
|
|
69
|
+
dsh plugin --profile web add @michengai/dsh-btw@latest --registry=https://registry.npmjs.org/
|
|
70
|
+
dsh --profile web --dump-config
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Use `@0.1.0` instead of `@latest` to pin the first release. Reload DSH after installation as described below.
|
|
74
|
+
|
|
75
|
+
### From local source
|
|
76
|
+
|
|
77
|
+
Run from the project root:
|
|
78
|
+
|
|
79
|
+
```powershell
|
|
80
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
81
|
+
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
82
|
+
|
|
83
|
+
npm ci --ignore-scripts
|
|
84
|
+
npm run build
|
|
85
|
+
dsh plugin --profile web add . --ignore-scripts
|
|
86
|
+
dsh --profile web --dump-config
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Confirm that the configuration includes `michengai-btw`. A local directory installation reads the package metadata and `cordis.patch.yml`; do not copy `lib` separately.
|
|
90
|
+
|
|
91
|
+
### From a package archive
|
|
92
|
+
|
|
93
|
+
Build an archive with `npm pack` from the project root, then install it:
|
|
94
|
+
|
|
95
|
+
```powershell
|
|
96
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
97
|
+
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
98
|
+
|
|
99
|
+
npm pack
|
|
100
|
+
dsh plugin --profile web add .\michengai-dsh-btw-0.1.0.tgz --ignore-scripts
|
|
101
|
+
dsh --profile web --dump-config
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
For an existing `.tgz`, substitute its path in the installation command. Disable other plugins that claim `/btw` before installing.
|
|
105
|
+
|
|
106
|
+
### Reloading
|
|
107
|
+
|
|
108
|
+
DSH Codex Desktop may automatically reload its service when plugin configuration changes. Install or update after current tasks have finished. Other DSH Web launch methods require a manual restart.
|
|
109
|
+
|
|
110
|
+
Rebuilding a linked plugin does not reload the backend. The current host's `patchReload: live` watches configuration, while backend HMR with `root: []` does not watch plugin JavaScript. The frontend can show new labels while the backend still serves the old command directory. Use the desktop app's reload action, or restart the relevant `dsh web` process, after tasks finish. Refreshing the browser alone does not update backend code.
|
|
111
|
+
|
|
112
|
+
## Usage
|
|
113
|
+
|
|
114
|
+
In a conversation with existing context, enter:
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
/btw Why does the proposed design use a one-shot child agent?
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
| Goal | Action |
|
|
121
|
+
| --- | --- |
|
|
122
|
+
| Ask a side question | Submit `/btw your question`, or choose `btw` from the `/` menu. |
|
|
123
|
+
| Read the answer | Wait for the answer in the independent bubble above the composer. |
|
|
124
|
+
| Copy an answer | Click the copy icon in the bubble's upper right. |
|
|
125
|
+
| Collapse or expand | Click the collapse or expand icon. |
|
|
126
|
+
| Cancel a question | Close its bubble while it is running. The main task is unaffected. |
|
|
127
|
+
| Dismiss an answer | Close the completed bubble. |
|
|
128
|
+
| Ask again | Submit another `/btw` question. Each question is independent. |
|
|
129
|
+
|
|
130
|
+
Use the regular conversation to run commands, edit code, or continue the main task. BTW can only answer using existing context.
|
|
131
|
+
|
|
132
|
+
Arrow-key input history belongs to Codex UI. BTW does not collect input history, access history storage, or bind arrow keys. Installing BTW alone adds side questions only.
|
|
133
|
+
|
|
134
|
+
## Compatibility and Boundaries
|
|
135
|
+
|
|
136
|
+
The development baseline is DSH `0.1.2-rc.1`. The host needs commands, tools, subagents, and a fork provider supporting tool filtering, persona, and inherited context. Requests fail when these capabilities are unavailable. The client needs conversation, input-trigger, chat, api-remotes, locale, and host theme tokens.
|
|
137
|
+
|
|
138
|
+
The child agent receives an empty tool allowlist. An execution guard also rejects all tools, including `run_code` and tools registered within child scopes.
|
|
139
|
+
|
|
140
|
+
Forks inherit completed turns, excluding the turn currently being generated. Disposing a child agent does not delete host audit logs. Command results are not added to the main model history, but the host may retain command and child-agent records.
|
|
141
|
+
|
|
142
|
+
Internal commands `btw-run` and `btw-close` are hidden from the command directory. They use the host's session RPC rather than adding HTTP endpoints. Users only need `/btw` and the bubble controls.
|
|
143
|
+
|
|
144
|
+
`btw-run` accepts JSON `{ id, question, locale? }`. Supported locales are `zh` and `en`; omission defaults to Chinese for older clients, and other languages fall back to English. The response uses the host command's `{ kind, text }` format. `btw-close` accepts the raw request identifier; cleanup errors retain the request's language.
|
|
145
|
+
|
|
146
|
+
Each question is limited to 8,000 characters, with a 90-second timeout and at most eight concurrent requests.
|
|
147
|
+
|
|
148
|
+
Bubbles are stored in client memory only and are not restored after a refresh. Appearance follows the current DSH theme, independently of the operating system's dark-mode preference. UI translations update through the host locale service; server messages use the language at submission time. Model answers and original external errors are not translated.
|
|
149
|
+
|
|
150
|
+
Local installation and outstanding acceptance checks are tracked in [Current Status](docs/00-交接入口/02-当前状态.md). Runtime and simulated-host tests do not replace actual DSH model and interaction checks.
|
|
151
|
+
|
|
152
|
+
## Uninstallation
|
|
153
|
+
|
|
154
|
+
```powershell
|
|
155
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
156
|
+
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
157
|
+
|
|
158
|
+
dsh plugin --profile web remove @michengai/dsh-btw
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Reload DSH afterward. Disabling or updating the plugin does not delete the main conversation's records.
|
|
162
|
+
|
|
163
|
+
## Development
|
|
164
|
+
|
|
165
|
+
```powershell
|
|
166
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
167
|
+
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
168
|
+
|
|
169
|
+
npm ci --ignore-scripts
|
|
170
|
+
npm run check
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
`npm run check` runs type checking, unit and release-script tests, and a build. `npm run dev` provides a simulated host with mock answers for development, without connecting to a real model. DSH remains the actual plugin entry point. Theme CSS and LocaleRuntime come from the matching official development dependencies.
|
|
174
|
+
|
|
175
|
+
`npm run test:browser` checks bubbles, cancellation, narrow layouts, Markdown, themes, contrast, language switching, and the absence of arrow-key interception.
|
|
176
|
+
|
|
177
|
+
Build before running browser tests. Playwright manages `npm run dev` automatically and uses Microsoft Edge locally and Chromium in CI. `tests/host.test.ts` loads the host from the `node_modules` directory specified by `DSH_RUNTIME_ROOT`, defaulting to `.dsh/profiles/node_modules` under the user's home directory. The two tests are explicitly skipped when that host is absent; they do not read credentials or configuration. CI points at this project's development dependencies and executes the runtime tests.
|
|
178
|
+
|
|
179
|
+
`tests/command-visibility.test.ts` uses a real Typert Registry, Gateway, and command runtime to check directory filtering, execution, and unload restoration. An installed desktop runtime can also be tested by setting `DSH_DESKTOP_RUNTIME_ROOT`. Passing these tests does not prove that a running DSH process has reloaded the latest build.
|
|
180
|
+
|
|
181
|
+
## References and Credits
|
|
182
|
+
|
|
183
|
+
The side-question interaction was informed by [JasonQQ/dsh-btw-plugin](https://github.com/JasonQQ/dsh-btw-plugin), the close lifecycle by [kaieye/dsh-AIR](https://github.com/kaieye/dsh-AIR), and boundary handling by the Pi plugin below. This plugin is implemented independently.
|
|
184
|
+
|
|
185
|
+
References from [`@narumitw/pi-btw` 0.57.0](https://pi.dev/packages/@narumitw/pi-btw) and its [source](https://github.com/narumiruna/pi-extensions/tree/b4981b29604945d67ce2ce04e0f769c62bce1f20/packages/pi-btw):
|
|
186
|
+
|
|
187
|
+
- Snapshot context at question time instead of continuously following the main task. BTW uses a fork of completed turns.
|
|
188
|
+
- Recheck cancellation and reject late answers. BTW checks cancellation and request identity on both client and server.
|
|
189
|
+
- Do not write answers back to the main task by default. BTW only displays independent bubbles and does not bind history-navigation keys.
|
|
190
|
+
|
|
191
|
+
Pi calls the model directly without tools; BTW uses one-shot child agents. Pi's full-screen TUI, multi-turn recovery, and write-back features are not included.
|
|
192
|
+
|
|
193
|
+
## Project Documentation
|
|
194
|
+
|
|
195
|
+
The engineering documents are maintained in Chinese:
|
|
196
|
+
|
|
197
|
+
- [Reading Guide](docs/00-交接入口/00-阅读导航.md)
|
|
198
|
+
- [Current Status](docs/00-交接入口/02-当前状态.md)
|
|
199
|
+
- [Outstanding Work](docs/00-交接入口/03-待办与阻塞.md)
|
|
200
|
+
- [Automated Testing and Publishing](docs/05-工程交付/01-自动发布.md)
|
|
201
|
+
|
|
202
|
+
## License
|
|
203
|
+
|
|
204
|
+
[Apache-2.0](LICENSE). Copyright 2026 MichengAI.
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# DSH BTW
|
|
4
|
+
|
|
5
|
+
**在 DeepSeek Harness 当前会话中随手旁问,只回答,不执行**
|
|
6
|
+
|
|
7
|
+
[English](README.md) · [界面预览](#界面预览) · [安装](#安装) · [使用](#使用) · [更新日志](CHANGELOG.zh-CN.md) · [Apache-2.0](LICENSE)
|
|
8
|
+
|
|
9
|
+
[](LICENSE)
|
|
10
|
+
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
11
|
+
[](https://nodejs.org/)
|
|
12
|
+
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
在原有聊天输入框输入 `/btw 问题`,根据当前会话的已有上下文获取回答。答案显示在输入框上方的独立气泡中,方便临时解释概念、回顾结论或追问原因。
|
|
16
|
+
|
|
17
|
+
DSH BTW 是社区维护的 DSH Web 插件,也可用于承载 Web 客户端的桌面容器。不占用侧边栏,不依赖 Codex UI,无需打开独立页面。
|
|
18
|
+
|
|
19
|
+
## 功能概览
|
|
20
|
+
|
|
21
|
+
- **上下文旁问**:每次提问创建一次性子代理,继承主会话已完成回合。
|
|
22
|
+
- **只回答,不执行**:禁用全部工具,不读取新文件、联网、运行命令或修改代码。
|
|
23
|
+
- **独立答案气泡**:支持 Markdown、复制、折叠、展开和关闭,可同时查看多条旁问。
|
|
24
|
+
- **主任务保持独立**:答案不回填主模型历史,上一条旁问也不会成为下一条的上下文。
|
|
25
|
+
- **取消与清理**:关闭运行中的气泡只取消对应旁问;清理失败时保留提示,支持再次关闭。
|
|
26
|
+
- **主题与国际化**:跟随 DSH 浅色、深色主题,界面支持中文和英文切换。
|
|
27
|
+
|
|
28
|
+
## 界面预览
|
|
29
|
+
|
|
30
|
+
以下为用户提供的实际 DSH 深色界面截图,图中模型回答仅用于展示气泡效果。
|
|
31
|
+
|
|
32
|
+
### 原生 DSH 中的旁问
|
|
33
|
+
|
|
34
|
+
主会话保留在原来的位置,旁问答案位于输入框上方。
|
|
35
|
+
|
|
36
|
+

|
|
37
|
+
|
|
38
|
+
### 命令入口
|
|
39
|
+
|
|
40
|
+
输入 `/` 后,可在「旁问」分类中选择 `btw`,也可以直接输入 `/btw 问题`。
|
|
41
|
+
|
|
42
|
+

|
|
43
|
+
|
|
44
|
+
### 独立答案气泡
|
|
45
|
+
|
|
46
|
+
每条旁问单独展示,右上角提供复制、折叠或展开、关闭操作。
|
|
47
|
+
|
|
48
|
+

|
|
49
|
+
|
|
50
|
+
## 前置条件
|
|
51
|
+
|
|
52
|
+
- 已能正常使用 DeepSeek Harness Web,并且可在 PowerShell 中执行 `dsh`。
|
|
53
|
+
- 开发基线为 DSH `0.1.2-rc.1`,宿主需要支持继承上下文的 `fork` 子代理、工具过滤及 persona。
|
|
54
|
+
- 从源码构建需要 Node.js 22+ 和 npm。
|
|
55
|
+
- 以下命令使用 `web` profile,请按实际环境替换。
|
|
56
|
+
|
|
57
|
+
## 安装
|
|
58
|
+
|
|
59
|
+
支持从 npm、本地源码或构建包安装。
|
|
60
|
+
|
|
61
|
+
源码仓库:<https://github.com/MichengAI/dsh-btw>。也可从 [Releases](https://github.com/MichengAI/dsh-btw/releases) 下载 `.tgz` 安装包。
|
|
62
|
+
|
|
63
|
+
### 从 npm 安装
|
|
64
|
+
|
|
65
|
+
```powershell
|
|
66
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
67
|
+
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
68
|
+
|
|
69
|
+
dsh plugin --profile web add @michengai/dsh-btw@latest --registry=https://registry.npmjs.org/
|
|
70
|
+
dsh --profile web --dump-config
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
将 `@latest` 替换为 `@0.1.0` 可固定首个版本。安装后按下文说明重新加载 DSH。
|
|
74
|
+
|
|
75
|
+
### 从本地源码安装
|
|
76
|
+
|
|
77
|
+
在本项目根目录执行:
|
|
78
|
+
|
|
79
|
+
```powershell
|
|
80
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
81
|
+
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
82
|
+
|
|
83
|
+
npm ci --ignore-scripts
|
|
84
|
+
npm run build
|
|
85
|
+
dsh plugin --profile web add . --ignore-scripts
|
|
86
|
+
dsh --profile web --dump-config
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
检查配置中是否包含 `michengai-btw`。本地目录安装会读取包信息和 `cordis.patch.yml`,无需手工复制 `lib`。
|
|
90
|
+
|
|
91
|
+
### 从安装包安装
|
|
92
|
+
|
|
93
|
+
在本项目根目录执行 `npm pack` 生成安装包,然后安装:
|
|
94
|
+
|
|
95
|
+
```powershell
|
|
96
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
97
|
+
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
98
|
+
npm pack
|
|
99
|
+
dsh plugin --profile web add .\michengai-dsh-btw-0.1.0.tgz --ignore-scripts
|
|
100
|
+
dsh --profile web --dump-config
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
已有 `.tgz` 文件时,直接将安装命令中的路径替换为该文件路径。安装前停用其他占用 `/btw` 的插件。
|
|
104
|
+
|
|
105
|
+
### 重新加载
|
|
106
|
+
|
|
107
|
+
DSH Codex Desktop 可能在检测到插件变更后自动重载服务,请在当前任务结束后安装或更新。其他 DSH Web 启动方式需要自行重启。
|
|
108
|
+
|
|
109
|
+
本地开发链接的 JS 重新构建不等于后端已经重载。当前宿主的 `patchReload: live` 仅监听配置,后端 HMR 的 `root: []` 不监听插件 JS;前端可能已出现新文案,后端仍运行旧命令目录。升级后须等任务结束,重新加载实际使用的后端:桌面版使用其“重新加载”,独立 `dsh web` 则重启该命令对应的进程。仅刷新浏览器不能更新后端。
|
|
110
|
+
|
|
111
|
+
## 使用
|
|
112
|
+
|
|
113
|
+
在已有上下文的会话中输入:
|
|
114
|
+
|
|
115
|
+
```text
|
|
116
|
+
/btw 刚才这个方案为什么采用一次性子代理?
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
| 目标 | 操作 |
|
|
120
|
+
| --- | --- |
|
|
121
|
+
| 提一个旁问 | 输入 `/btw 问题` 并提交,或从 `/` 菜单选择 `btw`。 |
|
|
122
|
+
| 查看答案 | 等待输入框上方的独立气泡返回回答。 |
|
|
123
|
+
| 复制答案 | 点击气泡右上角的复制图标。 |
|
|
124
|
+
| 收起或展开 | 点击气泡右上角的折叠或展开图标。 |
|
|
125
|
+
| 取消旁问 | 在回答过程中关闭对应气泡,不取消主任务。 |
|
|
126
|
+
| 移除答案 | 关闭已完成的气泡。 |
|
|
127
|
+
| 继续提问 | 再次输入 `/btw 问题`;每次都是独立旁问。 |
|
|
128
|
+
|
|
129
|
+
若需要执行命令、修改代码或继续主任务,请通过普通会话提交。BTW 只能依据已有上下文作答。
|
|
130
|
+
|
|
131
|
+
上下键输入历史已迁至 Codex UI。本插件不再采集输入历史、访问历史存储或绑定上下键;单独安装只提供 BTW 旁问。
|
|
132
|
+
|
|
133
|
+
## 兼容与边界
|
|
134
|
+
|
|
135
|
+
开发基线为 DSH `0.1.2-rc.1`。需要宿主装配 commands、tools、subagents 及 fork provider,且 provider 必须支持工具过滤、persona 与上下文继承;缺少能力时拒绝启动。客户端需要 conversation、input-trigger、chat、api-remotes、locale 模块及宿主主题令牌。
|
|
136
|
+
|
|
137
|
+
子代理使用空工具白名单,并由执行层 guard 拒绝全部工具,包括 `run_code` 和子作用域自注册工具。
|
|
138
|
+
|
|
139
|
+
fork 继承的是已完成回合,主任务正在生成的回合不包含在内。一次性子代理的释放不等于删除宿主的审计日志。命令结果不加入主模型历史,但宿主仍可保存命令及子代理记录。
|
|
140
|
+
|
|
141
|
+
内部传输命令为 `btw-run` 和 `btw-close`,从命令目录中隐藏;用户只需使用 `/btw` 和气泡关闭按钮。它们使用宿主会话 RPC,未增加 HTTP 接口。
|
|
142
|
+
|
|
143
|
+
`btw-run` 的 JSON 请求为 `{ id, question, locale? }`,`locale` 支持 `zh`、`en`,省略时兼容旧客户端按中文处理;其他语言回退英文。返回仍为宿主命令的 `{ kind, text }`。`btw-close` 继续接受原始请求标识,清理错误保留该请求的语言。
|
|
144
|
+
|
|
145
|
+
单次问题最多 8000 字符、90 秒超时、最多同时处理 8 个请求。
|
|
146
|
+
|
|
147
|
+
气泡仅保存在客户端内存中,刷新页面后不恢复。外观跟随 DSH 当前主题,不单独读取系统深色偏好。界面语言通过宿主 locale 服务即时切换,服务器提示使用提交时的语言;模型回答和外部原始错误不翻译。
|
|
148
|
+
|
|
149
|
+
本机安装状态和待验收事项统一记录在[当前状态](docs/00-交接入口/02-当前状态.md),运行时与模拟宿主测试不能代替实际 DSH 的模型和交互验收。
|
|
150
|
+
|
|
151
|
+
## 卸载
|
|
152
|
+
|
|
153
|
+
```powershell
|
|
154
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
155
|
+
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
156
|
+
|
|
157
|
+
dsh plugin --profile web remove @michengai/dsh-btw
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
重新加载 DSH 后生效。停用或升级不会删除主会话记录。
|
|
161
|
+
|
|
162
|
+
## 本地开发
|
|
163
|
+
|
|
164
|
+
```powershell
|
|
165
|
+
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
166
|
+
$OutputEncoding = [System.Text.Encoding]::UTF8
|
|
167
|
+
npm ci --ignore-scripts
|
|
168
|
+
npm run check
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
`npm run check` 执行类型检查、单元测试和构建。`npm run dev` 仅提供开发用模拟宿主,回答为模拟数据,不连接真实模型;实际使用入口始终是 DSH。主题 CSS 和 LocaleRuntime 来自同版本官方开发依赖。
|
|
172
|
+
|
|
173
|
+
运行 `npm run test:browser` 验证气泡、取消、窄屏、Markdown、主题切换、对比度、语言切换及不再拦截上下键。
|
|
174
|
+
|
|
175
|
+
浏览器测试需要先构建,Playwright 自动管理 `npm run dev`,本地默认使用已安装的 Microsoft Edge,CI 使用 Chromium。`tests/host.test.ts` 从 `DSH_RUNTIME_ROOT` 指定的 `node_modules` 读取宿主;默认读取用户目录下 `.dsh/profiles/node_modules`,不存在时明确跳过这 2 项测试,不会读取凭据或配置。CI 指向本项目开发依赖,实际执行运行时用例。
|
|
176
|
+
|
|
177
|
+
`tests/command-visibility.test.ts` 使用真实 Typert Registry、Gateway 和命令运行时验证 RPC 目录、执行及卸载恢复;同时检查本机可用的桌面运行时,其目录可用 `DSH_DESKTOP_RUNTIME_ROOT` 覆盖。通过该测试仍需确认运行中的 DSH 已重新加载构建产物。
|
|
178
|
+
|
|
179
|
+
## 参考与致谢
|
|
180
|
+
|
|
181
|
+
参考 [JasonQQ/dsh-btw-plugin](https://github.com/JasonQQ/dsh-btw-plugin) 的旁问交互、[kaieye/dsh-AIR](https://github.com/kaieye/dsh-AIR) 的关闭流程,以及下述 Pi 插件的边界处理,代码独立实现。
|
|
182
|
+
|
|
183
|
+
参考 [`@narumitw/pi-btw` 0.57.0](https://pi.dev/packages/@narumitw/pi-btw) 的 [源码](https://github.com/narumiruna/pi-extensions/tree/b4981b29604945d67ce2ce04e0f769c62bce1f20/packages/pi-btw):
|
|
184
|
+
|
|
185
|
+
- 将旁问上下文限定为提问时的快照,避免跟随主任务持续变动。本插件通过 fork 继承已完成回合。
|
|
186
|
+
- 取消后再次检查信号,拒收迟到答案。本插件前后端都按请求标识检查取消状态。
|
|
187
|
+
- 默认不回填主任务。本插件只展示独立气泡,不绑定历史导航按键。
|
|
188
|
+
|
|
189
|
+
Pi 使用无工具的直接模型调用;本插件仍按约定使用一次性子代理。未引入其全屏 TUI、多轮恢复或回填主任务功能。
|
|
190
|
+
|
|
191
|
+
## 项目文档
|
|
192
|
+
|
|
193
|
+
- [阅读导航](docs/00-交接入口/00-阅读导航.md)
|
|
194
|
+
- [当前状态](docs/00-交接入口/02-当前状态.md)
|
|
195
|
+
- [待办与阻塞](docs/00-交接入口/03-待办与阻塞.md)
|
|
196
|
+
- [自动测试与发布](docs/05-工程交付/01-自动发布.md)
|
|
197
|
+
|
|
198
|
+
## 许可证
|
|
199
|
+
|
|
200
|
+
[Apache-2.0](LICENSE) © 2026 MichengAI。
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/cordis.patch.yml
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# 阅读导航
|
|
2
|
+
|
|
3
|
+
更新时间:2026-09-06 14:55(Asia/Shanghai)
|
|
4
|
+
|
|
5
|
+
- [当前状态](02-当前状态.md)
|
|
6
|
+
- [待办与阻塞](03-待办与阻塞.md)
|
|
7
|
+
- [自动测试与发布](../05-工程交付/01-自动发布.md)
|
|
8
|
+
- [I005 首次发布与可信发布配置](../01-当前工作/I005-首次发布与可信发布配置/00-迭代总览.md)
|
|
9
|
+
- [I004 仓库与自动发布](../07-迭代归档/2026/I004-仓库与自动发布/00-迭代总览.md)
|
|
10
|
+
- [I003 宿主外观与国际化](../07-迭代归档/2026/I003-宿主外观与国际化/00-迭代总览.md)
|
|
11
|
+
- [I002 实际 DSH 插件接入](../07-迭代归档/2026/I002-实际DSH插件接入/00-迭代总览.md)
|
|
12
|
+
- [I001 一次性旁问气泡与输入历史](../07-迭代归档/2026/I001-一次性旁问气泡与输入历史/00-迭代总览.md)
|