YJLTF/dsh-eyebrain--packages-dsh-eyebrain-client ↗★ 1
dsh-eyebrain-client
dsh-eyebrain 的 dsh Web 客户端插件:插件设置卡片(识图模型 / 思考档位 / 接管清单)+ composer 工具行思考强度 chip(会话级覆盖)。 是dsh-eyebrain的配套前端,适合需要可视化调节思考强度的用户。
インストール
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:YJLTF/dsh-eyebrain#6598e911a4b9955a23171f937165364106e650f5&path:packages/dsh-eyebrain-clientドキュメント
README 全文を読む ↗dsh-eyebrain-client
dsh-eyebrain 的 dsh Web 客户端插件(React):插件设置卡片 + composer 工具行思考强度 chip。
- 设置卡片(设置 → 插件 → dsh-eyebrain):识图提供方增删改(接口地址 / 模型 ID / API Key 引用 / 图片精度 / max_tokens / 默认提问模板)、识图总开关、全局思考档位、端点接管清单。视觉对齐官方 PluginCard(
--dsw-alias-*设计令牌 + primitivesSwitch,明暗主题自动跟随)。 - 思考强度 chip(对话输入框工具行,
conversation.input.left席位、「完全权限」旁):点击弹出官方Menu(向上展开)四档选择,写入当前会话覆盖(sessionOverrides[sessionId]),下一轮请求生效;有覆盖时标注「会话」徽标,菜单含「清除会话覆盖,恢复全局」。
实现契约(对齐官方客户端插件)
- 本包声明
dsh.bundle(自挂载 patch:把自己 mount 成一个 cordis 层)。dsh-client-modules 只扫描已激活层中声明dsh.client的包并将其浏览器入口编入window.__DSH_BOOT__,因此该声明是设置卡片与思考 pill 被 Web 加载的前提;dsh plugin add也因此能自动激活本包(无 "declares no dsh.bundle" 告警)。 - 产物
lib/client.js为window.__ModuleLoader__.load({ id, factory })工厂格式(与 dsh-client-ui-settings-plugins 一致),react 经工厂 require 注入。 - 模块级
inject必须声明 apply 访问的全部服务:['slots', 'settingsScope']。dsh 内置 cordis 对插件上下文有严格守卫,未声明的服务属性访问直接抛cannot get property "..." without inject,插件 fiber 进入 failed(web boot 报「entry did not activate」)。package.json里dsh.client.inject则是浏览器模块图的依赖包列表(本包只 require react 种子模块,保持[]),两者不是一回事。 - 读写走官方 settingsScope.bind 契约(与 dsh-client-ui-settings 的卡片同构):apply 期间
ctx.settingsScope.bind({ namespace })得到 bound scope;读scope.getSnapshot()({status:'loading'|'ready'|'unavailable', value, revision, writable})+scope.subscribe;写scope.set(field, value)——revision 乐观并发、冲突恢复、镜像回填(mirror.acceptView)全部由 scope 托管,写完快照立即可见。不直接访问ctx.remote(scope 经提供方 fiber 写入)。 - 提交时读 scope 最新快照合并,不使用组件闭包里的 doc 构造整段写入,避免连续编辑时基于过期状态互相覆盖;文本字段失焦/回车提交,pill/勾选/下拉即时提交。
- 卡片结构复刻官方 PluginCard:`` 根 + 折叠头按钮(
aria-expanded,标题+描述+chevron)+ 展开时才渲染 body;命名空间unavailable时整卡不渲染(官方同款语义)。折叠箭头用@deepseek-ai/dsh-client-ui-primitives的IconChevronDownOutline14(运行时种子模块,缺失退化为文本)。 - 样式经
ensureStyles()注入一条共享 ``(官方data-plugin-css机制同款),全部使用--dsw-alias-*/--dsw-specific-*设计令牌;组件视觉取材官方 primitives(Menu/Switch/ 图标),单项缺失时逐项退化(Menu→简易弹层、Switch→checkbox、图标→文本)。 - 插槽:
settings.plugin.item(按命名空间 key 挂卡片)、conversation.input.left(composer 工具行左侧官方席位,kind:'list'/scope:'session';cell 组件经 standard props 或inject(sessionId)拿到当前会话,仅会话内渲染。曾用的conversation.input.dock是输入卡上方的整行席位,视觉突兀,已弃用)。
设置数据由后台主包 dsh-eyebrain 注册的 settings 命名空间承载;本包不注册命名空间,请与主包一同安装。
安装
pnpm install && pnpm -r run build # 或直接使用仓库已提交的 lib/
dsh plugin --profile web add /path/to/packages/dsh-eyebrain-client # 与主包一同挂进 web profile
dsh web
插件必须挂进 web profile(
dsh web即--profile web):挂在 default 等 其他 profile 时 Web 宿主与浏览器 roster 都看不到,设置卡片会按官方「命名空间 不可用」语义整卡不渲染。
开发
pnpm run build # tsup 双产物:lib/index.js(ESM)+ lib/client.js(工厂壳,build 脚本改名自 .cjs)
pnpm run typecheck # tsc --noEmit
License
MIT