我给 DeepSeek Harness 加了五种性格:桃濑日和现在真的会陪你写代码了
一个任务跑到两分钟时,温柔性格的桃濑日和会说「这个任务有点难,但我会一点一点做完的」;换成傲娇,她会嘴硬地回一句「还没好……哼,我可不打算认输」。任务完成后,台词、表情和动作也会跟着性格一起变化。
她不再只是待在右下角、跟着鼠标转头的 Live2D 角色了。
dsh-hiyori-web-ui 是我为 DeepSeek Harness Web 做的常驻插件。它给 DSH 换上一套暖色界面,让 Live2D 原创角色桃濑日和住进工作区,并根据任务加载、完成、出错、长时间运行和会话切换等状态给出反馈。

固定台词很可靠,但角色很快就会被看穿
第一版桃濑日和使用的是一张本地规则表。任务开始说什么、完成说什么、出错说什么,全都提前写好,再按照事件优先级和冷却时间挑选。
这个方案有几个很实际的优点:响应快,不依赖网络,不需要 API Key,也不会为了说一句话去读取用户的工作内容。即使 DeepSeek 服务不可用,她仍然可以正常回应。
但用久了,问题也很明显。角色虽然会动,却像拿着固定题库。多写几组台词只能延缓重复,不能让不同性格真正产生区别。
我不想把解决办法简单地变成“每次都让大模型自由发挥”。那会把一个稳定的小功能变成网络请求的附属品,也很容易为了所谓的上下文感,顺手把不该发送的对话内容一起带出去。
所以这次改动的目标不是让桃濑日和知道得更多,而是让她用很少的信息,把话说得更像自己。
五种性格改变的不只是自我介绍
现在可以在设置里切换五种性格:温柔、傲娇、乖巧、元气、慵懒。
它们不是五套名称不同的台词包。性格会同时影响本地台词、常驻表情、待机动作池,以及启用 AI 台词后使用的表达约束。
比如同样是任务完成:
- 温柔会说:「我完成啦,谢谢你的信任~」
- 傲娇会说:「才、才不是特意做给你看的,只是顺手而已!」
- 元气会直接邀功:「搞定搞定!我超厉害的,快夸夸我!」
任务出错时,角色不会播放成功动作;长任务到了 20 秒、1 分钟、2 分钟、4 分钟和更后面的阶段,也会换一组符合当前性格的进度反馈。连续完成 3、5、10 次,或者从 15 次开始每逢 5 次,还会触发逐层变化的连胜台词。
这些状态不是只出现在气泡里。任务完成、出错、加载、连胜和长任务都有对应的动作与表情,事件反馈结束后,再回到当前性格的常态。

AI 台词是可选增强,本地规则才是底座
在设置中填入 DeepSeek API Key 后,桃濑日和可以请求模型生成一句更有变化的台词。不填 Key 时,所有角色互动仍然使用内置台词,功能不会缺一半。
实际链路可以简化成下面这样:
当事件发生时,台词引擎会先保留一条可以立即使用的本地台词。如果启用了 AI 台词,插件再把当前性格、事件说明、有限的状态变量、本地口吻示例和角色自己最近说过的话整理成提示词,请模型生成一句新表达。
模型请求有 8 秒超时。请求失败、被新事件打断、返回异常,或者根本没有配置 Key 时,界面直接回到已经准备好的本地台词。网络波动不会让角色突然失语,高优先级的新事件也不会被一条姗姗来迟的模型回复覆盖。
我更喜欢这个顺序:规则负责可靠,模型负责变化。两者不是互相替代,而是各做自己擅长的事。
陪伴感不应该靠读取对话正文来换
让一个角色根据任务状态回应,很容易让人担心另一个问题:她到底看到了多少?
目前插件不读取提示词、回复正文、错误详情或文件内容,也不发送遥测。默认的本地台词完全在本机运行,不会请求 DeepSeek。
启用 AI 台词后,发送的是为角色说话组装的提示词,其中包含事件类型、所选性格、连胜次数或耗时阶段等有限状态,以及本地口吻示例和角色自己的近期台词。这里没有用户对话正文,也没有代码内容。近期台词的用途只是减少角色重复自己刚说过的话。
API Key 不写进浏览器端配置,而是交给 DSH 服务端的凭据机制,保存在 $DSH_HOME/.credentials.yaml。浏览器侧只会看到是否已经配置以及脱敏后的显示值。
这并不意味着启用 AI 后“没有任何数据离开本机”。生成台词所需的提示词仍然会发往 DeepSeek。边界只是被刻意收窄到角色状态和表达需要,而不是工作内容。
从临时定义到真正的 DSH 常驻插件
第一版需要把生成出的 Host 和 Client 代码手动填进动态插件,再执行定义与运行。这个流程能工作,但 DSH 一重启就得再来一次。
现在项目已经做成 web profile 的常驻插件。安装一次后,它会随 dsh web 加载,重启后仍然保留。
环境需要 Node.js 20+、npm、pnpm,以及可以正常运行的 DeepSeek Harness。优先从 GitHub 官方仓库获取:
git clone https://github.com/Shmilyol/dsh-hiyori-web-ui.git
如果 GitHub 访问受限,也可以使用 Gitee 国内镜像:
git clone https://gitee.com/wu-hao-ovo/dsh-hiyori-web-ui.git
两个仓库使用相同的项目名称,克隆完成后的安装步骤一致:
cd dsh-hiyori-web-ui
npm install
npm run setup:live2d
npx @deepseek-ai/dsh plugin --profile web add .
npx @deepseek-ai/dsh web
仓库已经包含预构建的 Hiyori Pro 和 Cubism 运行资源。setup:live2d 会校验这些资源并生成插件包,不会临时下载 Live2D SDK。
插件按安装时的绝对路径读取角色资源,所以仓库不能在安装后随手删除。需要移动目录时,重新运行 npm run setup:live2d,再执行一次 plugin --profile web add . 即可。

她是工作伙伴,不是另一个编码 Agent
桃濑日和知道任务正在运行、已经完成还是遇到错误,也能知道当前是第几次连续完成、长任务走到了哪个时间阶段。
但她不知道你正在改哪个函数,也不会读完对话后跑来评价技术方案。这是目前明确保留的限制。
如果你想要的是一个能理解完整上下文、主动参与编码决策的第二 Agent,这个插件并不适合。它负责的是状态反馈和陪伴:在等待任务时告诉你她还在做,完成时给一个有性格的回应,出错时别用成功动作庆祝。
边界收窄之后,很多体验反而更容易做好。台词可以失败后回退,动作可以严格跟随状态,隐私说明也能落到具体字段,而不是一句含糊的“我们重视你的隐私”。

下一步,想听听真实使用时哪里还会冷场
我最初只是想给冷冰冰的 AI 工作台加一个暖色角落。做到第二版后,关注点已经从“角色能不能显示”变成了“她在什么时机回应,才不会打扰你,又真的像在陪你工作”。
如果你也在使用 DeepSeek Harness,可以安装后试着切换几种性格,看看长任务、连续完成和出错时的反馈是否自然。哪些状态还显得冷场,哪种台词出现得太频繁,都欢迎直接提 issue。
项目地址:
- GitHub 官方仓库:https://github.com/Shmilyol/dsh-hiyori-web-ui
- Gitee 国内镜像:https://gitee.com/wu-hao-ovo/dsh-hiyori-web-ui
如果这个小插件让你的工作台多了一点温度,也欢迎点个 Star。它会比一句泛泛的“做得不错”,更具体地告诉我这个方向值得继续折腾。
更多推荐

所有评论(0)