accurlex-dsh-legal
mrpunchleonardo/accurlex-dsh-legal
DeepSeek Harness plugin for accurLex Open Platform legal tools
インストール
dsh plugin --profile web add github:mrpunchleonardo/accurlex-dsh-legalREADME
@accurlex/dsh-legal
DeepSeek Harness 的 accurLex 法律工具 bundle。它直接调用 accurLex Open Platform REST API,不修改 accurLex 服务端,也不依赖旧版 MCP/stdio/JWT 接入。
快速开始
这是一个已发布到 npm 的 DSH bundle。实际使用请安装到 web 或 headless profile:
$env:ACCURLEX_API_KEY = 'ak_live_***'
dsh plugin --profile web add @accurlex/dsh-legal
dsh web
只验证注册和配置合并时使用 demo profile:
dsh plugin --profile demo add @accurlex/dsh-legal
dsh --profile demo --dump-config
插件仓库:MrPunchLeonardo/accurlex-dsh-legal。demo 只用于注册检查;实际 Agent 使用请按目标 profile 安装 bundle。首次使用前,请先阅读下方的账号注册和 API Key 配置说明。
插件许可证
@accurlex/dsh-legal 这个 npm 插件包及本仓库按 MIT License 发布,许可证文件会随 bundle 分发。本声明只适用于本 DSH 插件,不代表 accurLex 平台、开放平台 API、服务端或前端采用 MIT。
注册账号与获取真实 API Key
插件调用的是 accurLex 开放平台真实 API,需要先注册/登录 accurLex 账号并创建 API Key:
- 打开 accurLex 开放平台,注册或登录账号。
- 进入开发者控制台,在 API Key 分区创建 Key。
- 按实际使用的工具授予 scope:法律问答使用
qa_deep或qa_expert,法规检索的deep/expert两档均使用law_search,合同审查使用contract_review,已开启的文书起草使用document_draft;用量查询只要求 Key 有效并启用。建议遵循最小权限原则。 - 创建成功后立即复制完整 Key。完整 Key 只在创建时显示一次;不要把真实 Key 写入仓库、README、日志、前端代码、URL 或提交记录。
- 在启动 DSH 的同一个 PowerShell 进程中配置 Key,然后再启动 DSH:
$env:ACCURLEX_API_KEY = 'ak_live_***'
# 按下文安装到 web 或 headless profile 后再启动对应 profile
首次可先调用 accurlex_account_usage 检查 Key、scope 和用量,再调用其他工具。合同审查和文书起草可能消耗账户配额或点数,具体以价格与限制为准;需要撤销或重建 Key 时回到开发者控制台操作。
注册、登录、Key 创建/撤销规则以开放平台 API 文档和控制台为准;本 README 只提供 DSH 接入所需的最短路径。
配置 API Key
在启动 DSH 的进程环境中设置 API Key:
$env:ACCURLEX_API_KEY = 'ak_live_***'
可选地覆盖 API origin(本地 mock 或隔离代理):
$env:ACCURLEX_API_BASE_URL = 'https://accurlex.com'
正常使用时不需要设置 ACCURLEX_API_BASE_URL,默认会直连 https://accurlex.com;只有本地测试或明确使用代理时才覆盖它。修改环境变量后需要重启 DSH,使新进程能够读取配置。
工具调用超时
插件配置项 toolCallTimeoutMs 默认是 600000 毫秒(10 分钟),适合合同审查等较重任务。它会映射到 DSH 原生工具定义的 timeoutMs,不是传给模型的业务参数;插件仍会把 DSH 的 exec.signal 传给底层请求。
可以在 bundle/profile 的 plugin 行中覆盖,例如:
- insert:
- id: accurlex-dsh-legal
name: '@accurlex/dsh-legal'
config:
toolCallTimeoutMs: 900000
配置必须是 1 到 2147483647 之间的整数。实际超时执行依赖 DSH profile 挂载官方 timeout-policy;当前 DSH base profile 通常已包含该 policy。插件本身只声明工具超时元数据并配合取消信号,不新增运行时依赖。
插件加载和工具注册阶段不会联网;未配置 Key 也不会让 DSH 启动失败,真正调用工具时会返回 configuration_error。不要把真实 Key 写入仓库、日志、URL 或对话示例。
长响应与流式接收
法律问答、法规检索、合同审查和文书起草请求都使用 stream: true。开放平台发送的 heartbeat 用于保持长响应连接,插件会完整接收 JSON/NDJSON、忽略 heartbeat、合并 data 和 original_content,最后只向 DSH 返回一次聚合结果;不会在 DSH 中展示实时 token。合同审查和文书起草继续使用默认 10 分钟工具超时,不因开启流式请求自动延长。
安装与 profile 使用
本包遵循 DSH bundle manifest:package.json 声明 dsh.bundle.patch,cordis.patch.yml 插入 @accurlex/dsh-legal plugin。DSH 官方支持两种安装场景:发布后按 npm 包名安装,开发/验收时按本地 checkout 安装。两种场景不能混用。
demo profile 只适合验证插件注册和配置合并;它是裸 profile,直接启动 Agent 任务可能没有 web/headless 所需的运行时层,不能作为实际使用示例。
发布后安装(面向最终用户)
当 @accurlex/dsh-legal 已发布到 npm 后,最终用户不需要知道源码仓库位置,直接按包名安装:
先安装到 demo 并只做注册检查:
dsh plugin --profile demo add @accurlex/dsh-legal
dsh --profile demo --dump-config
实际 Agent 使用请按目标 profile 单独安装 bundle。Web profile:
dsh plugin --profile web add @accurlex/dsh-legal
dsh web
Headless profile:
dsh plugin --profile headless add @accurlex/dsh-legal
dsh --profile headless "请调用 accurlex_account_usage 检查当前 Key"
安装或更新 bundle 后需要重启对应 profile;demo、web、headless 相互独立,安装到 demo 不会自动安装到另外两个 profile。
本地 checkout 安装(面向开发/验收)
本地验证时直接使用本插件仓库 checkout,不要把某台机器的绝对路径写入文档:
$repoRoot = (git rev-parse --show-toplevel).Trim()
$pluginDir = $repoRoot
dsh plugin --profile demo add $pluginDir
dsh --profile demo --dump-config
需要验证实际 Agent 时,将同一个 $pluginDir 安装到 web 或 headless profile。该命令要求当前 PowerShell 位于仓库 checkout 内;用户也可以把 $pluginDir 替换为自己机器上的 checkout 路径。DSH 官方将相对路径/本地 checkout 视为开发安装方式,发布包则使用上面的 npm 包名。
本仓库包含 bundle、源码和本地契约测试;真实 profile 安装和生产部署仍需由使用者按目标环境执行。DSH 仍是 Developer Preview,具体 CLI 参数以当前版本官方文档为准。
许可证范围
@accurlex/dsh-legal 这个 npm 插件包按 MIT License 发布,LICENSE 会随 bundle 分发。该许可证只适用于本插件包,不改变 accurLex 平台、开放平台 API、服务端或前端的许可证口径。
工具
| 工具 | 作用 | 关键参数 |
|---|---|---|
accurlex_legal_qa | 法律问答 | question、可选 context_text、mode、history |
accurlex_law_search | 法规/法条检索(deep/expert 均已开启) | prompt 或兼容 query(至少一个)、可选 mode |
accurlex_contract_review | 合同审查 | contract_text、standpoint、可选 output_mode、history |
accurlex_document_draft | 已开启的文书起草 | prompt 或兼容 requirement(至少一个)、可选 reference_material、sample_document、history |
accurlex_account_usage | 当前 Key 用量查询 | 无业务参数 |
API 能力对齐
accurlex_law_search对齐POST /v1/law_search:prompt是 canonical 输入,query继续作为兼容 alias;mode支持deep(默认,最多 10,000 字符)和已开启的expert(最多 30,000 字符),两档都使用law_searchscope。accurlex_document_draft对齐已开启的POST /v1/documents_draft:prompt是 canonical 写作要求,requirement继续作为兼容 alias;使用document_draftscope,总输入最多 30,000 字符。插件请求stream: true,但最终聚合后再返回 DSH。- 当 canonical
prompt与兼容 alias 同时提供时,canonical 非空值优先;这两个工具的 API 能力由服务端负责认证、计费、额度和限流,插件不修改服务端开关。 - 为兼容 DSH Code Mode,这两个工具的
prompt/alias 字段在 schema 中保持可选;实际执行时仍要求至少提供一个非空值。
合同审查输出
合同审查默认使用 output_mode: "normal",返回适合对话阅读的自然语言审查意见:
{
"contract_text": "……",
"standpoint": "乙方,重点检查付款和违约责任"
}
需要程序化处理时显式选择 JSON:
{
"contract_text": "……",
"standpoint": "乙方",
"output_mode": "json"
}
插件会以 stream: true 调用并兼容合同接口的 NDJSON 响应:接收 heartbeat,合并 data chunks,保留 original_content,最后一次性返回聚合结果;JSON 模式会尝试解析最终结果,normal 模式不会被强制转成 JSON。
用量返回
accurlex_account_usage 保留 summary,但默认只在 result、recent 和可读 content 中返回最近 5 条 recent 记录,避免长 request_id 列表淹没对话。返回同时包含 recent_total、recent_limit 和 recent_truncated,便于调用方判断是否发生截断;不改变服务端原始数据。
上下文和数据边界
本插件允许 Agent 在本次参数中提供完整的相关合同、多个材料或项目背景,不因为隐私理由把内容强制压缩成片段;accurLex API 按现有平台策略不保存信息。插件不会在后台遍历、读取或上传整个 workspace,也不会自动补齐未提供的文件。上下文仍受开放平台当前字符上限约束,超过上限会报错而不会静默截断。
插件不保存 API Key、请求正文、合同内容、响应正文、工作区路径或索引,不自动重试、不排队、不缓存。错误只返回状态、错误码和脱敏消息。
开发验证
在本仓库根目录执行:
node --test test/*.test.js
测试只访问 localhost mock server,使用合成材料;真实 API、真实 Key、真实合同和付费上游调用次数均为 0。