// 主机半边常量:三个挂载行 id(不得复用)与「中文优先提示」相关常量。 // 挂载 id 语义见 docs/architecture.md:持久行 `dsh-zh`、临时热行 `dsh-zh-hot`、 // 运行时条目 `dsh-zh-live`。重复 id 会导致 Loader 启动失败。 export const HOT_DIR = '.dsh-zh-hot' export const HOT_ROW_ID = 'dsh-zh-hot' export const LIVE_ROW_ID = 'dsh-zh-live' export const BUNDLE_ROW_ID = 'dsh-zh' // ============ 中文优先提示(设置命名空间 + agent/pre-step 上下文消息) ============ export const ZH_SETTINGS_NS = 'dsh-zh' // 设置暴露目录键(见 chinese-prompt.js 内的注册说明)。 export const ZH_PROVIDER_KEY = 'zh-prompt' // 自动归档:新建会话界面打开时,把超过 zhAutoArchiveDays 天未活动的会话 // 加入官方归档集合(仅从列表隐藏,日志原地保留)。 // 默认 7 天;0 表示关闭自动归档。判定依据是 session.list 的 updatedAt // (创建时间与最近人工消息的较晚者),运行中与空白会话不参与。 export const ZH_AUTO_ARCHIVE_DAYS_DEFAULT = 7 // 注入到初始系统提示时的 section 名;切换目标或关闭时会从 assembly 清理 // 同名 section,避免双份残留。 export const ZH_PROMPT_SECTION_NAME = 'dsh-zh:language' // 默认注入文本:一句话要求模型用中文推理并输出思考过程。文本对模型的效果与 // 界面语言无关。 export const ZH_PROMPT_TEXT = '始终用中文进行推理,并用中文输出你的思考过程。' // 注入目标:'system' = 初始系统提示(sections,默认);'user' = 首用户 // 提示词(agent/pre-step 插入 user/message 上下文消息)。旧值 'context' // (早期未实现的「初始上下文」设计)读取时归一化为 'user'。 export const ZH_PROMPT_TARGET_SYSTEM = 'system' export const ZH_PROMPT_TARGET_USER = 'user' export const ZH_PROMPT_TARGET_LEGACY = 'context' // 「排序位置」(仅初始系统提示目标):注入段在 system prompt 里的落点, // 与 DSH 官方 SECTION_ORDERS 同一坐标系(数值越小越靠前)。默认 100 —— // 紧跟 deployment:persona-prefix(order 0,即「你是一个由 … 模型驱动的 // 编码代理。」)之后、官方政策与工具说明区之前。取值钳在 -9999–9999: // 允许负数,用户可自行把注入段排到更前(例如 -500 落在 harness:identity // (-1000)之后、persona 之前;-1001 及更小排到整段最前)。 export const ZH_PROMPT_ORDER_KEY = 'zhPromptOrder' export const ZH_PROMPT_ORDER_DEFAULT = 100 export const ZH_PROMPT_ORDER_MIN = -9999 export const ZH_PROMPT_ORDER_MAX = 9999 // ============ 模型请求中文化(settings 命名空间字段名) ============ // 两个独立开关,默认关闭,只作用于「新会话」(首次模型请求时锁定语言)。 // 1) zhAgentPrompt:四个默认代理的 deployment:persona 系统提示词 // 换成中文版本(老会话不重新注入)。 // 2) zhToolDesc:注入模型请求的工具说明(tool schema description)按 // 工具名换成中文(工具名与参数不变,未收录工具原样保留)。 export const ZH_AGENT_PROMPT_KEY = 'zhAgentPrompt' export const ZH_TOOL_DESC_KEY = 'zhToolDesc' // 3) zhContextInject:DSH 注入会话的官方英文上下文(工作区指令帧、skill 目录帧、 // runtime-context 快照正文、审批策略切换通知、压缩检查点前言)在进入会话 // 历史前换成中文(注入源头替换:GUI、会话日志与模型请求一致显示中文)。 // 仅新会话生效;机制说明见 context-locale.ts。 export const ZH_CONTEXT_INJECT_KEY = 'zhContextInject' // ============ 网络搜索(web seam 组合 provider) ============ // dsh-zh 命名空间开关:开启时本插件的 dsh-zh-web 搜索 provider 可用, // web seam 的 resolveProvider 在没有更明确配置时按「唯一可用 provider」选中它 // ——即注册即接管(见 web-search.ts 与 docs/behavior.md「网络搜索」章)。 // 默认开启:免 Key 引擎零配置(Tavily 为可选,配 TAVILY_API_KEY 才启用); // 关闭后 web seam 落回官方默认。 export const ZH_WEB_SEARCH_KEY = 'zhWebSearch' // 搜索后端优先级:有序 provider id 列表,复合 provider(dsh-zh-web)按此顺序 // 依次尝试。空数组 = 不接管 web seam 的后端选择(保持部署里的 searchProvider)。 // 用户可在设置页用上下箭头调整:DeepSeek Search API 计费后移到末位即可。 export const ZH_SEARCH_ORDER_KEY = 'zhSearchOrder' /** 优先级列表上限(防误配超长数组)。 */ export const ZH_SEARCH_ORDER_MAX = 8 // 单条查询返回数量:web_search 工具壳给每个查询的 maxResults。 // 0 = 不装壳(保持官方 tool-web 的 8 条 + 轮询合并)。 export const ZH_SEARCH_PER_QUERY_KEY = 'zhSearchPerQuery' /** 单查询条数上限(官方 Search API count 上限也是 50)。 */ export const ZH_SEARCH_PER_QUERY_MAX = 50 /** * 优先级列表里的「本插件免 Key 多引擎后端」占位 id。 * 它不是真实注册的 provider id:复合 provider 用它表示「走内置的 * Tavily/DDG/Bing/Yandex/Wikipedia 级联」(见 web-search.ts 的 freeSearch)。 */ export const ZH_FREE_MULTI_BACKEND_ID = 'dsh-zh-free' /** 默认优先级:Search API(当前免费)→ 智谱 → 免 Key 多引擎(本插件内置)。 */ export const ZH_SEARCH_ORDER_DEFAULT: readonly string[] = [ 'deepseek-search-api', 'zhipu-web-search-prime', ZH_FREE_MULTI_BACKEND_ID, ] // ============ 网络读取(web fetch seam 组合 provider,web-fetch.ts) ============ // 与「网络搜索」同构的第二条链:接管官方 web_fetch 工具的后端选择。 // dsh-zh 命名空间开关(默认开启:免 Key 端点零配置;隐私边界见 behavior.md // ——免 Key 端点是公共云服务,会把请求的 URL 发给对应厂商)。 export const ZH_WEB_FETCH_KEY = 'zhWebFetch' // 读取后端优先级:有序 provider id 列表,复合 provider(dsh-zh-web-fetch) // 按此顺序依次尝试。空数组 = 不接管 fetch 后端选择。 export const ZH_FETCH_ORDER_KEY = 'zhFetchOrder' /** 优先级列表上限(与搜索列表同款防误配)。 */ export const ZH_FETCH_ORDER_MAX = 8 /** * 优先级列表里的「本插件免 Key 多引擎读取后端」占位 id。 * 不是真实注册的 provider id:复合 provider 用它表示「走内置的 * Exa/Parallel/Keenable 免 Key 环」(见 web-fetch.ts 的 freeFetch)。 * 2026-10-19 实测:Firecrawl 无 Key 匿名抓取对本机 IP 返回 HTTP 403,未纳入。 */ export const ZH_FREE_FETCH_BACKEND_ID = 'dsh-zh-free-fetch' /** 默认读取优先级:DeepSeek 云端读取 → 智谱 webReader → 免 Key 环 → 本地 http。 */ export const ZH_FETCH_ORDER_DEFAULT: readonly string[] = [ 'deepseek-fetch-api', 'zhipu-web-reader', ZH_FREE_FETCH_BACKEND_ID, 'http', ] // 智谱插件 npm 包名(其 Loader 行的 name 恒为包名,行 id 随挂载方式变化)。 // agent-search-tool 以「包行存在」为让位信号:智谱在 → 智谱壳是 web_search // 工具壳的唯一 owner,本插件只保留 web seam 的 provider 接管(联动)。 export const ZHIPU_PACKAGE_NAME = 'deepseek-harness-zhipu_plan_tools'