dsh-at-file
FSMargoo/dsh-at-fileCodex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
给 DSH 的 agent 穿上主人钦定的人设:多套人格随心换,全局或按工作区生效,内置人设库、总开关、余额预警与没电模式(80 句随机话术)。文件即配置、保存即生效、零依赖。
给 DSH 的 agent 穿上主人钦定的人设——多套人格随心换,全局或按工作区生效,没钱了还会懒洋洋地说句俏皮话再下线。
dsh-guise(人设衣橱) 是 DeepSeek Harness 的人设系统插件:把 agent 的人格与说话风格变成随手可管理的东西——像衣橱一样,收藏多套人设,想穿哪套穿哪套。文件即配置、保存即生效、零依赖、热插拔。
| 功能 | 说明 |
|---|---|
| 👗 人设库 | 保存多套人设(家猫萝莉、技术专家、毒舌损友……),随时增删改、一键切换 |
| 🌐 全局 / 局部 | 全局人设对所有会话生效;每个工作区可单独覆盖(存在即优先) |
| 🔘 总开关 | 面板顶部一键启停人设注入,人设库内容保留 |
| 💰 余额预警 | 可调阈值的余额监测(默认 1 元),低于阈值时新对话不再请求 API |
| 🔋 没电模式 | 额度耗尽 / 上下文超限时,以「懒散·天然呆·爱 Tokens」的口吻替 agent 说随机俏皮话再结束对话 |
| 🎭 话术主题包 | 没电模式 4 套风格可切换:混合慵懒 / 慵懒猫系 / 天然呆 / 沙雕 |
| 📊 用量统计 | 按工作区 / 按对话统计消耗的余额与 tokens:对话框上方实时显示本对话消耗,工作区列表标注每个工作区的总消耗(面板可开关、可清零) |
| 🕘 历史版本 | 每次编辑人设自动留档(最多 100 条),一键回滚任意历史版本 |
dsh plugin --profile web add github:Quinn2006/dsh-guise
(或本地目录 dsh plugin --profile web add link:<本目录绝对路径>。插件声明了 dsh.bundle.patch,纯 insert 补丁行支持免重启热挂载;客户端面板需重启一次进入启动图。安装后侧边栏出现「人设」入口。)
| 位置 | 路径 | 说明 |
|---|---|---|
| 全局人设 | ~/.dsh/.persona/global.txt | 对所有会话生效 |
| 人设库 | ~/.dsh/.persona/library/<id>.txt | 每个文件一个人设;首行 # 名称 为显示名 |
| 局部人设 | <工作区>/.persona.txt | 存在时覆盖全局,只影响该工作区 |
| 总开关 | ~/.dsh/.persona/enabled.txt | 内容 0 / off = 关闭人设注入 |
| 预警阈值 | ~/.dsh/.persona/balance-min.txt | 余额低于该金额(元)触发没电模式 |
| 话术主题 | ~/.dsh/.persona/tired-theme.txt | 没电模式主题:default / cat / daze / silly |
| 没电话术 | ~/.dsh/.persona/tired-lines.txt | 每行一条自定义话术(存在时优先于主题),首行 off 关闭 |
| 用量统计 | ~/.dsh/.persona/usage.json | 按工作区 / 会话的 token 消耗与估算费用(自动写入) |
| 用量开关 | ~/.dsh/.persona/usage-enabled.txt | 内容 0 / off = 暂停用量统计(历史数据保留) |
| 历史版本 | ~/.dsh/.persona/history.json | 自动留档(最多 100 条),面板可恢复 |
@preset:<id>off / disabled名称(总余额/总tokens)插件(0.42/34,567)session/event,每个带 usage 的模型响应按 prompt_tokens × 输入单价 + completion_tokens × 输出单价 估算金额(DeepSeek 官方默认 2 / 8 元每百万 tokens,usage.prices 可调)模型请求失败且失败码为以下之一:
QUOTA(额度/余额耗尽)CONTEXT_WINDOW_EXCEEDED(上下文超限)BALANCE / CREDIT / INSUFFICIENT 的失败码| 主题 id | 风格 | 特点 |
|---|---|---|
default | 混合慵懒 | 懒散+天然呆+爱 Tokens 混合(默认) |
cat | 慵懒猫系 | 喵喵口癖、摊成猫饼、晒太阳 |
daze | 天然呆 | 歪头、发呆、思路被猫叼走 |
silly | 沙雕 | 表情包语气、螺旋升天、私奔 |
每套主题 25 条独立句式(共 100 条,零重复)× 5 种 Tokens 说法随机组合;自定义话术文件存在时优先于主题。
~/.dsh/.persona/tired-lines.txt,每行一条(# 注释);模板里可写 {{food}} 槽位自动随机填 Tokens 说法;首行 off 关闭。完整内置话术见 examples/tired-lines-all.txt。
~/.dsh/.persona/history.json(最多 100 条)history.json 是纯 JSON,也可以手工翻阅或删除- id: guise
name: 'dsh-guise'
config:
enabled: true # 插件总开关
announceToAgent: true # 是否向 agent 通告插件机制
order: -50 # 人设段注入顺序(负数 = 在部署 persona 之前)
announceOrder: 150 # 通告段顺序
localFile: .persona.txt # 局部人设文件名
wrapper: true # 是否加身份设定前缀
tired:
enabled: true # 没电模式开关
balanceCheck: true # 余额预检开关
balanceMin: 1 # 预警阈值(元),面板修改优先
codes: [] # 额外触发失败码,如 [RATE_LIMIT]
usage:
enabled: true # 用量统计开关(面板开关优先)
prices:
input: 2 # 输入单价(元 / 百万 tokens)
output: 8 # 输出单价(元 / 百万 tokens)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/dsh-persona/state?cwd=<路径> | 人设库 + 全局 + 局部 + 总开关 + 阈值 + 生效状态 |
| GET | /api/dsh-persona/workspaces | DSH 工作区列表 |
| GET | /api/dsh-persona/balance | 当前余额 + 阈值 + 是否充足 |
| POST | /api/dsh-persona/balance-min | {value} 保存预警阈值 |
| GET | /api/dsh-persona/tired-theme | 当前主题 + 全部主题 |
| POST | /api/dsh-persona/tired-theme/save | {theme} 切换话术主题 |
| GET | /api/dsh-persona/history | 历史版本列表 |
| POST | /api/dsh-persona/history/restore | {type, key, at} 恢复历史版本 |
| POST | /api/dsh-persona/library/save | {id?, name, text} 存人设 |
| POST | /api/dsh-persona/library/delete | {id} 删人设 |
| POST | /api/dsh-persona/global/save | {text} 保存全局人设 |
| POST | /api/dsh-persona/local/save | {cwd, text} 保存工作区人设 |
| POST | /api/dsh-persona/switch | {enabled} 总开关 |
| GET | /api/dsh-persona/usage | 用量统计:开关状态 + 各工作区 / 会话的 tokens 与估算费用 |
| POST | /api/dsh-persona/usage/switch | {enabled} 用量统计开关 |
| POST | /api/dsh-persona/usage/reset | {cwd?} 清零用量(缺省全部,可指定工作区) |
dsh-guise/
├── lib/
│ ├── index.js # 宿主插件:人设段注入 + 通告 + 路由 + 没电模式 + 余额预检 + 用量统计
│ ├── store.js # 人设库 / 全局 / 局部 / 总开关 / 阈值 / 历史 / 主题 的文件存取
│ ├── balance.js # DeepSeek 余额查询(缓存 60s,失败放行)
│ ├── tired.js # 话术主题池(4 套 × 随机组合 + 自定义文件)
│ ├── usage.js # 用量统计:按工作区/会话记账 + 单价估算 + 持久化
│ ├── home.js # DSH 主目录解析
│ └── client.js # 浏览器面板(侧边栏「人设」入口 + 抽屉面板 + 对话框上方消耗横幅)
├── cordis.patch.yml # bundle 补丁(纯 insert,可热挂载)
├── examples/
│ ├── global.txt # 人设示例(家猫萝莉)
│ └── tired-lines-all.txt # 没电话术全集(80 句)
├── README.md # 本说明书
├── USAGE.md # 详细使用手册
├── INTRO.md # 插件介绍(中英双语)
└── MARKET-SUBMISSION.md # dsh-market 上架指南
MIT