OpenViking
volcengine
Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:1264459640/dsh-trellis
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
trellis-* 技能随项目供给,dsh-trellis 是 Trellis 工作流在
DeepSeek Harness(DSH)上的适配移植——
本项目只是把 Trellis 的流程语义接到 DSH 上,不是新的工作流体系,也不属于
Mindfold 的官方产物。自包含、MIT、零外部运行时:不需要 Python、
不携带任何 Trellis AGPL 源码,状态机与技能内容均为本包重写;运行时按各项目自身的 .trellis/
读取,因此直接继承已有 Trellis 项目的沉淀。
agent/pre-step waterfall,命中白名单项目后读取
.trellis/.runtime/sessions/*.json 的 current_task → task.json.status → 阶段,并把一条
user 角色面包屑注入本轮消息流(等价 Trellis 官方 per-turn breadcrumb,提醒而非强制)。只在新
用户消息的首步注入;消息含 no-trellis 等关键词时整轮跳过。trellis-* 技能随包携带(包内 skills/ 为权威副本),会话开始时
检测项目 .agents/skills/——缺则复制(含共享 _templates/)、有则跳过;由 harness 内置的
dsh-skill-filesystem provider 从项目根发现(source: project-agents),无需注册、无需改
profile。项目可自由增改自己的技能副本,删掉的技能下轮自动补回。trellis_task_create 一次性完成「写 .trellis/tasks/<slug>/task.json
(status=planning)+ 播种该工作类型的产物模板 + 首次使用初始化 .trellis/templates/ + 同步写
.trellis/.runtime/sessions/ 的 current_task 指针」——修掉"只建 task 不同步 session,导致
解析不到 active task"的常见问题。trellis_state 工具随时回答"某项目当前处于工作流的哪个阶段",并校验任务 slug。conversation.session.header.utilities),紧凑展示当前活动任务的类型与阶段(如 功能 · design),
悬停/点击展开该工作类型的完整阶段轨道;数据来自 host 按会话发布的只读缓存摘要,浏览器请求
绝不触发项目解析或文件读取。headless(无 web 服务)profile 下此功能整体不激活,其余功能不受影响。<work-type>-<mm-dd>-<name>(如
feat-01-15-billing-export);不合规时每轮面包屑与 trellis_state 都会给出修正提示。插件内置三类工作流——通用化改编自 CodeStable
(FTM/CodeStable 思路,内容为本包重写、MIT),由 _templates/work-types.md 路由表驱动:
| 工作类型 | 入口技能 | 阶段轨道 | 说明 |
|---|---|---|---|
| 新功能 / 功能改造 | trellis-feat |
prd → design → design-review → impl → review → check | quick / standard 两条车道 |
| Bug / 异常 / 回归 | trellis-issue |
report → analyze → fix → fix-note | 反复调试时配合 trellis-break-loop |
| 行为等价重构 | trellis-refactor |
scan → design → apply | 行为变更转 feat / issue |
status 仍只用 planning → in_progress → completed(archive);细阶段放在
work.stage + 产物文件,仓库产物优先于聊天历史。status=in_progress。<work-type>-<mm-dd>-<短名>(mm-dd 为创建日期)。随包 15 个技能(skills/,权威副本,按需复制到项目 .agents/skills/):
trellis-start · trellis-brainstorm · trellis-before-dev · trellis-check ·
trellis-update-spec · trellis-finish-work · trellis-continue · trellis-break-loop ·
trellis-channel · trellis-meta · trellis-session-insight · trellis-spec-bootstrap ·
trellis-feat · trellis-issue · trellis-refactor
外加共享产物模板 _templates/(feat/ issue/ refactor/ + work-types.md 路由表),随技能一并
复制到项目 .agents/skills/_templates/。
前置:DSH 已装好(dsh web 能正常运行),Node.js ≥ 20。
# 从 npm registry(发布后)
dsh plugin --profile <name> add dsh-trellis
# 从本地源码 checkout(开发)
dsh plugin --profile <name> add link:/abs/path/to/dsh-trellis
# 从打包 tarball(pnpm pack,无需发布)
dsh plugin --profile <name> add file:/abs/path/to/dsh-trellis-0.1.0.tgz
包声明了 dsh.bundle.patch(随包的 cordis.patch.yml),add 后由 loader 的 reconcile 自动把包
并入该 profile 的 dsh.profile.bundles 层栈,重启 DSH 即挂载(host 半改动;client 半硬刷新
浏览器生效)。卸载同样走 CLI,配置行与依赖一并清除:
dsh plugin --profile <name> remove dsh-trellis
cd ~/.dsh/profiles/<name>package.json 的 dependencies 加 "dsh-trellis": "link:/abs/path/to/dsh-trellis",然后
pnpm installcordis.patch.yml 追加挂载行:- insert:
- id: trellis-workflow
name: 'dsh-trellis'
@deepseek-ai/*peer 依赖按 Node ESM 解析:包在 profile 之外时,需要让它们从 profile 的 hoistednode_modules解析到(CLI 安装会自动处理)。
dsh plugin --profile <name> add dsh-trellis
重跑一次即可(或改高 ~/.dsh/profiles/<name>/package.json 里的版本后 pnpm install)。host 半
改动需重启 DSH;client 半改动硬刷新浏览器即可。
| 现象 | 原因与解决 |
|---|---|
| 功能没生效 | host 半改动不热加载,重启 DSH;client 半改动硬刷新浏览器 |
| 设置页没有「Trellis 工作流」页签 | 未补丁 harness 的 WEB_SETTINGS_NAMESPACES(跑 node scripts/install.mjs --patch-harness)或未重启;也可直接编辑 $DSH_HOME/settings.yaml 的 trellis-workflow: 段(热重载) |
| 面包屑不注入 | 会话 cwd 不在 allowlist;消息含 skipKeywords(默认 no-trellis);不是 injectStep(默认 1) |
| 局域网 IP 访问时设置功能失效 | 设置 RPC 仅对本机回环地址开放(harness 全局限制) |
| remove 后 node_modules 残留链接 | pnpm 不回收 link: 依赖,惰性无害;可用 node scripts/install.mjs --uninstall --profile <name> 彻底清理 |
| 字段 | 类型 / 默认 | 说明 |
|---|---|---|
allowlist |
string[],默认 [] |
注入白名单项目根(效果上的"工作区级");为空则不注入任何项目 |
injectStep |
number,默认 1 |
只在该步注入(1 = 每个新用户消息的首步),避免刷屏 |
skipKeywords |
string[],默认 ['no-trellis'] |
消息里出现这些独立单词时本轮跳过注入 |
inline |
boolean,默认 false |
按 codex-inline 调度解析阶段名(planning-inline / in_progress-inline) |
cordis.patch.yml(或宿主 profile)中挂载本插件的行:
- id: trellis-workflow
name: 'dsh-trellis'
config:
allowlist:
- /path/to/your/project
injectStep: 1
skipKeywords: ['no-trellis']
inline: false
配置分层:
schema 默认值 <- cordis.patch.yml 的 config(base)<- Web 设置页的用户文档
插件提供 host 侧设置命名空间 trellis-workflow 与一个随包分发的客户端设置页签(经 dsh.client
清单由 web 自动加载)。重启 DSH 后,侧边栏「设置 → 插件」出现「Trellis 工作流」页签,可在线
增删 allowlist(项目根)、改 injectStep / skipKeywords / inline;保存即写入用户设置文档并
即时生效(下一轮注入即用新值),无需改 yml、无需重启。Web 里覆盖的字段优先于 patch.yml;重置后
回落到 patch.yml / 默认值。
前置(path A,必须):harness 只向 Web 客户端暴露 WEB_SETTINGS_NAMESPACES 名单内的设置
命名空间。安装器 node scripts/install.mjs --patch-harness 会幂等补丁该名单(自动扫描常见 harness
安装位置;DSH 升级覆盖 harness 后可重跑补回)。未补丁时页签会提示"当前 harness 未向 Web
暴露…"。
绕过(path B):设置 RPC 仅对本机回环地址开放(局域网访问时设置功能整体降级)。非回环或不想
改 harness 时,直接编辑 $DSH_HOME/settings.yaml 写 trellis-workflow: 段——热重载、同样免重启
生效。
dsh-trellis/
package.json # ESM cordis 插件包(name: dsh-trellis, MIT)
cordis.patch.yml # dsh.bundle.patch 自激活层(insert 插件行)
lib/
index.js # 主入口:agent/pre-step 面包屑 + 技能供给 + trellis_state / trellis_task_create + Web 徽标
task.js # trellis_task_create 写入侧:slug 校验 / task.json 构造 / 模板播种 / session 指针同步
resolve.js # cwd → 项目根 + .trellis 资产路径
state.js # 阶段解析:session → 活跃任务 → status → phase + workflow.md 面包屑 + 任务摘要/轨道
breadcrumb.js # createUserMessage 构造注入消息 + no-trellis 逃生口
trust.js # 本地同源 / 防 DNS-rebinding 围栏(Web 只读路由)
skills.js # 技能供给:检测项目 .agents/skills/ 并复制缺失技能与 _templates/
settings.js # 可选 settings 命名空间(Web 设置页)
meta.js # 名称 / 配置 Schema / 默认值
types/index.d.ts
skills/trellis-*/SKILL.md # 15 个随包技能(权威副本)
skills/_templates/ # 产物模板 + work-types.md 路由表
scripts/install.mjs # 传统安装器(bin: trellis-install)
纯 JavaScript、零构建、零运行时依赖(@deepseek-ai/* 为 peer,由 web profile 提供);client 半是
手写零构建 bundle,经公共 slot 系统注册(阶段徽标用官方 additive 座位
conversation.session.header.utilities)。传统安装器 scripts/install.mjs 仍是可用的备选工具
(不依赖 dsh.bundle,直接维护 cordis.patch.yml 行 + 依赖链接):
| 参数 | 说明 |
|---|---|
--profile <name> |
目标 profile;缺省时自动识别"包含本插件"的那个 |
--allowlist <path> |
注入白名单项目根,可重复 |
--inject-step <n> |
只在该步注入(默认 1) |
--skip-keywords a,b |
消息含这些词时本轮跳过注入 |
--inline |
按 codex-inline 调度解析阶段 |
--auto |
幂等自动模式(供包装脚本使用) |
--dry-run |
只预览改动,不写盘 |
--patch-harness |
只补丁 harness 的 WEB_SETTINGS_NAMESPACES 白名单(无需 profile) |
--uninstall |
一步卸载:配置行 + 依赖链接 + package.json 依赖项 |
--fix-deps |
清理 package.json 中指向不存在路径的 trellis link 依赖 |
POST /trellis-workflow/api/task-state 只接收
{ sessionId },响应绝不含路径;浏览器请求永不触发项目解析或文件读取(cache miss 返回稳定
空态,与未知会话不可区分,防探测)。isTrustedApiRequest 语义),并做
method / 路径 / 请求体大小校验;错误只返回稳定状态词,不泄露内部细节。ctx.fs + 每调用沙箱策略;沙箱拒绝映射为标准 [sandbox: …] 标记,
与 harness 编辑工具走同一升级流程。allowlist 的项目里注入;项目需自带 .trellis/(无 workflow.md 时用内置
兜底面包屑文案)。.trellis/ 约定一致。Windows / Linux / macOS 均可(纯 Node ESM,无原生依赖、无构建产物差异)。Node.js ≥ 20。
dsh-trellis 是 Trellis(作者
Mindfold,AGPL-3.0-only)在 DeepSeek Harness 上的适配移植:
[workflow-state:*] 阶段块、阶段轨道与
产物约定),不复制其代码与文档正文;感谢 Mindfold 团队设计并开源了 Trellis 工作流。
内置的三类工作流(feat / issue / refactor)则通用化改编自 CodeStable(源自 FTM/CodeStable 思路)——同样只参考 流程设计、内容为本包重写;感谢 CodeStable 团队的流程设计。
MIT。本包不含 Trellis AGPL 源码;工作流语义参考 Trellis,内容为本包重写。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: workflow。