deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
PRTS.chat 为 DeepSeek Harness(DSH)提供的资料插件:把《明日方舟》与 《明日方舟:终末地》的游戏原文、档案,以及社区审校 Wiki、实体图鉴与《泰拉年表》 装进本地资料包,为 Agent 提供带原文行号的检索与引用工具,并可按需接入 PRTS.chat 云端混合检索与 DSH 原生网页工具。
本插件为 DSH 提供明日方舟与终末地联合资料检索能力。插件先从 PRTS.chat 取得已批准的 最新 release 与逐文件摘要,再从 ModelScope 镜像或 PRTS.chat 下载本地语料; Agent 可以离线检索并按原文行号阅读材料;可选的 PRTS.chat 云端混合检索用于发现 候选材料,并将结果映射回本地原文核验。由于云端服务承载能力有限,当前为每个用户 每日提供 1000 次 DSH 匿名云端检索调用额度;额度策略可能根据实际运行情况调整。
corpus_search 用同一组参数同时检索两款游戏,
支持游戏、资料类型、内容形式、角色、活动/任务、Wiki 字段等结构化过滤;corpus_read 可按关卡代号、密录名、角色资料类别直接定位,
并可连续阅读整个明日方舟活动或终末地任务;引用格式统一为《篇章名》第 N 行;timeline_search 检索 PRTS Wiki《泰拉年表》本地投影,
支持实体别名自动裂变与出处标记反查;cloud_search 默认并行查询两款游戏的图谱、档案、
原文与 Wiki,联合排序后映射回本地篇章;| 特性 | 说明 |
|---|---|
| 按需加载 | 工具只挂在「PRTS 模式」预设下,标准/极简等模式不受污染 |
| 双游戏资料 | 明日方舟与终末地原文、档案、审校 Wiki、实体与时间线使用统一工具检索 |
| 读取去重 | 会话级证据状态跟踪已进入模型上下文的原文,重复/重叠读取自动回放或只补读新行 |
| 自带皮肤 | Harness 默认 / PRTS Agent / Endfield AIC / 莱茵生命资料馆 |
在 设置 → 插件 → PRTS 语料 → 界面皮肤 选择「莱茵生命资料馆」,然后在会话中打开 「资料馆」。证据白板、检索阵列和十二槽档案架位于同一个三维场景,底部导航控制镜头平移。 证据板目前提供手动场景预览:图钉固定纸片,拖动整理位置,用红线连接线索;可从搜索结果或阅读器置入资料。 板卡按会话保存在当前浏览器,初次打开的六张布局示例可清空;证据板尚未接入 Agent。 主界面可以直接向 Agent 提问,真实检索状态驱动阵列运动;实际读取或引用触发抽取和归位。 资料按抵达顺序入架,分别标记查得、已读、已引用,保持用户的翻阅位置。 也可以自行搜索、收藏资料、选择原文摘录,再将问题和摘录交给当前 Agent。
「调查记录」展示工具返回内容;阅读器分别标出搜索相关位置和 Agent 实际读过的范围。 原文绑定资料版本,云端无本地定位的资料显示其返回片段。旧会话可以加载更早记录。 长文分页、档案架分页、调查报告、减少动态效果和无 WebGL 时的文字阅读模式均可用。
前端沿用 Three.js + TypeScript + Vite。三维主体、档案循环导航与渲染使用原项目实现和 默认画质;主界面按调查用途重新设计,原版演示档案已全部移除。开发预览读取本地真实资料包,不连接 Agent:
npm ci
npm run build:rhine
npm run preview:rhine
打开 http://127.0.0.1:4177。可通过 PRTS_RHINE_RELEASES=/path/to/releases 指定只读资料包目录。
直接预览证据白板:http://127.0.0.1:4177/?rhineView=board。
语法检查使用 npm run check,测试使用 npm test;浏览器检查使用 npm run test:rhine:browser(需要 Playwright)。
npm 发布正在准备中,目前请从本地源码安装,或使用已内置插件的 PRTS Portable:
npm install --global @deepseek-ai/dsh@0.1.5-alpha.1
git clone https://github.com/HTian-qwq/prts-terrarchive.git
cd prts-terrarchive
node bin/install.js web
本地安装器把插件加入指定 profile,并创建或迁移 $DSH_HOME/.agent-presets/prts 中的
兼容预设。省略第二个参数时使用当前插件目录,也可以传入另一个本地目录或压缩包:
node bin/install.js web /path/to/prts-terrarchive
发布后可直接安装插件 bundle,无需额外运行安装脚本:
dsh plugin --profile web add prts-terrarchive@0.2.0
重启 dsh web 后,插件将自带的「PRTS 模式」模板写入宿主的用户预设目录(通常为
$DSH_HOME/.agent-presets/prts),模式列表自动发现它;npm 安装不执行 postinstall。
默认模式、预设目录配置和正在运行的会话保持不变。已有无标记的 prts 预设和用户修改过的
预设完整保留;带插件内容标记且未修改的模板会随插件升级。禁用或卸载插件保留这些用户文件,
不再使用时可从 DSH 的预设管理中删除「PRTS 模式」。
dsh plugin --profile web remove prts-terrarchive
官方仓库已有 Electron 实现,目前公开产品页仍以 npm Web 和源码启动为入口,尚未确认 公开发布的官方桌面安装器。此处说明为适配该实现准备的安装方式,插件也尚未发布到 npm。
取得兼容桌面版本、且插件发布到 npm 后,在 桌面应用的插件管理窗口 输入
prts-terrarchive@0.2.0 安装,随后选用「PRTS 模式」。官方桌面只接受 npm registry
包名和版本,不接受 GitHub 地址、本地目录或 tarball;其 desktop profile 由应用管理,
不要运行 node bin/install.js desktop 或 dsh plugin --profile desktop。
Web 与官方桌面共享默认的 $DSH_HOME 用户资料,但各自安装插件。插件包包含界面、地图
模型、贴图、技能和预设,不包含语料、Node/DSH 运行库或用户数据。首次使用请在
「设置 → 插件 → PRTS 语料」自行下载语料,切换皮肤无需另下模型和贴图。
PRTS Portable 发行包预装插件、预设和完整语料,解压后无需另行下载语料。
官方 Electron 便携版使用 build-electron.ps1 构建,原 WebView2 构建入口继续保留,
详见 Portable 仓库。
Portable 打包器已放置插件时,仍可使用 node bin/install.js web --preset-only 生成或迁移
兼容预设;该选项不调用 DSH CLI。
Web 本地安装需要可用的 dsh.cmd。安装器经 cmd.exe 调用它,插件路径含换行或
% ! & | < > ^ " 时会明确报错,请改用不含这些字符的目录。
DSH 环境变量可指定 dsh.cmd 的绝对路径。官方 DSH 的语料默认保存到
%USERPROFILE%\.dsh\prts-corpus\releases;Portable 的会话和设置保存在发行目录的
userdata,语料及后续资料更新保存在 corpus/releases。
dsh web 或所用桌面应用;| 来源 | 工具 | 用途 |
|---|---|---|
| dsh-base(所有模式共有) | bash/sandbox 等 | 常规 Agent 能力,本插件不裁剪 |
| 本插件 | corpus_search |
本地语料 grep 检索与目录浏览 |
| 本插件 | corpus_read |
按玩家可见定位器或自然标题读取官方行号原文 |
| 本插件 | corpus_i18n |
终末地官方多语言原文查询、名称与档案对照 |
| 本插件 | timeline_search |
活动时间线检索 / 出处反查 |
| 本插件 | cloud_search / cloud_inspect |
PRTS.chat 云端混合检索(默认匿名会话) |
@deepseek-ai/dsh-tool-web |
web_search / web_fetch |
公网检索与已知 URL 精读核验 |
@deepseek-ai/dsh-tool-skill |
skill 加载器 | 按需加载检索策略技能 |
| 本插件 | prts-retrieval 技能 |
检索配方与字段语义(按需注入,不占 system prompt) |
使用带本地化附件的终末地资料包(插件 0.2.0 起支持):
corpus_i18n({query: "管理员,你来了。", languages: ["EN", "JP", "KR"]})
corpus_i18n({title: "<检索结果的完整标题>", line: 1, languages: ["EN"]})
也可用已有 document_uid 替代标题。名称/原句默认精确匹配,片段可加 match_mode:"literal";外语反查加 source_language:"EN"。返回官方字典中的文本及来源,默认不显示内部文本 ID;显式设 include_ids:true 才返回字符串 ID,供 text_ids 精确复查。空译文、未映射来源、未安装附件分别报告,不自动生成译文。
角色档案按整条记录、档案库按内容块返回,中文行号只是来源定位,不表示各语言分段相同。长记录会分页,原样提交 page.continuation 即可续查。旧资料包仍可搜索和阅读;多语言附件须随新资料版本安装。
构建方式和数据格式见 官方多语言工具。
像 grep 一样搜索本地语料;命中立即返回原行及上下各一行,按文档归并。query 使用
短实体名、篇章展示名或原句片段;也可省略 query,仅按过滤条件列出资料入口。
| 参数 | 说明 |
|---|---|
query |
搜索词(≤512 码点);在 NFKC 归一化 + 小写后的文本上匹配 |
games |
可选游戏过滤;省略时同时搜索 arknights 与 endfield |
resource_types |
资料类型过滤(数组内 OR);明日方舟与终末地可选值见下文 |
content_types |
内容形式,例如 dialogue、cutscene、radio、sns_chat |
collection_names |
明日方舟活动名或终末地任务名,使用同一个字段 |
match_mode |
literal(默认,连续字面匹配)/ regex(线性安全子集:字面量、^/$、.、字符类、转义和固定次数 {n};不支持分组、分支及可变量词) |
character_names / story_names / activity_names |
角色 / 篇章 / 活动展示名过滤 |
entity_names |
只返回出现指定实体的行(自动展开别名) |
speakers |
结构化说话人过滤,只匹配亲口台词 |
wiki_sections |
Wiki 标签字段过滤(相关活动、剧情总结、角色剧情概括等 16 种) |
context_terms |
要求命中附近(±3 行)同时出现的语境词,≤8 个 |
after |
下一页的版本绑定可读锚点 { data_version, resource_type, title, position };与原搜索条件一起原样提交 |
约束:过滤数组每项非空、最多 16 项、单项最长 512 码点。结果预算固定,
保留原搜索条件,并把返回的 next_after 原样放入 after,可确定性扫描到
exhausted=true。锚点使用完整 data_version、资料类型和自然标题;资料版本切换后
旧锚点会被拒绝,必须重新搜索。分页不向模型暴露内部签名串。
明日方舟资料类型(resource_types):story 官方剧情原文;character_profile 档案/招聘/
潜能;character_module 模组;character_voice 语音;character_skin 时装;
operator_record 干员密录;character_bundle 指定角色的档案+模组+语音+密录;
character_wiki 规范角色 Wiki;story_wiki 活动/密录 Wiki;
character_activity_wiki 角色×活动辅助 Wiki;reviewed_wiki 全部自建 Wiki;
terra_journey 大地巡旅;entity_profile 实体资料;reference 时间线等引用资料。
终末地资料类型:original_story 官方剧情原文;archive 官方档案;
knowledge 知识资料;wiki 整理性 Wiki;character_story 角色故事;
timeline 时间线资料;entity_profile 实体资料。可配合 content_types 区分对话、
过场、广播、通讯、环境对话、SNS 等内容形式。
优先使用游戏内关卡代号、密录名、角色名、活动名或任务名;无法稳定定位时再使用搜索返回的完整标题。
不使用内部 document_id、ref 或路径。搜索结果只在同名歧义时给出公开稳定的 document_uid;它替代 title,不得同时提交两者。同名多合集不会自动合并。
| 用法 | 参数 |
|---|---|
| 明日方舟关卡 | stage_code;同代号多篇时加 story_part:before / after / story;加 line 可定点读上下文 |
| 干员密录 | character_name + record_name;多段密录加 segment |
| 角色官方资料 | character_name + material,类别为 profile/module/voice/skin/recruitment/potential |
| 双模块同名角色消歧 | 在角色定位参数之外加 game: "arknights" 或 game: "endfield";无同名歧义时不填 |
| 整活动连续阅读 | activity_name + mode: "activity" |
| 终末地任务连续阅读 | collection_name + mode: "collection",可选 content_types |
| 其他资料定点上下文 | title + line |
| 读 Wiki 字段 | title + section(精确读取标签字段,不含标签行) |
| 分页读其他全文 | title + mode: "document"(max_lines 默认 100、上限 500;max_chars 默认 12000、上限 100000) |
| 同名单篇 | document_uid + line,或 document_uid + mode: "document";不再提交 title |
| 续读 | 原样提交 page.continuation;单篇使用 line,活动/任务使用版本绑定的 position;旧 cursor 仅兼容历史会话 |
每次读取只选一种主定位方式。max_lines/max_chars 只限制输出量,不能代替 line、section 或 mode。
重复读取与部分补读保持正常的预算和续页位置。部分补读会用 coverage 标明本页复用的上文行及新返回行;全文是否读完仍以 page.has_more 为准。
引用格式统一为「《篇章名》第 N 行」。剧情文档只返回请求的原文;剧情总结与活动
时间线必须通过 timeline_search 或 Wiki 字段显式检索,不自动夹带。
按活动名、年份及自动展开的实体别名检索活动时间线(PRTS Wiki《泰拉年表》本地投影)。
| 参数 | 说明 |
|---|---|
query |
可选的事件正文短语(≤200 字符) |
activity_names |
活动展示名(≤20 项,如「孤星」;接受主线章节号常见写法) |
entity_names |
角色/实体展示名(≤20 项,自动经别名图鉴裂变后检索) |
year_start / year_end |
年份范围(含端点,可单独使用) |
source_marker |
反查模式:原样传回结果中的「年表出处:tle_…」标记,返回该事件完整来源 |
max_results |
最多返回事件数,默认 20、上限 100 |
用自然语言查询 PRTS.chat 云端的图谱、档案、原文、自建 Wiki 和时间线组合索引。
默认走匿名会话(内置 PoW 挑战,无需账号),也可在设置页配置静态 token。
返回末尾的「## 可读取原文」列出已映射到本地篇章的完整标题与行号,直接按
title + line 调用 corpus_read 核验。cloud_inspect 用于复查最近一次云端
检索的状态(回答材料、候选、诊断),request_id 由运行时自动注入。
本地资料尚未安装或无法读取时,云端答案仍会返回,并提示本地原文映射不可用;安装或修复资料包后可继续核验原文。
由 PRTS 模式挂载:web_search 发现网页候选,web_fetch 读取已知 URL 正文,
用于语料之外的历史沿革、词源、民俗等公网信息核验。DSH 0.1.2-alpha.1 起的匿名
HTTP provider 只允许公网 HTTP(S),并包含 DNS 解析校验、连接地址固定、同源重定向
以及响应大小和超时限制。
Wiki 资料不是无差别文本池:工具会区分规范角色页、活动/密录页和角色×活动辅助页。 常见问题的组合方式:
凯尔希参加过哪些活动?
→ corpus_search({ resource_types: ["character_wiki"],
character_names: ["凯尔希"], wiki_sections: ["相关活动"] })
凯尔希在《孤星》里做了什么?
→ corpus_search({ resource_types: ["story_wiki"], activity_names: ["孤星"],
wiki_sections: ["角色剧情概括"], query: "凯尔希" })
1102 年 1 月发生了什么?
→ timeline_search({ year_start: 1102, year_end: 1102 })
某人亲口说过什么?
→ corpus_search({ speakers: ["阿米娅"], query: "博士" })
完整字段语义与更多配方见 skills/prts-retrieval/references/wiki-schema.md
与 retrieval-recipes.md(模型通过 prts-retrieval 技能按需读取)。
$DSH_HOME/prts-corpus/releases;用户配置:$DSH_HOME/prts-corpus.jsoncordis.patch.yml 行内 config ← 用户文件(设置页写入,立即生效)https://prts.chat 的 current;release、pack 和逐分片摘要均以
PRTS.chat 为信任源,不能被配置改到其他站点。ModelScope 与可配置回退站点只提供
该固定 release 的压缩字节;
文件写入前校验大小和 SHA-256,同一 release 的并发准备由跨进程锁合并读取或搜索期间切换资料版本时,请求会返回可重试的 PACKAGE_VERSION_MISMATCH,
重新定位到当前版本后再调用即可。旧任务不会回写新版本的正文或倒排缓存,缓存复用
及跨篇章读取也受同一版本检查约束。
可配置项($DSH_HOME/prts-corpus.json,设置页可视化编辑):
| 键 | 默认 | 说明 |
|---|---|---|
uiSkin |
harness |
皮肤:harness / prts-agent / endfield-aic |
cloudEnabled |
裸插件 false;官方 PRTS preset true |
云端工具开关;安装器生成的 PRTS 模式默认启用匿名云端检索 |
cloudBaseUrl |
https://prts.chat |
云端地址(https,或仅环回主机的 http) |
cloudToken |
空 | 静态 Bearer token;留空使用匿名 PoW 会话 |
cloudGame |
all |
all(一次检索两款游戏)/ arknights / endfield |
enabledGames |
["arknights","endfield"] |
本地与云端工具允许检索的模块;单模块可只保留其中一项,新会话会装配对应 Skill |
cloudUserId |
空 | 匿名会话的稳定用户标识 |
cloudTimeoutMs |
90000 |
云端请求超时(1000–600000) |
cloudMaxResponseBytes |
32 MiB | 云端响应上限(1 KiB–64 MiB) |
downloadSiteBaseUrl |
https://prts.chat |
仅作为校验哈希后的字节回退站点;不参与选版或签发摘要 |
downloadOrder |
["modelscope","site"] |
下载源顺序 |
cacheShards |
24 |
正文分片 LRU 缓存大小(1–128) |
静态 token 绑定保存时的服务源(协议、主机和端口),不会随基础配置或用户配置中的地址变化发送给其他源。旧用户配置若尚无源绑定,请在设置页的令牌框重新输入并保存一次;旧值保留在文件中,重新保存前不会用于请求。只改同源 URL 路径不影响已绑定 token。
若在 preset 的 prts-corpus.config.enabledGames 设置基础范围,也应把相同数组传给相邻的 prts-terrarchive/skill entry;安装器生成和迁移的官方 PRTS preset 已自动保持两者一致。用户配置文件中的 enabledGames 会同时覆盖两边,修改后请新建会话以装配新的模块说明。
实体检索提示会在 prts-retrieval Skill 加载后,按当前用户问题写入 DSH 动态上下文快照;新快照会取代旧快照。PRTS 段只列出当前搭载的资料模块、当前问题命中的规范实体与游戏归属,以及与本轮实体相关的再旅者关系。工具调用标题会同时标明本地或云端资料及检索的游戏范围。
内存说明:新版资料包附带轻量 document_catalog,启动只从目录建立篇章定位、
标题、别名和检索元数据;正文分片在读取或命中后才解压,并由 cacheShards 限制缓存
数量。旧资料包仍兼容,但首次初始化需要扫描其正文分片。Node/V8 可能保留已申请的
堆页,因此操作系统看到的常驻内存不会在查询结束后立即回落。
设置 → 插件 → PRTS 语料中选择:
npm run build:rhine 和 npm run preview:rhine。Endfield AIC 的插件代码、UI 集成与地图渲染实现采用 MIT License;其中使用的游戏衍生模型与贴图不属于 MIT 授权范围,仅作为该可选皮肤的组成部分随包提供。具体文件范围见 GAME_ASSETS.md。这与「版本管理」下载的语料相互独立:语料按需从 ModelScope 下载,皮肤资源无需另行下载。
npm run check # 全部源码语法检查
npm test # node --test 全量测试;语料集成用例需本地 data/releases,否则自动跳过
git diff --check # 检查待提交文本
真实网络下载脚本 test/real-download.mjs 不在默认测试集中,避免单元测试意外
下载大型资料。
目录结构:
src/
index.js 插件入口:工具注册、配置装配、云端热重载
search.js corpus_search 执行层(候选预筛、扫描、签名游标分页)
search-projection.js 搜索结果的模型可见投影与渲染
read.js corpus_read 执行层(单篇/活动/终末地任务连续阅读)
timeline.js timeline_search 执行层(别名裂变、年份交集、出处反查)
store.js 资料包只读访问层(1/2/3-gram 倒排、旧包短词回退、分片 LRU)
wiki.js Wiki 文档角色与标签字段解析
entity-recognizer.js 实体别名 Aho-Corasick 自动机
evidence-state.js 会话级证据状态(读取覆盖去重、上下文可见性判定)
cloud.js 云端客户端(匿名 PoW 会话、静态 token、限流)
cloud-projection.js 云端结果的模型可见投影
source-map.js 云端证据 → 本地篇章映射
installer.js 资料下载器(双源回退、SHA-256 校验、跨进程锁)
state.js 三层配置与共享状态
ui.js 设置页 API(Connection RPC)与静态资源
skill.js prts-retrieval 技能注册
lib/
client.js Web 客户端入口(皮肤生命周期、设置 UI 席位)
skins/common.css 插件公共控件样式(始终加载)
skins/prts-agent.css PRTS Agent 独立皮肤(仅启用时加载)
skins/endfield-aic.css Endfield AIC 独立皮肤(仅启用时加载)
endfield-map/ 终末地皮肤地图资源(brotli/gzip 预压缩)
bin/
install.js 一键安装器
pack-map-assets.mjs 地图资源压缩打包脚本
contracts/ 工具请求/响应 JSON Schema
skills/prts-retrieval/ 检索策略技能(字段语义、检索配方)
presets/ PRTS 模式模板及用户预设初始化
DSH 0.1.2-alpha.1 与 0.1.2-alpha.2(web profile)已完成历史真机验证;其中
alpha.1 通过官方 tag 构建并完成安装、预设解析、宿主启动、设置路由和客户端 bundle
加载检查。当前适配目标为 DSH 0.1.5-alpha.1,共享 Connection Fetch 通道支持
Web 与官方 Electron 源码实现;Web 同时保留 HTTP 路由。预设初始化已在
0.1.5-alpha.1 和 0.1.3-alpha.1 的真实源码 Loader 上验证冷启动、启停、卸载及
现有普通会话挂载保持不变。尚未完成 Windows Electron 实机端到端验证。
Electron 便携构建固定 0.1.5-alpha.1 官方 tag,原 WebView2 构建仍固定
0.1.3-alpha.1;两者发行前均需通过静态审计与真实 Host 冒烟。
自定义部署若关闭 includeUserRoot 且没有其它 trust: user 的预设目录,插件不会写入
预设或更改 roots;部署者需先启用用户预设功能。插件依赖宿主内部接口(ctx.tools、
agent/pre-step、Connection Fetch、agent 预设、客户端 slots/theme);DSH 大版本升级后
请按「安装 → 重启 → 设置页 → PRTS 模式 → 语料工具 → 网页工具 → 皮肤 → 版本热切换」
过一遍冒烟。
本项目按以下边界提供和授权内容:
本项目为非官方社区项目,与相关游戏的开发商、发行商及其关联方不存在隶属、赞助或背书关系。完整声明见 THIRD_PARTY_NOTICES.md。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。