@deepseek-harness-tui/dsh-tui 0.11.2 → 0.13.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.
Files changed (786) hide show
  1. package/README.md +60 -8
  2. package/assets/deepy/README.md +60 -0
  3. package/assets/deepy/frames.json +1 -0
  4. package/assets/whale-girl/whale-girl-happy.png +0 -0
  5. package/assets/whaleGirl/README.md +7 -0
  6. package/assets/whaleGirl/frames.json +1 -0
  7. package/assets/whaleGirl/img/building/00.png +0 -0
  8. package/assets/whaleGirl/img/building/01.png +0 -0
  9. package/assets/whaleGirl/img/building/02.png +0 -0
  10. package/assets/whaleGirl/img/building/03.png +0 -0
  11. package/assets/whaleGirl/img/building/04.png +0 -0
  12. package/assets/whaleGirl/img/building/05.png +0 -0
  13. package/assets/whaleGirl/img/building/06.png +0 -0
  14. package/assets/whaleGirl/img/building/07.png +0 -0
  15. package/assets/whaleGirl/img/building/08.png +0 -0
  16. package/assets/whaleGirl/img/building/09.png +0 -0
  17. package/assets/whaleGirl/img/building/10.png +0 -0
  18. package/assets/whaleGirl/img/building/11.png +0 -0
  19. package/assets/whaleGirl/img/building/12.png +0 -0
  20. package/assets/whaleGirl/img/building/13.png +0 -0
  21. package/assets/whaleGirl/img/building/14.png +0 -0
  22. package/assets/whaleGirl/img/building/15.png +0 -0
  23. package/assets/whaleGirl/img/building/16.png +0 -0
  24. package/assets/whaleGirl/img/building/17.png +0 -0
  25. package/assets/whaleGirl/img/building/18.png +0 -0
  26. package/assets/whaleGirl/img/building/19.png +0 -0
  27. package/assets/whaleGirl/img/building/20.png +0 -0
  28. package/assets/whaleGirl/img/building/21.png +0 -0
  29. package/assets/whaleGirl/img/building/22.png +0 -0
  30. package/assets/whaleGirl/img/building/23.png +0 -0
  31. package/assets/whaleGirl/img/carrying/00.png +0 -0
  32. package/assets/whaleGirl/img/carrying/01.png +0 -0
  33. package/assets/whaleGirl/img/carrying/02.png +0 -0
  34. package/assets/whaleGirl/img/carrying/03.png +0 -0
  35. package/assets/whaleGirl/img/carrying/04.png +0 -0
  36. package/assets/whaleGirl/img/carrying/05.png +0 -0
  37. package/assets/whaleGirl/img/carrying/06.png +0 -0
  38. package/assets/whaleGirl/img/carrying/07.png +0 -0
  39. package/assets/whaleGirl/img/compacting/00.png +0 -0
  40. package/assets/whaleGirl/img/compacting/01.png +0 -0
  41. package/assets/whaleGirl/img/compacting/02.png +0 -0
  42. package/assets/whaleGirl/img/compacting/03.png +0 -0
  43. package/assets/whaleGirl/img/compacting/04.png +0 -0
  44. package/assets/whaleGirl/img/compacting/05.png +0 -0
  45. package/assets/whaleGirl/img/compacting/06.png +0 -0
  46. package/assets/whaleGirl/img/compacting/07.png +0 -0
  47. package/assets/whaleGirl/img/compacting/08.png +0 -0
  48. package/assets/whaleGirl/img/compacting/09.png +0 -0
  49. package/assets/whaleGirl/img/conducting/00.png +0 -0
  50. package/assets/whaleGirl/img/conducting/01.png +0 -0
  51. package/assets/whaleGirl/img/conducting/02.png +0 -0
  52. package/assets/whaleGirl/img/conducting/03.png +0 -0
  53. package/assets/whaleGirl/img/conducting/04.png +0 -0
  54. package/assets/whaleGirl/img/conducting/05.png +0 -0
  55. package/assets/whaleGirl/img/conducting/06.png +0 -0
  56. package/assets/whaleGirl/img/conducting/07.png +0 -0
  57. package/assets/whaleGirl/img/conducting/08.png +0 -0
  58. package/assets/whaleGirl/img/conducting/09.png +0 -0
  59. package/assets/whaleGirl/img/conducting/10.png +0 -0
  60. package/assets/whaleGirl/img/conducting/11.png +0 -0
  61. package/assets/whaleGirl/img/drag/00.png +0 -0
  62. package/assets/whaleGirl/img/drag/01.png +0 -0
  63. package/assets/whaleGirl/img/drag/02.png +0 -0
  64. package/assets/whaleGirl/img/drag/03.png +0 -0
  65. package/assets/whaleGirl/img/drag/04.png +0 -0
  66. package/assets/whaleGirl/img/drag/05.png +0 -0
  67. package/assets/whaleGirl/img/drag/06.png +0 -0
  68. package/assets/whaleGirl/img/drag/07.png +0 -0
  69. package/assets/whaleGirl/img/drag/08.png +0 -0
  70. package/assets/whaleGirl/img/drag/09.png +0 -0
  71. package/assets/whaleGirl/img/error/00.png +0 -0
  72. package/assets/whaleGirl/img/error/01.png +0 -0
  73. package/assets/whaleGirl/img/error/02.png +0 -0
  74. package/assets/whaleGirl/img/error/03.png +0 -0
  75. package/assets/whaleGirl/img/error/04.png +0 -0
  76. package/assets/whaleGirl/img/error/05.png +0 -0
  77. package/assets/whaleGirl/img/error/06.png +0 -0
  78. package/assets/whaleGirl/img/error/07.png +0 -0
  79. package/assets/whaleGirl/img/error/08.png +0 -0
  80. package/assets/whaleGirl/img/error/09.png +0 -0
  81. package/assets/whaleGirl/img/happy/00.png +0 -0
  82. package/assets/whaleGirl/img/happy/01.png +0 -0
  83. package/assets/whaleGirl/img/happy/02.png +0 -0
  84. package/assets/whaleGirl/img/happy/03.png +0 -0
  85. package/assets/whaleGirl/img/happy/04.png +0 -0
  86. package/assets/whaleGirl/img/happy/05.png +0 -0
  87. package/assets/whaleGirl/img/happy/06.png +0 -0
  88. package/assets/whaleGirl/img/happy/07.png +0 -0
  89. package/assets/whaleGirl/img/happy/08.png +0 -0
  90. package/assets/whaleGirl/img/happy/09.png +0 -0
  91. package/assets/whaleGirl/img/happy/10.png +0 -0
  92. package/assets/whaleGirl/img/idle/00.png +0 -0
  93. package/assets/whaleGirl/img/idle/01.png +0 -0
  94. package/assets/whaleGirl/img/idle/02.png +0 -0
  95. package/assets/whaleGirl/img/idle/03.png +0 -0
  96. package/assets/whaleGirl/img/idle/04.png +0 -0
  97. package/assets/whaleGirl/img/idle/05.png +0 -0
  98. package/assets/whaleGirl/img/idle/06.png +0 -0
  99. package/assets/whaleGirl/img/idle/07.png +0 -0
  100. package/assets/whaleGirl/img/idle/08.png +0 -0
  101. package/assets/whaleGirl/img/idle/09.png +0 -0
  102. package/assets/whaleGirl/img/idle/10.png +0 -0
  103. package/assets/whaleGirl/img/idle/11.png +0 -0
  104. package/assets/whaleGirl/img/idle/12.png +0 -0
  105. package/assets/whaleGirl/img/idle/13.png +0 -0
  106. package/assets/whaleGirl/img/idle/14.png +0 -0
  107. package/assets/whaleGirl/img/idle/15.png +0 -0
  108. package/assets/whaleGirl/img/idle/16.png +0 -0
  109. package/assets/whaleGirl/img/idle/17.png +0 -0
  110. package/assets/whaleGirl/img/idle/18.png +0 -0
  111. package/assets/whaleGirl/img/idle/19.png +0 -0
  112. package/assets/whaleGirl/img/idle/20.png +0 -0
  113. package/assets/whaleGirl/img/idle-look/00.png +0 -0
  114. package/assets/whaleGirl/img/idle-look/01.png +0 -0
  115. package/assets/whaleGirl/img/idle-look/02.png +0 -0
  116. package/assets/whaleGirl/img/idle-look/03.png +0 -0
  117. package/assets/whaleGirl/img/idle-look/04.png +0 -0
  118. package/assets/whaleGirl/img/idle-look/05.png +0 -0
  119. package/assets/whaleGirl/img/idle-look/06.png +0 -0
  120. package/assets/whaleGirl/img/idle-look/07.png +0 -0
  121. package/assets/whaleGirl/img/idle-look/08.png +0 -0
  122. package/assets/whaleGirl/img/idle-look/09.png +0 -0
  123. package/assets/whaleGirl/img/idle-look/10.png +0 -0
  124. package/assets/whaleGirl/img/idle-look/11.png +0 -0
  125. package/assets/whaleGirl/img/idle-look/12.png +0 -0
  126. package/assets/whaleGirl/img/idle-spout/00.png +0 -0
  127. package/assets/whaleGirl/img/idle-spout/01.png +0 -0
  128. package/assets/whaleGirl/img/idle-spout/02.png +0 -0
  129. package/assets/whaleGirl/img/idle-spout/03.png +0 -0
  130. package/assets/whaleGirl/img/idle-spout/04.png +0 -0
  131. package/assets/whaleGirl/img/idle-spout/05.png +0 -0
  132. package/assets/whaleGirl/img/idle-spout/06.png +0 -0
  133. package/assets/whaleGirl/img/idle-spout/07.png +0 -0
  134. package/assets/whaleGirl/img/idle-spout/08.png +0 -0
  135. package/assets/whaleGirl/img/idle-spout/09.png +0 -0
  136. package/assets/whaleGirl/img/idle-spout/10.png +0 -0
  137. package/assets/whaleGirl/img/music/00.png +0 -0
  138. package/assets/whaleGirl/img/music/01.png +0 -0
  139. package/assets/whaleGirl/img/music/02.png +0 -0
  140. package/assets/whaleGirl/img/music/03.png +0 -0
  141. package/assets/whaleGirl/img/music/04.png +0 -0
  142. package/assets/whaleGirl/img/music/05.png +0 -0
  143. package/assets/whaleGirl/img/music/06.png +0 -0
  144. package/assets/whaleGirl/img/music/07.png +0 -0
  145. package/assets/whaleGirl/img/notification/00.png +0 -0
  146. package/assets/whaleGirl/img/notification/01.png +0 -0
  147. package/assets/whaleGirl/img/notification/02.png +0 -0
  148. package/assets/whaleGirl/img/notification/03.png +0 -0
  149. package/assets/whaleGirl/img/notification/04.png +0 -0
  150. package/assets/whaleGirl/img/notification/05.png +0 -0
  151. package/assets/whaleGirl/img/notification/06.png +0 -0
  152. package/assets/whaleGirl/img/notification/07.png +0 -0
  153. package/assets/whaleGirl/img/poke-left/00.png +0 -0
  154. package/assets/whaleGirl/img/poke-left/01.png +0 -0
  155. package/assets/whaleGirl/img/poke-left/02.png +0 -0
  156. package/assets/whaleGirl/img/poke-left/03.png +0 -0
  157. package/assets/whaleGirl/img/poke-left/04.png +0 -0
  158. package/assets/whaleGirl/img/poke-left/05.png +0 -0
  159. package/assets/whaleGirl/img/poke-left/06.png +0 -0
  160. package/assets/whaleGirl/img/poke-left/07.png +0 -0
  161. package/assets/whaleGirl/img/poke-left/08.png +0 -0
  162. package/assets/whaleGirl/img/poke-left/09.png +0 -0
  163. package/assets/whaleGirl/img/poke-left/10.png +0 -0
  164. package/assets/whaleGirl/img/poke-right/00.png +0 -0
  165. package/assets/whaleGirl/img/poke-right/01.png +0 -0
  166. package/assets/whaleGirl/img/poke-right/02.png +0 -0
  167. package/assets/whaleGirl/img/poke-right/03.png +0 -0
  168. package/assets/whaleGirl/img/poke-right/04.png +0 -0
  169. package/assets/whaleGirl/img/poke-right/05.png +0 -0
  170. package/assets/whaleGirl/img/poke-right/06.png +0 -0
  171. package/assets/whaleGirl/img/poke-right/07.png +0 -0
  172. package/assets/whaleGirl/img/poke-right/08.png +0 -0
  173. package/assets/whaleGirl/img/poke-right/09.png +0 -0
  174. package/assets/whaleGirl/img/poke-right/10.png +0 -0
  175. package/assets/whaleGirl/img/sleeping/00.png +0 -0
  176. package/assets/whaleGirl/img/sleeping/01.png +0 -0
  177. package/assets/whaleGirl/img/sleeping/02.png +0 -0
  178. package/assets/whaleGirl/img/sleeping/03.png +0 -0
  179. package/assets/whaleGirl/img/sleeping/04.png +0 -0
  180. package/assets/whaleGirl/img/sleeping/05.png +0 -0
  181. package/assets/whaleGirl/img/smile-hearts/00.png +0 -0
  182. package/assets/whaleGirl/img/smile-hearts/01.png +0 -0
  183. package/assets/whaleGirl/img/smile-hearts/02.png +0 -0
  184. package/assets/whaleGirl/img/smile-hearts/03.png +0 -0
  185. package/assets/whaleGirl/img/smile-hearts/04.png +0 -0
  186. package/assets/whaleGirl/img/smile-hearts/05.png +0 -0
  187. package/assets/whaleGirl/img/smile-hearts/06.png +0 -0
  188. package/assets/whaleGirl/img/smile-hearts/07.png +0 -0
  189. package/assets/whaleGirl/img/smile-hearts/08.png +0 -0
  190. package/assets/whaleGirl/img/smile-hearts/09.png +0 -0
  191. package/assets/whaleGirl/img/smile-hearts/10.png +0 -0
  192. package/assets/whaleGirl/img/smile-hearts/11.png +0 -0
  193. package/assets/whaleGirl/img/smile-hearts/12.png +0 -0
  194. package/assets/whaleGirl/img/smile-hearts/13.png +0 -0
  195. package/assets/whaleGirl/img/smile-hearts/14.png +0 -0
  196. package/assets/whaleGirl/img/smile-hearts/15.png +0 -0
  197. package/assets/whaleGirl/img/swim/00.png +0 -0
  198. package/assets/whaleGirl/img/swim/01.png +0 -0
  199. package/assets/whaleGirl/img/swim/02.png +0 -0
  200. package/assets/whaleGirl/img/swim/03.png +0 -0
  201. package/assets/whaleGirl/img/swim/04.png +0 -0
  202. package/assets/whaleGirl/img/swim/05.png +0 -0
  203. package/assets/whaleGirl/img/swim/06.png +0 -0
  204. package/assets/whaleGirl/img/swim/07.png +0 -0
  205. package/assets/whaleGirl/img/thinking/00.png +0 -0
  206. package/assets/whaleGirl/img/thinking/01.png +0 -0
  207. package/assets/whaleGirl/img/thinking/02.png +0 -0
  208. package/assets/whaleGirl/img/thinking/03.png +0 -0
  209. package/assets/whaleGirl/img/thinking/04.png +0 -0
  210. package/assets/whaleGirl/img/thinking/05.png +0 -0
  211. package/assets/whaleGirl/img/thinking/06.png +0 -0
  212. package/assets/whaleGirl/img/thinking/07.png +0 -0
  213. package/assets/whaleGirl/img/thinking/08.png +0 -0
  214. package/assets/whaleGirl/img/thinking/09.png +0 -0
  215. package/assets/whaleGirl/img/thinking/10.png +0 -0
  216. package/assets/whaleGirl/img/thinking/11.png +0 -0
  217. package/assets/whaleGirl/img/thinking/12.png +0 -0
  218. package/assets/whaleGirl/img/thinking/13.png +0 -0
  219. package/assets/whaleGirl/img/thinking/14.png +0 -0
  220. package/assets/whaleGirl/img/thinking/15.png +0 -0
  221. package/assets/whaleGirl/img/thinking/16.png +0 -0
  222. package/assets/whaleGirl/img/thumbs-up/00.png +0 -0
  223. package/assets/whaleGirl/img/thumbs-up/01.png +0 -0
  224. package/assets/whaleGirl/img/thumbs-up/02.png +0 -0
  225. package/assets/whaleGirl/img/thumbs-up/03.png +0 -0
  226. package/assets/whaleGirl/img/thumbs-up/04.png +0 -0
  227. package/assets/whaleGirl/img/thumbs-up/05.png +0 -0
  228. package/assets/whaleGirl/img/thumbs-up/06.png +0 -0
  229. package/assets/whaleGirl/img/thumbs-up/07.png +0 -0
  230. package/assets/whaleGirl/img/thumbs-up/08.png +0 -0
  231. package/assets/whaleGirl/img/thumbs-up/09.png +0 -0
  232. package/assets/whaleGirl/img/thumbs-up/10.png +0 -0
  233. package/assets/whaleGirl/img/thumbs-up/11.png +0 -0
  234. package/assets/whaleGirl/img/thumbs-up/12.png +0 -0
  235. package/assets/whaleGirl/img/tickle/00.png +0 -0
  236. package/assets/whaleGirl/img/tickle/01.png +0 -0
  237. package/assets/whaleGirl/img/tickle/02.png +0 -0
  238. package/assets/whaleGirl/img/tickle/03.png +0 -0
  239. package/assets/whaleGirl/img/tickle/04.png +0 -0
  240. package/assets/whaleGirl/img/tickle/05.png +0 -0
  241. package/assets/whaleGirl/img/tickle/06.png +0 -0
  242. package/assets/whaleGirl/img/tickle/07.png +0 -0
  243. package/assets/whaleGirl/img/tickle/08.png +0 -0
  244. package/assets/whaleGirl/img/tickle/09.png +0 -0
  245. package/assets/whaleGirl/img/tickle/10.png +0 -0
  246. package/assets/whaleGirl/img/tickle/11.png +0 -0
  247. package/assets/whaleGirl/img/tickle/12.png +0 -0
  248. package/assets/whaleGirl/img/tickle/13.png +0 -0
  249. package/assets/whaleGirl/img/timings.json +1 -0
  250. package/assets/whaleGirl/img/typing/00.png +0 -0
  251. package/assets/whaleGirl/img/typing/01.png +0 -0
  252. package/assets/whaleGirl/img/typing/02.png +0 -0
  253. package/assets/whaleGirl/img/typing/03.png +0 -0
  254. package/assets/whaleGirl/img/typing/04.png +0 -0
  255. package/assets/whaleGirl/img/typing/05.png +0 -0
  256. package/assets/whaleGirl/img/typing/06.png +0 -0
  257. package/assets/whaleGirl/img/typing/07.png +0 -0
  258. package/assets/whaleGirl/img/typing/08.png +0 -0
  259. package/assets/whaleGirl/img/typing/09.png +0 -0
  260. package/assets/whaleGirl/img/typing/10.png +0 -0
  261. package/assets/whaleGirl/img/typing/11.png +0 -0
  262. package/assets/whaleGirl/img/typing/12.png +0 -0
  263. package/assets/whaleGirl/img/typing/13.png +0 -0
  264. package/assets/whaleGirl/img/waking/00.png +0 -0
  265. package/assets/whaleGirl/img/waking/01.png +0 -0
  266. package/assets/whaleGirl/img/waking/02.png +0 -0
  267. package/assets/whaleGirl/img/waking/03.png +0 -0
  268. package/assets/whaleGirl/img/waking/04.png +0 -0
  269. package/assets/whaleGirl/img/waking/05.png +0 -0
  270. package/assets/whaleGirl/img/waking/06.png +0 -0
  271. package/assets/whaleGirl/img/waking/07.png +0 -0
  272. package/assets/whaleGirl/img/waking/08.png +0 -0
  273. package/assets/whaleGirl/img/waking/09.png +0 -0
  274. package/assets/whaleGirl/img/waking/10.png +0 -0
  275. package/bin/dsh-tui.js +38 -6
  276. package/cordis.patch.yml +31 -6
  277. package/guide/dsh-tui-guide/SKILL.md +37 -0
  278. package/guide/dsh-tui-guide/configuration.en.md +415 -0
  279. package/guide/dsh-tui-guide/configuration.md +354 -0
  280. package/guide/dsh-tui-guide/getting-started.en.md +401 -0
  281. package/guide/dsh-tui-guide/getting-started.md +399 -0
  282. package/guide/dsh-tui-guide/interaction.en.md +738 -0
  283. package/guide/dsh-tui-guide/interaction.md +793 -0
  284. package/guide/dsh-tui-guide/migrate.en.md +166 -0
  285. package/guide/dsh-tui-guide/migrate.md +132 -0
  286. package/guide/dsh-tui-guide/plugins.en.md +78 -0
  287. package/guide/dsh-tui-guide/plugins.md +64 -0
  288. package/guide/dsh-tui-guide/themes.en.md +197 -0
  289. package/guide/dsh-tui-guide/themes.md +188 -0
  290. package/guide/dsh-tui-guide/user-guide.en.md +711 -0
  291. package/guide/dsh-tui-guide/user-guide.md +666 -0
  292. package/guide/dsh-tui-guide/vscode.en.md +301 -0
  293. package/guide/dsh-tui-guide/vscode.md +272 -0
  294. package/lib/settings.json +219 -5
  295. package/lib/types/adapter/channel/ui-policy.d.ts +7 -2
  296. package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
  297. package/lib/types/adapter/channel/ui-policy.js +18 -1
  298. package/lib/types/adapter/index.d.ts +1 -1
  299. package/lib/types/adapter/index.js +1 -1
  300. package/lib/types/adapter/kernel/host-facade.d.ts +4 -1
  301. package/lib/types/adapter/kernel/host-facade.d.ts.map +1 -1
  302. package/lib/types/adapter/kernel/host-facade.js +8 -1
  303. package/lib/types/adapter/kernel/runtime.d.ts.map +1 -1
  304. package/lib/types/adapter/kernel/runtime.js +13 -0
  305. package/lib/types/adapter/kernel/slices/index.d.ts +1 -0
  306. package/lib/types/adapter/kernel/slices/index.d.ts.map +1 -1
  307. package/lib/types/adapter/kernel/slices/index.js +3 -0
  308. package/lib/types/adapter/kernel/slices/panels.d.ts +3 -0
  309. package/lib/types/adapter/kernel/slices/panels.d.ts.map +1 -0
  310. package/lib/types/adapter/kernel/slices/panels.js +14 -0
  311. package/lib/types/adapter/ports/channel-capabilities.d.ts +48 -0
  312. package/lib/types/adapter/ports/channel-capabilities.d.ts.map +1 -0
  313. package/lib/types/adapter/ports/channel-capabilities.js +2 -0
  314. package/lib/types/adapter/ports/channel-catalog.d.ts +7 -0
  315. package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
  316. package/lib/types/adapter/ports/channel-display.d.ts +10 -0
  317. package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
  318. package/lib/types/adapter/ports/channel-settings.d.ts +2 -1
  319. package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
  320. package/lib/types/adapter/ports/channel-ui.d.ts +91 -4
  321. package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
  322. package/lib/types/adapter/ports/channel-view.d.ts +137 -9
  323. package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
  324. package/lib/types/adapter/ports/channel.d.ts +1 -1
  325. package/lib/types/adapter/ports/channel.js +1 -1
  326. package/lib/types/adapter/ports/descriptor.d.ts +1 -1
  327. package/lib/types/adapter/ports/descriptor.js +1 -1
  328. package/lib/types/adapter/ports/index.d.ts +1 -1
  329. package/lib/types/adapter/ports/index.js +1 -1
  330. package/lib/types/adapter/ports/panels.d.ts +28 -0
  331. package/lib/types/adapter/ports/panels.d.ts.map +1 -0
  332. package/lib/types/adapter/ports/panels.js +8 -0
  333. package/lib/types/adapter/ports/workspace.d.ts +1 -1
  334. package/lib/types/adapter/ports/workspace.js +1 -1
  335. package/lib/types/adapter/spec/index.d.ts +2 -2
  336. package/lib/types/adapter/spec/index.js +2 -2
  337. package/lib/types/adapter/spec/profile.d.ts +6 -6
  338. package/lib/types/adapter/spec/profile.d.ts.map +1 -1
  339. package/lib/types/adapter/spec/profile.js +6 -6
  340. package/lib/types/adapter/spec/protocol-constants.d.ts +3 -3
  341. package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -1
  342. package/lib/types/adapter/spec/protocol-constants.js +5 -5
  343. package/lib/types/adapter/spec/tui-contributions.d.ts +4 -4
  344. package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -1
  345. package/lib/types/adapter/spec/tui-contributions.js +5 -5
  346. package/lib/types/adapter/standard/descriptor.js +1 -1
  347. package/lib/types/adapter/standard/index.d.ts +3 -3
  348. package/lib/types/adapter/standard/index.js +3 -3
  349. package/lib/types/adapter/standard/registry.d.ts +3 -2
  350. package/lib/types/adapter/standard/registry.d.ts.map +1 -1
  351. package/lib/types/adapter/standard/registry.js +6 -5
  352. package/lib/types/adapter/standard/tui-extension.d.ts +1 -1
  353. package/lib/types/adapter/standard/tui-extension.js +1 -1
  354. package/lib/types/adapter/upstream/index.d.ts +1 -0
  355. package/lib/types/adapter/upstream/index.d.ts.map +1 -1
  356. package/lib/types/adapter/upstream/index.js +1 -0
  357. package/lib/types/adapter/upstream/panels-driver.d.ts +18 -0
  358. package/lib/types/adapter/upstream/panels-driver.d.ts.map +1 -0
  359. package/lib/types/adapter/upstream/panels-driver.js +159 -0
  360. package/lib/types/api.d.ts +2 -0
  361. package/lib/types/api.d.ts.map +1 -1
  362. package/lib/types/api.js +3 -1
  363. package/lib/types/commands.d.ts.map +1 -1
  364. package/lib/types/commands.js +12 -4
  365. package/lib/types/components/ActivityLine.d.ts +6 -9
  366. package/lib/types/components/ActivityLine.d.ts.map +1 -1
  367. package/lib/types/components/ActivityLine.js +7 -8
  368. package/lib/types/components/Chat/JobCard.d.ts +27 -1
  369. package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
  370. package/lib/types/components/Chat/JobCard.js +128 -33
  371. package/lib/types/components/Chat/JobGroupHeader.d.ts +27 -0
  372. package/lib/types/components/Chat/JobGroupHeader.d.ts.map +1 -0
  373. package/lib/types/components/Chat/JobGroupHeader.js +62 -0
  374. package/lib/types/components/Chat/SubagentMessage.js +6 -6
  375. package/lib/types/components/GoalTodoPanel.d.ts +13 -1
  376. package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
  377. package/lib/types/components/GoalTodoPanel.js +55 -14
  378. package/lib/types/components/JobsPanel.d.ts +42 -2
  379. package/lib/types/components/JobsPanel.d.ts.map +1 -1
  380. package/lib/types/components/JobsPanel.js +220 -40
  381. package/lib/types/components/LogoV2.d.ts +43 -3
  382. package/lib/types/components/LogoV2.d.ts.map +1 -1
  383. package/lib/types/components/LogoV2.js +42 -15
  384. package/lib/types/components/MessageList.d.ts +8 -2
  385. package/lib/types/components/MessageList.d.ts.map +1 -1
  386. package/lib/types/components/MessageList.js +215 -21
  387. package/lib/types/components/OverlayAbove.d.ts +11 -1
  388. package/lib/types/components/OverlayAbove.d.ts.map +1 -1
  389. package/lib/types/components/OverlayAbove.js +2 -12
  390. package/lib/types/components/PageMargin.d.ts.map +1 -1
  391. package/lib/types/components/PageMargin.js +3 -1
  392. package/lib/types/components/PluginSceneBoundary.d.ts +1 -1
  393. package/lib/types/components/PluginSceneBoundary.js +1 -1
  394. package/lib/types/components/PresetPicker.d.ts +4 -0
  395. package/lib/types/components/PresetPicker.d.ts.map +1 -1
  396. package/lib/types/components/PresetPicker.js +5 -1
  397. package/lib/types/components/PromptInput.d.ts +20 -22
  398. package/lib/types/components/PromptInput.d.ts.map +1 -1
  399. package/lib/types/components/PromptInput.js +425 -157
  400. package/lib/types/components/SearchBox.d.ts +22 -5
  401. package/lib/types/components/SearchBox.d.ts.map +1 -1
  402. package/lib/types/components/SearchBox.js +17 -13
  403. package/lib/types/components/StarPrompt.d.ts +6 -0
  404. package/lib/types/components/StarPrompt.d.ts.map +1 -1
  405. package/lib/types/components/StarPrompt.js +45 -0
  406. package/lib/types/components/SubagentCard.d.ts.map +1 -1
  407. package/lib/types/components/SubagentCard.js +24 -9
  408. package/lib/types/components/SubagentDashboard.d.ts +18 -3
  409. package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
  410. package/lib/types/components/SubagentDashboard.js +53 -5
  411. package/lib/types/components/SubagentDetailScene.d.ts +7 -1
  412. package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
  413. package/lib/types/components/SubagentDetailScene.js +160 -13
  414. package/lib/types/components/SurfaceEdges.d.ts +21 -0
  415. package/lib/types/components/SurfaceEdges.d.ts.map +1 -0
  416. package/lib/types/components/SurfaceEdges.js +7 -0
  417. package/lib/types/components/ThemePicker.d.ts +9 -0
  418. package/lib/types/components/ThemePicker.d.ts.map +1 -1
  419. package/lib/types/components/ThemePicker.js +74 -10
  420. package/lib/types/components/ThemePreviewPane.d.ts +26 -0
  421. package/lib/types/components/ThemePreviewPane.d.ts.map +1 -0
  422. package/lib/types/components/ThemePreviewPane.js +99 -0
  423. package/lib/types/components/WhaleGirl.d.ts +6 -0
  424. package/lib/types/components/WhaleGirl.d.ts.map +1 -1
  425. package/lib/types/components/WhaleGirl.js +18 -0
  426. package/lib/types/components/design-system/Divider.d.ts.map +1 -1
  427. package/lib/types/components/design-system/Divider.js +14 -9
  428. package/lib/types/components/launchpadActions.d.ts +73 -0
  429. package/lib/types/components/launchpadActions.d.ts.map +1 -0
  430. package/lib/types/components/launchpadActions.js +111 -0
  431. package/lib/types/components/launchpadLayout.d.ts +62 -0
  432. package/lib/types/components/launchpadLayout.d.ts.map +1 -0
  433. package/lib/types/components/launchpadLayout.js +176 -0
  434. package/lib/types/components/messages/AssistantThinkingMessage.js +4 -4
  435. package/lib/types/components/onboardingModel.d.ts +83 -0
  436. package/lib/types/components/onboardingModel.d.ts.map +1 -0
  437. package/lib/types/components/onboardingModel.js +128 -0
  438. package/lib/types/components/sidePanel/InfoPanel.d.ts +17 -0
  439. package/lib/types/components/sidePanel/InfoPanel.d.ts.map +1 -0
  440. package/lib/types/components/sidePanel/InfoPanel.js +124 -0
  441. package/lib/types/components/sidePanel/PanelBar.d.ts +45 -0
  442. package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -0
  443. package/lib/types/components/sidePanel/PanelBar.js +104 -0
  444. package/lib/types/components/sidePanel/PanelErrorBoundary.d.ts +21 -0
  445. package/lib/types/components/sidePanel/PanelErrorBoundary.d.ts.map +1 -0
  446. package/lib/types/components/sidePanel/PanelErrorBoundary.js +30 -0
  447. package/lib/types/components/sidePanel/PanelHost.d.ts +36 -0
  448. package/lib/types/components/sidePanel/PanelHost.d.ts.map +1 -0
  449. package/lib/types/components/sidePanel/PanelHost.js +81 -0
  450. package/lib/types/components/sidePanel/PanelPicker.d.ts +24 -0
  451. package/lib/types/components/sidePanel/PanelPicker.d.ts.map +1 -0
  452. package/lib/types/components/sidePanel/PanelPicker.js +45 -0
  453. package/lib/types/components/sidePanel/PanelStore.d.ts +55 -0
  454. package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -0
  455. package/lib/types/components/sidePanel/PanelStore.js +109 -0
  456. package/lib/types/components/sidePanel/SidePanelColumn.d.ts +31 -0
  457. package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -0
  458. package/lib/types/components/sidePanel/SidePanelColumn.js +70 -0
  459. package/lib/types/components/sidePanel/SidePanelLayout.d.ts +54 -0
  460. package/lib/types/components/sidePanel/SidePanelLayout.d.ts.map +1 -0
  461. package/lib/types/components/sidePanel/SidePanelLayout.js +81 -0
  462. package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts +43 -0
  463. package/lib/types/components/sidePanel/SidePanelRuntimeContext.d.ts.map +1 -0
  464. package/lib/types/components/sidePanel/SidePanelRuntimeContext.js +26 -0
  465. package/lib/types/components/sidePanel/TrajectoryPanel.d.ts +7 -0
  466. package/lib/types/components/sidePanel/TrajectoryPanel.d.ts.map +1 -0
  467. package/lib/types/components/sidePanel/TrajectoryPanel.js +263 -0
  468. package/lib/types/components/sidePanel/WorkspacePanel.d.ts +4 -0
  469. package/lib/types/components/sidePanel/WorkspacePanel.d.ts.map +1 -0
  470. package/lib/types/components/sidePanel/WorkspacePanel.js +171 -0
  471. package/lib/types/components/sidePanel/builtinPanels.d.ts +3 -0
  472. package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -0
  473. package/lib/types/components/sidePanel/builtinPanels.js +229 -0
  474. package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts +53 -0
  475. package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts.map +1 -0
  476. package/lib/types/components/sidePanel/companion/CompanionPanel.js +528 -0
  477. package/lib/types/components/sidePanel/companion/SplashMascot.d.ts +32 -0
  478. package/lib/types/components/sidePanel/companion/SplashMascot.d.ts.map +1 -0
  479. package/lib/types/components/sidePanel/companion/SplashMascot.js +103 -0
  480. package/lib/types/components/sidePanel/companion/deepy.d.ts +75 -0
  481. package/lib/types/components/sidePanel/companion/deepy.d.ts.map +1 -0
  482. package/lib/types/components/sidePanel/companion/deepy.js +222 -0
  483. package/lib/types/components/sidePanel/companion/mood.d.ts +176 -0
  484. package/lib/types/components/sidePanel/companion/mood.d.ts.map +1 -0
  485. package/lib/types/components/sidePanel/companion/mood.js +212 -0
  486. package/lib/types/components/sidePanel/companion/pose.d.ts +43 -0
  487. package/lib/types/components/sidePanel/companion/pose.d.ts.map +1 -0
  488. package/lib/types/components/sidePanel/companion/pose.js +34 -0
  489. package/lib/types/components/sidePanel/companion/skins.d.ts +102 -0
  490. package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -0
  491. package/lib/types/components/sidePanel/companion/skins.js +408 -0
  492. package/lib/types/components/sidePanel/dimensions.d.ts +60 -0
  493. package/lib/types/components/sidePanel/dimensions.d.ts.map +1 -0
  494. package/lib/types/components/sidePanel/dimensions.js +75 -0
  495. package/lib/types/components/sidePanel/jobsFocusStore.d.ts +21 -0
  496. package/lib/types/components/sidePanel/jobsFocusStore.d.ts.map +1 -0
  497. package/lib/types/components/sidePanel/jobsFocusStore.js +30 -0
  498. package/lib/types/components/sidePanel/panelBridge.d.ts +44 -0
  499. package/lib/types/components/sidePanel/panelBridge.d.ts.map +1 -0
  500. package/lib/types/components/sidePanel/panelBridge.js +55 -0
  501. package/lib/types/components/sidePanel/pluginPanelAdapter.d.ts +22 -0
  502. package/lib/types/components/sidePanel/pluginPanelAdapter.d.ts.map +1 -0
  503. package/lib/types/components/sidePanel/pluginPanelAdapter.js +148 -0
  504. package/lib/types/components/sidePanel/types.d.ts +110 -0
  505. package/lib/types/components/sidePanel/types.d.ts.map +1 -0
  506. package/lib/types/components/sidePanel/types.js +1 -0
  507. package/lib/types/components/sidePanel/usePanelInput.d.ts +5 -0
  508. package/lib/types/components/sidePanel/usePanelInput.d.ts.map +1 -0
  509. package/lib/types/components/sidePanel/usePanelInput.js +44 -0
  510. package/lib/types/components/sidePanel/useSidePanel.d.ts +47 -0
  511. package/lib/types/components/sidePanel/useSidePanel.d.ts.map +1 -0
  512. package/lib/types/components/sidePanel/useSidePanel.js +284 -0
  513. package/lib/types/components/trajectory/MiniWake.d.ts +11 -1
  514. package/lib/types/components/trajectory/MiniWake.d.ts.map +1 -1
  515. package/lib/types/components/trajectory/MiniWake.js +9 -3
  516. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +3 -1
  517. package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -1
  518. package/lib/types/components/workspaces/HomeWorkspaceRow.js +3 -2
  519. package/lib/types/deepseekPricing.d.ts +10 -9
  520. package/lib/types/deepseekPricing.d.ts.map +1 -1
  521. package/lib/types/deepseekPricing.js +18 -11
  522. package/lib/types/dsh-adapter/channel/attached-context.d.ts +58 -0
  523. package/lib/types/dsh-adapter/channel/attached-context.d.ts.map +1 -0
  524. package/lib/types/dsh-adapter/channel/attached-context.js +109 -0
  525. package/lib/types/dsh-adapter/channel/binding-events.d.ts +6 -0
  526. package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
  527. package/lib/types/dsh-adapter/channel/binding-events.js +43 -0
  528. package/lib/types/dsh-adapter/channel/capabilities.d.ts +82 -0
  529. package/lib/types/dsh-adapter/channel/capabilities.d.ts.map +1 -0
  530. package/lib/types/dsh-adapter/channel/capabilities.js +165 -0
  531. package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
  532. package/lib/types/dsh-adapter/channel/command-completions.js +8 -0
  533. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +4 -12
  534. package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -1
  535. package/lib/types/dsh-adapter/channel/context-bookkeeping.js +9 -4
  536. package/lib/types/dsh-adapter/channel/external-commands.d.ts.map +1 -1
  537. package/lib/types/dsh-adapter/channel/external-commands.js +8 -2
  538. package/lib/types/dsh-adapter/channel/input-delivery.d.ts +13 -2
  539. package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
  540. package/lib/types/dsh-adapter/channel/input-delivery.js +18 -1
  541. package/lib/types/dsh-adapter/channel/job-projection.d.ts +1 -0
  542. package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -1
  543. package/lib/types/dsh-adapter/channel/job-projection.js +88 -3
  544. package/lib/types/dsh-adapter/channel/mode-actions.d.ts +13 -3
  545. package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
  546. package/lib/types/dsh-adapter/channel/mode-actions.js +55 -9
  547. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +8 -1
  548. package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
  549. package/lib/types/dsh-adapter/channel/mode-permission-actions.js +25 -10
  550. package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
  551. package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
  552. package/lib/types/dsh-adapter/channel/preferences.js +26 -8
  553. package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
  554. package/lib/types/dsh-adapter/channel/projection.js +42 -37
  555. package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -1
  556. package/lib/types/dsh-adapter/channel/reports.js +13 -4
  557. package/lib/types/dsh-adapter/channel/session-reset.d.ts +5 -1
  558. package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
  559. package/lib/types/dsh-adapter/channel/session-reset.js +1 -0
  560. package/lib/types/dsh-adapter/channel/state.d.ts +21 -3
  561. package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
  562. package/lib/types/dsh-adapter/channel/state.js +3 -2
  563. package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
  564. package/lib/types/dsh-adapter/channel/subagent-projection.js +5 -0
  565. package/lib/types/dsh-adapter/channel/types.d.ts +1 -1
  566. package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
  567. package/lib/types/dsh-adapter/channel/usage.d.ts +18 -1
  568. package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -1
  569. package/lib/types/dsh-adapter/channel/usage.js +97 -2
  570. package/lib/types/dsh-adapter/channel.d.ts +1 -1
  571. package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
  572. package/lib/types/dsh-adapter/channel.js +72 -4
  573. package/lib/types/dsh-adapter/context-occupancy.d.ts +204 -0
  574. package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -0
  575. package/lib/types/dsh-adapter/context-occupancy.js +299 -0
  576. package/lib/types/dsh-adapter/contract.d.ts +19 -4
  577. package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
  578. package/lib/types/dsh-adapter/contract.js +33 -3
  579. package/lib/types/dsh-adapter/index.d.ts +32 -0
  580. package/lib/types/dsh-adapter/index.d.ts.map +1 -1
  581. package/lib/types/dsh-adapter/index.js +20 -1
  582. package/lib/types/dsh-adapter/jobs.d.ts +82 -16
  583. package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
  584. package/lib/types/dsh-adapter/jobs.js +104 -9
  585. package/lib/types/dsh-adapter/migrate/sessionize.d.ts.map +1 -1
  586. package/lib/types/dsh-adapter/migrate/sessionize.js +11 -12
  587. package/lib/types/dsh-adapter/oauth/bonus.d.ts +27 -0
  588. package/lib/types/dsh-adapter/oauth/bonus.d.ts.map +1 -0
  589. package/lib/types/dsh-adapter/oauth/bonus.js +69 -0
  590. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/command.d.ts +2 -1
  591. package/lib/types/dsh-adapter/oauth/command.d.ts.map +1 -0
  592. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/command.js +7 -4
  593. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/credentials.d.ts +13 -10
  594. package/lib/types/dsh-adapter/oauth/credentials.d.ts.map +1 -0
  595. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/credentials.js +61 -23
  596. package/lib/types/dsh-adapter/oauth/deepseek.d.ts +39 -0
  597. package/lib/types/dsh-adapter/oauth/deepseek.d.ts.map +1 -0
  598. package/lib/types/dsh-adapter/oauth/deepseek.js +189 -0
  599. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/index.d.ts +24 -16
  600. package/lib/types/dsh-adapter/oauth/index.d.ts.map +1 -0
  601. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/index.js +34 -20
  602. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/interaction.d.ts +14 -12
  603. package/lib/types/dsh-adapter/oauth/interaction.d.ts.map +1 -0
  604. package/lib/types/dsh-adapter/oauth/interaction.js +283 -0
  605. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/opener.d.ts +2 -1
  606. package/lib/types/dsh-adapter/oauth/opener.d.ts.map +1 -0
  607. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/opener.js +1 -1
  608. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/pi-ai.d.ts +10 -3
  609. package/lib/types/dsh-adapter/oauth/pi-ai.d.ts.map +1 -0
  610. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/pi-ai.js +8 -3
  611. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/profiles.d.ts +6 -3
  612. package/lib/types/dsh-adapter/oauth/profiles.d.ts.map +1 -0
  613. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/profiles.js +11 -3
  614. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/service.d.ts +14 -7
  615. package/lib/types/dsh-adapter/oauth/service.d.ts.map +1 -0
  616. package/{node_modules/@deepseek-harness-tui/dsh-auth/lib → lib/types/dsh-adapter/oauth}/service.js +82 -17
  617. package/lib/types/dsh-adapter/panel-runtime-registry.d.ts +39 -0
  618. package/lib/types/dsh-adapter/panel-runtime-registry.d.ts.map +1 -0
  619. package/lib/types/dsh-adapter/panel-runtime-registry.js +84 -0
  620. package/lib/types/dsh-adapter/panels.d.ts +251 -0
  621. package/lib/types/dsh-adapter/panels.d.ts.map +1 -0
  622. package/lib/types/dsh-adapter/panels.js +407 -0
  623. package/lib/types/dsh-adapter/plugin-host.js +1 -1
  624. package/lib/types/dsh-adapter/plugin.d.ts +25 -2
  625. package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
  626. package/lib/types/dsh-adapter/plugin.js +241 -44
  627. package/lib/types/dsh-adapter/presets.d.ts +26 -4
  628. package/lib/types/dsh-adapter/presets.d.ts.map +1 -1
  629. package/lib/types/dsh-adapter/presets.js +29 -5
  630. package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
  631. package/lib/types/dsh-adapter/providerWizard.js +6 -2
  632. package/lib/types/dsh-adapter/startup-args.d.ts +8 -0
  633. package/lib/types/dsh-adapter/startup-args.d.ts.map +1 -0
  634. package/lib/types/dsh-adapter/startup-args.js +34 -0
  635. package/lib/types/dsh-adapter/subagents.d.ts +1 -0
  636. package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
  637. package/lib/types/dsh-adapter/subagents.js +10 -1
  638. package/lib/types/history.d.ts +24 -7
  639. package/lib/types/history.d.ts.map +1 -1
  640. package/lib/types/history.js +77 -18
  641. package/lib/types/i18n.d.ts +908 -33
  642. package/lib/types/i18n.d.ts.map +1 -1
  643. package/lib/types/i18n.js +355 -17
  644. package/lib/types/ink/components/App.d.ts +14 -1
  645. package/lib/types/ink/components/App.d.ts.map +1 -1
  646. package/lib/types/ink/components/App.js +71 -61
  647. package/lib/types/ink/components/TerminalSizeContext.d.ts +7 -0
  648. package/lib/types/ink/components/TerminalSizeContext.d.ts.map +1 -1
  649. package/lib/types/ink/hooks/use-input.d.ts +11 -0
  650. package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
  651. package/lib/types/ink/hooks/use-input.js +8 -2
  652. package/lib/types/ink/hooks/use-terminal-viewport.d.ts.map +1 -1
  653. package/lib/types/ink/hooks/use-terminal-viewport.js +3 -1
  654. package/lib/types/ink/ink.d.ts +18 -0
  655. package/lib/types/ink/ink.d.ts.map +1 -1
  656. package/lib/types/ink/ink.js +51 -8
  657. package/lib/types/ink/output.d.ts +10 -1
  658. package/lib/types/ink/output.d.ts.map +1 -1
  659. package/lib/types/ink/output.js +3 -3
  660. package/lib/types/ink/parse-keypress.d.ts +71 -3
  661. package/lib/types/ink/parse-keypress.d.ts.map +1 -1
  662. package/lib/types/ink/parse-keypress.js +815 -133
  663. package/lib/types/ink/render-node-to-output.d.ts +1 -1
  664. package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
  665. package/lib/types/ink/render-node-to-output.js +37 -5
  666. package/lib/types/ink/screen.d.ts +26 -1
  667. package/lib/types/ink/screen.d.ts.map +1 -1
  668. package/lib/types/ink/screen.js +96 -1
  669. package/lib/types/ink/selection.d.ts +23 -1
  670. package/lib/types/ink/selection.d.ts.map +1 -1
  671. package/lib/types/ink/selection.js +102 -26
  672. package/lib/types/ink/sixel-codec.d.ts +11 -0
  673. package/lib/types/ink/sixel-codec.d.ts.map +1 -1
  674. package/lib/types/ink/sixel-codec.js +42 -8
  675. package/lib/types/ink/terminal-querier.d.ts +25 -0
  676. package/lib/types/ink/terminal-querier.d.ts.map +1 -1
  677. package/lib/types/ink/terminal-querier.js +42 -0
  678. package/lib/types/ink/update-overflow-guard.d.ts +24 -0
  679. package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
  680. package/lib/types/ink/update-overflow-guard.js +25 -3
  681. package/lib/types/math/renderer.d.ts +2 -0
  682. package/lib/types/math/renderer.d.ts.map +1 -1
  683. package/lib/types/math/renderer.js +4 -0
  684. package/lib/types/minimalUiMode.d.ts +19 -0
  685. package/lib/types/minimalUiMode.d.ts.map +1 -0
  686. package/lib/types/minimalUiMode.js +23 -0
  687. package/lib/types/oauth.d.ts +5 -10
  688. package/lib/types/oauth.d.ts.map +1 -1
  689. package/lib/types/oauth.js +5 -10
  690. package/lib/types/onboardingPrefs.d.ts +52 -0
  691. package/lib/types/onboardingPrefs.d.ts.map +1 -0
  692. package/lib/types/onboardingPrefs.js +107 -0
  693. package/lib/types/panels.d.ts +4 -0
  694. package/lib/types/panels.d.ts.map +1 -0
  695. package/lib/types/panels.js +4 -0
  696. package/lib/types/screens/Chat.d.ts +25 -1
  697. package/lib/types/screens/Chat.d.ts.map +1 -1
  698. package/lib/types/screens/Chat.js +1149 -302
  699. package/lib/types/screens/Launchpad.d.ts +194 -0
  700. package/lib/types/screens/Launchpad.d.ts.map +1 -0
  701. package/lib/types/screens/Launchpad.js +607 -0
  702. package/lib/types/screens/Onboarding.d.ts +37 -0
  703. package/lib/types/screens/Onboarding.d.ts.map +1 -0
  704. package/lib/types/screens/Onboarding.js +492 -0
  705. package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
  706. package/lib/types/screens/SessionSupervisor.js +18 -12
  707. package/lib/types/screens/StatusLine.d.ts +4 -0
  708. package/lib/types/screens/StatusLine.d.ts.map +1 -1
  709. package/lib/types/screens/StatusLine.js +43 -25
  710. package/lib/types/screens/StatusMetrics.d.ts +22 -0
  711. package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
  712. package/lib/types/screens/StatusMetrics.js +20 -0
  713. package/lib/types/screens/chatOverlay.d.ts +18 -1
  714. package/lib/types/screens/chatOverlay.d.ts.map +1 -1
  715. package/lib/types/screens/chatOverlay.js +3 -0
  716. package/lib/types/screens/sessionSupervisor/model.d.ts +1 -2
  717. package/lib/types/screens/sessionSupervisor/model.d.ts.map +1 -1
  718. package/lib/types/screens/sessionSupervisor/model.js +4 -2
  719. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
  720. package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +7 -3
  721. package/lib/types/settings/definitions.d.ts +93 -0
  722. package/lib/types/settings/definitions.d.ts.map +1 -1
  723. package/lib/types/settings/definitions.js +87 -4
  724. package/lib/types/tips.d.ts.map +1 -1
  725. package/lib/types/tips.js +13 -7
  726. package/lib/types/tuiDisplayPrefs.d.ts +42 -2
  727. package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
  728. package/lib/types/tuiDisplayPrefs.js +74 -0
  729. package/lib/types/update.d.ts +53 -9
  730. package/lib/types/update.d.ts.map +1 -1
  731. package/lib/types/update.js +103 -46
  732. package/lib/types/utils/bmp.d.ts.map +1 -1
  733. package/lib/types/utils/bmp.js +8 -1
  734. package/lib/types/utils/clipboard.d.ts.map +1 -1
  735. package/lib/types/utils/clipboard.js +25 -6
  736. package/lib/types/utils/credentials.d.ts.map +1 -1
  737. package/lib/types/utils/credentials.js +5 -1
  738. package/lib/types/utils/draftWordBoundary.d.ts +23 -0
  739. package/lib/types/utils/draftWordBoundary.d.ts.map +1 -0
  740. package/lib/types/utils/draftWordBoundary.js +161 -0
  741. package/lib/types/utils/fileTarget.d.ts.map +1 -1
  742. package/lib/types/utils/fileTarget.js +7 -9
  743. package/lib/types/utils/inputPaste.d.ts +62 -0
  744. package/lib/types/utils/inputPaste.d.ts.map +1 -0
  745. package/lib/types/utils/inputPaste.js +111 -0
  746. package/lib/types/utils/intl.d.ts +8 -0
  747. package/lib/types/utils/intl.d.ts.map +1 -1
  748. package/lib/types/utils/intl.js +11 -0
  749. package/lib/types/utils/keymap.d.ts +13 -3
  750. package/lib/types/utils/keymap.d.ts.map +1 -1
  751. package/lib/types/utils/keymap.js +27 -5
  752. package/lib/types/utils/pastedImagePath.d.ts +8 -0
  753. package/lib/types/utils/pastedImagePath.d.ts.map +1 -1
  754. package/lib/types/utils/pastedImagePath.js +29 -5
  755. package/package.json +128 -106
  756. package/presets/liangshen/agent.cordis.yml +4 -1
  757. package/presets/liangshen/preset.yml +1 -1
  758. package/{dsh-ecosystem-spec → tui-profile}/registry/README.md +1 -1
  759. package/{dsh-ecosystem-spec → tui-profile}/registry/registry-0.15.json +1 -1
  760. package/lib/types/minimalMode.d.ts +0 -13
  761. package/lib/types/minimalMode.d.ts.map +0 -1
  762. package/lib/types/minimalMode.js +0 -17
  763. package/node_modules/@deepseek-harness-tui/dsh-auth/LICENSE +0 -21
  764. package/node_modules/@deepseek-harness-tui/dsh-auth/README.md +0 -143
  765. package/node_modules/@deepseek-harness-tui/dsh-auth/cordis.patch.yml +0 -11
  766. package/node_modules/@deepseek-harness-tui/dsh-auth/dsh-plugin.json +0 -44
  767. package/node_modules/@deepseek-harness-tui/dsh-auth/lib/interaction.js +0 -193
  768. package/node_modules/@deepseek-harness-tui/dsh-auth/package.json +0 -69
  769. /package/{dsh-ecosystem-spec → tui-profile}/protocols/profile-definitions.d.ts +0 -0
  770. /package/{dsh-ecosystem-spec → tui-profile}/protocols/profile-definitions.js +0 -0
  771. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel-http.d.ts +0 -0
  772. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel-http.js +0 -0
  773. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel.d.ts +0 -0
  774. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-channel.js +0 -0
  775. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-contributions.d.ts +0 -0
  776. /package/{dsh-ecosystem-spec → tui-profile}/protocols/tui-contributions.js +0 -0
  777. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/decision-events-v1alpha1.json +0 -0
  778. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/scene-v1alpha1.json +0 -0
  779. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/settings-section-v1alpha1.json +0 -0
  780. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/tui-channel-v1alpha1.json +0 -0
  781. /package/{dsh-ecosystem-spec → tui-profile}/registry/contracts/workspace-provider-v1alpha1.json +0 -0
  782. /package/{dsh-ecosystem-spec → tui-profile}/registry/host-descriptor.tui.example.json +0 -0
  783. /package/{dsh-ecosystem-spec → tui-profile}/registry/permissions-0.1.json +0 -0
  784. /package/{dsh-ecosystem-spec → tui-profile}/schemas/conformance-claim.schema.json +0 -0
  785. /package/{dsh-ecosystem-spec → tui-profile}/schemas/effect-ledger-record.schema.json +0 -0
  786. /package/{dsh-ecosystem-spec → tui-profile}/schemas/host-descriptor.schema.json +0 -0
@@ -0,0 +1,666 @@
1
+ # dsh-TUI 使用说明
2
+
3
+ [文档索引](README.md) · [English](user-guide.en.md)
4
+
5
+ > 面向日常用户的操作手册:启动、键位、命令、会话工作流、界面指标与常用技巧。
6
+
7
+ ## 目录
8
+
9
+ - [1. 快速上手](#1-快速上手)
10
+ - [2. 快捷键速查](#2-快捷键速查)
11
+ - [3. 命令全集](#3-命令全集)
12
+ - [4. 会话工作流](#4-会话工作流)
13
+ - [5. 界面与状态栏](#5-界面与状态栏)
14
+ - [6. 模型 / 预设 / 主题 / 语言](#6-模型--预设--主题--语言)
15
+ - [7. 常用技巧](#7-常用技巧)
16
+
17
+ ## 1. 快速上手
18
+
19
+ ### 1.1 安装与启动
20
+
21
+ ```sh
22
+ # 全局安装 CLI + 本插件(插件自带 dsh-tui 直达命令)
23
+ npm install -g @deepseek-ai/dsh @deepseek-harness-tui/dsh-tui
24
+
25
+ # 启动(首次运行自动初始化 dsh-tui profile,需 pnpm)
26
+ dsh-tui
27
+ ```
28
+
29
+ - `dsh-tui --resume`:恢复上次会话;Windows 可用仓库里的 `dsh-tui.cmd`(等价)。
30
+ - `dsh-tui safe`:安全模式——只读查看环境、列出 profile 插件并给出修复建议,还能创建干净的救援 profile(见 §5.5)。
31
+ - `dsh --profile dsh-tui`:与 `dsh-tui` 等价的手工启动方式(`/update` 仅此方式可用)。
32
+ - `deepseek-official` 路由需要 `DEEPSEEK_API_KEY`;DSH 0.2.0-rc.1+ 可用标准 profile 的 `deepseek-account` 浏览器授权路由。其他支持的订阅模型可用内置 OAuth 登录。环境自检用 `/doctor`。
33
+ - 主验证 dsh 引擎版本 `0.2.0-rc.2`;兼容列表以 `ADAPTER.md` 为准,列表之外的版本在 logo 页提示版本漂移与对齐命令。
34
+ - 如果 logo 页出现 ⚠ 版本漂移警告,按提示执行 `npm i -g @deepseek-ai/dsh@<版本>` 对齐 dsh 引擎。
35
+
36
+ ### 1.2 首次启动你会看到
37
+
38
+ 1. **首次引导**(在"还没完成过引导"时出现:首次安装,或引导本身升级过版本):四步向导 ——
39
+ **API Key 与连通性 → 语言与主题 → 模型与工作区 → 快捷键与招式**。
40
+ `←/→` 换步骤、`Tab` 在两组面板间切、`↑/↓` 移动选择、`Enter` 执行这一步、`Esc` 跳过;
41
+ **跳过不记账**(下次启动还会问),最后一步要在**键位卡**上按 `Enter` 才算"完成"并写入记账文件
42
+ (焦点落在命令卡上时 `Enter` 是"试一下")。之后随时可用 `/setup` 重跑。
43
+ 2. **落地页**(**普通启动**的第一屏:没带 `--resume`、没指定工作区、也没带首句提示词;
44
+ `DSH_TUI_NO_LAUNCHPAD=1` 可整体跳过):像素鲸鱼顶栏(`✦ dsh-TUI` 版本号、
45
+ `DEEPSEEK / HARNESS` 大字、当前模型与 effort、工作目录,及一行**启动提示**;
46
+ 这一屏的头部**直接定格**——开场动画留给进入对话后的转录区顶部),
47
+ 下面是一个**真输入框**(第一句话在这里打,**回车直接发送**)与框下一行**参数行**
48
+ (模型 · 思考深度 · 模式 · 权限——四段都可点,点开对话页同款选择器就地换值),
49
+ 隔一行留白再一行**快捷入口**(第七版四格:`继续「…」`(快捷键 `Alt+R`,没有可继续会话时整格不画)·
50
+ `会话与工作区`(历史会话与工作区本就是 `/home` 同一个界面,合并成一个入口)· `设置` ·
51
+ **条件位**——有后台任务在跑显 `后台任务`、检测到新版本显 `有新版本`、用量到档且没 star 过显
52
+ `投喂一颗 Star`,都不成立兜底 `帮助`)。
53
+ 入口与参数段用 `↑/↓` 或 `Tab` 移焦点、`Enter` 激活,也可以直接点;终端变矮时按"整块撤"的顺序降级
54
+ (快捷入口 → 提示行 → 只留输入框),变窄时按 5.1 的阶梯降级。
55
+ 从这一屏打开的整屏界面(会话与工作区 / 设置 / 后台任务 / 引导向导)都**盖在落地页之上**,
56
+ `Esc` 退出即回到落地页(草稿、参数、焦点原样保留);**离开落地页进对话页的唯一方式是
57
+ 回车提交一条非命令消息**。
58
+ dsh 引擎版本不在验证范围时会出现 **⚠ 版本漂移警告** 及对齐命令。
59
+ 3. **底部状态栏**:工作状态行、上下文进度条、TPS 仪表与各类实时指标(见
60
+ [5. 界面与状态栏](#5-界面与状态栏))。
61
+ 4. **启动提示行**:Logo 下方固定一行 `提示:<随机小技巧> · /tips 更多技巧`,每次启动随机换一条;
62
+ `/tips` 打开完整技巧面板(`↑/↓` 滚动、`Esc` 关闭)。
63
+ 5. **第一次普通启动**(没带 `--resume`、没指定工作区、也没带首条提示词)在落地页之后进入
64
+ **会话管理界面**先挑工作区,离开后 `~/.dsh-tui/home.json` 记下"已看过",以后启动直接进对话;
65
+ 界面随时可用 `/resume`、`/home`、`/agentview`、`/bg` 或输入框行首 `⌸` 打开。
66
+ 6. 输入 `/` 看命令菜单,按 `?` 看快捷键帮助。
67
+
68
+ ### 1.3 核心心智模型
69
+
70
+ - 命令都可用 **Tab 补全**(带参数时先输入 `/命令 ` 再 Tab)。
71
+ - 非命令输入就是普通对话;**未知命令会作为普通消息发给模型**。
72
+
73
+ ## 2. 快捷键速查
74
+
75
+ > 表内 `Ctrl` 在 macOS 上大多可换 `⌘`(`⌘V` `⌘O` `⌘R` `⌘T` `⌘L` `⌘Enter`);
76
+ > `Ctrl+C`/`Ctrl+D` 不变。
77
+ > `⌘` 需扩展键盘协议(见 §5.4),Terminal.app 用 Ctrl。
78
+
79
+ ### 2.1 发送与投递(模型工作时的三种语义)
80
+
81
+ | 键 | 功能 |
82
+ |---|---|
83
+ | `Enter` | 空闲=发送;**模型工作时=steer**(注入下一步边界,不中断);菜单打开=确认选中项 |
84
+ | `Tab` | 补全 `/` 命令或 `@` 文件;**模型工作时=follow-up**(排入当前回合之后) |
85
+ | `Ctrl+Enter`(⌘Enter) | 打断当前回合并立即发送输入 |
86
+ | `Shift+Enter` / `Ctrl+J` | 换行(`Option+Enter` 是 mac Terminal.app 的兜底) |
87
+ | `Alt+Up` | 把最后一条未处理消息取回输入框编辑(不中断回合) |
88
+ | `Esc`(工作 + 有 pending) | 中断回合并立即重投 pending 消息 |
89
+ | 工作中的 `/btw …` | Enter 直接执行(侧问永不打断主回合) |
90
+
91
+ ### 2.2 中断 / 退出 / 系统
92
+
93
+ | 键 | 功能 |
94
+ |---|---|
95
+ | `Ctrl+C` | 工作中=中断;中断未收敛时再按=强制退出;空闲有输入=清空输入;空闲空输入=双击退出(3s 窗口) |
96
+ | `Ctrl+D` | 工作中=中断(中断未收敛时再按=强制退出);空闲时双击退出 |
97
+ | `Ctrl+L`(⌘L) | 清屏并强制重绘 |
98
+ | `Ctrl+O`(⌘O) | 展开/收起详情(思考全文、工具参数与输出) |
99
+ | `Ctrl+E` | 输入框=光标到行尾;转录中=展开/折叠隐藏的旧消息 |
100
+ | `Ctrl+P` | 切换启动时 loaded-context 面板(面板在屏时有效) |
101
+ | `?` | 输入框为空时打开快捷键/命令帮助菜单 |
102
+
103
+ ### 2.3 搜索
104
+
105
+ | 键 | 功能 |
106
+ |---|---|
107
+ | `Ctrl+R`(⌘R) | 历史消息搜索(只搜当前项目);重复按或 `↓` 到下一匹配;`Enter` 回填输入框 |
108
+ | `/`(转录态) | 会话全文搜索;`n` / `N` 跳转(仅 Ctrl+O 展开态) |
109
+
110
+ ### 2.4 输入编辑
111
+
112
+ | 键 | 功能 |
113
+ |---|---|
114
+ | `←` / `→` | 按字符移动光标(有选区时坍缩到选区对应边缘) |
115
+ | `Ctrl+←` / `Ctrl+→`(⌘←/→) | 按词跳转 |
116
+ | `Home` / `End`,`Ctrl+E` | 逻辑行首 / 行尾(`Ctrl+A` 已改用于子代理面板,见 §2.7) |
117
+ | `Ctrl+U` / `Ctrl+K` | 删除光标前(至行首)/ 光标后(至行尾) |
118
+ | `Ctrl+W` | 删除前一个单词 |
119
+ | `Ctrl+Z` | 撤销草稿上一步「词级」编辑(含光标与图片);只作用于草稿,提交或用历史召回(`Ctrl+R`/`↑`)后不再可撤销,与 `Esc Esc` 的会话/消息回溯无关;可经 `/settings` 重映射 |
120
+ | `Backspace` / `Delete` | 删前一 / 后一字符;**有选区时删除整个选区** |
121
+ | `↑` / `↓` | 多行时行间移动;单行时浏览输入历史(按项目隔离,每个项目最近 200 条,跨重启保留;升级前的旧历史各项目都可见) |
122
+ | `Ctrl+V`(⌘V)/ `Alt+V` | 粘贴:文本 / 文件路径(图片自动 `@` 引用)/ 剪贴板位图(`[Image #N]` 附件);终端拦截 `Ctrl+V` 时用 `Alt+V` |
123
+ | `Ctrl+G` | 用 `$VISUAL`/`$EDITOR` 外部编辑器编辑输入(`:cq` 保留原稿;未设置变量时提示配置) |
124
+ | `Ctrl+Shift+E`(⌘⇧E) | 展开**全屏草稿编辑器**(也可点输入行尾 `⛶`):带行号、高亮当前行,`Enter` 换行、`Ctrl+Enter` 发送、`Esc` 收起(草稿还在);`/settings → 全屏草稿编辑` 可关 |
125
+ | 超长草稿自动折叠 | 粘贴 **≥6 行或 ≥600 字**的块折成 `▸ N 行・M 字` 小条:点小条或 `▾` 切换折叠;`Enter` 提交的始终是全文 |
126
+ | `/vim` | **vim 编辑模式开关**(会话级、不持久化):开启后输入框显示 `INSERT` 徽标,`Esc` 切 `NORMAL`,`i/I/a/A/o/O` 回 INSERT。NORMAL 键位见下 |
127
+ | 打字 | **有选区时替换整个选区**(和标准编辑器一致),光标落在插入文本之后 |
128
+ | 右键 / `Ctrl+Shift+V` | 终端原生粘贴(含换行原样插入) |
129
+ | `Esc`(输入框) | 一层层关:帮助 → **图片预览** → 命令菜单 → 文件菜单(只关当前 `@` token)→ **有选区就先清选区(文字不动)** → 中断重投 → 有输入清空 → 双击=时间回溯 |
130
+ | 双击 `Esc`(空输入) | **时间回溯 rewind**(3s 窗口内按两次) |
131
+
132
+ **vim NORMAL 键位**:移动 `h/l` `j/k` `0/^/$` `w/b`;
133
+ 删除 `x/X` `dd`/`d$`/`d0`/`d^`/`dw`;`u` 撤销、`Enter` 发送。
134
+ 未识别键忽略,`Esc` 无操作,清空用 `Ctrl+C`/`dd`。
135
+
136
+ ### 2.5 导航 / 模式
137
+
138
+ | 键 | 功能 |
139
+ |---|---|
140
+ | `Shift+Tab` | 循环会话模式(默认 → plan 计划 → full 完全访问);挂载了第三方权限预设时,它们按 registry 顺序排在循环末尾 |
141
+ | `Shift+↑` | 消息选择模式(`↑/↓` 移动,`Enter` 展开单条,`Esc` 退出) |
142
+ | `Ctrl+T`(⌘T) | 打开轨迹场景(同 `/trace`) |
143
+ | `Alt+R` | 落地页上**继续最近一条会话**(同入口行的「继续「…」」;仅启动页生效,无可继续会话时无动作)。键位可在 `/settings` 改 |
144
+ | `Alt+S` | 一键 star(同 `/star`;开屏那句求 star 标语整行也可点)。键位可在 `/settings` 改;成功后会演一小段「鲸鱼娘接住星星」的庆祝。想随时看这段庆祝:`DSH_TUI_STAR_MODAL=1 dsh-tui`;想随时看开屏那句求 star 标语:`DSH_TUI_STAR_LINE=1 dsh-tui`(都是预览用环境变量,不动账本) |
145
+
146
+ ### 2.6 鼠标(fullscreen 全屏模式;拖拽/双击/三击即选即复制)
147
+
148
+ | 操作 | 功能 |
149
+ |---|---|
150
+ | 左键拖拽 | 选文本,**松开即复制**(OSC 52 + 系统剪贴板工具兜底),自动取消选区 |
151
+ | 双击 / 三击 | 选词 / 选行,即选即复制 |
152
+ | 滚轮 | 滚动消息列表(±3 行/格);**有文本选区时随内容平移选区** |
153
+ | 输入框内 | 拖拽 / Shift+click / 双击建立选区;`Backspace`/`Delete` 删选区、打字替换、`←/→` 坍缩、`Esc` 仅清选区、`Ctrl+C` 复制选区 |
154
+ | `Esc` | 取消选区(不复制) |
155
+ | 单击 | 消息行=展开/收起 · 超链接=打开浏览器 · 「加载更早消息」/StickyHeader/「↓ N new」=加载/跳转 |
156
+ | 悬停截断内容 | 停留约 600ms 浮层显示完整内容;拖选文本期间浮层不出现 |
157
+ | 键盘扩展选区 | 有选区时 `Shift+←/→/↑/↓/Home/End` 扩展/收缩(跨行环绕) |
158
+
159
+ ### 2.7 各场景键位
160
+
161
+ **问卷(模型 ask_user_question)**
162
+
163
+ - `↑/↓` 选、`Space` 多选、`Tab` 切自定义回答、`Enter` 提交;`←/→` 换题(不提交,草稿保留);`Ctrl+V` 粘贴、`Ctrl+K` 折叠。
164
+ - `Esc` 第 2 题起返回、第 1 题取消整批;`Ctrl+C` 任意题取消。输入行里 `←/→` 先移动光标,到行首/行尾才换题。
165
+
166
+ **计划评审(plan review)**
167
+
168
+ - `↑/↓` 移动、`1`/`2` 快选;直接打字 = 填反馈(`Ctrl+V` 粘贴、`Enter` 提交);`Esc` 打断;**批准必须不带反馈**。
169
+
170
+ **工具审批(approval)**
171
+
172
+ - `↑/↓` 移动、`1` 允许(仅本次)、`2` 拒绝、`Enter` 提交;`Esc`/`Ctrl+C` 拒绝。
173
+
174
+ **会话管理界面**(`/resume`、`/home`、`/agentview`、`/bg`、输入框行首 `⌸`,同一个界面)
175
+
176
+ - 布局:左栏工作区、右栏会话;≥84 列两栏并排,更窄收起工作区栏。
177
+ - 换栏 `←/→`;移动 `↑/↓`/`PgUp`/`PgDn`;**直接打字 = 实时筛选**(按标题/目录/分支/模型)。
178
+ - 进入 `Enter`(第 0 行 = 在该工作区新建会话);新建 `Ctrl+Enter`/`Ctrl+N`;停止后台会话 `Ctrl+X`。
179
+ - `Ctrl+L` 重读 · 工作区栏 `Enter` 打开操作菜单 · `Esc` 关提示→清空筛选→离开。
180
+ - 来源标签:本机的 Claude Code / Codex / Grok Build / zcode 有会话时,标题栏右侧出现对应标签,`Tab`/`Shift+Tab` 或点击切换;
181
+ 外部标签里 `Enter`/单击 = 只导入这一条并直接打开(导入过的直接打开),工作目录已不存在时只提示不导入,`Ctrl+L` 重扫该来源。
182
+ - 鼠标:点击会话行=进入、点 `★`/`☆` 切固定、右键工作区行出菜单。
183
+ - 输入框空着按 `←`(或 `/bg`)= 转后台并打开本界面,会话继续跑。
184
+
185
+ 切换会话只是**停放**——正在跑的回合继续跑;被其他终端占用的会话标红写 `占用 pid <pid>`、点不动,对方退出后恢复。
186
+ 固定项存到 `~/.dsh-tui/session-pins.json`。
187
+ 工作区菜单四项:编辑 / 在此新建 / 重命名 / 从列表移除(**只删登记**,目录与会话日志都保留)。
188
+ 移除后,仍有历史会话的目录会以「仅历史」行留在侧栏;栏头分别统计已登记工作区与历史目录,移除成功也会显示提示。
189
+ 「仅历史」行的菜单只有编辑与在此新建;重命名、移除只适用于已登记工作区。
190
+
191
+ **大图预览**(点输入框里的 `[Image #N]` 或转录缩略图打开)
192
+
193
+ - `←/→` 上/下一张;底部按钮缩放:`适应`/`100%`/`200%`/`400%`/`800%`;拖动、滚轮平移。
194
+ - `Esc`/`Ctrl+C`/`Enter` 或点卡片外关闭;底部「打开原图」用系统看图程序打开。
195
+
196
+ **IDE 选区**(VS Code companion 扩展 `dsh-tui-vscode`,需 ≥ 0.7.0)
197
+
198
+ - 编辑器选中代码 → 输入框下方**实时**出现 `⧉ N lines selected` 徽标,提交时选中行**自动附加**进上下文。
199
+ - 转录里有「⧉ Selected N lines from <相对路径>」指示行(附加编辑器里的文本,未保存也带上)。
200
+ - 没装/没连 IDE 时自动跳过、不影响其他功能(详见 [vscode.md](vscode.md))。
201
+
202
+ **历史搜索(Ctrl+R)**
203
+ 只列出当前项目(会话工作目录)的输入,外加升级前未分项目的旧历史。
204
+ `↑/↓` 选择 · 重复 `Ctrl+R` 或 `↓` 下一项 · `Enter` 回填 · `Esc`/`Ctrl+C`/`Ctrl+D` 取消
205
+
206
+ **轨迹场景(Ctrl+T / /trace)**
207
+ - `↑/↓`/`PgUp`/`PgDn` 移动 · `←/→`(或 `h`)切换时间线/热点 · `g`/`G` 顶/底 · `q`/`Esc` 退出
208
+ - `[`/`]` 跳失败点 · `{`/`}` 跳轮次 · `m` 循环投影 · `Enter` 展开详情(`j`/`k` 翻页)· 热点 `t` 排序
209
+ - `/` 查询行(前缀 `tool:` `kind:` `turn:` `err:` `run:` `>10s` `tok>1k`)
210
+
211
+ **/settings 设置面板**
212
+ `↑/↓` 移动 · `Enter` 展开/切换/编辑 · `←/→` 在**有选项的字段**上循环切换(布尔项仍只响应 `Enter`)·
213
+ 改动自动保存,`Esc` 退出
214
+
215
+ **/btw 侧问面板**
216
+ `↑/↓` 滚动 · `Space`/`Enter`/`Esc` 关闭 · `c` 复制答案 · 等待中 `Esc` 取消
217
+
218
+ **/effort 滑杆**
219
+ `←/→` 实时调整(Esc 不还原)· `Enter`/`Esc` 完成
220
+
221
+ **@ 文件补全**
222
+ `@` 在消息任意位置触发 · `↑/↓` 移动 · `Tab`/`Enter` 接受 · 目录可继续深入 ·
223
+ `Esc` 只关当前 token 菜单
224
+ - **两种查询**:路径形输入(`@src/` `@./` `@~/` `@D:\`)只列该目录;
225
+ 普通片段**模糊匹配**(`@ink` 命中 `src/ink/Box.js`)。
226
+ - 图片路径自动变 `[Image #N]` 附件。
227
+
228
+ **子代理面板(Ctrl+A)**
229
+ `↑/↓` 浏览 · `Enter` 查看详情 · `Esc` 关闭;详情页 `←/→` 翻页,运行中 `X` 中断;子代理以卡片行实时展示。面板镜像本会话派出的全部子代理——`subagent`/`send_message` 运行、可续子代理的重派(每轮新任务重置该行)、workflow/ralph 成员——并在恢复会话时从日志重新折叠持久发现事实,重启不再清空面板。无实时计时的历史行以 `⚪` 状态展示,不伪造时长。
230
+
231
+ **双击 Esc 时间回溯(rewind)**
232
+ 列表 `↑/↓` + `Enter` 进入确认 · 确认页 `Enter` 回退 / `Esc` 返回 · 插件决策等待中只响应 `Esc`
233
+
234
+ ### 2.8 侧栏(Side panel)
235
+
236
+ `Ctrl+B`(可在 `/settings` → `Shortcuts` 重映射)在聊天右侧展开一条侧栏:顶部胶囊标签栏、
237
+ 中间活动面板、底部按键提示行,与聊天之间隔一列中缝。
238
+
239
+ - **三种形态**:**分栏**(split,聊天约 68% + 侧栏,`+`/`-` 每次调 4 列)、**收起**(collapsed,
240
+ 布局与以前逐字节相同)、**缩放**(zoom,面板占满,聊天列保留最小宽度)。
241
+ - **分栏条件**:fullscreen 且内容区 ≥93 列(默认页边距下约合终端 97 列);窄屏、inline 模式、
242
+ 展开全屏草稿编辑器时自动回退——`/jobs` 等命令仍走整屏面板,`Ctrl+B` 与 `/panel` 则不分栏。
243
+ - **焦点模型**:同一时刻只有一处键盘焦点,焦点在右栏时面板边框与中缝一起提亮。`Ctrl+B` 三态:
244
+ 未开 → 打开并聚焦右栏;已开但焦点在聊天 → 聚焦右栏;焦点已在右栏 → 关闭并回聊天。
245
+ - **右栏按键**:`Esc` 一步回到输入框(不关面板)· `←`/`→` 或 `[`/`]` 切换面板 · `1`-`9` 直达第 N 个 ·
246
+ `z` 或 `Alt+Z` 缩放 · `+`/`-` 调宽(`+` 加宽面板,步长 4 列) · `↑`/`↓`/`PgUp`/`PgDn` 交给活动面板(jobs 用它选择与滚动);
247
+ 面板没吃下的键不会再落到聊天,但 `Ctrl+C`/`Ctrl+D`/`Ctrl+L` 等 Ctrl 组合照旧作用于聊天。
248
+ - **鼠标**:点聊天栏把焦点给聊天,点右栏把焦点给面板;点标签栏上的标签直接切到那个面板(悬停会高亮),
249
+ 点右端的 `⤢` 把当前面板放大成整屏;右栏不参与拖拽选字。
250
+ - **面板**:`todo`(Goals/Todos,分栏时从输入框上方迁到这里)、`jobs`(后台任务,点转录里的任务卡
251
+ 会直接定位到该任务)、`agents`(子代理 Dashboard 与详情:Enter 进详情、Esc 逐级返回)、`companion`
252
+ (宠物,默认不启用——在 `sidePanel.panels` 加入 `companion` 开启:跟随会话状态换心情动画,点击
253
+ 比爱心、Enter 戳一戳;皮肤 `dsh-tui.companion.skin` 可选 deepy(默认,非官方粉丝作品 deepy
254
+ 小鲸鱼)或 whale)、`info`(信息栏:模型 / 思考深度 / 工作模式 / 权限 / 上下文占用 / 缓存命中 /
255
+ Token / TPS / 消耗 / 工作目录 / 会话标题与 ID)、`trajectory`(会话轨迹:唤醒带 + 账本 + 检视器,
256
+ ↑/↓ 选择、Enter 展开、Tab 切热点视图;←/→ 恒归侧栏切面板,Tab 才是切视图)、`workspace`
257
+ (工作目录/工作区总览,Enter 打开整屏工作区主页)。
258
+ - **宠物(companion)细节**:宠物锚在面板**底部**,上方是状态区(心情 · 子代理/会话计数 · 当前动作)。
259
+ 互动:点它左半/右半会被戳(poke-left/right)、短窗口连点三次是挠痒(tickle)、**按住拖动它就跟着
260
+ 指针在整个面板里走(松手弹回底部)**、鼠标悬停它会看向指针;Enter 也算戳一戳。后台任务完成、已打断
261
+ 这类提示会由它头顶的对话气泡说出——此时输入框上方**不再重复弹**同一条(宠物面板不是活动面板时
262
+ toast 照旧;错误类通知永远走 toast)。情绪带防抖平滑:快速的工具调用不会让动画来回闪烁(离开工作
263
+ 状态约 1.5s 才切换;审批/出错仍立即抢占)。子代理/会话数会切换配乐/指挥/施工等群像动画。面板窄到
264
+ 连紧凑形态都放不下时它会「躲起来」,只留一行 `好挤呀!{{name}}暂时躲起来了~`。
265
+ 皮肤 `dsh-tui.companion.skin` 三选一:`deepy`(默认,非官方粉丝作品小鲸鱼)、`whaleGirl`(鲸娘
266
+ 表情包,22 个动画,被戳/被挠/被拎起来都有对应反应,独有「冒爱心」「举大拇指」)、`whale`(开屏
267
+ 同款像素鲸)。**鲸娘在有图像协议(kitty/sixel)的终端里按原帧数 240px 像素级渲染**(267 帧全保留、
268
+ 透明悬浮、按需解码),无图像协议自动回退字符画版。
269
+
270
+ | 子命令 | 作用 |
271
+ |---|---|
272
+ | `/panel` | 打开面板选择器(↑↓ 选择、Enter 打开并聚焦) |
273
+ | `/panel toggle` | 真开 / 真关(关闭时焦点回聊天) |
274
+ | `/panel focus` | 打开并聚焦右栏 |
275
+ | `/panel zoom` | 打开并缩放当前面板 |
276
+ | `/panel <id>` | 打开指定面板:`todo` / `info` / `trajectory` / `jobs` / `agents` / `workspace` / `companion`(补全列出已启用的 id) |
277
+
278
+ - 原本只能整屏的视图现在也能进侧栏:分屏开着且对应面板已启用时,`Ctrl+T` / `/trace` 打开轨迹面板、
279
+ `/home` 打开工作区面板;面板栏右端的 `⤢` 再把它们放回整屏(`⤢` 是鼠标入口,键盘等价物就是各自的
280
+ 整屏快捷键:`Ctrl+T` 轨迹、`Ctrl+A` 子代理、`/jobs` 任务、`/home` 工作区主页)。
281
+ - 设置:`/settings` → `侧栏` 分组,或 `dsh-tui.sidePanel.{splitEnabled,open,ratio,panels}`
282
+ (见[配置参考](configuration.md#tui-配置))。
283
+ - **tmux 用户注意**:`Ctrl+B` 是 tmux 的默认前缀键,会被 tmux 截走、送不到 TUI——到
284
+ `/settings` → `Shortcuts` 把 `sidePanel` 换成别的组合(例如 `alt+b`)。
285
+
286
+ ## 3. 命令全集
287
+
288
+ 命令菜单 = 内置命令(58 条,含别名) + DSH 注册表命令(`/plan` `/goal` 等) + 技能目录
289
+ (仅补全,`/help` 菜单隐藏)。`/lang` 可切换中英文界面与命令描述。
290
+
291
+ ### 3.1 会话
292
+
293
+ | 命令 | 参数 | 作用 |
294
+ |---|---|---|
295
+ | `/new` | 无 | 新开会话(无二次确认;旧会话可 `/resume` 恢复) |
296
+ | `/resume` | 无 | 打开**会话管理界面**(工作区栏 + 会话栏、实时筛选、固定常用、跨工作区):切换会话只是**停放**,正在跑的回合不中断 |
297
+ | `/home` / `/agentview` / `/bg` | 无 | 同一个会话管理界面(`/home`=工作区视角 · `/agentview`=托管会话状态 · `/bg`=转后台并打开,别名 `/background`) |
298
+ | `/tree` | 无 | 会话分叉树:悬停预览、点击回退 / 分叉 / 切换分支 |
299
+ | `/fork` | 无 | 把当前会话复制成可恢复的副本(原会话不受影响) |
300
+ | `/restart` | 无 | 重启进程并恢复本会话(回合运行中会被拒绝,先 `Ctrl+C`) |
301
+ | `/rename` | `<新名称>` | 重命名当前会话(无参时显示当前标题与用法) |
302
+ | `/recap` | 无 | 最近活动摘要(一行)+ 建议标题;面板内 `a` 键或点击一键应用标题。设置 `dsh-tui.recapOnOpen`(默认开)开启时,打开/恢复会话自动在底部显示一条分隔线 + `回顾:` 摘要行,悬停可查看操作、点击展开,发送新消息后自动消失 |
303
+ | `/workspace` | `resume` / `rename <名称>` / `open <路径或URI>` | 管理工作区;`open` 支持绝对路径、file URI、插件 scheme |
304
+ | `/clear` | 无 | 清空当前会话视图(重置展开/选择状态) |
305
+ | `/compact` | 无 | 压缩会话历史(无可压缩内容时会提示) |
306
+ | `/export` | 无 | 导出会话为 Markdown 到工作目录 |
307
+ | `/btw` | `<问题>` | 侧问:单轮、无工具、不打断主回合、不写历史 |
308
+ | `/trace` | 无 | 打开轨迹场景(同 `Ctrl+T`) |
309
+ | `/rewind` | 无 | 回退选择器(同空输入双击 Esc 的时间回溯) |
310
+ | `/exit`(别名 `/quit` `/q`) | 无 | 退出 dsh-tui |
311
+
312
+ ### 3.2 状态与诊断
313
+
314
+ | 命令 | 参数 | 作用 |
315
+ |---|---|---|
316
+ | `/context` | 无 | 已加载上下文明细(指令/运行时上下文/技能/工具等) |
317
+ | `/status` | 无 | 模型+effort、工作/空闲、会话 id、目录+git 分支、token、缓存命中率、上下文百分比、会话标题 |
318
+ | `/cost` | 无 | token 用量 + 缓存命中率 + 本会话估算(并入子代理)与「主会话/子代理」拆解;非官方/未收录模型只显示 token 并标注未计价(**估算是参考,以平台账单为准**) |
319
+ | `/balance` | 无 | DeepSeek 官方账户余额(免费只读接口):摘要行 + hover 明细(同款本会话估算拆解:主会话/子代理/未计价),点击刷新、`×` 关闭 |
320
+ | `/config` | 无 | 配置来源:`cordis.patch.yml` 路径、启动方式、模型路由 |
321
+ | `/doctor` | 无 | 环境自检 |
322
+ | `/migrate` | `[agent] [--dry-run]` | 从其他编程代理(claude-code/codex/omp/zcode/grok-build)导入对话历史,子进程运行不卡界面,详见[会话迁移](migrate.md) |
323
+ | `/init` | 无 | 在工作目录创建 `AGENTS.md`(created / exists / failed 三态提示) |
324
+ | `/agents` | 无 | 本会话子代理列表 |
325
+ | `/jobs` | 无 | 后台任务面板:状态/运行时长/退出码实时跟踪,`↑/↓` 选择、`k` 停止;面板打开时 `Esc` **只关面板**不打断回合(想中断先关面板再 `Ctrl+C`) |
326
+ | `/settings` | 无 | 打开插件设置编辑器(命名空间读取/编辑) |
327
+ | `/setup` | 无 | 重跑首次引导向导(API Key / 语言主题 / 模型工作区 / 快捷键),与首次启动是同一个界面 |
328
+ | `/help` | 无 | 快捷键 + 命令帮助菜单(`?` 入口) |
329
+
330
+ ### 3.3 模型 / 显示
331
+
332
+ | 命令 | 参数 | 作用 |
333
+ |---|---|---|
334
+ | `/model` | 无 | 模型选择器;**切换 = fork 会话续聊**(历史保留、仅换路由;还没有人说过话的会话不记分支,保留首个 prompt 的自动标题),选择持久化到 `~/.dsh-tui/model.json` |
335
+ | `/effort` | `status` / `<id>` | 推理强度:无参滑杆(`←/→` 实时调整);`status` 当前档位;`<id>` 直接设定。持久化 `~/.dsh-tui/effort.json`;新会话起始档看 /settings 的 `effortDefault`(§5.3) |
336
+ | `/thinking` | 无 | 扩展思考显示开关(流式时思考逐条展开) |
337
+ | `/tokens` | 无 | 分三段报数,不再并列两个不同量:**本次请求**上传量(input + 缓存读 + 缓存写,harness 的四个桶互斥)、**会话累计**(未缓存输入 / 输出 / 缓存读 / 缓存写)、**上下文占用** |
338
+ | `/activity` | `frames <名>` / `status` | 工作状态行动画:无参选择器浏览,`frames <名>` 直接设置(含 `random`),默认 `moon8`。持久化 `~/.dsh-tui/working-activity.json` |
339
+ | `/preset` | `<id>` / `status` | Agent 预设切换:`standard` / `ptc`(旧 0.1.1 名 `code`)/ `minimal` / `cordis` / **梁神模式 `liangshen`**;**已开始的会话不可切换**。持久化 `~/.dsh-tui/agent-preset.json` |
340
+ | `/theme` | `<名字>` / `status` | 主题:无参选择器;`<名字>` 直接切换;`status` 当前主题(auto 时附 OSC 11 解析结果)。持久化 `~/.dsh-tui/theme.json` |
341
+ | `/color` | 无参 / `<名>` / `status` / `reset` | 会话强调色:无参打开调色板(`↑/↓` 选、`Enter` 应用);`<名>` 直设;`reset` 恢复默认。颜色 `red/orange/yellow/green/blue/purple/pink/cyan`,按会话保存 |
342
+ | `/lang` | `en` / `zh` / `status` | 界面语言热切换。优先级:`DSH_TUI_LANG` > profile 配置(旧版 settings.yaml 用户层 > cordis.yml)> 持久化 |
343
+ | `/vim` | 无 | **vim 编辑模式开关**(见 §2.4):输入框切到 vim 键位编辑,会话级、不持久化 |
344
+ | `/panel` | `toggle` / `focus` / `zoom` / `<面板 id>` | 侧栏面板:开关 / 聚焦 / 缩放 / 切换;三态与子命令见 §2.8 |
345
+
346
+ ### 3.4 账号 / 策略 / 扩展
347
+
348
+ | 命令 | 参数 | 作用 |
349
+ |---|---|---|
350
+ | `/provider` | 无 | 交互式管理模型提供方(添加 / 编辑 / 删除;标准 profile 的账号登录含 DSH 0.2.0-rc.1+ 的 DeepSeek,以及 ChatGPT/Codex / Claude / Grok;宿主 pi-ai 支持时还有 OpenAI 直连 / Meta Muse) |
351
+ | `/auth` | `status` / `login [provider]` / `logout <provider>` | 查看账号状态、登录或登出(DeepSeek 用 `deepseek-account`;pi-ai 订阅用 `openai-codex` / `anthropic` / `xai`,较新 pi-ai 另有 `openai` / `meta`) |
352
+ | `/login` | 无 | 凭证状态(来源、存储可写性、base URL;OAuth 模块挂载时另列账号状态) |
353
+ | `/logout` | 无 | 登出说明(env 来源需删环境变量并重启) |
354
+ | `/permission` | 无 / `<preset>` / `status` | 查看/切换权限预设与策略(无参打开选择器) |
355
+ | `/add-dir` | 无 | 文件策略范围说明(以工作目录为根) |
356
+ | `/hooks` | 无 | 占位:DSH hooks 未在组合中挂载时给出说明 |
357
+ | `/mcp` | 无 | MCP 连接状态(工具按 `mcp__服务器__工具` 分组);未配置时给出 `cordis.patch.yml` 插入示例 |
358
+ | `/skills` | 无 | 技能目录选择器(名称+来源+简述),Enter 将可直调技能以 `/name ` 填回输入行 |
359
+ | `/plugins` | `check <dsh-plugin.json 路径>` | 插件诊断:信任横幅 + host 描述符 + 授权矩阵 + 台账;`check` 校验清单文件并给兼容状态 |
360
+ | `/update` | 无 | 更新 TUI 并自动重启恢复会话(仅 `dsh --profile` 启动可用;回合运行中会拒绝) |
361
+ | `/terminal-setup` | 无 | 终端配置建议(Windows Terminal ≥110 列、粘贴键位) |
362
+
363
+ ### 3.5 技能
364
+
365
+ dsh-TUI 不预装通用技能;`/skills` 浏览 DSH 发现的技能,可直调技能以 `/name` 加入命令菜单(详见 §4.8)。
366
+
367
+ ### 3.6 占位命令
368
+
369
+ `/connect`:占位——DSH 暂无远程连接机制。
370
+
371
+ ### 3.7 注册表命令(来自 DSH 生态,随组合动态并入 `/` 菜单)
372
+
373
+ | 命令 | 作用 |
374
+ |---|---|
375
+ | `/plan` | `[off\|message]` 计划模式;`/plan off` 退出 |
376
+ | `/goal` | 设置/查看会话目标 |
377
+ | `/feedback` | 提交使用反馈 |
378
+ | `/permission` | 查看/切换 DSH `permissionPresets` registry 的预设(第三方预设按 registry 顺序显示) |
379
+
380
+ > 这些命令由 DSH 命令注册表实现,本仓库只做菜单并入、补全与分发。
381
+
382
+ ## 4. 会话工作流
383
+
384
+ ### 4.1 会话生命周期
385
+
386
+ | 操作 | 命令/键 | 要点 |
387
+ |---|---|---|
388
+ | 新建 | `/new` | 无二次确认——旧会话已持久化,随时可 `/resume` 找回;顺带清空 resume 标记 |
389
+ | 恢复 | `/resume`(同 `/home` `/agentview` `/bg` 与输入框行首 `⌸`) | 三合一**会话管理界面**:`←/→` 切栏、打字筛选、`Enter` 进入、`Ctrl+N` 新建、`Ctrl+X` 停后台会话、行内 ★/☆ 固定。切换只是**停放**,回合继续跑;被其他终端占用的会话标红进不去(详见 §2.7) |
390
+ | 重命名 | `/rename <标题>` | 立即改名并持久化(写入 session/title 事件,会话管理界面里能读回) |
391
+ | 压缩 | `/compact` | 手动触发 compaction;**回合运行中拒绝**;minimal preset 下不可用;压缩点以 Divider 摘要行呈现 |
392
+ | 导出 | `/export` | 从完整 session log 导出 Markdown(含 thinking 与工具调用分节),文件 `dsh-tui-export-<时间戳>.md` 落在当前会话 cwd |
393
+ | 清屏 | `/clear` | 只清视图,不动会话日志 |
394
+ | 停止 | 会话管理界面 `Ctrl+X` | 停止光标所在的**后台**会话;当前终端正在用的会话停不了(想退出整个 TUI 用 `/exit` 或双击 `Ctrl+C`) |
395
+ | 退出 | `/exit`(或 `/quit` `/q`) | 空闲 `Ctrl+C` 双击或 `Ctrl+D` 双击也可退出;工作中中断迟迟不收敛时再按 `Ctrl+C`/`Ctrl+D` 强制退出 |
396
+
397
+ 命令行恢复:`dsh-tui --resume`(最近会话)/ `dsh-tui --resume <id>`(指定会话)。
398
+ `-c` / `--continue` 等价。
399
+
400
+ ### 4.2 时间回溯 rewind(双击 Esc)
401
+
402
+ **空输入时连按两次 `Esc`**(或 `/rewind`),进入回退选择器:
403
+
404
+ 1. 选择器列出**你自己的消息**(最新在前),`↑/↓` + `Enter` 选中。
405
+ 2. 若模型正在工作:先取消回合并等落定(最长 30s)。
406
+ 3. 边界取该消息所属回合**开始之前**;**不能回退到第一条消息**。
407
+ 4. 系统 fork 新会话并回放历史到回退点,**原消息放回输入框**供修改重发。
408
+ 5. 回退分支留在 `/resume` 列表里,继续用当前模型路由 + 会话自己的 preset。
409
+
410
+ ### 4.3 消息投递语义(模型工作中)
411
+
412
+ 键位见 §2.1:
413
+ - `Enter` = **steer**(注入下一步边界,不中断)
414
+ - `Tab` = **follow-up**(排到回合后)
415
+ - `Ctrl+Enter` = **interrupt**(打断并发送)
416
+ - `Alt+Up` 取回最后一条未处理消息
417
+ - `↑` 召回到的消息若仍排在队列里,会一并把那条排队项撤回(同 `Alt+Up`,避免同一条发两遍);已被本轮取走时只提示、不撤回
418
+ - `Esc`(有 pending)中断并重投
419
+ - `/btw …` 侧问永不打断主回合
420
+
421
+ ### 4.4 侧问 /btw
422
+
423
+ `/btw <问题>`:复用当前上下文做**无工具、单轮**回答,**不写历史、不计 token**,主回合照常。
424
+ 面板 `↑/↓` 滚动 · `c` 复制 · `Esc` 关闭。
425
+
426
+ ### 4.5 轨迹场景(Ctrl+T / /trace)
427
+
428
+ 整屏查看会话全程时间线(不污染 scrollback);键位见 §2.7。
429
+
430
+ ### 4.6 模型切换与预设
431
+
432
+ - `/model`:选择器。**切换 = fork 会话续聊**(历史保留、仅换路由,旧会话留在 `/resume`);
433
+ 持久化 `~/.dsh-tui/model.json`。
434
+ - 回合运行中切换会被拒绝。
435
+ - `/preset` 可选:`standard`(默认全功能)、`ptc`、`minimal`(内核「极简模式」:只暴露一个持久 shell 工具,无 compaction、无计划模式;也因此没有压缩、工具结果不剪枝——长会话可能撞上下文上限,`/compact` 与问卷不可用,Help 与 `/` 补全会标注,进入该预设时提示一次)、
436
+ `cordis`、`liangshen`(梁神模式)。
437
+ **已产生对话的会话不能切换**(blank-only):选择只保存为下次 `/new` 的默认。
438
+ 这里的 preset 是**内核 Agent 预设**,决定模型能用哪些工具;界面上的 `/settings → 极简界面`(Minimal UI)与它无关。
439
+ - 会话模式用 `Shift+Tab` 循环:default(workspace-write + 审批)→ plan(read-only)→
440
+ full(danger-full-access)。
441
+ - 第三方权限预设按 registry 顺序排在末尾。
442
+ - **批准计划或 `/plan off` 之后,沙箱与审批策略回到进入计划模式之前的状态**。
443
+
444
+ ### 4.7 问卷与审批
445
+
446
+ 键位见 §2.7。要点:
447
+ - 问卷**最后一行是自由输入行**(直接打字连同选项标签一起提交)。
448
+ - 计划评审**批准必须无反馈文本**。
449
+ - 审批与问卷同时挂起时**审批优先**;后台会话发起的审批会标注 `来自后台会话 <会话 id 前 8 位>`。
450
+
451
+ ### 4.8 技能 / 注册表 / Goals-Todos
452
+
453
+ - `/skills` 浏览技能目录,可直调技能以 `/name` 加入命令菜单(dsh-TUI 不自带通用技能)。
454
+ - `/plan` `/goal` `/feedback` `/permission` 来自 DSH 注册表,随组合并入 `/` 菜单。
455
+ - **Goals/Todos 面板自动出现**:模型写入 goal/todo 时在输入框上方实时渲染(🎯 目标 + phase 徽章 + 树形 todo),
456
+ 无需操作;分栏开启时它迁到右栏的 `todo` 面板(见 §2.8)。
457
+
458
+ ### 4.9 MCP / Workspace / 其他
459
+
460
+ - `/mcp`:按服务器分组列出 `mcp__服务器__工具`;未配置时给出 `cordis.patch.yml` 插入示例。
461
+ - `/workspace`:`resume` / `rename <名>` / `open <路径|file:// URI>`(打开并新建会话)。
462
+ - `dsh-tui <路径>` 同样接受工作区目标。
463
+ - `/doctor` 自检:Node/平台、API key、模型路由、cwd、上下文窗口、会话存储、插件宿主。
464
+ - `/provider` 交互向导管理模型提供方:添加 / 编辑 / 删除。
465
+ - 标准 profile 的内置 OAuth 模块提供 **订阅账号登录**(ChatGPT/Codex / Claude / Grok;较新 pi-ai 另有 OpenAI 直连 / Meta Muse,免 API key);也可用 `/auth login <provider>`,`/auth logout <provider>` 删除保存的 OAuth 凭据。
466
+ - DSH 0.2.0-rc.1+ 的 DeepSeek 账号经宿主浏览器授权:`/auth login deepseek-account`,随后用 `/model` 选独立的 `deepseek-account` 路由;`/auth logout deepseek-account` 由宿主退登。它不修改 `deepseek-official` 的 API key。
467
+ - 非环境变量 API key 写入 `~/.dsh/.credentials.yaml`(0600),界面只显示 `••••••`;pi-ai 订阅 OAuth 凭据另存于 `$DSH_HOME/dsh-auth/credentials.json`(未设置 DSH_HOME 时为 `~/.dsh/dsh-auth/credentials.json`)。DeepSeek 账号授权记录由宿主凭据服务持有,不写入此 OAuth 文件。
468
+ - 自定义端点需填路由名、API key、baseURL 与协议(`openai-completions` / `openai-responses` /
469
+ `anthropic-messages`)。
470
+ - 添加/编辑后运行 `/model` 切换到新路由。
471
+ - `/init` 创建 AGENTS.md;`/agents` 子代理列表;`/login` `/logout` 凭证管理。
472
+ - `/permission` `/add-dir` 权限说明;`/hooks` `/vim` `/connect` 为占位。
473
+
474
+ ## 5. 界面与状态栏
475
+
476
+ 空会话顶部是鲸鱼 Logo 区(随对话滚动消失):
477
+
478
+ - **开场动画**(约 3.4 秒,每次启动三选一,`/deepseek` 彩蛋重掷):经典 / 爱心 / 睡觉。
479
+ - **欢迎期闲置动画**(`whaleIdle`,默认开):摆鱼鳍、眨眼、拍尾巴,空闲 10 秒入睡冒 Z;**点击冒爱心唤醒**。
480
+ - **女仆娘立绘**(`whaleGirl`,默认关):把标题的像素鲸鱼换成作者绘制的女仆娘——**最优先**走终端图像协议(Kitty/Sixel)的真图渲染;终端不支持(如内联模式)时回落到字符画版女仆娘。**点她一下**会换成「高兴鲸娘」几秒再自动回安静版;开始第一个任务后定格、不再响应点击。
481
+ - 开始第一个 agent 任务后定格为静态帧(`/new` 重新进入欢迎期)。
482
+ - 鲸鱼右侧文字列:`✦ dsh-TUI v版本号` → 块体大字 `DEEPSEEK / HARNESS`(加粗字形,两行等宽、中间空一行)→
483
+ 当前模型 + effort → 工作目录 → 启动提示行。
484
+ - 大字字面按**本地日期**轮换(8 款:加粗 / 方角实心 / 半立体 / 宽体 / 点阵灰度 / 镂空模板 / 细笔 / 方板):
485
+ 同一天内恒定、隔天换一款,与启动时刻无关。想固定看某一款,就在 `/settings → 开屏大字字体`
486
+ (`splashFont`)选它——选具体某款即 pin 住,选回 `按天轮换`(默认)恢复轮换;改完立即生效。
487
+ - 版本不在验证范围时多出 **⚠ 版本漂移警告**(附对齐命令)。
488
+ - 鲸鱼下方居中欢迎语:`探索未至之境!`
489
+ - 终端变窄按**内容区列数**逐档降级:**≥ 97 列**鲸鱼 + 大字;**55–96 列**只留大字(先撤鲸鱼);
490
+ **40–54 列**只留鲸鱼;**< 40 列**退成一行 `DeepSeek Harness` 纯文字。门槛随字面宽度浮动
491
+ (97 列是 6 列字身那几款的数;最宽的 `wide` 要 113 列,5 列的 `classic`/`slab` 96 列就够)。
492
+ - 像素鲸鱼原图与闲置行为移植自 [dsh-ui-whale](https://github.com/lhh010/dsh-ui-whale)(作者
493
+ [@lhh010](https://github.com/lhh010)),特此致谢。
494
+
495
+ **超长单行折叠**(默认开)
496
+
497
+ - **单行超过 1000 字符**的文本折叠为 `… 已折叠 N 字符(点击或 ctrl+o 展开)` 标记。
498
+ - 展开:**鼠标点这一行**(工具卡点卡面)再点收起;键盘用 `Ctrl+O`。
499
+ - 思考(thinking)行不折叠。
500
+
501
+ ### 5.2 底部状态栏(输入框下方三行)
502
+
503
+ **Row 1 — 上下文分段进度条**(`/settings → statusBar.contextBar`,默认开)
504
+
505
+ - 按内容类型分段着色(system / prompt / assistant / thinking / tools)。
506
+ - 分段 token 数是**本地估算**(CJK/全角按 ~1.4 字符/token、ASCII 按 ~4 字符/token、其它脚本按 ~2),
507
+ 只描述这条由什么构成,**不参与占用总量**——占用以 ctx 字段/读数为准(见下)。
508
+ - 条上唯一文字是最右缘读数 `13k/64k 19.5%`(窄屏只显示 `19.5%`)。
509
+ - 读数按占用率变色:<80% 灰蓝,**≥80% 琥珀、≥95% 红**。
510
+ - 悬停整条弹出图例:色块 + 名称 + token 数(窄屏自动改用短名)。
511
+
512
+ **Row 2 — 状态字段行**(每个字段独立开关,见 `/settings`)
513
+ - 左组:模型 → TPS → thinking → mode → ctx(**上下文占用** `19.5% (13k/64k)`:与分段条、工作线压力前缀、`/tokens`、`/status` 和上下文告警**同读一个值**,来源是 harness 自带的 `contextPressure` 投影——`projectedTokens ?? pressureTokens`,即「下一次请求」的占用,压缩与被拒请求都会立刻反映,不再等一次成功请求;投影缺席的裸 `cordis.yml` 组合回退到上次请求的计费用量)→ cache 缓存命中率 → tokens(`1.2k→340` 输入→输出)→
514
+ cost(`≈¥0.05 谷`,**本会话估算**:包含子代理用量,按各自模型 × 峰值/空闲 × 缓存分项计价;
515
+ hover 拆「主会话 ¥ / 子代理 ¥ / 未计价 N tok」;非官方/未收录模型只显示 token 并标注未计价;
516
+ **估算是参考,以平台账单为准**)
517
+ - 右组:git 分支 → 工作目录(紧凑模式仅 basename)→ 会话标题 → 短会话 ID(`#` + 前 8 位,方便 `--resume` 定位)
518
+ - `statusBar.compact` 时左右合并为单行。
519
+ - 默认开:compact、model、thinking、cwd、contextUsage、cache、cost、goal、contextBar。
520
+ - 默认关:tokens、tps、gitBranch、sessionTitle、sessionId、mode、activity、trajectory。
521
+
522
+ **Row 3 — 提示 / 工作活动 + 迷你轨迹条**
523
+ - 空闲显示 `? for shortcuts`、运行中 `esc to interrupt`、选择中 `esc to return to input`。
524
+ - 空闲还显示 working-activity 动画帧(`statusBar.activity` 开),上下文 ≥80% 琥珀、≥95% 红(与 ctx 字段同一占用读数)。
525
+ - 右侧**迷你轨迹条 MiniWake**(`statusBar.trajectory`,默认关):会话投影为密度字形,颜色区分通道,失败列染红;
526
+ 窄屏降格/隐藏。
527
+
528
+ **TPS 仪表**(`statusBar.tps`,默认关):流式中显示实时 gauge + `N tps`,回合后显示 sparkline;
529
+ 速度 **≥50 绿 / ≥20 黄 / <20 红**。
530
+
531
+ ### 5.3 /settings 设置编辑器
532
+
533
+ `/settings` 打开插件设置编辑器;**改动自动保存**,`Esc` 直接退出。
534
+ dsh-tui 自身区块在 0.1.7 写入当前 profile 的 `cordis.patch.yml`,旧版写入 settings.yaml 用户层。多数设置实时生效;全屏和图片预览开关需 `/restart`。
535
+ 下表为常用项,完整列表见 /settings 屏。多数主题(**外观与布局** / **开屏与吉祥物** / **对话与输入** / **图表与图片**)的字段直接平铺在根页的小标题下,改起来不用进出子页;只有真正成块的域——**公式设置** / **底栏设置** / **侧栏** / **快捷键**——保留子页,根页一行入口点进去:
536
+
537
+ | 字段 | 说明 |
538
+ |---|---|
539
+ | lang | 界面语言 zh/en(DSH_TUI_LANG 钉死时不可改) |
540
+ | fullscreen | 全屏模式(默认开);保存后用 `/restart` 生效 |
541
+ | minimal | 极简界面 Minimal UI(默认关):隐藏开屏头部、emoji 状态符与装饰性配色,底栏只留模型与目录;代码高亮与工具配色保留。**这是界面开关**,对模型能力没有任何影响——别和 `/preset` 的内核「极简模式」预设搞混 |
542
+ | terminalImages | 终端图片预览(默认开,需终端支持);保存后用 `/restart` 生效。关闭后只显示文字信息并跳过预览解码,不影响向模型发送图片 |
543
+ | imageBacking | 图片底色(默认 `transparent`,与上一条同在**图表与图片**主题下):聊天照片/插图背后垫什么。透明:只画图片自己的像素,抗锯齿边缘和透明圆角透出终端底色或壁纸;终端底色:先合成到终端背景色,柔和边缘更平滑。立即生效 |
544
+ | whale | 开屏头部像素鲸鱼娘(默认开);每次启动随机三选一开场动画(经典/爱心/睡觉),`/deepseek` 彩蛋重掷 |
545
+ | whaleIdle | 鲸鱼娘欢迎期闲置动画(默认开):定格后摆鱼鳍/拍尾巴/眨眼,空闲 10 秒入睡冒 Z;点击冒爱心。开始第一个任务后定格 |
546
+ | splashFont | 开屏大字字体:按天轮换(默认,随本地日期换款)/ 加粗 / 方角实心 / 半立体 / 宽体 / 点阵灰度 / 镂空模板 / 细笔 / 方板。选某一款即固定那一款,选回「按天轮换」恢复。立即生效 |
547
+ | whaleGirl | 女仆娘立绘(默认关):标题像素鲸鱼换成作者绘制的女仆娘**真图**(Kitty/Sixel 图像协议);不支持时回落像素鲸鱼 |
548
+ | diffLayout | Edit/Write diff 布局:auto(≥110 列双栏)/ split / unified |
549
+ | thinkingFold | 思考块:preview(流式 2-3 行预览 + 落定折叠)/ full(展开到轮末) |
550
+ | jobGroupFold | 连续的后台任务卡:auto(默认,≥2 张成组;整组落定且 ≥3 张时折叠成汇总行)/ always(≥2 张立即折叠,含在跑的任务)/ never(从不自动折叠,每张卡都留着)。组头一行汇总状态与合计时长,点组头或 Ctrl+O 展开 |
551
+ | effortDefault | 默认推理强度:auto / off / low / high / max。新会话的起始档位(细节见下) |
552
+ | smoothStreaming | 流式平滑输出(默认开):回复/思考/工具卡正文按 ~30fps 匀速揭示;回放/历史完整直出 |
553
+ | toolBackground | 工具卡背景强调:none / subtle / strong |
554
+ | mermaidDiagrams | Mermaid 图表(默认开):回复中的 ```` ```mermaid ```` 代码块画成字符图,流式期间逐步成形;比终端宽或类型不支持的图保留源码并注明所需列数。立即生效 |
555
+ | mathRendering | LaTeX 公式(默认 `auto`,在 `/settings` 的**公式设置**子页里):回复中的 `$…$`、`\(…\)` 行内公式,`$$…$$`、`\[…\]` 与单独成行的 `\begin{align}` 等显示环境块级公式的显示方式。`auto` 用当前最好的渲染方式(目前是 Unicode 文本,块级公式里的分数与上下限竖排),`image` 在支持图形的终端里用 MathJax 把公式排版成图片——Kitty 图形协议(Kitty、Ghostty、WezTerm、iTerm2 等)或 Sixel(Windows Terminal 1.22+、xterm、foot、WezTerm)(颜色跟随主题文字色;块级公式最多 16 行,行内公式在能压成一行且不糊时也显示为一行高的图片;流式中的公式、暗色的思考区、不支持图形的终端、压成一行太小以及任何渲染失败都退回 Unicode),`unicode` 固定用 Unicode 文本,`source` 保留原始 TeX。不支持、仍在流式输出或比终端宽的公式保留源码(过宽的块级公式先退成单行)。价格(`$5`)、shell 变量(`$HOME`)与代码里的 `$` 不受影响。旧的 `latexMath: false` 仍等同 `source`。**点击公式图片**打开预览卡:按 2 倍单元格尺寸重排,可 100%–800% 缩放、拖拽平移,`Esc` 或点击卡片外关闭,标题即该公式的 TeX。Sixel 下公式**不带衬底**(只画笔画),终端底色或壁纸会透出来。标题立绘这类自带透明留白的插图同样不带衬底(`whaleGirl` 的真图就是这个行为);照片、截图与卡片内的图像仍合成到底色上,因为 Sixel 表达不了软 alpha。立即生效 |
556
+ | mathImageScale | 公式图片大小(默认 `auto`,与上一条同在**公式设置**子页):配合 LaTeX 公式的「图片」使用——`auto` 与正文同尺寸,`large` / `xlarge` 把**块级**公式排得更大;终端图片是按设备像素 1:1 画的,所以"更大"就等于"每个笔画更多像素",是唯一的清晰度杠杆。行内公式不受影响(只能占一行)。立即生效 |
557
+ | scrollGutter | 转录边栏:timeline(轮次时间线,默认)/ scrollbar(比例滚动条)/ hidden。立即生效 |
558
+ | pageMargin | 页边距:整屏相对终端四边向里缩。预设 none / slim / normal(默认)/ roomy,或自定义 `NxM`(细节见下)。立即生效 |
559
+ | foldTerminalCommand | 折叠终端命令(默认关):终端卡(Bash/PowerShell)多行命令折成首行 + 计数;`Ctrl+O` 或点击卡片展开 |
560
+ | expandEditor | 全屏草稿编辑(默认开):输入行尾 `⛶` 或 `Ctrl+Shift+E` 展开成整屏编辑器;`Ctrl+Enter` 发送、`Esc` 收起(草稿还在);关掉后入口不显示 |
561
+ | statusBar.* | 上表全部状态栏开关(compact/model/thinking/cwd/contextUsage/cache/tokens/cost/tps/gitBranch/sessionTitle/sessionId/mode/contextBar/activity/trajectory;statusBar.sessionId 是底栏显示开关,与 cordis 的启动 sessionId 无关) |
562
+
563
+ **effortDefault**:模型没有该档时自动就近降级并弹提示;优先级 settings 用户层 > cordis `effort` >
564
+ 上次 `/effort`(effort.json)> 模型默认。
565
+
566
+ **scrollGutter**:scrollbar 轨道可直接拖;`Shift`/`Alt`/`Ctrl`+拖动仍是文字选择。
567
+
568
+ **pageMargin**:自定义 `NxM` = 左右 `N` 列、上下 `M` 行(上限 8x4);只填 `N` 则上下 1 行。
569
+
570
+ 未声明 TUI 区块的命名空间以只读形式列出,需手工编辑 profile 配置(旧版为 `~/.dsh/settings.yaml`)。
571
+ 以下设置**不在 /settings 内**,改 `$DSH_HOME/profiles/dsh-tui/cordis.patch.yml`:
572
+ provider / model / cwd / preset / workspace / sessionId / modes,
573
+ 以及启动级 `effort` 键。
574
+
575
+ ### 5.4 终端要求
576
+
577
+ - 必须交互 TTY;推荐 Windows Terminal(≥110 列、等宽、TrueColor)。
578
+ - macOS 的 ⌘ 修饰键需要扩展键盘协议(iTerm2 / kitty / WezTerm / ghostty / tmux)。
579
+ - Terminal.app 用 Ctrl。
580
+ - VS Code:装 companion 扩展 `dsh-tui-vscode`(拿到 **IDE 选区通道**,需 ≥ 0.7.0)。
581
+ - 或直接在集成终端运行 `dsh-tui`。
582
+ - **图片**:缩略图与大图预览需要 Kitty graphics 或 Sixel(自动探测,Kitty 优先)。
583
+ - `DSH_TUI_IMAGE_PROTOCOL=auto|kitty|sixel|none` 覆盖协议。
584
+ - `DSH_TUI_DISABLE_TERMINAL_IMAGES=1` 强制关闭。
585
+ - tmux/screen、非 TTY、无障碍模式下只显示文字,不影响把图片发给模型。
586
+ - **粘贴剪贴板图片(Ctrl+V / Alt+V)**:Linux 需要 `wl-paste`(wl-clipboard)、`xclip` 或 `xsel` 之一。
587
+ - WSL:WSLg 把 Windows 位图暴露为 `image/bmp`,dsh-tui 会转成 PNG 再附加。
588
+ - 上面的工具读不到时,回退到 `powershell.exe`(需要 Windows interop)读取 Windows 剪贴板,
589
+ 支持截图、资源管理器复制的文件与文本。
590
+ - 环境自检:`/doctor`。
591
+
592
+ ### 5.5 安全模式与救援 profile(`dsh-tui safe`)
593
+
594
+ dsh 意外退出时,安全模式给出**只读**的环境诊断、profile 插件清单和修复指引。
595
+
596
+ - **两个入口**:手动跑 `dsh-tui safe`;或 dsh 非零退出后按屏幕提示进入(非交互环境只打一行提示)。
597
+ - **只读范围**:诊断/清单/指引都不改状态。
598
+ - 例外:重试正常启动、创建/复用空白救援 profile(只写 `$DSH_HOME/profiles/dsh-tui-safe/`)。
599
+ - **救援 profile 先要证明干净**(无第三方插件、无 `cordis.patch.yml` 条目),证不出就拒绝并打印处理方法。
600
+ - **非交互**:`dsh-tui safe --rescue` 只报告结论(就绪退出 0,被拒绝退出 1)。
601
+ - **修复命令要自己执行**(安全模式只列出):
602
+ - `dsh plugin --profile dsh-tui remove <第三方插件>` 移除可疑插件。
603
+ - `dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tui@<版本>` 重装对齐。
604
+ - `dsh-tui doctor` 环境诊断。
605
+
606
+ ## 6. 模型 / 预设 / 主题 / 语言
607
+
608
+ | 项 | 命令 | 说明 |
609
+ |---|---|---|
610
+ | 模型 | `/model` | 选择器;**切换 = fork 会话续聊**(历史保留、仅换路由);持久化 `~/.dsh-tui/model.json`,重启与 `/new` 沿用。从没选过的话,用内置默认模型(当前为 `deepseek-flash`) |
611
+ | 推理强度 | `/effort` | 滑杆(←/→ 实时)或 `/effort <id>`;`/effort status` 看当前;新会话默认档在 /settings → 默认推理强度 |
612
+ | Agent 预设 | `/preset` | `standard` / `ptc`(旧 0.1.1 名 `code`)/ `minimal` / `cordis` / **梁神模式 `liangshen`**;**已开始会话不可切换** |
613
+ | 主题 | `/theme` | `auto`(OSC 11 跟随终端背景)/ `light` / `dark` / `dark-ansi`;`/theme <名>` 直接切;`/theme status` 看解析结果 |
614
+ | 自定义主题 | 手动 | `~/.dsh-tui/themes/<名>.json`,`{base, colors}` 格式,选中即热切换;命名为 `auto` 会被内置遮蔽 |
615
+ | 语言 | `/lang` | `en` / `zh` 热切换;优先级 `DSH_TUI_LANG` > profile 配置(旧版 settings.yaml 用户层 > cordis.yml)> 持久化 |
616
+ | 状态行动画 | `/activity` | 选择器或 `/activity frames <名>`;默认 `moon8`,`random` 随机 |
617
+
618
+ **主题优先级**:`DSH_TUI_THEME` > `~/.dsh-tui/theme.json` > OSC 11 终端背景检测 > dark 回退。
619
+
620
+ **~/.dsh-tui/ 偏好文件**(均 best-effort,坏文件回退默认):
621
+
622
+ - `theme.json`、`model.json`、`agent-preset.json`、`effort.json`、`working-activity.json`、`lang.json`、
623
+ `trajectory.json`、`resume.txt` / `last-used.json`、`themes/<名>.json`
624
+
625
+ **常用环境变量**:
626
+
627
+ - `DSH_TUI_LANG`、`DSH_TUI_THEME`、`DSH_TUI_PRESET`、`DSH_TUI_PERSONA`
628
+ - `DSH_TUI_DISABLE_MOUSE`、`DSH_TUI_DISABLE_TERMINAL_IMAGES`、`DSH_TUI_IMAGE_PROTOCOL`、
629
+ `DSH_TUI_ACCESSIBILITY`(无障碍:关动画/图形预览)
630
+ - `DSH_TUI_RESUME_SESSION`、`DSH_TUI_WORKSPACE_TARGET`、`DSH_TUI_SESSION_ROOT`、`DSH_TUI_DEBUG`、
631
+ `DSH_TUI_RENDER_LOG`(帧取证)
632
+ - `DEEPSEEK_API_KEY`、`DEEPSEEK_BASE_URL`、`VISUAL`/`EDITOR`(`Ctrl+G` 外部编辑器)、
633
+ `DSH_PERMISSION_MODE`
634
+
635
+ ## 7. 常用技巧
636
+
637
+ **上手**
638
+
639
+ 1. `?` 看快捷键、`/` 看命令,两者都支持 Tab 补全。
640
+ 2. 不确定环境对不对?先 `/doctor`;想看会话全貌用 `/status`。
641
+ 3. 中英界面 `/lang en|zh`,即时生效并持久化。
642
+
643
+ **效率**
644
+
645
+ 4. 模型工作中三种投递:`Enter` 注入下一步、`Tab` 排队、`Ctrl+Enter` 打断并发送。
646
+ 5. `Alt+Up` 取回最后一条未处理消息改完重发,不用重打。
647
+ 6. 想快速问又不打断主回合、不留历史:`/btw <问题>`。
648
+ 7. 打错了想重来:**空输入双击 `Esc` 时间回溯**(或 `/rewind`),改完重发。
649
+ 8. `@` 在消息任意位置补全文件,`@src/a.ts#L12-14` 精确引用行区间。
650
+ 9. `Ctrl+A` 子代理面板:`Enter` 看详情、`X` 中断运行中的子代理。
651
+ 10. `Ctrl+O` 展开/收起详情;`Ctrl+T` 看轨迹(`[`/`]` 跳失败点、`/` 字段查询)。
652
+
653
+ **排障**
654
+
655
+ 11. 上下文压力 ≥80% 变琥珀、≥95% 转红——该 `/compact` 了(minimal 预设不可用)。
656
+ 12. 会话管理界面(`/resume`、`/home`、`/agentview`、`/bg` 或输入框行首 `⌸`):
657
+ 打字筛选、`★` 固定、`Ctrl+X` 停后台会话;切换只是**停放**。
658
+ 13. 回合运行中 `/compact`、`/model`、`/restart` 会被拒绝——先 `Ctrl+C` 或等回合结束。
659
+ 14. `/model` 切换 = fork 续聊(历史保留),持久化后重启与 `/new` 沿用。
660
+
661
+ **问手册**
662
+
663
+ 15. 不确定某个功能怎么用,**直接问会话里的 AI**:这份手册随包发布,回答会给出处;
664
+ 想明确指定走手册,可以打 `/dsh-tui-guide <问题>`。手册正文只在被问到时才读进
665
+ 上下文,平时不占额度。(绕过 `dst`/`dsh-tui` 启动器、直接跑
666
+ `dsh --profile dsh-tui` 时不带手册。)