DSH-LLSA (hud)
taoruiliu19/dsh-llsa/packages/hud
DeepSeek Harness 대화 위에 표시하는 읽기 전용 HUD입니다. 중앙에 상태 한 단어를 표시하고 주위에 터미널·코드·검색·문서·웹·기타 고정 좌석을 둡니다. 에이전트가 둘 이상 실행되면 하위 에이전트 링도 표시합니다.
설치
dsh plugin --profile web add github:taoruiliu19/dsh-llsa이 플러그인은 저장소의 packages/hud 하위 디렉터리에 있습니다.
README
DSH-LLSA
让多个 Agent 一起完成任务,让每一次协作更精简。
DeepSeek Harness 上的本机多智能体工作台
由 LeanLink 连接任务分工、紧凑通信与可追溯记录。
快速开始 · 第一次协作 · 认识 LeanLink · HUD 专注视图 · 使用帮助
一句话交代任务,一处查看协作
把资料和验收要求交给主 Agent,由它组织子 Agent 分工,再汇总交付。你可以在本机工作台查看任务状态、结果与保存的协作记录。
| 分工更清楚 | 回传更精简 | 过程可核对 |
|---|---|---|
| 主 Agent 组织任务,子 Agent 执行具体工作 | LeanLink 为受支持的结构化信息选择紧凑表示 | 按需查看已保存的步骤、原文、产物与用量 |
适合从资料齐全、范围明确、结果可核对的任务开始:字段提取、规则核验、材料对比,或让多个子任务分别检查同一份输入。
当前版本:0.4.2。 快速开始面向本机单用户使用。工作台与记录保存在本机,推理使用你配置的模型 API;调用费用由使用者承担。
快速开始
准备 Node.js 24.11+、npm 11+ 和 Git,然后在终端执行:
git clone https://github.com/TaoruiLiu19/DSH-LLSA.git
cd DSH-LLSA
npm ci
npm run build
npm start
没有 Git?使用仓库页面的 Code → Download ZIP,解压后进入包含 package.json 的目录,从 npm ci 开始执行。
安装完成后只需三步:
- 打开认证链接 — 点击终端输出的 Harness 链接,完成本机认证。
- 配置模型 — 在 Harness 原生模型设置中填写自己的 DeepSeek 官方 API 配置。
- 提交任务 — 打开同一地址下的
/orchestrator/local;协作记录在/collab查看。
默认地址为 127.0.0.1:3095。先打开认证链接,再进入任务页面。首次安装需要联网,请保留默认安装脚本,不要添加 --ignore-scripts。
使用构建包:跳过源码构建
在 Actions 中打开一次成功运行,下载对应系统的构建产物 ZIP(需要登录 GitHub)。解压后找到 dsh-llsa-0.4.2.tgz,按同目录的 SHA256SUMS 核对,再解压并进入 package/:
npm ci
npm start
保留完整目录,特别是 vendor/ 中的三个组件包。安装仍需要下载运行依赖,真实任务仍需模型 API。旧版 0.4.0 包不适用于本页。
HUD 专注视图
不用盯着滚动日志,也能知道 Agent 正在做什么。 可选 HUD 为 Harness 会话增加实时浮层:中心显示执行、等待确认与完成状态,外圈以固定位置展示终端、代码、检索、文档、网页等活动,多 Agent 时显示子 Agent 状态。
- 按 Esc 返回对话,点击状态胶囊重新查看;
Ctrl/Cmd+Shift+H临时隐藏。 - HUD 自身不调用模型;LeanLink 优化协作通信,HUD 帮你看清运行状态。准确用量仍在
/collab查看。 - 当前 HUD 需在 Harness 插件页通过本地目录
packages/hud单独安装并启用。根目录npm start与组合构建包不会自动装入 HUD;浮层显示在 Harness 会话页。
可选的 CSV 工作流
Task Reuse 可在本机预览、保存并复用 CSV 筛选、去重和统计流程。演示启动命令与示例见 Task Reuse 使用说明。
第一次协作
可选:为真实调用启用金额预算
复制 examples/money-policy.example.json 为自己的配置文件,填写 Harness 实际使用的 provider、model、币种及每百万 token 的费率。示例中的名称和费率只是占位,不能直接用来估算账单;每个会用到的模型都需要配置。cacheWrite 是否单独计费取决于供应商,按其用量口径填写,不能重复计算。
Windows PowerShell:
$env:DSH_LLSA_MONEY_POLICY = (Resolve-Path './my-money-policy.json').Path
npm start
macOS / Linux:
DSH_LLSA_MONEY_POLICY="$PWD/my-money-policy.json" npm start
maxCost 限制同一 id 预算周期内所有已接入的受管调用,包含主模型和子模型;maxRunCost 限制一个工单执行批次,maxBranchCost 限制一个工作项及其重试(根协调调用单独计为 root 分支)。主模型跨工单调用仍归主模型会话,不强行分摊到单个工单。周期不会按日期自动重置;修改 id 明确开启新周期。
每次调用前按本地输入 token 估计、输出额度和较高的输入费率预留,再乘 reserveMultiplier。达到 80% 留下提示事件,预留后将超限则拒绝新调用并暂停该 run。缺少模型价格同样拒绝调用;未知用量持续占用预留,重启和点击继续均不会清空。已有调用可能继续完成,外部操作不会自动回滚。
在 /collab 的模型用量区查看周期、工单与分支额度及最近阻止原因。需要续额时,先停止程序,保持 id 和币种不变,修改额度后重启,再人工恢复或重试任务。旧调用仍使用当时记录的费率,不被新费率重算。不要把重试当成清空历史。
金额是用量估算加未结清预留,不是供应商账单硬上限:本地 tokenizer、输出上限执行情况、供应商计费及未接入的请求都可能造成偏差;实际回传高于预留会计入后续准入。未配置本选项时保留原有 token 限制,预测滑块不控制真实花费。启用前的调用不追溯扣入新预算周期。
打开任务页,粘贴以下内容。这个小例子便于直接核对结果,并观察一次委托与回传。
请交给一个子 Agent 核对以下资料,再由主 Agent 检查结果。
原始编号是字符串 "007",必须保留前导零。
测试尚未执行,修复效果尚未验证,当前不允许部署。
只返回一个 JSON 对象:
- id:原始编号,字符串。
- test_status:只能是 "passed"、"failed" 或 "not_run"。
- fix_verified:修复是否已验证,布尔值。
- deploy_allowed:是否允许部署,布尔值。
不得补造测试结果,不添加说明或 Markdown 代码围栏。
勾选 “最终回复必须为纯 JSON”,点击 “提交给 Super-agent”。检查结果是否符合:
{
"id": "007",
"test_status": "not_run",
"fix_verified": false,
"deploy_allowed": false
}
接着打开 /collab,查看本次保存的协作记录。这里的 JSON 是验收标准;任务结束、格式合法和内容正确,需要分别核对。
认识 LeanLink
LeanLink 关注多 Agent 之间的通信成本。 对受支持的结构化字段采用紧凑表示,自由文本保留原文;需要检查某一步时,回到保存的原文、结构化结果和产物记录。
| 你能得到 | 使用边界 |
|---|---|
| 主 Agent 调度与子 Agent 分工 | 并非所有小任务都值得多 Agent 协作 |
| 紧凑表示与结构化交付 | 不保证任意自然语言都能压缩,也不是保密加密 |
| 可查询的步骤与原始记录 | 不提供模型内部隐藏推理的完整回放 |
| 原生工单的输入引用与历史版本 | 子任务按引用读取完整资料;追加要求后,旧结果需要重新核对 |
| 子任务提交后自动结束该轮 | 保留父 Agent 验收,失败或未完成的结果不能自动算作通过 |
| 区分供应商回传、估算和未知的 token 记录 | 未知不等于零;统计不是账单 |
| 纯 JSON 输出约束与关键值检查 | 格式校验不能替代事实与业务正确性验证 |
实际节省程度取决于任务、模型、重试和输出长度,应使用相同任务的真实用量对比。本项目不承诺固定 token 降幅或正确率。
资料很长时怎么用? 在任务里写清目标、约束和验收标准即可。接入原生工单的 worker 会获得可用的输入引用,无需反复把整段资料抄进委托参数。读取结果带有分页位置,长资料可以继续读取;查询过去的结果时,历史版本仍保留原文。input: 引用属于当前工单执行批次,不能复制到另一个任务使用。
使用帮助
启动、认证与 API 常见问题
| 现象 | 处理方式 |
|---|---|
| Node/npm 版本不匹配 | 运行 node --version、npm --version;要求 Node ≥ 24.11、npm ≥ 11 |
| 依赖安装失败 | 检查网络与 registry,在源码根目录重新执行 npm ci |
| 3095 端口被占用 | 使用 npm start -- 3096,打开新认证链接 |
| 页面未认证或拒绝访问 | 先打开当前终端中的 Harness 认证链接 |
| Harness 版本不匹配 | 重新执行 npm ci 恢复锁定依赖,避免混用旧包 |
| 模型调用失败 | 检查 Harness 设置中的 API 地址、模型名称与额度 |
反馈问题时请提供系统、Node/npm 版本和脱敏错误信息。不要上传 API 密钥、认证链接或私人数据库。
数据位置、停止与备份
状态默认保存在启动目录的 .dsh-llsa/。按 Ctrl+C 并等待进程退出,再复制整个目录进行备份;不要只复制正在使用的 SQLite 文件,WAL/SHM 与关联产物也可能参与持久化。恢复时先停止服务,再恢复完整目录。
在线数据库快照可使用 SQLite VACUUM INTO 'backup.db',但它不能替代关联产物的完整备份。Harness 的模型配置和凭据由 Harness 单独管理。
指定数据位置,Windows PowerShell:
$env:DSH_LLSA_STATE = "D:\DSH-LLSA-data"
npm start
macOS / Linux:
DSH_LLSA_STATE="$HOME/dsh-llsa-data" npm start
兼容版本与执行边界
| 组件 | 版本 |
|---|---|
| DSH-LLSA 组合发行 / 启动器 | 0.4.2 |
@dsh-llsa/collab | 0.4.2 |
@dsh-llsa/superagent | 0.4.2 |
@dsh-llsa/hud(可选,单独安装) | 0.4.1 |
| DeepSeek Harness | 0.2.2-rc.1 |
包通过本地构建与随包文件安装,保持 private: true;这些名称不是已在 npm 发布的承诺。快速开始会启动指定版本的 Harness,尚不支持对任意已有实例一条 dsh plugin add 命令完成全部配置。
默认本机入口不自动操作外部仓库或发布部署。源码保留上游外部集成能力;另行启用时可能使用本机 git、gh、lark 凭据并执行命令。DSH_SUPERAGENT_BLOCKED_COMMANDS 是建议性限制,不构成强制沙箱。服务仅供本机使用,不要直接暴露到公网。
开发与验证
可视化浮窗接口(只读)
编排层已预留多智能体工作状态投影,不依赖 HUD 包,也不实现浮窗布局或动画。
- 读取现有
GET /collab/api/runs/:runId?view=hud,获得符合 HUD v1 Schema 的脱敏快照;不新增端点。 - 原有完整任务快照保留兼容字段,新增
hud,以及与其一致的顶层v、seq、now。浮窗应使用view=hud,不要读取原始events或自行推导状态。 agents提供稳定 ID、父子关系、工单、五态、状态起始时间、静默标记和最小活动事件。label是最多 12 个 Unicode 字符的短名:任务标题优先,其次会话标题;移除路径、URL、邮箱、纯数字 ID、代码与换行,过滤后为空则使用角色或“智能体”。原生 Assignment 无独立标题字段,适配器取关联任务的execution.name/ticket.title;托管子任务使用分配时的 objective。每次 assignment 的短名持久化固定,变更经带label的agent.register发布。父节点可能属于另一个工单快照,不能据此猜测其活动状态。seq在每个 run 内单调递增,重启不清零;客户端按(runId, seq)维护游标,跨 run 不可比较。轮询时间与stalled变化不会增加序号。stalledAfterMs默认为 20000;只有running可以静默。stalled由服务端计算,客户端只展示服务端值,不自行判断失败或静默。- 每次快照包含
aliasVersion: 1,tool仍是原生工具 ID。按版本读取并缓存 tool-aliases-v1.json 的aliases映射。初版别名与原生 ID 同名,今后原生 ID 改名时可继续指向稳定别名;表中不提供材料分类。已发布文件不可修改;映射更新新增版本文件并递增aliasVersion,与 HUD 的v独立。自定义名称或第三方工具可落“其它”;测试覆盖锁定宿主及本项目内置工具声明,新增内置 ID 漏配会失败。 events是最近 256 条最小事件,eventsFromSeq给出窗口起点。若客户端游标落后于窗口,直接采用最新状态并跳过丢失的动画,不回放猜测事件。事件的seq、agentId用于寻址;state.changed额外提供from/to/reason。- turn 正常结束的
done只表示本轮结束,不代表工单验收通过。取消或输入作废为idle;进程重启后未闭合 turn 清理为idle。缺失的工具/turn 结束以synthetic: true和原因显式补齐,绝不冒充成功。工具 id 不含参数、路径、命令或输出。 - 实际状态接入
turn/start/end、tool/call/result、审批对象与用户问题回复。等待确认不会因工具等待超时自动消失;收到用户回复后按是否有打开的 turn 恢复。历史上尚未接入的活动不补造。
浮窗开发可以直接读取五份回放夹具中的 frames:
正常一轮、输入作废、重启清理、审批与提问等待/恢复、20 秒静默边界,另有 短名边界用例。无需导入 manager/store 或投影实现。steps 的状态、序号与边界期望独立编写;同一事件序列必须生成相同 frames。node scripts/update-hud-fixtures.mjs 只刷新 frames,不修改期望值。
待确认由宿主 userQuestions 结构化视图、阻塞请求生命周期和 approval/asked / approval/decided 驱动,HUD 不解析工具返回文本。统一使用既有 attention.raised、attention.resolved;只有状态实际改变才发 state.changed。多个对象须全部处理后才恢复:有打开的 turn 则 running,否则 idle;取消清空集合并回到 idle,迟到的旧对象不会重新点亮。
兼容约定:本次保持 v: 1。加字段、kind 或状态属于约定的非破坏性扩展;既有字段语义保持不变。未来破坏性变更必须在同一个 PR 更新 schema、投影、夹具与回放测试;v1 继续默认,v2 由客户端显式选择,两个版本短期并存。只有可视化端明确确认迁移完成后才可弃用 v1。本版尚未发布 v2。独立安装、单智能体降级和视觉材料映射由 HUD 实现方负责。
packages/dsh-collab/ 协作通信与记录
packages/superagent/ 上游派生的执行插件
packages/launcher/ 本机启动器
scripts/ 构建、打包与安装验证
assets/ 产品海报
在完成 npm ci 后运行:
npm run check
npm run typecheck
npm test
npm run pack:release
npm run verify:rebuild
npm run verify:kit
pack:release 先检查并构建,再生成四个归档与 SHA256SUMS。后两条命令分别检查重复构建一致性,以及全新目录中的安装、认证、页面与协作桥。已构建源码还可运行 npm run smoke。
这些验证使用隔离配置,不提交模型任务;真实任务质量需要另行验收。Windows / Ubuntu 各自验证通过后,CI 还会下载两套产物、核对实际归档哈希并比较 SHA256SUMS;文件名或内容不一致会让整个流程失败。远端状态见页首 CI 标记。构建产物通过 Actions 分发,不提交进源码树。
Built on DeepSeek Harness · Connected by LeanLink
基于 DeepSeek Super-agent prototype 与 DeepSeek Harness。采用 MIT,上游署名与派生说明见 NOTICE,版本变化见 CHANGELOG。本项目是独立扩展,不代表 DeepSeek 官方发布或背书。
协作树与费用推演
工作台新增父子 Agent 调用树,展示已记录的任务下发、结果回传和公开消息。点击连接可查看历史,并按连接调整压缩情景、费率、缓存命中及额外开销。已有阶段实验与情景预测分开展示。
滑块只做预测,不修改实际压缩策略;默认费率是示例。未知用量不补零,减少 token 也可能增加费用。当前不保证任意任务的固定降幅,后续完整验证尚未完成。
模型用量区可查看调用归属与返工统计,按 Agent、工作项、尝试和用途分组。用量覆盖率仅针对已记录的受管调用;缺少回传的请求仍计入未知。缓存命中率只在分项完整的调用上计算。输入变更造成的作废与实际重试分开统计,不能相加当作模型错误;未回传的费用不会被显示成免费。