16 KiB
对话资料沉淀与任务引用:源码核对(2026-10-17)
用户确认问题:对话如何沉淀到资料库,普通资料库与项目资料库如何区分,以及对话/任务是否自动以资料库为依据。
本轮使用reverse-engineer-anything技能复核既有REA捕获正文。没有上传、修改或创建原版资料;发现主窗口有运行中会话后仅做被动观察,没有导航或发送测试消息。以下业务结论均为固定源码观察,不是完整运行态或后端行为验收。
1. 证据
原版均为WorkBuddy 5.8.3。主要归档:
- 资料库及共用已加载脚本:
ev_82a9ad8ec38c807e465646d749e2cedbb150fec62e30234c97acd0bb309c349e,.tmp/rea-four-modules-library-stable-20261017.json。 - 主窗口脚本:
ev_2b8db4eb73c59a8d3d80c3e37db5ea9b5bf1d13390d5238d81ff2cc53d11dc09,.tmp/rea-todo18-main-scripts.json。 - 项目详情及发送逻辑:
ev_ca0195278ba08b57f2d847e4d96e3a35490f26367b71b810563b01b03470d000,.tmp/rea-todo20-project-detail.json;任务页补充ev_8782905c492acd1618e137480a3da8a8d7eba56e8f328e4856b008e1dd7f34ea。 - 本轮只读主窗口:
ev_87e1797f654b717af1b300cbf1c971ade495e48b5a43e1f254903defd6e0b23c,.tmp/rea-library-task-link-baseline-20261017.json/.png。只证明当前画面,不用于证明自动检索或上传行为。
页面捕获有policy_filtered范围,未归属脚本/资源被排除。下面以实际包含的模块正文为边界;缺失工具/后端行为不能按负面搜索当成全产品不存在。
2. 三类资料不能混为同一保存动作
| 类型 | 当前证据确认 | 不能据此推出 |
|---|---|---|
| 本地产物 | 成功write/edit/present_files/imagegen等工具事件被投影为任务产物;有内部artifact-index路径 | 云端入库、整段对话被保存、所有项目源文件都成为资料 |
| 普通资料库 | 个人/团队文档空间;由fetchSpaces取得,选择器按个人/团队展示 | 对任意账号都可见、默认全库全文进入每轮模型请求 |
| 项目资料范围 | lockProjectId时取得该项目的space.id并锁定树;另有项目NetDrive资产选择/上传路径 | 两个入口必然共用或必然分离后台存储、可跨项目访问 |
项目资料库首先体现项目归属和选择范围。space文档系统和项目NetDrive在客户端有不同路径;不能只靠名称合并成同一后端,也不能反推成两套数据库。
3. 对话产物如何保存
自动归集为本地产物
源contexts中的artifact规则与分支解析,以及artifact-DiRw8UKk.js:isHiddenArtifactPath,表明本地产物索引和云文档写入是两条链路。索引不是把聊天原文上传到资料库。
产物工具栏的显式保存
selection-quote-conversation-input-eBPyMR25.js:resolvePersonalUploadTargets(字符偏移3799附近,SHA-256 80904295f5a938dbfacf8e2e5bceab978eaf9d1d3a467c4e8d4076f639bee271)按能力开关、canSave、是否项目会话和服务可用性决定入口:
libraryUpload路径要求非项目会话;旧NetDrive个人库路径也检查非项目会话。projectAsset路径要求项目会话、可保存及项目NetDrive能力可用。- 这是该工具栏的入口策略,不代表用户通过其他产品入口永远不能跨空间保存。
detail-panel-wrapper-BZPa078h.js:uploadArtifactToPersonalLibrary(偏移33344,SHA-256 004a480f8014fd9eb68fe3df85f0557480b60765514ff0f6ee9fd55821b4049c)读取产物、准备上传、调用backend.uploadToKnowledge。已有节点/内容hash可复用,变更时可能按nodeBlockId更新,并处理容量/格式等失败。
同模块project-asset分支(偏移61647附近)校验项目角色、解析url/sandbox/conversation中的projectId,初始化该项目NetDrive,然后打开上传选择流程;不是自动把产物上传任意项目。
模型工具写库
src-DbE1_mgM.js:convertLibraryUpload(偏移1049061,SHA-256 6c6ce63c93854783270e855572797d75e536e3b8d4548410e31fe9d147e1feb4)及LibraryUploadView证明存在LibraryUpload工具和结果/错误展示。
因此写库不只可能由人工按钮完成,也可能通过模型工具;但何时由模型调用、工具完整参数与个人/团队/项目目标选择仍缺后端/受控运行证据。不能说“每次对话自动写库”,也不能说“只能手动按钮写库”。
local-docs-facade的autoSaveContext/saveContext是本地Office编辑上下文保存,不等于聊天入库或资料库上传。
4. 普通资料与项目资料如何被引用
space-library-picker-iy0rD3_T.js(SHA-256 648cf973cd4f7b2b7ae8cd7a0db26755d8671583ead81a62bcfa185491901ea3):
- 普通模式fetchSpaces请求
/space/api/view/query/spaces,分个人和团队;查询搜索由选择器关键词触发。 - lockProjectId模式调用
fetchProjectSpace(projectId)→POST /space/api/view/query/projectspace,从space.value取space.id,再按该ID读取records。隐藏普通tab/搜索,只构造当前项目树。
space-library-DZ_aI7LI.js:buildSpacePickerBlocks(偏移4608;SHA-256 91bbbd1b9b1602088e8e19d495f29b44da25d8df20028c663163baa8db3d5cbd)在用户选中资料后生成隐藏的skill://library引用及space-doc块,保留docId、URL、kind、source等元数据。发送转换会把所选URL带入本轮输入。
这证明显式选择资料→引用与所需技能→本轮发送的客户端通路;尚未证明library技能实际读取过程、全部检索工具、内容解析时机及是否全量读取目录。
5. 对话如何使用项目任务/待办
use-project-local-chat-config-DqSrAK4B.js(SHA-256 e6e153194a543b5cdc52c5cac1f96727571aa2ca9b2ab78bf6c79bc35d05f636)的useLocalTaskAggregatedProvider同时提供待办计划、项目NetDrive资料和本地文件候选;todo候选默认过滤已完成项。
选中待办后,create-local-todo-chip-CS01etNd.js:createLocalTodoChip(SHA-256 0496cea90c780a2480ef063f79dd8555929295aada161d0c38ba63a920d48d5a)产生todo://id引用,包含projectId、状态、标题/描述/摘要、snapshotSessionId和tags。这是对待办的引用,不是把其他所有会话都并入上下文。
项目详情已捕获的teams/cloud发送链路中:
- extractTodoContext识别所选todo,构造todo-reference。
- collectTodoNetdriveAttachments按projectId+todoId读取待办,把其明确关联的netdisk附件加入tdrive-attachments。
- 因而有“选中待办后自动补关联附件”的逻辑,不等于检索整个项目资料库。
本批证据未观察到独立task://chip,不能据此断言全产品不存在。用户说的“任务”须区分项目待办引用、实际对话任务和定时任务执行。
6. 自动上下文的准确边界
在project-detail-page-DdYKdEkr.js:resolveAndSendPrompt(SHA-256 a5630ae6ad4e053e8d085a569a67c102c4226a14c7f27a3e62e69601d0f8d2c1)的teams/cloud发送链路,原版在可解析根信息时加入:
<tdrive-root id="…" dir_name="…" scope="project" />
还包含项目指令、连接器状态、所选todo/附件、工作总结和当前时间等,固定块有首轮/变更去重。根指针不包含目录全文或所有文件正文。
同链路默认可走backend.resolveMessage,解析显式blocks和项目上下文,失败/超时可回退本地拼装;后端算法与实际检索范围未知。
不能把上述结论外推到所有本地项目会话。 local的createConversation→adapter.prompt已确认携带projectId、promptContentBlocks、projectResources;后者只有connectorSkills/mcpServers/projectSkills,没有资料列表。本地adapter/内核是否另注入根或自主检索仍待证。
因此当前可确认的层级是:
- 按项目或个人/团队范围选择资料:已证。
- 显式引用资料/待办,并在部分发送链路补关联上下文:已证。
- teams/cloud路径默认携带可解析的项目根指针:已证。
- 模型每次任务都自动list/search/read全库,或全库正文自动注入:未证。
- 原版定时任务默认自动检索资料库:未证,需另核对持久化引用与触发执行链路。
自动化列表中的dataSource会参与local/cloud来源与开关能力判断,不能据该字段名断言“阅读资料源”。中文资源另有外部数据源同步到协作项目的文案,也不能仅凭词条证明当前定时执行会读取资料库。
7. YCode当前与开发计划修订
- 当前YCode自动组装能力快照、非空项目指令、个性化/记忆;显式quotes/attachments和工作目录路径随消息进入请求。没有资料库读写/检索服务,也没有项目资产模型。
- 普通文件工具可以读取工作目录,这不代表资料库自动接入;项目指令注入也不代表资产全文进入上下文。定时任务尚未实现。
- 三模块开发必须包括对话入口:本地产物归集;个人/项目目标明确的入库动作;保留类型与来源的资料/todo引用;按作用域解析和实际读取记录。
- 不把资料库引用全部降成普通路径或一段拼接文本,也不能仅显示引用chip而模型请求没有对应资源。
- 先前计划中的内容快照是YCode本地适配建议,不是已证原版全文冻结行为。现在应先保留原版引用身份、URL/ID、类型和元数据;云资料何时解析/读哪一版仍待证。本地可增加快照保障历史重建,但必须单列为适配决定。
- 项目资料范围应显式绑定projectId;不因有projectId就静默注入个人/其他项目全部资料。
本轮只新增确认记录、更新开发计划链接与引用语义说明;没有修改业务功能。尚未完成上传/引用/模型检索的受控运行验收。
8. 追加确认:何时拆解任务、何时沉淀资料
8.1 对话内计划与项目事项分别看待
已捕获的adapters-DF2aWDY_.js(SHA-256 c4529f43704680c595661fc20578ee813cac20912a9f2324e9b03c33e04ea0c4,位于项目详情REA归档)中:
PlanToolAdapter识别plan_create/plan_update等实际工具数据。syncTodoStatusFromMessage在消息中出现todo_write/TodoWrite工具调用后,提取结果并更新对话的todo状态;merge为false时重置当前列表。handlePlanSessionUpdate在收到ACP plan事件时同步计划条目。
另一路不能遗漏:contexts-DgzzFjnf.js(SHA-256 8d0c375f141cf724c7f77233ee1d54dd21c9cc86286b79d119711f34a6236746)的createTaskPlanCard / projectTaskTimelineMessages可根据已存在的权威taskList合成todo_write显示卡。它是展示投影,不证明本轮模型真实调用过TodoWrite,更不证明列表由前端自动拆出。
这些是事件到达之后的展示/状态同步,不证明renderer会识别用户任务复杂度并主动要求拆解。现有证据没有统一的“超过几步/多少字/多少文件就拆”阈值,也没有证明每次发消息、回复结束或任务完成时都会创建计划。
对话出现计划卡片或TodoWrite结果,不能直接当作项目数据库里的待办已创建;项目事项的持久化必须另有项目创建命令或已证交接链路。
8.2 项目计划页还有尚未采到的远程业务
plan-host-CQg0zimX.js:ProjectPlanFederationHost(SHA-256 501ea6feabfa9458df2585f636b3b765e70701546e3ebd71a60f032778b37a16)挂载远程project-plan模块,并向它提供chat.addTodosToChat、quoteCommentToChat等接口。这里可确认选择事项后引用到对话,不能从host反推远程计划模块的“AI拆解/批量创建”逻辑。
计划页新建待办的完整点击处理、AI拆解的入口/条件、后台批量创建和模型系统提示词均未完整取得。因此“复杂任务自动生成项目待办”的规则仍待证,不用通用AI习惯补成原版结论。
8.3 已证实的交接触发:创建事项并上传关联资料
task-transfer-popover-CuSX2nzk.js(SHA-256 9b701f16edd2645655b85ca9d278f50958e7051e54351faed7ae84e61b4bec71,同项目详情REA归档):
- 交接表单提交路径调用
createLocalTaskTodo→planCommands.createTodo(projectId, {...source:'handoff'}),包含标题、摘要、负责人、时间、标签和状态等。 - 存在表单携带的附件、本地文件或产物时,后台调用
finalizeLocalTaskAttachments。 - 该函数读取实际产物、
uploadTodoAttachmentsToProjectNetdisk上传,再通过addTodoAttachment关联到刚创建的事项。 - 事项创建成功提示先于后台附件上传完成。 上传可能部分失败,源码有单独错误反馈。因此交接成功不等于资料已全部上传成功。
触发条件是明确的交接动作及其携带的数据,不是普通任务终态自动发生。代码中待办创建与上传关联可串联,尚未完整验收其服务端/权限和远程UI流程。
8.4 模板给出了业务阶段提示,不是自动落库定时器
模板依据为REA ev_89843a8b67f411d3297b5f3e428830393cd0fe8712603816cf8b7bbe442064d9,由recover-project-templates.cjs校验正文hash后静态恢复为project-templates.json。
已确认的示例:
- 产品需求模板:帮助拆解研发任务、子任务与依赖;PRD完成后提醒上传项目资料库并创建评审事项;评审结论可沉淀,待办问题拆成事项。
- 调研模板:阶段完成后主动提醒上传资料、分析表和报告;重要洞察创建评审事项。
- 交付模板:拆里程碑、负责人、期限与依赖;验收后上传结论和交付文档,将遗留问题创建后续事项。
- 知识库模板:引导将经验/会议结论/SOP/FAQ整理成结构化文档,提醒沉淀与维护。
关键词是“帮助”“提醒用户”“可以创建/上传”。当前代码将这些文字作为项目instructions提供给模型,没有证据证明客户端解析这些中文句子后自动创建事项或上传文件。它们说明模型应在哪些业务阶段建议拆解/沉淀,不能替代真实工具调用或用户提交的执行证据。
8.5 触发矩阵
| 时机/动作 | 拆解/事项 | 资料沉淀 | 证据层级 |
|---|---|---|---|
| 用户仅发送一条需求 | 可能引导模型规划,是否调用计划工具未证 | 无已证整段聊天自动入库 | agent决策规则待证 |
| agent发出todo/plan调用、plan事件或取得已有权威taskList | 同步/投影对话计划与状态,卡片可能为合成展示 | 不因该事件自动入库 | adapter及task timeline静态已证 |
| 成功写/编辑/展示产物 | 不自动等同创建项目待办 | 自动归集本地产物,不等同云库上传 | artifact规则静态已证 |
| 产物工具栏保存/上传 | 不必创建待办 | 按个人/项目目标执行上传 | 保存分支静态已证 |
| agent调用LibraryUpload | 不必拆任务 | 执行一次工具入库,目标和实际成功另验 | 工具展示/转换已证,后端决策待证 |
| 用户确认任务交接且携带产物/附件 | 创建项目handoff待办 | 后台上传并关联附件,可能部分失败 | 交接客户端静态已证 |
| 达到模板描述的阶段 | 提示模型帮助拆解/提醒创建 | 提示模型提醒上传/沉淀 | 提示词已证,实际决策待证 |
| 会话/所有待办完成 | 未证自动新建事项或再拆解 | 未证统一自动上传hook | 不标已实现或原版规则 |
8.6 YCode开发约束
YCode当前executeConversationTool(todo_write/create_plan)根据工具参数构造PlanContent作为工具结果;生产链路主要保存tool_call/tool_result,由renderer从工具参数/结果生成计划卡,没有独立项目待办服务。ChatEvent虽支持plan part,当前未确认生产plan事件发射器;TaskContent也不能视为已有项目任务创建能力。资料库入库与项目交接仍未实现。开发时区分会话计划、项目事项和产物/资料三种对象,并保存可追溯关联。
不能自行加入“复杂就拆”“回复结束就上传”“全部完成就入库”等固定策略再称1:1。已证自动部分可先实现事件投影与状态同步;模型何时调用工具依赖完整工具/系统指令,远程计划业务需REA另取。交接动作应分别跟踪事项创建、上传中、关联完成、部分失败和恢复。